Repository navigation
fix: handle lane-split flowcells and run 10x Multiome with cellranger-arc - #174
Conversation
…lranger-arc - keep only samples with FASTQs in the current _lanes_<n> folder; skip empty projects - split an analysis type by library protocol so each lane gets its own pipeline - route Chromium_NextGEM_Multiome_GEX/ATAC to new scMultiome (10x_ARC wrapper); the first lane pass that finds both halves ready runs the pair, sibling lanes skip pairs with <pair>.done, and a lane waiting for its partner is not marked done - add [10x] ARC to BigRedButton.ini
- filterLaneSamples always keeps Multiome libraries; scMultiome decides per pair - take FASTQ sample names from disk (dissectBCL rewrites umlauts/spaces) - write multiome.attention with every reason a pair did not run (waiting for another lane folder, unpaired in Parkour, duplicate base name, one half in several lane folders) and log each as a warning - report such groups as ATTENTION in the finished e-mail, keep deepSeq uninformed, and print a red banner in run_brb
runOneGroup checked registry.aborted before writeMarker. A teardown landing between the two cleared a marker that did not exist yet, and the worker then left a live marker behind. Re-check after writing and clean up.
adRn-s
left a comment
There was a problem hiding this comment.
Reviewed incl. the teardown race fix. Test suite on e5032bb: 389 passed locally.
Race fix (runOneGroup): correct. Leftover marker case (worker passes check → teardown clears absent marker → worker writes marker) is closed by re-checking after writeMarker. Comments inline: first check now redundant; one residual window remains (driver started after cancelGroup snapshot) — pre-existing, OK as follow-up.
Multiome: design reads fine. Blockers before merge:
- ATAC FASTQ read set — see 10X_snakepipe#21; wrapper hardcodes R1/R2/I1/I2, BRB passes names only from
_R1. dm6/GRCz11unreachable viaarcGenomeKey(inline).- Retry after a failed cellranger-arc run likely hits the pipestance
_lock(see #21). - Real cellranger-arc run on rapidus (already noted in PR).
Also note: flowcell-level analysis.done is still touched by run.py → markFinished even when pairs are waiting, so the lane folder is never revisited. Fine because the other lane's pass runs the pair, but the "group not marked analysis.done" part has no effect on its own — worth saying so in the docstring.
|
Update after inspecting the real run (
Still open: |
Handoff for the next agent sessionRelated PRs (one feature: 10x Multiome with GEX and ATAC on separate lanes): dissectBCL#364 (docs) -> BigRedButton#174 (pipeline) -> 10X_snakepipe#21 ( Verified on a real run (
Warnings
Open items for THIS PR (BigRedButton#174), in priority order
|
…rkFinished docstring, add dev config ARC Items from PR #174 handoff comment: - Item 1: remove arcGenomeKey() duplicate; wrapper normalizes genome arg - Item 2: drop redundant abort check after writeMarker in runOneGroup - Item 4: verified wrapper log append fixes overwrite (no BRB change) - Item 5: filter stale waiting notes when pair runs - Item 6: add docstring to markFinished() - Item 7: add ARC= to BigRedButton_dev.ini
CI failed because setuptools found configs/ as a top-level package. Explicitly set packages=["BRB"] in [tool.setuptools].
Why
dissectBCL
--forcelanesplit(-F) can put one project into<flowcell>_lanes_1and<flowcell>_lanes_2, each with only that lane's samples (e.g. a Multiome project: lane 1 GEX, lane 2 ATAC). BRB processed the project in each lane folder with all its Parkour samples, picked the pipeline from the first sample's protocol, and had no Multiome support.What changes
*_lanes_<n>folder a project keeps only samples that have FASTQs there. A project left with none is skipped and logged. Normal and_lanes_1_2folders are unchanged._<protocol>suffix). Single-protocol paths are unchanged.scMultiome):Chromium_NextGEM_Multiome_GEX/_ATACgo to a new pipeline that runs the10x_ARCwrapper (feat: add 10x_ARC wrapper for joint cellranger-arc Multiome runs 10X_snakepipe#21) once per<base>_RNA+<base>_ATACpair.fastq.made. Lanes can be processed in any order.<base>.donein a sibling lane's output are not rerun.analysis.done.multiome.attentionin the output dir;ATTENTIONin the finished e-mail, which holds back the deepSeq notice;run_brb.runOneGroupnow re-checksregistry.abortedafter writingrunning.pid. Before, a teardown between the check and the write left a live marker behind. This is what madeTestCrashAndRestartfail now and then under load. A new regression test forces the timing.BigRedButton.ini:[10x] ARC=added.Known limitations
_RNA/_ATACname endings.A possible follow-up is a Parkour endpoint with per-library lanes, flowcells and a Multiome partner field. Not part of this PR.
Testing
pytest: 388 passed.ruff check BRB tests: clean.tests/test_PushButton_lanesplit.py(fake flowcell intmp_path, modelled on a real-Fflowcell): per-lane dispatch, protocol split, Multiome lane order, hand-over, done-elsewhere, unpaired, duplicate, both-lanes, umlaut names, note cleanup. ATTENTION e-mail test intests/test_email.py.cellranger-arc:runFlowcell→10x_ARC→ snakemake, lanes processed in the order 2, 1, 2. 2 arc calls (one per pair), no reruns.Before deploying
cellranger-arcon rapidus from an editable env of 10X_snakepipe#21.ARC=inBigRedButton_dev.ini._prodonly after release.