Chromosomal microarray
The controls for a chromosomal microarray: which graphs to plot, which chromosome to read, which cytobands to overlay, and which of four segmentation methods to run against the markers.
| Reached by | Opening an Affymetrix CNCHP, CYCHP, OSCHP or copy-number CHP file. The panel appears beside the plot while that file is the document you are looking at |
The plot itself, and what each graph in it means, is described under the copy-number canvas. This page is about the decisions the panel puts in your hands.
What this computes
Nothing here changes the file. Every graph is read from it, and every method below is an inference over those markers that you switch on, drawn over the evidence it was derived from.
Segmentation — four methods, four different questions
Copy number along a chromosome is a step function buried in noise, and finding where the steps are is an old problem with more than one good answer. Four are offered, and they can run at once, because where they disagree is itself a reading: a boundary all four find is a boundary you can act on, and one only a single method finds is a question.
- Copy-number state calling — a hidden Markov model with one state per copy-number level, each with a mean and a spread, and a stickiness setting deciding how much contrary evidence it takes to move a call. It is the only one of the four that answers how many copies; the other three answer only where the level changes. The level means are read from the file's own header where the file states them, because they are a property of the array chemistry rather than of biology.
- Circular binary segmentation — recursively splits a chromosome wherever a candidate split is significant, judged by a permutation test. Because the test is randomised, the run is seeded, and the seed is a control rather than a hidden constant: a small proportion of borderline datasets segment differently under a different seed, and a stochastic answer presented as a settled one would be the wrong impression.
- Piecewise constant fitting — fits every possible segmentation at once and keeps the one with the lowest squared error plus a penalty for each jump. No test and no seed: one answer. Its penalty is scaled by an estimate of the array's own noise, and both the raw penalty and the scaled one are reported, because the raw number means nothing without the estimate.
- Pruned exact linear time — the same optimisation, solved exactly, with a penalty chosen by an information criterion rather than by a constant you calibrate. That makes its segment count follow from a model-selection rule, and it is the one method here that is both exact and affordable across a whole array chromosome.
What each method reports about itself
Whichever you run, the result states the numbers a reader needs to judge it rather than only the answer: the penalty actually resolved (an information criterion on thirty markers and on a hundred and forty thousand are different penalties, and you cannot derive which from the setting), the cost function the penalty choice selected, the noise estimate the penalty was scaled by and whether that scaling was applied or declined, and the elapsed time for the fits whose cost grows with the square of the marker count.
Refusals, and why they are refusals
Exact piecewise constant fitting is declined above a marker count it cannot finish in reasonable time, naming the count and the ceiling rather than freezing. The approximate fit has no such limit, and neither does the linear-time method — that is measured, not assumed, and it is why no ceiling is stated for them.
Segmentation applies to log2-ratio graphs only. Running it on an allele difference or a raw signal would produce confident numbers about the wrong quantity.
Finding what the array found
The plot shows one chromosome. Findings answers the question you opened the file with: what did this array find, anywhere in the genome?
Everything reported here is read from the file, not inferred. A copy-number result file states, per marker, the copy-number state the analysis called and whether that marker sat in a stretch with no heterozygosity. Those are the calls the instrument's own pipeline already made, and this reports them; the four segmentation methods above are the independent second opinion you switch on separately, and they never silently replace what the file says.
Three kinds of finding are reported:
- Loss — a run of markers called at fewer copies than normal.
- Gain — a run called at more.
- LOH — a run with no heterozygous marker in it, meaning only one parental haplotype is present. This is not a copy-number change, and that is exactly why it is reported separately: a region can be present in two normal copies and still have lost one parent's contribution, which a copy-number track alone cannot show. It is the pattern behind uniparental disomy and behind consanguinity.
Why you press a button
Reading a chromosome's markers is what costs time on these files, so this viewer reads a chromosome only when you look at it. Scanning the whole genome therefore reads everything, and it happens when you ask rather than on open.
Until you ask, every chromosome is marked not scanned, and that is deliberate. A chromosome nobody has read and a chromosome read with nothing in it are opposite answers, and a whole-genome view that drew them the same way would let you conclude a genome is normal from an index no one opened. When a scan finishes and a chromosome is clean, it says so.
No size threshold is applied for you
Clinical reporting usually ignores findings below a few hundred kilobases. That threshold belongs to the laboratory, not to this software — it varies by indication, by platform and by what is being asked. So every run the file called is counted, single markers included, and the panel states which floor it used. Set one and it states that instead. You should never have to guess whether a quiet result means nothing there or something there, filtered out.
A run of one marker spans zero bases. That is reported as zero rather than rounded up to a probe spacing, because the spacing is a property of the array and not of the finding.
Reading the whole-genome view
Findings are marked in narrow gutters either side of each chromosome — losses and LOH to the left, gains to the right — rather than drawn over the banding, because the bands are how you locate the finding. A finding too small to draw at genome scale still gets a mark: a focal deletion is precisely the event that must not disappear for being short.
The Chromosome summary table beside it lists, per chromosome, how many markers were read and how many gains, losses and LOH runs were called, so chromosomes can be compared without clicking through them one at a time.
Where the file's own calls appear on the plot
The whole-genome view answers which chromosome. Under the graphs for the chromosome you are reading, the same calls are drawn along the axis those graphs share, one lane per kind — loss, gain, LOH, copy-number-neutral LOH, mosaic. Each type gets its own lane because a gain and a copy-number-neutral run frequently cover the same megabases, and stacked in one row the second would paint over the first: you would see one call where the file made two. A kind with nothing on this chromosome keeps its lane, empty, so none of these and not looked at never look alike. Each bar carries the run's coordinates, its marker count and the confidence the analysis assigned it.
Homozygosity, and why it is its own reading
Absence of heterozygosity is a question a copy-number track cannot answer, because across a long homozygous stretch the copy number is normal throughout — both copies are simply identical. It is how uniparental disomy shows up (one long stretch, usually reaching a telomere, on a single chromosome) and how consanguinity shows up (many stretches spread across several chromosomes), and neither is visible in a log2 ratio.
Where the file states these runs, the panel reads them and reports, for the whole genome: how many runs there are and across how many chromosomes; how many reach a telomere, and whether the longest is one of them; the longest run, its chromosome and whether it is terminal or interstitial; and how much of the genome they cover. Whether a run is terminal is decided against the chromosome's own first and last cytogenetic band, not against a distance we chose.
Two numbers are given for genome coverage, not one: the figure measured from the runs, and the figure the file's own producer states. They differ — 21.2% against 22.4% on the bundled sample — because they divide by different things: ours by the assembly's length, the producer's by a denominator its file does not record. Both are shown rather than one being picked. Overlapping runs of the same kind are merged before ours is counted, or the shared bases would be added twice; runs of different kinds are never merged, because homozygosity with a normal copy number and homozygosity without are two different claims about the same bases.
No reporting threshold is applied
Which stretches are large enough to report is a laboratory's judgement, and the interpretive thresholds are stated by the American College of Medical Genetics and Genomics' technical standard on regions of homozygosity, not by this software. What the panel does quote is the floor that produced the runs you are looking at — the minimum span and minimum marker count the analysis software applied, read from the file's own header.
Going to a region
A whole chromosome drawn across a screen puts several markers in every pixel column, so an event a few hundred kilobases wide is a single pixel of the envelope. Three things narrow the view to a region, and they are the same window:
- Type a locus.
chr1:1,000,000-2,000,000,1.5Mb-2.4Mb,800kb-1200kb, or plain base pairs. A locus naming a different chromosome than the one on screen is refused by name rather than applied to this one. - Press a segment in the lane under the graphs, which goes to that call with a margin either side so you see it in context rather than filling the axis.
- Ask for it as a start and end when the same read is run as a workflow step or through the assistant, so a region is one question however it is asked.
The window is limited to the span the file's markers actually cover: a locus is a position in the assembly, and an array's coverage stops where it stops, so a region beyond it would draw an axis over ground with no data. The heading names the range you are in and how many of the chromosome's markers it holds, and the ideogram beside the plot outlines the window on the chromosome itself, so a pair of numbers is also a place. It is an outline rather than a filled block: the bands underneath are what you are locating the window against.
Choosing a genome assembly
A file that states its own assembly is believed, and says so. Cytogenetic array results written by analysis software commonly record the assembly in their header — the UCSC database name, the NCBI build number and the Ensembl assembly name, alongside the annotation release and its date — and when that is there the bands are drawn from it without being asked, with the panel naming the assembly and where it came from. Changing it is then overriding the file, and the panel says that too.
A file that states none leaves the overlay off until you name an assembly. Older results identify only the annotation release they were analysed against, which is a different statement from an assembly, and no assembly is ever inferred from one. Drawing markers from one assembly against another's bands moves every one of them with nothing on screen looking wrong. The file's own annotation string is shown beside the control so the choice is an informed one, and until you make it the plot uses the file's own coordinates, which are correct whatever it was built against.
Chromosome numbers come from the file too. These formats number chromosomes rather than naming them, and which number is X and which is Y is stated in the file's own header — commonly 24 and 25, not the 23 and 24 the UCSC ordering would suggest. It is read from there, so a chromosome is never labelled, or banded, as one it is not.
Array quality
The array's own quality measurements are shown as the file states them, with no pass or fail attached: published acceptance thresholds are stated by the manufacturer for particular array types, and applying one to a file that may be a different type would assert something the numbers do not support. Where the file's array type is not one a threshold was published for, the panel says so beside the value.
What the file cannot be asked
Each graph the file carries is scored against what a method needs, so a method that cannot run names the column it wanted. That distinction matters: this file does not carry it and this viewer does not do it are different answers, and only the first is about your data.
Verify vs Reference
Compare a sequencing read against the sequence you designed, list every difference in the reference's own numbering, classify each one against a CDS, and mark them on the reference itself.
Variant calls
The reading beside a variant call set: what the records add up to, how each figure was derived, and what about this file the numbers cannot be taken to mean.