Skip to content

Restore RNA annotation defaults and parent grouping in Rust-backed analysis - #139

Closed
Jaureguy760 wants to merge 2 commits into
devfrom
fix/rna-annotation-parity
Closed

Jaureguy760 wants to merge 2 commits into
devfrom
fix/rna-annotation-parity

Conversation

@Jaureguy760

@Jaureguy760 Jaureguy760 commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Bulk RNA annotation defaults had changed from exon-first to gene-first, and the original parent-grouping flags were rejected before reaching Rust. Restore exon → transcript → gene selection and route all four parent aliases through the existing Rust grouping parameter before deduplication and fitting.

Parse exact GTF/GFF3 attribute keys, including a final attribute without a trailing semicolon. Automatic selection requires a key present on every retained row, preserving archived fallback to a complete alternate key. Reject missing or empty feature/parent identifiers with record coordinates before writing BED output. Reject contradictory per-variant/parent-grouping requests, retain archived missing-parent-column warning behavior, and update existing help and documentation.

Validation:

  • Final local full Python suite: 542 passed, 82 skipped, 1 deselected; focused RNA/grouping suite: 76 passed. This includes GTF/GTF.gz/GFF3 counting CLI integration and complete-key inference tests.
  • Rust: 132 passed, 7 ignored; three doctests ignored. Ruff lint/format, release metadata and diff checks pass.
  • Generated RNA BAMs include spliced reads, paired mates, overlapping exons and two genes. The broader local audit matched 144 counting comparisons across genotype presence, SNP ordering and thread counts, plus 32 analysis comparisons including the archived file-based runner. All parent aliases and the full VCF/GTF counting command succeed.
  • Committed regression tests cover annotation defaults, exact keys, final attributes, identifier errors, counting priority and CLI grouping against archived Python commit 41354fc.
  • Single-dispersion statistical references are unmodified archived Python. Linear comparisons explicitly use the existing scalar/array adapter and forward the archive's otherwise ignored phased argument; likelihoods and optimizers are unchanged.
  • GFF3 final-attribute handling and clear missing-ID errors intentionally improve on archived failures. Multiple Parent values retain their existing literal representation.

Counting and bulk inference remain Rust-only. No Rust algorithms, dispersion policies, likelihoods, pseudocount rules or variant policies change. Inputs are synthetic; this does not certify real RNA or single-cell biological performance.

Based directly on dev; independent of single-cell PR #138. No generated data or investigation reports are included.

Tested remote head: 920b42a; source tree: 85160008495629137789fff043841b92c2c6975d. Local and remote trees match. All seven final-head workflows passed: CI (Python 3.10–3.13, Rust tests, Clippy and formatting), Build (Linux/macOS wheels), Documentation, CodeQL, Security, Ecosystem (Galaxy/Nextflow), and Container CI (native amd64/arm64). Linux Python 3.11: 548 passed, 76 skipped, 1 deselected. The broader RNA audit was rerun on the final source: 144/144 counting comparisons, 32/32 analysis comparisons, all four parent aliases and the full VCF/GTF counting command passed.

Jaureguy760 added a commit that referenced this pull request Oct 16, 2026
Integrate single-cell and RNA compatibility fixes, checked count arithmetic,
correct workflow inputs and coverage boundaries, and align documentation and
source-build requirements.

Validate with all seven PR workflows, including Python 3.10–3.13, native
Rust tests, wheels, Galaxy/Nextflow regressions and amd64/arm64 containers.
Public chromosome 21 wide-reference comparisons and clean source installation
also pass. Supersedes #138 and #139; no release is published.

Copy link
Copy Markdown
Collaborator Author

Superseded by #140, now merged into dev at 4cd820b9b141e61dd8fda7fde32026b87969e75d. The replacement includes these changes, the combined integration fixes and final-head validation across all seven PR workflows. Closing this PR as superseded; no release has been tagged or published.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant