$npx -y skills add GPTomics/bioSkills --skill splicing-qcAssesses RNA-seq data quality specifically for alternative splicing analysis. QC layers include experimental design audit (library prep, read length, depth, replicates), STAR 2-pass cohort-style alignment, junction saturation curves and discovery plateau detection, novel-vs-known
| 1 | ## Version Compatibility |
| 2 | |
| 3 | Reference examples tested with: RSeQC 5.0+, STAR 2.7.11+, samtools 1.19+, pysam 0.22+, regtools 1.0+, maxentpy 0.0.1+, spliceai 1.3+, matplotlib 3.8+, pandas 2.2+ |
| 4 | |
| 5 | Before using code patterns, verify installed versions match. If versions differ: |
| 6 | - Python: `pip show <package>` then `help(module.function)` to check signatures |
| 7 | - CLI: `<tool> --version` then `<tool> --help` to confirm flags |
| 8 | |
| 9 | If code throws ImportError, AttributeError, or TypeError, introspect the installed |
| 10 | package and adapt the example to match the actual API rather than retrying. |
| 11 | |
| 12 | # Splicing-Specific Quality Control |
| 13 | |
| 14 | Splicing analysis is more demanding than DGE on read length, depth, library prep, alignment strategy, and annotation choice. Failures in any of these silently bias PSI estimates and inflate novel-junction false positives. The decision sequence is: experimental design -> library prep -> alignment strategy -> annotation -> diagnostic metrics. Each layer's failure mode is distinct. |
| 15 | |
| 16 | ## QC Layer Taxonomy |
| 17 | |
| 18 | | Layer | Target | Tool | Fails when | |
| 19 | |-------|--------|------|------------| |
| 20 | | Experimental design | Read length, depth, replicates, library type | Pre-sequencing review | <PE 75nt; n<3 vs n<3; <30M reads/sample | |
| 21 | | Library prep | poly(A) vs rRNA depletion | Pre-sequencing review | poly(A) library used for IR analysis | |
| 22 | | Alignment | STAR 2-pass cohort-style | STAR | 1-pass loses 14% novel junctions; per-sample 2-pass introduces inconsistency | |
| 23 | | Junction discovery | Saturation, novelty | RSeQC `junction_saturation`, `junction_annotation` | Curve still rising = under-sequenced; novel% >40% suggests biology or artifact | |
| 24 | | Strand specificity | Library protocol consistency | RSeQC `infer_experiment` | Wrong `--libType` halves usable junctions | |
| 25 | | Splice site strength | Cryptic vs canonical | MaxEntScan, SpliceAI | Weak splice sites (MaxEnt<5) may indicate cryptic, regulated, or annotation error | |
| 26 | | Junction overhang | Read-junction support quality | pysam CIGAR parsing | Overhang <8nt = high false-positive rate | |
| 27 | | Contamination | rRNA, adapters | fastq_screen | >20% rRNA in "depleted" library = failed depletion | |
| 28 | | Annotation | GENCODE basic vs comprehensive | Annotation choice | Basic for canonical events; comprehensive for DTU | |
| 29 | |
| 30 | ## Decision Tree by Question |
| 31 | |
| 32 | | Question | Recommended QC | |
| 33 | |----------|-----------------| |
| 34 | | Will my planned RNA-seq design support AS analysis? | Pre-sequencing audit: library type, read length, depth, replicates | |
| 35 | | Is my data suitable for cassette exon analysis? | Junction saturation + known/novel ratio + read length | |
| 36 | | Why does my AS analysis call so few events? | Saturation curve, depth, library type, alignment 2-pass | |
| 37 | | Why does my AS analysis call so many novel junctions? | Annotation completeness + novel% + biology check (TDP-43, SF3B1) | |
| 38 | | Are my SpliceAI predictions calibrated for my tissue? | MaxEntScan + SpliceAI concordance for known sites | |
| 39 | | Did STAR 2-pass actually run cohort-style? | Verify SJ.out.tab merging across samples | |
| 40 | | Is intron retention detectable in my data? | Library type (must be rRNA-depleted); strand-specific | |
| 41 | | Are my microexons detectable? | Read length >=100; aligner anchor settings; consider VAST-TOOLS | |
| 42 | |
| 43 | ## Experimental Design Audit (Before Sequencing) |
| 44 | |
| 45 | | Decision | For splicing analysis | Rationale | |
| 46 | |----------|------------------------|-----------| |
| 47 | | **Library prep** | rRNA depletion (Ribo-Zero, RiboCop) | poly(A) selection loses pre-mRNA, nascent transcripts, and detained introns; for IR analysis rRNA depletion is mandatory (convention) | |
| 48 | | **Read length** | PE 100-150 nt (PE 150 strongly preferred) | Junction-spanning reads need >=8 nt overhang on each exon; shorter single-end reads bias junction detection toward shorter exons (convention) | |
| 49 | | **Pairing** | Paired-end | Single-end loses fragment-level disambiguation of junctions | |
| 50 | | **Depth** | 50-100M reads/sample | DGE-grade 30M misses low-PSI events; 100M for low-abundance event discovery | |
| 51 | | **Strandedness** | Stranded library (I |