From 191c14069821f3790839ce8b9c4afcfee275617f Mon Sep 17 00:00:00 2001 From: Felix Krueger Date: Tue, 11 Aug 2026 13:21:38 +0200 Subject: [PATCH] Trim the orf_class changelog entries to one sentence each Two had grown into paragraphs carrying migration instructions inline, at 132 and 104 words; the seven together drop from 440 words to 136. Nothing is lost. The vocabulary, is_smorf, --smorf_max_aa and the positional-only rule are documented in docs/output.md and docs/usage.md, and the breaking-change entry now points there instead of restating them. A changelog is read by someone deciding whether an upgrade affects them, not by someone auditing the decision -- that belongs in the commit messages and the PR thread. --- CHANGELOG.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b78c5453..a3cde75f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,9 +30,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#166](https://github.com/nf-core/riboseq/issues/166) - Add per-ORF in-frame P-site quantification, emitting an ORF x sample count matrix ([@pinin4fjords](https://github.com/pinin4fjords)) - [#168](https://github.com/nf-core/riboseq/issues/168) - Add ORF-level differential translation analysis (anota2seq / deltaTE / DOTSeq) on top of the gene-level DTE ([@pinin4fjords](https://github.com/pinin4fjords)) - [#146](https://github.com/nf-core/riboseq/issues/146), [#149](https://github.com/nf-core/riboseq/issues/149) - Add per-sample UMI handling through an optional `with_umi` samplesheet column ([@pinin4fjords](https://github.com/pinin4fjords)) -- [#226](https://github.com/nf-core/riboseq/pull/226) - Add `--smorf_max_aa` (default 100) controlling the catalogue's `is_smorf` flag and which ORFs are eligible for the peptide-level collapse. It never affects `orf_class` ([@FelixKrueger](https://github.com/FelixKrueger)) -- [#226](https://github.com/nf-core/riboseq/pull/226) - Add `uoORF`, `doORF` and `intORF` to the `orf_class` vocabulary, recovering the CDS-overlap and internal distinctions that RiboCode, ribotricer, Ribo-TISH and PRICE already report ([@FelixKrueger](https://github.com/FelixKrueger)) -- [#226](https://github.com/nf-core/riboseq/pull/226) - Add `is_smorf` and `orf_type_native` columns to the normalised and catalogue tables. `orf_type_native` carries each caller's own ORF-type label, so every harmonisation decision is auditable without re-running callers ([@FelixKrueger](https://github.com/FelixKrueger)) +- [#226](https://github.com/nf-core/riboseq/pull/226) - Add `--smorf_max_aa` (default 100), setting the catalogue's `is_smorf` flag and the peptide-collapse scope without affecting `orf_class` ([@FelixKrueger](https://github.com/FelixKrueger)) +- [#226](https://github.com/nf-core/riboseq/pull/226) - Add `uoORF`, `doORF` and `intORF` to the `orf_class` vocabulary ([@FelixKrueger](https://github.com/FelixKrueger)) +- [#226](https://github.com/nf-core/riboseq/pull/226) - Add `is_smorf` and `orf_type_native` columns to the normalised and catalogue tables ([@FelixKrueger](https://github.com/FelixKrueger)) ### `Fixed` @@ -84,10 +84,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#197](https://github.com/nf-core/riboseq/issues/197) - Honour `--fastp_merge` and `--save_merged_fastq`, which were overridden by hardcoded `false` values in the preprocessing subworkflow call ([@pinin4fjords](https://github.com/pinin4fjords)) - [#197](https://github.com/nf-core/riboseq/issues/197) - Make `--pseudo_aligner` select the tool used by `--te_quantification_method pseudo`, which always ran Salmon regardless of the setting. kallisto is now a working alternative, with `--kallisto_index`, `--kallisto_quant_fraglen`, `--kallisto_quant_fraglen_sd` and `--extra_kallisto_quant_args`. TE pseudo-alignment outputs move to `quantification/_te_pseudo`, unchanged for the default `salmon` ([@pinin4fjords](https://github.com/pinin4fjords)) - [#205](https://github.com/nf-core/riboseq/pull/205) - Template update for nf-core/tools v4.0.3 ([@nf-core-bot](https://github.com/nf-core-bot), [@pinin4fjords](https://github.com/pinin4fjords)) -- [#226](https://github.com/nf-core/riboseq/pull/226) - **Breaking:** `orf_class` is now purely positional and no longer encodes ORF length. The `smORF` value is gone from every catalogue output; a short ORF keeps its positional class (`uORF`, `dORF`, `canonical_cds`, …) and is flagged by the new `is_smorf` column instead. Migrate a filter on `orf_class == "smORF"` to `is_smorf == "1"` (equivalently `0 < aa_length <= 100`, the default `--smorf_max_aa`). The peptide-collapse scope is unchanged at the default threshold ([@FelixKrueger](https://github.com/FelixKrueger)) -- [#226](https://github.com/nf-core/riboseq/pull/226) - **Breaking:** `orf_class` values change for ORFs the callers place relative to the CDS. RiboCode's and ribotricer's `Overlap_uORF`/`Overlap_dORF` were being folded into `uORF`/`dORF` by substring matching and now map to `uoORF`/`doORF`; RiboCode's and Ribo-TISH's `internal` and PRICE's `iORF` now map to `intORF` rather than `other`; PRICE's `uoORF` maps to `uoORF` rather than `uORF` and its `orphan` to `novel_u` rather than `other`. ribotricer's `internal` stays `other` because it is that tool's fall-through rather than a frame-tested call. To keep a pre-existing filter's meaning, read the old `uORF` as the new `uORF` ∪ `uoORF`, the old `dORF` as `dORF` ∪ `doORF`, and note that the old `other` no longer holds the internal ORFs. Anything consuming `orf_class` — including the ORF-level DOTSeq analysis, which matches `uORF`/`dORF` literally — sees the new vocabulary ([@FelixKrueger](https://github.com/FelixKrueger)) -- [#226](https://github.com/nf-core/riboseq/pull/226) - Catalogue row counts change in both directions. Down: ORFs whose callers disagreed on class now merge instead of producing one row per caller, and an ORF two callers size either side of the small-ORF threshold now merges. Up: a short truncated CDS variant is no longer folded into its transcript's full-length CDS, and short transcript-anchored ORFs are keyed on their exact span, so two callers whose bounds differ by a few nucleotides now yield one row each rather than one shared row. That last effect lowers `called_by_*` and `n_samples` for those ORFs, so a stricter `--orf_min_callers` drops more of them ([@FelixKrueger](https://github.com/FelixKrueger)) -- [#226](https://github.com/nf-core/riboseq/pull/226) - Cross-caller clustering now measures reciprocal overlap on summed exon-block intersection rather than on the outer genomic span, which for a spliced ORF is mostly intron, and uses complete linkage so a chain of partial overlaps cannot fold distinct ORFs into one row ([@FelixKrueger](https://github.com/FelixKrueger)) +- [#226](https://github.com/nf-core/riboseq/pull/226) - **Breaking:** `orf_class` is now purely positional and `smORF` is gone; select short ORFs with the new `is_smorf` column ([@FelixKrueger](https://github.com/FelixKrueger)) +- [#226](https://github.com/nf-core/riboseq/pull/226) - **Breaking:** some `orf_class` values change, notably `Overlap_uORF`/`Overlap_dORF` to `uoORF`/`doORF` and `internal`/`iORF` to `intORF`; see `docs/output.md` for the full vocabulary ([@FelixKrueger](https://github.com/FelixKrueger)) +- [#226](https://github.com/nf-core/riboseq/pull/226) - Catalogue row counts change in both directions as a result of the merge and collapse changes ([@FelixKrueger](https://github.com/FelixKrueger)) +- [#226](https://github.com/nf-core/riboseq/pull/226) - Cross-caller clustering now measures reciprocal overlap on exon blocks rather than the outer genomic span, and uses complete linkage ([@FelixKrueger](https://github.com/FelixKrueger)) ### `Parameters`