GitHub
05/19/2026, 4:26 PMdata/genomics/homo_sapiens/riboseq_expression/price/.
PRICE's Bayesian model needs a much higher candidate-ORF count than the existing chr20 fixtures provide for its expectation-maximisation to converge. This PR adds a minimised chr19+chr22 cohort that gives PRICE enough signal to call ORFs in CI.
PRICE output on this fixture set: 380 ORF rows (377-line orfs.tsv including header and metadata).
Files
| File | Size | Notes |
| ------------------------------------------------- | ----------------- | ------------------------------------------------------------------------------ |
| Homo_sapiens.GRCh38_chr19_22.pc_exon_masked.fa.gz | 3.43 MB | chr19+chr22 primary assembly, hard-masked outside protein-coding exons |
| Homo_sapiens.GRCh38.111_chr19_22.pc.gtf.gz | 1.66 MB | chr19+chr22 protein-coding-gene-only, lean attributes |
| 4x bams/SRX1178088{5,6,7,8}.chr19_22.ds50.bam | 1.06-1.52 MB each | 4-sample Ribo-seq cohort, 50% downsample, filtered to protein-coding gene loci |
| 4x .bai | ~90 KB each | |
| README.md | < 4 KB | derivation recipe |
Each file is < 4 MB. Total: 10.88 MB across 11 files (down from 19.68 MB across 14 files in an earlier revision; see force-push history).
Why these sizes — empirical justification
These fixtures are at the floor of what makes PRICE produce non-empty output. Every dimension was minimised iteratively against a real gedi -e Price invocation. Probes that didn't make it:
| Variant | Result |
| ------------------------------------------------------ | --------------------------------------------------------------------------- |
| chr20 alone, 2-sample cohort (existing fixtures) | ~235 candidate ORFs → NoiseModel.computeMeanSpline crashes during inference |
| chr20 alone, 6-sample cohort | reaches inference, produces 0 ORFs |
| chr19 alone, 6-sample [@ds50](https://github.com/ds50) | 0 ORFs (PRICE estimates model but finds nothing) |
| chr22 alone, 6-sample [@ds50](https://github.com/ds50) | 0 ORFs |
| chr19+chr22, 3-sample [@ds50](https://github.com/ds50) | Index 0 out of bounds for length 0 in PriceOrfInference |
| chr19+chr22, 2-sample [@ds50](https://github.com/ds50) | same crash |
| chr19+chr22 4-sample, CDS-only FASTA mask | PRICE crashes because GTF UTRs reference N positions in the masked FASTA |
| chr19+chr22 4-sample, ds30 | 0 ORFs |
| chr19+chr22 4-sample, ds50 (this PR) | 380 ORFs ✓ |
The empirical floor along each axis:
• 2 chromosomes are needed. Neither chr19 nor chr22 alone produces ORFs at any downsample level (insufficient candidate ORFs per chromosome).
• 4 samples are needed. 3-sample and 2-sample cohorts crash PRICE's noise-model inference.
• Protein-coding-exon masking, not CDS-only. UTR regions in the GTF must reference real sequence (not `N`s) or PRICE crashes.
• 50% downsample is the floor. 30% downsample produces 0 ORFs.
Could we go smaller?
Three avenues considered and rejected:
1. One chromosome with deeper coverage. Both chr19 and chr22 alone failed at any cohort/downsample tried; PRICE needs the candidate-ORF count from two chromosomes.
2. More aggressive FASTA masking (CDS-only). Crashes PRICE because UTRs in the GTF dereference to N positions.
3. Smaller cohort (≤3 samples). Crashes PRICE's noise model.
The 3.43 MB FASTA is the largest file in the set. It's chr19+chr22 protein-coding exons of GRCh38 primary assembly with everything outside those regions hard-masked; this is the most aggressive masking PRICE tolerates while still producing ORFs.
Source
Original BAMs: SRX1178088{5,6,7,8}.Aligned.sortedByCoord.out.bam from a full-scale nf-core/riboseq test_full run. Same upstream sample identifiers as the existing chr20 fixtures in this branch.
Test plan
• modules/nf-core/gedi/price/tests/main.nf.test in nf-core/modules#11693 consumes these fixtures via <http://raw.githubusercontent.com|raw.githubusercontent.com> URLs pinned to this PR's branch; URLs to be updated to modules after this PR merges
• nf-core modules test --profile docker gedi/price produces 380-ORF orfs.tsv with two-pass snapshot stability
nf-core/test-datasetsGitHub
05/19/2026, 4:26 PMGitHub
05/19/2026, 4:46 PMGitHub
05/19/2026, 4:46 PM