Repository navigation
Add scdblfinder module - #13465
Add scdblfinder module#13465
Conversation
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
|
Most of the lines here are the generated conda lock files (over 6,600). The module itself is five small files. |
|
Two things:
|
Write the h5ad with gzip compression, as in the other scdownstream modules. The predictions output is now a CSV with a single boolean column (true for doublets), named after the prefix and indexed by cell barcode. This matches the layout of the other doublet detection modules, so scdownstream can combine them. The full scDblFinder table (class, score and related columns) moves to a new scores output.
|
Thanks, both done. The h5ad is now written with gzip compression. The predictions output is now a CSV with only the boolean doublet column (named after the prefix, one row per cell barcode), which is the layout DOUBLETREMOVAL reads, so it can be combined with the other methods. I moved the full scDblFinder table (class, score and so on) into a separate scores output. |
vagkaratzas
left a comment
There was a problem hiding this comment.
- Blocking: the test assertions do not follow the
sanitizeOutput(process.out)rule, so the CSV outputs are never checked. - Blocking:
dbrandbatch_colshould go throughext.args, and the template needs to honourtask.ext.args; output paths should use${prefix}rather than globs. - Minor: implicit
itin tests, missing ontologies on the versions entries inmeta.yml.
Gates: lint and nf-test taken from CI (both green); nextflow lint run locally, no errors.
Diff 7.96/10 · Overall 7.96/10
nf-core-reviewer 0.5.0 / vagkaratzas-review (rubric v4) · claude-sonnet-5-5
Take only the meta and h5ad as inputs and pass dbr, samples and other
scDblFinder options through task.ext.args, with a tests/nextflow.config that
sets ext.args from params.module_args. A single string given as samples is
read as the name of an obs column.
Use ${prefix} in the output paths instead of globs, add the YAML ontology to
the versions entries in meta.yml, name the test closure parameters, and
snapshot the predictions file in the real tests.
|
Thanks for the review, all points are addressed. dbr and batch_col are gone from the inputs and everything goes through ext.args now (e.g. dbr = 0.08, samples = "batch"), with tests/nextflow.config setting ext.args from params.module_args. Outputs use ${prefix} paths, the versions entries have the YAML ontology, and the closures are named. In the real tests I snapshot the predictions CSV, the versions and adata.yaml rather than the whole sanitizeOutput(process.out), because the h5ad checksum and the float scores can differ between platforms. Happy to switch to the full snapshot if you prefer. |
vagkaratzas
left a comment
There was a problem hiding this comment.
Thanks for the updates! The ext.args handling, the ${prefix} output names, the named closure parameters and the versions ontologies are all fixed now.
- Blocking: the non-stub tests still don't snapshot
sanitizeOutput(process.out). UseunstableKeysfor the channels that change between runs (see the inline suggestion). - Blocking:
versions.ymlonly reports R and scDblFinder. It should also report every other package inenvironment.yml. - Minor: one comment just repeats the code, and the
predictionsdescription inmeta.ymlis longer than one line.
Also worth doing: modules on master now start with the two-line nf-core licence header (see e.g. mafft/align/main.nf). Please add it to main.nf.
Diff 8.50/10 · Overall 8.50/10
nf-core-reviewer 0.5.0 / vagkaratzas-review (rubric v4) · claude-opus-5-5
Report the versions of anndataR, SingleCellExperiment, BiocParallel and rhdf5 in versions.yml, in the template and in the stub. Snapshot sanitizeOutput(process.out) in the real tests, with the h5ad and scores channels as unstable keys and the scores line count alongside. Add the nf-core licence header to main.nf, shorten the predictions description in meta.yml and drop a comment that repeated the code.
vagkaratzas
left a comment
There was a problem hiding this comment.
- All previous requested changes are addressed: the non-stub tests now snapshot
sanitizeOutput(process.out, unstableKeys: ['h5ad', 'scores'])with theadata.yamlandscores.size()checks kept as stable replacements,versions.yml(template and stub) reports every package inenvironment.yml, the versions ontologies are inmeta.yml, thepredictionsdescription is one line, the redundant comment is gone and the licence header is inmain.nf. - No new findings. Lint and nf-test are green on the head commit, and
nextflow lintreports no errors.
Approval should be on its way soon.
Gates: lint and nf-test taken from CI (both green); nextflow lint run locally, no errors (one "variable declared but not used" warning for args, which the template reads).
Diff 10.00/10 · Overall 10.00/10
nf-core-reviewer 0.5.0 / vagkaratzas-review (rubric v4) · claude-sonnet-5-5
PR checklist
Closes #XXX
topic: versions- See version_topicslabelnf-core modules test <MODULE> --profile dockernf-core modules test <MODULE> --profile singularitynf-core modules test <MODULE> --profile condanf-core subworkflows test <SUBWORKFLOW> --profile dockernf-core subworkflows test <SUBWORKFLOW> --profile singularitynf-core subworkflows test <SUBWORKFLOW> --profile conda