End Reason Analysis - ONT QC
Analyze Oxford Nanopore read end reasons for quality assessment and adaptive sampling efficiency.
Integration
Run through ont-experiments for provenance tracking:
ont_experiments.py run end_reasons exp-abc123 --json results.json --plot qc.png
Or standalone:
python3 end_reason.py /path/to/data --json results.json
End Reason Categories
| End Reason | Description | Expected % |
|------------|-------------|------------|
| signal_positive | Normal completion | 80-95% |
| unblock_mux_change | Adaptive sampling rejection | 0-15% |
| data_service_unblock_mux_change | Basecall-triggered rejection | 0-10% |
| mux_change | Pore mux change | 1-5% |
| signal_negative | Signal lost | <5% |
Quality Assessment
| Status | Criteria | |--------|----------| | ✓ OK | signal_positive ≥75% | | ⚠ CHECK | signal_positive <75% or anomalies | | ✗ FAIL | signal_positive <50% |
Options
| Option | Description |
|--------|-------------|
| --json FILE | Output JSON summary |
| --csv FILE | Output per-read CSV |
| --plot FILE | Output bar chart (PNG/PDF) |
| --format FORMAT | Force format (pod5, fast5, summary) |
| --quick | Sample 10k reads only |
Supported Formats
- POD5 (fastest, recommended)
- Fast5 (legacy)
- sequencing_summary.txt
Output JSON
{
"total_reads": 15000000,
"quality_status": "OK",
"signal_positive_pct": 90.0,
"unblock_mux_pct": 8.0,
"data_service_pct": 1.0,
"end_reasons": {
"signal_positive": {"count": 13500000, "pct": 90.0},
"unblock_mux_change": {"count": 1200000, "pct": 8.0}
}
}
微信扫一扫