{ "qc_version": "0.1.0", "spec_id": "tenx_3p_v3", "assay": "10x Chromium Single Cell 3' Gene Expression", "platform": "illumina", "profile": { "n_pairs": 40000, "r1_len": { "min": 28, "max": 28, "modal": 28 }, "r2_len": { "min": 91, "max": 91, "modal": 91 } }, "findings": [ { "check_id": "r1_length", "title": "R1 length matches barcode + UMI", "verdict": "pass", "value": 28.0, "unit": "bp", "threshold": "== 28", "affected_fraction": null, "severity": 0.0, "evidence": [ { "spec_ref": "read_structure.R1", "note": "R1 should be exactly 28 bp (16 bp cell barcode + 12 bp UMI)" } ], "detail": "R1 lengths span 28\u201328 bp" }, { "check_id": "whitelist_hit_rate", "title": "Cell barcodes on the 10x whitelist", "verdict": "pass", "value": 0.9489, "unit": "fraction", "threshold": ">= 0.85", "affected_fraction": null, "severity": 0.0, "evidence": [ { "spec_ref": "whitelists.cell_barcode_3M_feb2018", "note": "R1[0:16] should match the 3M-february-2018 gel-bead barcode whitelist" } ], "detail": "94.9% of cell barcodes are on the whitelist" }, { "check_id": "tso_at_r2_start", "title": "R2 reads beginning with the TSO (adapter-dimer / short insert)", "verdict": "fail", "value": 0.3258, "unit": "fraction", "threshold": "< 0.05", "affected_fraction": 0.3258, "severity": 0.6516, "evidence": [ { "spec_ref": "read_structure.R2.readthrough_chain[tso_5prime]", "note": "R2 should start with cDNA; a leading TSO is the hallmark of empty/short-insert products" } ], "detail": "32.6% of R2 start with the TSO" }, { "check_id": "r2_adapter_readthrough", "title": "R2 read-through into the Illumina adapter", "verdict": "warn", "value": 0.0545, "unit": "fraction", "threshold": "< 0.02", "affected_fraction": 0.0545, "severity": 0.109, "evidence": [ { "spec_ref": "oligos.oligo_r1_readinto_adapter", "note": "the AGATCGGAAGAGC adapter stem in R2 means the insert was shorter than the read length" } ], "detail": "5.5% of R2 contain the adapter stem AGATCGGAAGAGC" }, { "check_id": "r2_polyg_tail", "title": "R2 with a poly-G no-signal tail", "verdict": "fail", "value": 0.0983, "unit": "fraction", "threshold": "< 0.01", "affected_fraction": 0.098275, "severity": 0.2948, "evidence": [ { "spec_ref": "platform_params.dark_base", "note": "a poly-G 3' tail on two-color instruments is 'no signal' \u2014 typical of empty/short fragments" } ], "detail": "9.8% of R2 have a poly-G tail" } ], "plan": { "ranked": [ { "check_id": "tso_at_r2_start", "severity": "high", "why": "32.6% of R2 reads begin with the TSO versus a <5% threshold \u2014 the direct signature of empty/short-insert products where no cDNA was captured and the sequencer read straight through the template-switch oligo. Highest severity (0.65) and the strongest single indicator of a real prep failure." }, { "check_id": "r2_polyg_tail", "severity": "medium", "why": "9.8% of R2 carry a poly-G 'no-signal' tail against a <1% threshold (~10x over) \u2014 on this two-color Illumina platform poly-G means the fragment ended before the read did, i.e. empty/short inserts, corroborating the TSO finding." }, { "check_id": "r2_adapter_readthrough", "severity": "low", "why": "5.5% of R2 contain the AGATCGGAAGAGC adapter stem versus <2% \u2014 read-through into the Illumina adapter confirms inserts shorter than the 91 bp read, consistent with the same short-fragment population but at lower prevalence." }, { "check_id": "whitelist_hit_rate", "severity": "none", "why": "94.9% of cell barcodes match the 3M-february-2018 whitelist (>=85% threshold), so barcoding and demultiplexing are healthy \u2014 the defect is not on the R1/cell-identification side." }, { "check_id": "r1_length", "severity": "none", "why": "R1 is a uniform 28 bp (16 bp barcode + 12 bp UMI), exactly as the v3/v3.1 spec requires \u2014 read structure is correct." } ], "root_cause": "Adapter-dimer / short-insert contamination: a large fraction of the library consists of empty or very-short cDNA products (TSO-dominated fragments), most likely from low cDNA input or inadequate size-selection/bead cleanup that failed to remove short fragments during library prep.", "diagnosis": "The barcode side of the library is clean \u2014 R1 is the correct 28 bp and 94.9% of cell barcodes are on the whitelist \u2014 but the insert side is failing: 32.6% of R2 reads start with the TSO, with 9.8% showing poly-G no-signal tails and 5.5% reading through into the Illumina adapter, all pointing to the same population of empty/short-insert (adapter-dimer) products. This indicates insufficient cDNA insert reached the sequencer, typically from low input or a size-selection/cleanup step that did not remove short fragments. Repeat the SPRI-bead size selection to deplete the short products (and check cDNA input on the Bioanalyzer/TapeStation before resequencing); the useful, on-target read fraction here is substantially reduced.", "method": "llm" }, "overall": "fail", "eval": { "n": 40000, "predicted_affected": 13074, "true_affected": 11940, "precision": 0.9133, "recall": 1.0, "f1": 0.9547, "confusion": { "tp": 11940, "fp": 1134, "fn": 0, "tn": 26926 } } }