Skip to content

TCGA Ovarian Cancer GISTIC2 Copy-Number Landscape

This example visualizes recurrent copy-number alterations in the TCGA ovarian serous cystadenocarcinoma cohort (OV-TP) with GISTIC2 results from the Broad Institute TCGA Genome Data Analysis Center Firehose. The source analysis used GISTIC2.0.22 and hg19 coordinates.

{
  "description": [
    "TCGA Ovarian Cancer GISTIC2 Copy-Number Landscape",
    "Shows recurrent GISTIC2 copy-number amplifications and deletions across the TCGA ovarian serous cystadenocarcinoma cohort."
  ],

  "assembly": "hg19",

  "scales": {
    "x": {
      "domain": [
        { "chrom": "chr18", "pos": 14593640 },
        { "chrom": "chr20", "pos": 22538731 }
      ]
    }
  },

  "name": "gistic-track",

  "resolve": { "axis": { "x": "shared" } },

  "vconcat": [
    {
      "name": "gistic-q-value",

      "title": {
        "text": "GISTIC q-values from the TCGA OV-TP cohort",
        "style": "overlay-title"
      },

      "layer": [
        {
          "name": "zero-line",

          "data": { "values": [0] },

          "encoding": {
            "y": { "field": "data", "type": "quantitative", "title": null }
          },

          "mark": {
            "type": "rule",
            "color": "black",
            "opacity": 0.3
          }
        },
        {
          "name": "q-value-rects",

          "data": {
            "url": "https://data.genomespy.app/sample-data/TCGA-OV-GISTIC/scores.gistic",
            "format": { "type": "tsv" }
          },

          "transform": [
            {
              "type": "formula",
              "expr": "datum['-log10(q-value)'] * (datum.Type == 'Del' ? -1 : 1)",
              "as": "-log10(q-value)"
            }
          ],

          "encoding": {
            "color": {
              "field": "Type",
              "type": "nominal",
              "scale": {
                "domain": ["Amp", "Del"],
                "range": ["#e45756", "#4c78a8"]
              }
            },
            "y": { "field": "-log10(q-value)", "type": "quantitative" },
            "x": {
              "chrom": "Chromosome",
              "pos": "Start",
              "type": "locus"
            },
            "x2": { "chrom": "Chromosome", "pos": "End" }
          },

          "mark": {
            "type": "rect",
            "minOpacity": 1
          }
        },
        {
          "name": "q-value-thresholds",

          "data": {
            "values": [0.602, -0.602]
          },

          "encoding": {
            "y": { "field": "data", "type": "quantitative", "title": null }
          },

          "mark": {
            "type": "rule",
            "strokeDash": [3, 1],
            "color": "black",
            "opacity": 0.3
          }
        }
      ]
    },
    {
      "name": "gistic-all-lesions",
      "title": { "text": "Regions and peaks", "orient": "none" },

      "height": { "step": 20 },

      "data": {
        "url": "https://data.genomespy.app/sample-data/TCGA-OV-GISTIC/all_lesions.conf_99.txt",
        "format": { "type": "tsv" }
      },

      "transform": [
        {
          "type": "regexExtract",
          "field": "Unique Name",
          "regex": "^(Amplification|Deletion) Peak[ ]+\\d+$",
          "as": ["Type"],
          "skipInvalidInput": true
        },
        { "type": "filter", "expr": "!!datum.Type" },
        {
          "type": "regexFold",
          "columnRegex": ["^(.*) Limits$"],
          "asValue": ["limits"],
          "asKey": "Segment type"
        },
        {
          "type": "regexExtract",
          "field": "limits",
          "regex": "^(chr[^:]+):(\\d+)-(\\d+)",
          "as": ["Chrom", "Start", "End"]
        },
        {
          "type": "project",
          "fields": [
            "Segment type",
            "Chrom",
            "Start",
            "End",
            "Type",
            "Descriptor",
            "q values"
          ]
        }
      ],

      "encoding": {
        "color": {
          "field": "Type",
          "type": "nominal",
          "scale": {
            "domain": ["Amplification", "Deletion"],
            "range": ["#e45756", "#4c78a8"]
          }
        },
        "y": {
          "field": "Type",
          "type": "nominal",
          "scale": { "domain": ["Amplification", "Deletion"], "padding": 0.2 },
          "title": null
        },
        "x": {
          "chrom": "Chrom",
          "pos": "Start",
          "type": "locus"
        },
        "x2": { "chrom": "Chrom", "pos": "End" },
        "opacity": {
          "field": "Segment type",
          "type": "nominal",
          "scale": {
            "type": "ordinal",
            "domain": ["Wide Peak", "Peak", "Region"],
            "range": [0.3, 1, 0.3]
          }
        },
        "size": {
          "field": "Segment type",
          "type": "nominal",
          "scale": {
            "type": "ordinal",
            "domain": ["Wide Peak", "Peak", "Region"],
            "range": [11, 15, 2]
          }
        }
      },

      "mark": {
        "type": "rule",
        "minLength": 2
      }
    }
  ],

  "config": {
    "legend": { "disable": true },
    "view": { "stroke": "lightgray" }
  }
}

The results shown here are in whole or part based upon data generated by the TCGA Research Network.

The displayed GISTIC2 output files are open-access TCGA data produced by the Broad Institute TCGA Genome Data Analysis Center.

Source: Broad Institute TCGA Genome Data Analysis Center (2016), TCGA OV-TP CopyNumber GISTIC2 Level 4, Firehose run 2016-01-28, GISTIC2.0.22, hg19. Download the source archive.

What to notice

The upper track plots GISTIC -log10(q-value) scores across the genome. Red denotes amplifications and blue denotes deletions; the deletion scores are negated so the two event types appear on opposite sides of the zero line. The dashed lines at ±0.602 represent the GISTIC q-value cutoff of 0.25.

The lower track distinguishes each recurrent amplification and deletion's wide peak, peak, and region. The peak itself is the thick, fully opaque stroke; its wide peak is a medium-width translucent stroke, and the broader region is a thin translucent stroke. These intervals are overlaid on the red amplification or blue deletion row, so the central peak stands out against the broader regions.

The initial view spans chromosomes 18 to 20, including several recurrent ovarian-cancer copy-number events.

Using standard GISTIC output directly

The specification reads the unmodified scores.gistic and all_lesions.conf_99.txt files directly. It applies the following display-time transforms instead of preparing separate tables for the visualization:

  • formula signs the score by Type, placing deletions below zero while leaving amplification scores positive.
  • regexExtract identifies amplification and deletion peak rows from Unique Name, then parses each GISTIC chr:start-end interval into chromosome, start, and end fields.
  • filter keeps those peak rows from the report table.
  • regexFold unfolds the Wide Peak Limits, Peak Limits, and Region Limits columns into individual graphical intervals.
  • project retains the interval fields, event type, descriptor, and q-value for rendering and tooltips, omitting the hundreds of per-sample lesion-call columns from the view data.

No source file is filtered, coordinate-converted, or restructured on disk. The transforms only create the in-memory fields that the tracks need.