I am having trouble trying to understand how GISTIC discretize copy number variation to values -2, -1, 0, 1, 2. I am using TCGA copy number variation for ColoRectal Adenocarcinoma.
In cBioPortal FAQ it is written that:
For TCGA studies, the table in all_thresholded.by_genes.txt (which is the part of the GISTIC output that is used to determine the copy-number status of each gene in each sample in cBioPortal) is obtained by applying both low- and high-level thresholds to to the gene copy levels of all the samples. The entries with value +/- 2 exceed the high-level thresholds for amps/dels, and those with +/- 1 exceed the low-level thresholds but not the high-level thresholds. The low-level thresholds are just the 'amp_thresh' and 'del_thresh' noise threshold input values to GISTIC (typically 0.1 or 0.3) and are the same for every thresholds.
By contrast, the high-level thresholds are calculated on a sample-by-sample basis and are based on the maximum (or minimum) median arm-level amplification (or deletion) copy number found in the sample. The idea, for deletions anyway, is that this level is a good approximation for hemizygous given the purity and ploidy of the sample.
The low-level thresholds are quite clear, while the high-level threshold not (the ones used to label +/-2 values).
I tried to reverse engineer the discretization function (the cutoffs are not available on firebrowse). The best solution I found is, for each sample, to:
split the copy number values in two groups (amplified - positive values, deleted - negative values)
for each group (amplified - deleted)
- compute the median copy number value inside each chromosome arm
- take the maximum (minimum for deleted group) median value across arms and use it as higher (lower) threshold
I tested it using the files:
trying to get the correct discretized value (-2, -1, 0, 1, 2) of the second file from the first. However, a small part of the values are not correctly mapped. Am I missing something?