Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d06bb20
Add Symphony integration via symphonypy.
nictru May 19, 2026
9177225
Fix Symphony module container build and version reporting.
May 26, 2026
1f038c6
Rename Symphony process to SYMPHONY_HARMONYINTEGRATE.
May 26, 2026
1808682
Retire scanpy/harmony in favor of symphony/harmonyintegrate.
May 26, 2026
23109e8
Add Symphony reference mapping support
nictru May 28, 2026
18e6d65
Remove local contrib test-datasets helper after upstream merge.
nictru May 29, 2026
00b6c17
Rename harmony integration method to symphony.
nictru May 29, 2026
1da5769
Point pipeline tests at official nf-core test-datasets.
nictru May 29, 2026
e3f2923
Refresh nf-test snapshots after symphony rename and test-data update.
nictru May 29, 2026
a7429c9
Use forked pipeline test data
nictru May 29, 2026
3b3d863
Fix cellbender merge gene alignment for mixed ID columns.
nictru May 30, 2026
f31f484
Update SEURAT_INTEGRATION container with glmGamPoi and Seurat 5.5.
nictru May 31, 2026
be87838
Align SEURAT_INTEGRATION nf-test with pipeline QC gene filtering.
nictru May 31, 2026
150d30c
Update test snapshots
nictru May 31, 2026
b7488c7
Update pipeline-level test snapshot
nictru May 31, 2026
3f1d4e7
Improve mygene.info API failure messages in ADATA_MYGENE.
nictru May 31, 2026
e8e002e
Limit number of genes processed at a time in mygene
nictru Jun 1, 2026
8631fd4
Thread params.species through ADATA_MYGENE for MyGene.info lookups.
nictru Jun 1, 2026
cef4bcd
Add analysis plan to extension test
nictru Jun 2, 2026
563a5f1
Change analysis plan
nictru Jun 2, 2026
82c3a86
Disable liana in extension test
nictru Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ testing*
null/
.lineage/
.nf-test*
tests/assets/*.h5ad
contrib/nf-core-test-datasets/build_output/
contrib/nf-core-test-datasets/extension_base/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Steps marked with the boat icon are not yet implemented. For the other steps, th
3. Integration
- [scVI](https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html)
- [scANVI](https://docs.scvi-tools.org/en/stable/user_guide/models/scanvi.html)
- [Harmony](https://portals.broadinstitute.org/harmony/articles/quickstart.html)
- [Symphony](https://github.com/immunogenomics/symphony) / Harmony (via [symphonypy](https://pypi.org/project/symphonypy/))
- [BBKNN](https://github.com/Teichlab/bbknn)
- [Combat](https://scanpy.readthedocs.io/en/latest/api/generated/scanpy.pp.combat.html)
- [Seurat](https://satijalab.org/seurat/articles/integration_introduction)
Expand Down
6 changes: 3 additions & 3 deletions assets/multiqc_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ report_section_order:
order: -1005
"scanvi":
order: -1006
"harmony":
"symphony":
order: -1007
"bbknn":
order: -1008
"combat":
order: -1009
"combat":
order: -1010
# If new tools are add. They need to be added here
"nf-core-scdownstream-methods-description":
order: -2001
Expand Down
12 changes: 8 additions & 4 deletions assets/schema_analysis_plan.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,31 @@
"pattern": "^\\S*$",
"default": null,
"errorMessage": "Integration name cannot contain spaces",
"description": "Integration method name, or empty to match all integrations"
"description": "Integration method name, or empty to match all integrations",
"meta": ["integration"]
},
"subset": {
"type": "string",
"pattern": "^\\S*$",
"default": null,
"errorMessage": "Subset cannot contain spaces",
"description": "Clustering subset (global or a label value), or empty to match all subsets"
"description": "Clustering subset (global or a label value), or empty to match all subsets",
"meta": ["subset"]
},
"resolution": {
"type": "number",
"minimum": 0,
"default": null,
"description": "Leiden resolution, or empty to match all resolutions"
"description": "Leiden resolution, or empty to match all resolutions",
"meta": ["resolution"]
},
"analyses": {
"type": "string",
"pattern": "^(|paga|liana|de|cytetype)(,(paga|liana|de|cytetype))*$",
"default": null,
"errorMessage": "Analyses must be a comma-separated list of paga, liana, de, and/or cytetype",
"description": "Downstream analyses to run for matching clusterings, or empty to run all analyses"
"description": "Downstream analyses to run for matching clusterings, or empty to run all analyses",
"meta": ["analyses"]
}
}
}
Expand Down
20 changes: 18 additions & 2 deletions conf/modules.config
Original file line number Diff line number Diff line change
Expand Up @@ -379,9 +379,25 @@ process {
]
}

withName: SCANPY_HARMONY {
withName: SYMPHONY_HARMONYINTEGRATE {
publishDir = [
path: { "${params.outdir}/combine/integrate/harmony" },
path: { "${params.outdir}/combine/integrate/symphony" },
mode: params.publish_dir_mode,
saveAs: { filename ->
if (filename.endsWith('_reference.h5ad')) {
return 'symphony_reference.h5ad'
}
if (params.save_intermediates && !filename.equals('versions.yml')) {
return filename
}
return null
},
]
}

withName: SYMPHONY_MAPEMBEDDING {
publishDir = [
path: { "${params.outdir}/combine/integrate/symphony" },
mode: params.publish_dir_mode,
enabled: params.save_intermediates,
saveAs: { filename -> filename.equals('versions.yml') ? null : filename },
Expand Down
2 changes: 1 addition & 1 deletion conf/test.config
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ params {

// Input data
input = params.pipelines_testdata_base_path + 'samplesheet.csv'
integration_methods = 'scvi,harmony,bbknn,combat'
integration_methods = 'scvi,symphony,bbknn,combat'
doublet_detection = 'solo,scrublet,scdblfinder'
celltypist_model = 'Adult_Human_Skin'
celldex_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/singleR/references.csv'
Expand Down
2 changes: 1 addition & 1 deletion conf/test_full.config
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ params {

// Input data for full size test
input = params.pipelines_testdata_base_path + 'samplesheet.csv'
integration_methods = 'scvi,harmony,bbknn,combat'
integration_methods = 'scvi,symphony,bbknn,combat'
doublet_detection = 'solo,scrublet,doubletdetection,scdblfinder'
celltypist_model = 'Adult_Human_Skin'
celldex_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/singleR/references.csv'
Expand Down
3 changes: 2 additions & 1 deletion docs/output.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d
3. Integration
- [scVI](https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html)
- [scANVI](https://docs.scvi-tools.org/en/stable/user_guide/models/scanvi.html)
- [Harmony](https://portals.broadinstitute.org/harmony/articles/quickstart.html)
- [Symphony](https://github.com/immunogenomics/symphony) / Harmony (via [symphonypy](https://pypi.org/project/symphonypy/))
- [BBKNN](https://github.com/Teichlab/bbknn)
- [Combat](https://scanpy.readthedocs.io/en/latest/api/generated/scanpy.pp.combat.html)
- [Seurat](https://satijalab.org/seurat/articles/integration_introduction)
Expand Down Expand Up @@ -98,6 +98,7 @@ The `preprocess` directory contains a subdirectory for each sample, which contai
- `${tool}`
- `*.h5ad/*.rds`: The integrated H5AD or RDS file.
- `X_${tool}.pkl`: Low-dimensional representation of the integrated data.
- `symphony_reference.h5ad` (Symphony only): Compact Symphony reference AnnData for query mapping, published from de novo Symphony runs.

</details>

Expand Down
Loading
Loading