Examples¶
Eight datasets, each here because it is the only one that shows a particular
thing. Between them they exercise every check gb-qc runs, at every severity
that check can reach.
Every flag on these pages is measured, not asserted. The reports are
generated by running gb-qc over the committed data — the same commands each
page shows you — and the build fails if a flag stops matching what the example
declares. If a page says six checks fail, six checks failed on the run that
produced the report you can open beside it.
Start here¶
If you read one, read hidden-motif. Every summary statistic passes; the entire difference between its classes is six positions wide inside a 398-position sequence. It is the case the interactive per-position plot exists for, and the clearest demonstration that a clean-looking summary is not the same as a clean dataset.
If you want to know what "fine" looks like first, read clean-dataset.
All eight¶
| Example | What it shows | Worst flag |
|---|---|---|
| clean-dataset | The control. Every check passes, AU-ROC 0.50–0.54 | Pass |
| composition-bias | Six checks fail, and 6% of the test set is already in training | Fail |
| hidden-motif | A bias six positions wide inside 398 positions | Fail |
| variable-length | Why most positions go unscored, and an N that only one class has |
Fail |
| length-bias | Length alone separating the classes, on a continuous label | Warning |
| paired-sequences | Two sequence columns in one row, and the merged report |
Fail |
| fasta-classes | One FASTA file per class, label from the filename | Fail |
| enhancers | The quickstart dataset, with a little real leakage | Warning |
Which check does what, and where to see it fail¶
A check you have never seen fail is hard to reason about. This is where each one does.
| Check | Fails in | Warns in |
|---|---|---|
| Unique bases | variable-length | — |
| Sequence Duplications within Labels | paired-sequences | composition-bias, enhancers, variable-length |
| Duplicate Sequences between Labels | composition-bias, paired-sequences, variable-length | — |
| Sequence lengths | — | length-bias |
| Per sequence GC content | composition-bias, fasta-classes | enhancers |
| Per sequence nucleotide content | composition-bias, fasta-classes | enhancers, length-bias |
| Per sequence dinucleotide content | composition-bias, fasta-classes | enhancers, hidden-motif, length-bias |
| Per position nucleotide content | composition-bias, hidden-motif | enhancers |
| Per position reversed nucleotide content | composition-bias, hidden-motif | enhancers |
| Data Leakage | composition-bias | clean-dataset, enhancers, variable-length |
That table is read off the reports themselves, so it cannot fall out of step with them. Two gaps in it are worth stating rather than leaving as blanks.
Nothing fails the length check — the empty cell in its row is real. The closest any example comes is length-bias at AU-ROC 0.631, a Warning. The README leads with "your negatives are shorter than your positives" because it is the easiest bias to introduce and the most embarrassing to ship, not because every benchmark has it.
Unique bases has no Warning. It is a yes-or-no question — either the two
classes use the same set of characters or they do not — so it never lands in
between. Note what it is not: a dataset where both classes contain N passes.
What fails is the asymmetry.