From 8f565581e19ec655cccdcc1ea3ede08bc61ffe03 Mon Sep 17 00:00:00 2001 From: Felix Krueger Date: Sun, 9 Aug 2026 22:01:28 +0200 Subject: [PATCH 1/2] Add a Ribo-TISH fixture covering colon-qualified TisType values Ribo-TISH qualifies its positional TisType after a colon (`Novel:CDSFrameOverlap`) when a secondary annotation is supplied with `-a`, which happens in extended-ORF mode. The existing sample1.ribotish.pred.txt predates that mode and contains only bare tokens, so no fixture exercises the qualified form. One row per distinct TisType that Ribo-TISH emits on the chr20 test data in extended-ORF mode: seven qualified and seven bare. Rows are verbatim tool output, unmodified. --- .../sample1.ribotish.extended.pred.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 data/genomics/homo_sapiens/riboseq_expression/orf_predictions/sample1.ribotish.extended.pred.txt diff --git a/data/genomics/homo_sapiens/riboseq_expression/orf_predictions/sample1.ribotish.extended.pred.txt b/data/genomics/homo_sapiens/riboseq_expression/orf_predictions/sample1.ribotish.extended.pred.txt new file mode 100644 index 000000000..0baf2f72b --- /dev/null +++ b/data/genomics/homo_sapiens/riboseq_expression/orf_predictions/sample1.ribotish.extended.pred.txt @@ -0,0 +1,15 @@ +Gid Tid Symbol GeneType GenomePos StartCodon Start Stop TisType TISGroup TISCounts TISPvalue RiboPvalue RiboPStatus FisherPvalue TISQvalue FrameQvalue FisherQvalue AALen +ENSG00000088832 ENST00000677937 FKBP1A protein_coding 20:1372111-1392903:- ATG 135 447 Novel:CDSFrameOverlap 0 0 None 0.01045891220436919 T None None 0.008669308713579512 None 103 +ENSG00000125863 ENST00000347364 MKKS protein_coding 20:10420545-10420737:- ATG 136 328 5'UTR:Known 0 0 None 0.011162037836675912 T None None 0.009183430665627096 None 63 +ENSG00000125863 ENST00000347364 MKKS protein_coding 20:10420545-10420692:- ATG 181 328 5'UTR:CDSFrameOverlap 0 0 None 0.037141070338459446 N None None 0.024981455883948636 None 48 +ENSG00000289720 ENST00000696979 protein_coding 20:34534647-34540624:+ ATG 2972 3164 3'UTR:CDSFrameOverlap 0 0 None 0.004346450743587745 N None None 0.003999095572590074 None 63 +ENSG00000244005 ENST00000374092 NFS1 protein_coding 20:35669621-35674542:- ATG 1087 1438 Truncated:Known 0 0 None 0.0006960307379439676 N None None 0.0007930992920145594 None 116 +ENSG00000101017 ENST00000695669 CD40 protein_coding 20:46118343-46123418:+ ATG 73 769 Novel:Known 0 0 None 0.006682042341578261 T None None 0.0057399520695824895 None 231 +ENSG00000026036 ENST00000492259 RTEL1-TNFRSF6B protein_coding 20:63690293-63695785:+ ATG 2328 3723 Internal:CDSFrameOverlap 0 0 None 0.016524496926863717 T None None 0.012536556718583385 None 464 +ENSG00000196476 ENST00000360321 C20orf96 protein_coding 20:271206-290610:- ATG 140 1232 Annotated 0 0 None 0.03998989937315105 N None None 0.02666494606566258 None 363 +ENSG00000196476 ENST00000360321 C20orf96 protein_coding 20:271206-289586:- ATG 299 1232 Truncated 0 0 None 0.0399780718546241 T None None 0.02666494606566258 None 310 +ENSG00000215388 ENST00000431775 ACTG1P3 processed_pseudogene 20:1160583-1160901:+ ATG 0 318 Novel 0 0 None 0.04464398440956175 N None None 0.029305362590948902 None 105 +ENSG00000101224 ENST00000245960 CDC25B protein_coding 20:3805975-3806113:+ ATG 2979 3117 3'UTR 0 0 None 0.04689458029515801 T None None 0.030714477600042533 None 46 +ENSG00000178726 ENST00000377103 THBD protein_coding 20:23047776-23049672:- ATG 0 1896 Extended 0 0 None 2.1818407880632916e-07 N None None 6.479738219826158e-07 None 631 +ENSG00000171552 ENST00000450273 BCL2L1 protein_coding 20:31722270-31723776:- ATG 196 316 5'UTR 0 0 None 0.010557079266845102 T None None 0.008746589504727273 None 39 +ENSG00000124145 ENST00000372733 SDC4 protein_coding 20:45327205-45327334:- ATG 566 695 Internal 0 0 None 0.02707341799961499 T None None 0.019624354093751996 None 42 From e2aaba9beee42b48500d39aacf8b0b9fddb6dbd6 Mon Sep 17 00:00:00 2001 From: Felix Krueger Date: Mon, 10 Aug 2026 14:41:09 +0200 Subject: [PATCH 2/2] Document the extended-ORF Ribo-TISH fixture in both READMEs Adds a table row and a derivation section in the orf_predictions README, and a listing entry in the top-level README. Three standing claims stop being true with a sixth file in the directory, so they are amended rather than left behind a new row: the folder README described five files, one per caller, each sliced to header + 15 records. This file is a second Ribo-TISH fixture, and it is row-selected to cover every distinct TisType rather than head-sliced. --- README.md | 1 + .../orf_predictions/README.md | 57 ++++++++++++++++--- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ba0c6efb0..116d77ca6 100644 --- a/README.md +++ b/README.md @@ -500,6 +500,7 @@ The earth sciences folder contain subfolders for different data formats encounte - test_pre_config.txt: P-site configuration file output from ribocode/metaplots for testing ribocode/ribocode module - orf_predictions - sample1.ribocode.txt, sample1.ribotish.pred.txt, sample1.ribotricer.tsv, sample1.rpbp.predicted-orfs.bed.gz, cohort.price.orfs.tsv: Five real-tool ORF prediction outputs (one per Ribo-seq ORF caller) sliced to header + 15 records (<13 KB each). Used by custom/orfnormalise + custom/orfmerge tests. Per-fixture provenance, source-module-test details and slim recipes are in `orf_predictions/README.md`. + - sample1.ribotish.extended.pred.txt: Real Ribo-TISH output from a run given a secondary annotation (`-a`), where TisType values take a `:` form such as `Novel:CDSFrameOverlap`. One row per distinct TisType, seven qualified and seven bare. Used by custom/orfnormalise to test that classification reads the location and preserves the full value in `orf_type_native`. Derivation in `orf_predictions/README.md`. - orf_catalogue - cohort.catalogue.bed12, cohort.catalogue.tsv, cohort.orf_to_gene.tsv, cohort.catalogue.mqc.tsv, cohort.catalogue.aa.fasta, cohort_cluster.tsv: A small hand-built merged ORF catalogue (orfmerge output shape) with a duplicate-peptide smORF pair on opposite strands, used by the custom/orfcollapse test to exercise amino-acid-level small-ORF deduplication (a case absent from the real chr20 data). Details in `orf_catalogue/README.md`. - salmon.merged.gene_counts_length_scaled.tsv: Example matrix containing both Riboseq and RNA-seq runs, suitable for translational efficiency analysis diff --git a/data/genomics/homo_sapiens/riboseq_expression/orf_predictions/README.md b/data/genomics/homo_sapiens/riboseq_expression/orf_predictions/README.md index de5e76791..f7ba45786 100644 --- a/data/genomics/homo_sapiens/riboseq_expression/orf_predictions/README.md +++ b/data/genomics/homo_sapiens/riboseq_expression/orf_predictions/README.md @@ -1,26 +1,32 @@ # Test data for `custom/orfnormalise` + `custom/orfmerge` -Five small per-caller Ribo-seq ORF prediction outputs (one per supported -caller), used by `modules/nf-core/custom/orfnormalise` and -`modules/nf-core/custom/orfmerge` to exercise the parser, classifier, -score-direction, and cross-caller merge logic end-to-end. +Six small Ribo-seq ORF prediction outputs — one per supported caller, plus a +second Ribo-TISH file covering its extended-ORF output — used by +`modules/nf-core/custom/orfnormalise` and `modules/nf-core/custom/orfmerge` to +exercise the parser, classifier, score-direction, and cross-caller merge logic +end-to-end. | File | Size | Caller | Source genome | | ------------------------------------ | ----- | ---------- | ------------- | | `sample1.ribocode.txt` | 13 KB | RiboCode | chr20 | | `sample1.ribotish.pred.txt` | 3 KB | Ribo-TISH | chr20 | +| `sample1.ribotish.extended.pred.txt` | 3 KB | Ribo-TISH | chr20 | | `sample1.ribotricer.tsv` | 3 KB | Ribotricer | chr20 | | `sample1.rpbp.predicted-orfs.bed.gz` | 2 KB | Rp-Bp | chr20 | | `cohort.price.orfs.tsv` | 5 KB | PRICE | chr19+chr22 | -Each file is the head + first 15 records of a real-tool output, so every -column the downstream parsers read is exercised; no synthetic data. +All are real-tool output with no synthetic data. The first five are the head +plus first 15 records, so every column the downstream parsers read is +exercised; `sample1.ribotish.extended.pred.txt` is row-selected instead, to +cover each distinct `TisType` value (see below). ## How they were derived -All five files are sliced from outputs produced by existing nf-core/modules +Five of the six are sliced from outputs produced by existing nf-core/modules tests (or nf-core/modules#11695 for Rp-Bp) on the VM, then trimmed to -header + 15 records with `head`. +header + 15 records with `head`. `sample1.ribotish.extended.pred.txt` comes +from an nf-core/riboseq pipeline run instead, because no module test supplies +the input that produces its ORF-type values. ### `sample1.ribocode.txt` @@ -59,6 +65,41 @@ awk -F'\t' 'BEGIN{OFS="\t"} NR==1 {print; next} {if ($15=="None" && $13!="None") sample1.ribotish.pred.txt > .tmp && mv .tmp sample1.ribotish.pred.txt ``` +### `sample1.ribotish.extended.pred.txt` + +Ribo-TISH qualifies its `TisType` after a colon (`Novel:CDSFrameOverlap`) only +when a secondary annotation is supplied with `-a`, which nf-core/riboseq does in +extended-ORF mode. `sample1.ribotish.pred.txt` above predates that mode and its +`ribotish/predict` test passes no secondary annotation, so no fixture carried a +qualified value. + +Produced by running nf-core/riboseq on its own chr20 test data: + +```bash +nextflow run nf-core/riboseq -profile test,docker \ + --skip_stringtie false \ + --extended_orf_analysis true \ + --outdir results +``` + +Taken from the pooled Ribo-TISH output +(`results/orf_predictions/ribotish_all/allsamples_pred.txt`, 2716 records) and +reduced to one row per distinct `TisType` — seven qualified, seven bare: + +| Qualified | Bare | +| -------------------------- | ----------- | +| `Novel:CDSFrameOverlap` | `Annotated` | +| `5'UTR:Known` | `Truncated` | +| `5'UTR:CDSFrameOverlap` | `Extended` | +| `3'UTR:CDSFrameOverlap` | `Novel` | +| `Truncated:Known` | `5'UTR` | +| `Novel:Known` | `3'UTR` | +| `Internal:CDSFrameOverlap` | `Internal` | + +All 19 columns and the header are unchanged, every row is verbatim tool output, +and all rows are chr20 with transcript and gene ids that resolve against +`Homo_sapiens.GRCh38.111_chr20.gtf`. + ### `sample1.ribotricer.tsv` Produced by `modules/nf-core/ribotricer/detectorfs` test against