read_sequencing_qc
Read the QC files a sequencing provider returns alongside the reads: a per-base COVERAGE table, or a Plasmidsaurus summary (k-mer composition and the contamination estimate with its named source). These are the numbers that say whether a disappointing read is the clone's fault or the run's — a base called wrong under 3x coverage is a sequencing problem, not a cloning one. For a coverage table it also measures the track's SHAPE, because a mean has none: a run averaging 200x with one uncovered region reads as excellent. The provider states one number and two shapes — 20x for an accurate consensus, and a large gap or a sudden large increase meaning an assembly issue or a mixture of plasmid species — so the longest stretch under the line and the largest change in level are both measured and located. How large is large is NOT a number they publish, and none is invented here: the shapes are reported and the call is the reader's.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | which report this is; `auto` sniffs it. Values: auto (Detect from the contents), perbase (Per-base coverage table), plasmidsaurus (Plasmidsaurus summary). | auto |
| text | Yes | the file's contents — a per-base coverage TSV (pos / ref / reads_all), or the provider's summary text. | |
| _files | No | The project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name. | |
| _subject | No | The record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several. | |
| step_window | No | positions either side of a boundary whose MEDIAN depth is compared, when looking for a sudden change in level. A median over a window rather than two adjacent positions, so one spike is not a step and a real change in level is. Advanced. | |
| coverage_line | No | the depth a position must reach to count as well covered. The default is the provider's own published line and nothing of ours; raise it for a construct you intend to publish. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | which report was actually read | |
| shape | Yes | the coverage track's SHAPE: its median, how many positions fall under the line and in how many separate runs, the longest such run with its coordinates and its floor, and the largest change in level with the position it is at | |
| perbase | Yes | per-base coverage: positions counted, mean/min/max read depth, and how many positions reach 20x | |
| reading | Yes | what the coverage track says, generated from the profile that was measured rather than from the request, with the provider's own sentence quoted as theirs | |
| longestGap | Yes | positions in the longest unbroken stretch under the coverage line — the provider's first warning shape. 0 means no position falls under it; null for a Plasmidsaurus summary, which has no track | |
| minCoverage | Yes | the LOWEST depth anywhere in the read — the number that decides whether a disagreement with the reference is believable. Null for a Plasmidsaurus summary, which measures no depth | |
| plasmidsaurus | Yes | the whole parsed summary, including the raw text it came from | |
| largestStepFold | Yes | the largest sustained rise in depth, as a multiple — the provider's second warning shape. Branch on this rather than re-deriving it from the profile. Null when no step could be measured (a track shorter than two windows, or a Plasmidsaurus summary): a 0 is not a fold | |
| contaminationPct | Yes | Plasmidsaurus' contamination estimate, as a percentage. Null when the summary states none, and for a coverage table: a 0 would read as a clean run nobody measured | |
| positionsAbove20x | Yes | positions at 20x or better, out of the total. Null for a Plasmidsaurus summary | |
| contaminationSource | Yes | what the provider says the contaminant IS — the half of the estimate that tells you what to do about it. Null when the summary names none, and for a coverage table |