Skip to content

Document that ultima_fastq requires no poly(A) - #91

Merged
agillen merged 1 commit into
masterfrom
ultima-fastq-polya-note
Oct 29, 2026
Merged

agillen merged 1 commit into
masterfrom
ultima-fastq-polya-note

Conversation

@agillen

@agillen agillen commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

Confirms, and documents, that the ultima_fastq platform does not require a detectable 3' poly(A) at any step. Docs only; no code change was needed.

What was checked

  • Explicit filter: both ultima_fastq blocks (chromiumV3, chromiumV4) set R2_polyA_filter: false, so filter_R2 keeps every CB/UB-tagged alignment and skips filter_bam.py.
  • Implicit clipping: starsolo_R2 always runs STAR with --clipAdapterType CellRanger4, which can clip a 3' poly(A). Simulated Ultima-style R2 reads were aligned with the exact starsolo_R2 flags (STAR 2.7.11b), with CellRanger4 and with clipping off (Hamming, no adapter):
read 3' end (both strands) CellRanger4 no clipping
plain sequence exact exact
just before a genomic A-run (3-30 A) exact exact
1-12 bases into a genomic A-run exact exact
ending in a 30-A tract clipped 36 bp exact

Only the last case changes, and Ultima's homopolymer trimming removes such tracts, so real ultima_fastq reads keep their true end (the +5 bp R2_priming_offset then gives the priming site).

Changes

chemistry.yaml comment, AGENTS.md configuration notes and the README's Ultima notes now say explicitly that no poly(A) is required.

🤖 Generated with Claude Code

Ultima-delivered FASTQs end 5 bp before the trimmed homopolymer, so the
ultima_fastq platform must not depend on a detectable 3' poly(A). Checked:
- R2_polyA_filter is false for both ultima_fastq blocks, so filter_R2 keeps
  every CB/UB-tagged alignment and filter_bam.py is skipped.
- starsolo_R2 always runs STAR with --clipAdapterType CellRanger4. On
  simulated Ultima-style R2 reads (both strands, ending in plain sequence,
  just before a genomic A-run, or 1-12 bases into one) STAR kept every
  aligned 3' end exact; it only clipped reads whose last 30 bases were A's,
  which Ultima's homopolymer trimming does not produce.

No code change is needed; chemistry.yaml, AGENTS.md and the README now say so
explicitly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@agillen
agillen merged commit 5e0aa25 into master Oct 29, 2026
2 checks passed
@agillen
agillen deleted the ultima-fastq-polya-note branch October 29, 2026 21:39
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