Basic Descriptive Statistics
| Filename | {{filename1}} | {{filename2}} |
| Label | {{label1}} | {{label2}} |
| Sequence column | {{seq_col1}} | {{seq_col2}} |
| Number of sequences | {{number_of_sequences1}} | {{number_of_sequences2}} |
| Unique sequences | {{dedup_sequences1}} | {{dedup_sequences2}} |
| Minimum length | {{min_length1}} | {{min_length2}} |
| Mean length | {{mean_length1}} | {{mean_length2}} |
| Maximum length | {{max_length1}} | {{max_length2}} |
| Number of bases | {{number_of_bases1}} | {{number_of_bases2}} |
| %GC content | {{gc_content1}} | {{gc_content2}} |
The set of characters each label uses. It fails if the two sets differ at all, and there is no Warning - the question is yes or no.
What matters is the asymmetry, not the character: N in both labels passes, but a character only one label has makes every sequence carrying it perfectly classifiable. {{link_unique_bases}}
| Label | {{label1}} | {{label2}} |
| Unique bases | {{unique_bases1}} | {{unique_bases2}} |
How much of the data survives deduplication, pooled over both labels. Pass only at 100%, Warning above 98%, Fail below it - so any duplication at all is at least a Warning.
Duplicates make the dataset smaller than its row count, and copies landing on both sides of a random split inflate the score you report. {{link_within_dup}}
Sequences that appear under both labels: identical input, opposite label, so no model can get both right. One shared sequence fails; there is no Warning.
It puts a hard ceiling on achievable accuracy, and the offending sequences are listed in gb-qc-duplicates.txt beside this report. {{link_between_dup}}
The length distribution of each label. The flag is the AU-ROC of length on its own: how well a model that does nothing but count characters separates the two labels.
It fires when the labels were sampled or trimmed differently, which is the easiest bias to introduce by accident. {{link_lengths}}
The GC% of every sequence, one distribution per label. The flag is the AU-ROC of GC content on its own.
The classic compositional confound: it fires whenever the labels come from different genomic contexts - promoters against background, coding against intergenic. GC-matching the negatives removes most of it. {{link_gc}}
One panel per base: how often it occurs in a sequence, compared between the labels. Each base is scored separately and the flag is the worst of them, so one red panel flags the check.
It usually fires alongside GC content, and then the two are one finding. Firing without it means the imbalance is A against T or C against G, which points at strand asymmetry. {{link_nucleotide}}
The same comparison for two-base combinations, each row holding the pairs that start with one base. All sixteen are scored separately and the flag is the worst of them.
Which pair it is says something specific: CG alone points at methylation or promoter context, while all sixteen at once is the GC finding again. {{link_dinucleotide}}
One panel per base, one line per label, running 5' to 3' along the sequence. The shaded bands are the flagged positions - orange Warning, red Fail, grey not scored. Every position is scored separately and the flag is the worst single one. The lower panel is how much of each label still reaches each position.
A flag means something at a fixed location gives the label away: an adapter or barcode left on one label, a padding convention applied to one only, or a real motif - which is the signal, not a leak. Where the flags sit tells you which: a cluster is a motif, position 1 alone is an artefact. {{link_per_position}}
{{position_window_note}}The same check counted from the other end: position 1 is the last base of a sequence, position 2 the one before it. Read it exactly like the forward figure above.
On fixed-length sequences it is redundant and will report the same numbers. It earns its place on variable-length data, where something anchored to the sequence end - a poly-A tail, a 3' adapter - sits at a different forward position in every sequence. {{link_per_position_rev}}
{{position_window_note_reversed}}