decoupler 2.2.0__tar.gz → 2.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {decoupler-2.2.0 → decoupler-2.3.1}/.cruft.json +7 -4
- {decoupler-2.2.0 → decoupler-2.3.1}/.editorconfig +1 -1
- {decoupler-2.2.0 → decoupler-2.3.1}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -2
- decoupler-2.3.1/.github/dependabot.yml +12 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.github/workflows/build.yaml +6 -2
- decoupler-2.3.1/.github/workflows/notebooks.yaml +62 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.github/workflows/release.yaml +9 -3
- {decoupler-2.2.0 → decoupler-2.3.1}/.github/workflows/test.yaml +20 -13
- {decoupler-2.2.0 → decoupler-2.3.1}/.pre-commit-config.yaml +9 -3
- {decoupler-2.2.0 → decoupler-2.3.1}/.readthedocs.yaml +2 -2
- {decoupler-2.2.0 → decoupler-2.3.1}/CHANGELOG.md +51 -2
- {decoupler-2.2.0 → decoupler-2.3.1}/PKG-INFO +27 -22
- {decoupler-2.2.0 → decoupler-2.3.1}/README.md +22 -17
- decoupler-2.3.1/docs/_static/images/logo.svg +35 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/api/ds.md +5 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/api/pp.md +3 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/conf.py +8 -7
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/references.bib +14 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/pyproject.toml +10 -8
- decoupler-2.3.1/src/decoupler/_skills/data/SKILL.md +145 -0
- decoupler-2.3.1/src/decoupler/_skills/data/references/contrast.md +86 -0
- decoupler-2.3.1/src/decoupler/_skills/data/references/resources.md +82 -0
- decoupler-2.3.1/src/decoupler/_skills/install.py +175 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/ds/_spatial.py +7 -1
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_gsea.py +8 -6
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_ora.py +10 -2
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_query_set.py +5 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_waggr.py +26 -15
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_zscore.py +2 -2
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_dotplot.py +8 -3
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pp/anndata.py +1 -1
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_gsea.py +46 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_ora.py +70 -2
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_query_set.py +9 -0
- decoupler-2.3.1/tests/mt/test_waggr.py +72 -0
- decoupler-2.3.1/tests/mt/test_zscore.py +27 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_dotplot.py +10 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pp/test_anndata.py +1 -1
- decoupler-2.3.1/tests/test_install_skills.py +214 -0
- decoupler-2.2.0/.github/workflows/notebooks.yaml +0 -57
- decoupler-2.2.0/docs/_static/images/logo.svg +0 -65
- decoupler-2.2.0/docs/_templates/autosummary/class.rst +0 -61
- decoupler-2.2.0/docs/extensions/typed_returns.py +0 -32
- decoupler-2.2.0/src/decoupler/_skills/data/SKILL.md +0 -85
- decoupler-2.2.0/src/decoupler/_skills/data/references/benchmarking.md +0 -59
- decoupler-2.2.0/src/decoupler/_skills/data/references/calling-convention.md +0 -91
- decoupler-2.2.0/src/decoupler/_skills/data/references/datasets.md +0 -88
- decoupler-2.2.0/src/decoupler/_skills/data/references/getting-started.md +0 -82
- decoupler-2.2.0/src/decoupler/_skills/data/references/io-and-outputs.md +0 -80
- decoupler-2.2.0/src/decoupler/_skills/data/references/methods.md +0 -67
- decoupler-2.2.0/src/decoupler/_skills/data/references/multi-method.md +0 -72
- decoupler-2.2.0/src/decoupler/_skills/data/references/preprocessing.md +0 -66
- decoupler-2.2.0/src/decoupler/_skills/data/references/priors.md +0 -79
- decoupler-2.2.0/src/decoupler/_skills/data/references/ranking-and-plotting.md +0 -131
- decoupler-2.2.0/src/decoupler/_skills/install.py +0 -143
- decoupler-2.2.0/tests/mt/test_waggr.py +0 -35
- decoupler-2.2.0/tests/mt/test_zscore.py +0 -16
- decoupler-2.2.0/tests/test_install_skills.py +0 -158
- {decoupler-2.2.0 → decoupler-2.3.1}/.codecov.yaml +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.gitignore +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.gitmodules +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.vscode/extensions.json +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.vscode/launch.json +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/.vscode/settings.json +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/LICENSE +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/biome.jsonc +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/_static/.gitkeep +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/_static/css/custom.css +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/_static/images/logo.png +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/_static/images/mlm.png +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/_static/images/ora.png +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/_static/images/ulm.png +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/_templates/.gitkeep +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/api/bm.md +1 -1
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/api/index.md +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/api/mt.md +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/api/op.md +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/api/pl.md +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/api/tl.md +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/changelog.md +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/index.md +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/docs/references.md +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/_Method.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/_Plotter.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/_datatype.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/_docs.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/_download.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/_log.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/_odeps.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/_skills/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/_pp.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/_run.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/metric/_Metric.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/metric/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/metric/_auc.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/metric/_fscore.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/metric/_hmean.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/metric/_qrank.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/pl/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/pl/_auc.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/pl/_bar.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/pl/_format.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/pl/_fscore.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/pl/_qrank.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/bm/pl/_summary.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/ds/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/ds/_bulk.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/ds/_scell.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/ds/_toy.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/ds/_utils.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_aucell.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_consensus.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_decouple.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_gsva.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_mdt.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_methods.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_mlm.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_pv.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_run.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_udt.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_ulm.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/mt/_viper.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/op/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/op/_collectri.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/op/_dorothea.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/op/_dtype.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/op/_hallmark.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/op/_progeny.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/op/_resource.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/op/_translate.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_barplot.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_filter_by_expr.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_filter_by_prop.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_filter_samples.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_leading_edge.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_network.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_obsbar.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_obsm.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_order.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_order_targets.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_source_targets.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pl/_volcano.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pp/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pp/data.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/pp/net.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/tl/__init__.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/tl/_rankby_group.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/tl/_rankby_obsm.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/src/decoupler/tl/_rankby_order.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/bm/test_benchmark.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/bm/test_pl.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/conftest.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/ds/test_bulk.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/ds/test_scell.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/ds/test_spatial.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/ds/test_toy.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/ds/test_utils.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_adj.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_aucell.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_consensus.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_decouple.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_gsva.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_mdt.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_methods.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_mlm.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_run.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_udt.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_ulm.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/mt/test_viper.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/op/test_collectri.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/op/test_dorothea.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/op/test_dtype.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/op/test_hallmark.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/op/test_progeny.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/op/test_resource.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/op/test_translate.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_Plotter.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_barplot.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_filter_by_expr.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_filter_by_prop.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_filter_samples.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_leading_edge.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_network.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_obsbar.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_obsm.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_order.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_order_targets.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_source_targets.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pl/test_volcano.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pp/test_data.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/pp/test_net.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/test_download.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/test_version.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/tl/test_rankby_group.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/tl/test_rankby_obsm.py +0 -0
- {decoupler-2.2.0 → decoupler-2.3.1}/tests/tl/test_rankby_order.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"template": "https://github.com/scverse/cookiecutter-scverse",
|
|
3
|
-
"commit": "
|
|
4
|
-
"checkout": "v0.
|
|
3
|
+
"commit": "6518dfa1abde7379ea7255daf0ce09c23f2b4c94",
|
|
4
|
+
"checkout": "v0.8.0",
|
|
5
5
|
"context": {
|
|
6
6
|
"cookiecutter": {
|
|
7
7
|
"project_name": "decoupler",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"github_repo": "decoupler",
|
|
14
14
|
"license": "BSD 3-Clause License",
|
|
15
15
|
"ide_integration": true,
|
|
16
|
+
"issue_categorization": "",
|
|
16
17
|
"_copy_without_render": [
|
|
17
18
|
".github/workflows/build.yaml",
|
|
18
19
|
".github/workflows/test.yaml",
|
|
@@ -36,8 +37,10 @@
|
|
|
36
37
|
"trim_blocks": true
|
|
37
38
|
},
|
|
38
39
|
"_template": "https://github.com/scverse/cookiecutter-scverse",
|
|
39
|
-
"_commit": "
|
|
40
|
-
}
|
|
40
|
+
"_commit": "4d6aa34fd5be7523ca3bd49fbd81a882dde01d1f"
|
|
41
|
+
},
|
|
42
|
+
"_commit": "6518dfa1abde7379ea7255daf0ce09c23f2b4c94",
|
|
43
|
+
"_template": "https://github.com/scverse/cookiecutter-scverse"
|
|
41
44
|
},
|
|
42
45
|
"directory": null
|
|
43
46
|
}
|
|
@@ -9,8 +9,7 @@ body:
|
|
|
9
9
|
detailing how to provide the necessary information for us to reproduce your bug. In brief:
|
|
10
10
|
* Please provide exact steps how to reproduce the bug in a clean Python environment.
|
|
11
11
|
* In case it's not clear what's causing this bug, please provide the data or the data generation procedure.
|
|
12
|
-
*
|
|
13
|
-
available datasets or to share a subset of your data.
|
|
12
|
+
* Replicate problems on public datasets or share data subsets when full sharing isn't possible.
|
|
14
13
|
|
|
15
14
|
- type: textarea
|
|
16
15
|
id: report
|
|
@@ -10,16 +10,20 @@ concurrency:
|
|
|
10
10
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
11
|
cancel-in-progress: true
|
|
12
12
|
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
13
16
|
jobs:
|
|
14
17
|
package:
|
|
15
18
|
runs-on: ubuntu-latest
|
|
16
19
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
20
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
18
21
|
with:
|
|
19
22
|
filter: blob:none
|
|
20
23
|
fetch-depth: 0
|
|
24
|
+
persist-credentials: false
|
|
21
25
|
- name: Install uv
|
|
22
|
-
uses: astral-sh/setup-uv@
|
|
26
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
23
27
|
- name: Build package
|
|
24
28
|
run: uv build
|
|
25
29
|
- name: Check package
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Test notebooks
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
test:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
defaults:
|
|
20
|
+
run:
|
|
21
|
+
# to fail on error in multiline statements (-e), in pipes (-o pipefail), and on unset variables (-u).
|
|
22
|
+
shell: bash -euo pipefail {0}
|
|
23
|
+
|
|
24
|
+
env:
|
|
25
|
+
NOTEBOOK_PATH: docs/notebooks
|
|
26
|
+
|
|
27
|
+
strategy:
|
|
28
|
+
fail-fast: false
|
|
29
|
+
matrix:
|
|
30
|
+
notebook:
|
|
31
|
+
[
|
|
32
|
+
"example.ipynb",
|
|
33
|
+
"bench/rna.ipynb",
|
|
34
|
+
"bulk/rna.ipynb",
|
|
35
|
+
"omnipath/licenses.ipynb",
|
|
36
|
+
"omnipath/orthologs.ipynb",
|
|
37
|
+
"scell/rna_psbk.ipynb",
|
|
38
|
+
"scell/rna_pstime.ipynb",
|
|
39
|
+
"scell/rna_sc.ipynb",
|
|
40
|
+
"spatial/rna_visium.ipynb",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
45
|
+
with:
|
|
46
|
+
filter: blob:none
|
|
47
|
+
fetch-depth: 0
|
|
48
|
+
submodules: "true"
|
|
49
|
+
persist-credentials: false
|
|
50
|
+
- name: Set up Python
|
|
51
|
+
uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
|
|
52
|
+
with:
|
|
53
|
+
python-version: "3.13"
|
|
54
|
+
- name: Install uv
|
|
55
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
56
|
+
- name: Install dependencies
|
|
57
|
+
run: |
|
|
58
|
+
uv pip install --system .
|
|
59
|
+
uv pip install --system --group dev --group test
|
|
60
|
+
uv pip install --system nbconvert ipykernel
|
|
61
|
+
- name: Run ${{ matrix.notebook }} Notebook
|
|
62
|
+
run: jupyter nbconvert --to notebook --execute ${{ env.NOTEBOOK_PATH }}/${{ matrix.notebook }}
|
|
@@ -5,6 +5,8 @@ on:
|
|
|
5
5
|
types: [published]
|
|
6
6
|
|
|
7
7
|
# Use "trusted publishing", see https://docs.pypi.org/trusted-publishers/
|
|
8
|
+
permissions: {}
|
|
9
|
+
|
|
8
10
|
jobs:
|
|
9
11
|
release:
|
|
10
12
|
name: Upload release to PyPI
|
|
@@ -13,15 +15,19 @@ jobs:
|
|
|
13
15
|
name: pypi
|
|
14
16
|
url: https://pypi.org/p/decoupler
|
|
15
17
|
permissions:
|
|
18
|
+
contents: read
|
|
16
19
|
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
|
17
20
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
21
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
19
22
|
with:
|
|
20
23
|
filter: blob:none
|
|
21
24
|
fetch-depth: 0
|
|
25
|
+
persist-credentials: false
|
|
22
26
|
- name: Install uv
|
|
23
|
-
uses: astral-sh/setup-uv@
|
|
27
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
28
|
+
with:
|
|
29
|
+
enable-cache: false
|
|
24
30
|
- name: Build package
|
|
25
31
|
run: uv build
|
|
26
32
|
- name: Publish package distributions to PyPI
|
|
27
|
-
uses: pypa/gh-action-pypi-publish@
|
|
33
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
@@ -13,7 +13,7 @@ concurrency:
|
|
|
13
13
|
cancel-in-progress: true
|
|
14
14
|
|
|
15
15
|
permissions:
|
|
16
|
-
|
|
16
|
+
contents: read
|
|
17
17
|
|
|
18
18
|
jobs:
|
|
19
19
|
# Get the test environment from hatch as defined in pyproject.toml.
|
|
@@ -22,17 +22,18 @@ jobs:
|
|
|
22
22
|
# Check [[tool.hatch.envs.hatch-test.matrix]] in pyproject.toml and https://hatch.pypa.io/latest/environment/ for
|
|
23
23
|
# more details.
|
|
24
24
|
get-environments:
|
|
25
|
-
runs-on: ubuntu-
|
|
25
|
+
runs-on: ubuntu-slim
|
|
26
26
|
outputs:
|
|
27
27
|
envs: ${{ steps.get-envs.outputs.envs }}
|
|
28
28
|
allowed-failures: ${{ steps.get-envs.outputs.allowed-failures }}
|
|
29
29
|
steps:
|
|
30
|
-
- uses: actions/checkout@
|
|
30
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
31
31
|
with:
|
|
32
32
|
filter: blob:none
|
|
33
33
|
fetch-depth: 0
|
|
34
|
+
persist-credentials: false
|
|
34
35
|
- name: Install uv
|
|
35
|
-
uses: astral-sh/setup-uv@
|
|
36
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
36
37
|
- name: Get test environments
|
|
37
38
|
id: get-envs
|
|
38
39
|
run: |
|
|
@@ -52,6 +53,9 @@ jobs:
|
|
|
52
53
|
# Run tests through hatch. Spawns a separate runner for each environment defined in the hatch matrix obtained above.
|
|
53
54
|
test:
|
|
54
55
|
needs: get-environments
|
|
56
|
+
permissions:
|
|
57
|
+
id-token: write # for codecov OIDC
|
|
58
|
+
contents: read
|
|
55
59
|
|
|
56
60
|
strategy:
|
|
57
61
|
fail-fast: false
|
|
@@ -61,19 +65,22 @@ jobs:
|
|
|
61
65
|
|
|
62
66
|
name: ${{ matrix.env.label }}
|
|
63
67
|
runs-on: ${{ matrix.os }}
|
|
64
|
-
continue-on-error: ${{ contains(matrix.env.name, 'pre') }}
|
|
68
|
+
continue-on-error: ${{ contains(matrix.env.name, 'pre') }} # make "all-green" pass even if pre-release job fails
|
|
65
69
|
|
|
66
70
|
steps:
|
|
67
|
-
- uses: actions/checkout@
|
|
71
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
68
72
|
with:
|
|
69
73
|
filter: blob:none
|
|
70
74
|
fetch-depth: 0
|
|
75
|
+
persist-credentials: false
|
|
71
76
|
- name: Install uv
|
|
72
|
-
uses: astral-sh/setup-uv@
|
|
77
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
73
78
|
with:
|
|
74
79
|
python-version: ${{ matrix.env.python }}
|
|
75
80
|
- name: create hatch environment
|
|
76
81
|
run: uvx hatch env create ${{ matrix.env.name }}
|
|
82
|
+
- name: list all all installed package versions
|
|
83
|
+
run: uvx hatch run ${{ matrix.env.name }}:uv pip list
|
|
77
84
|
- name: run tests using hatch
|
|
78
85
|
env:
|
|
79
86
|
MPLBACKEND: agg
|
|
@@ -82,12 +89,12 @@ jobs:
|
|
|
82
89
|
run: uvx hatch run ${{ matrix.env.name }}:run-cov -v --color=yes -n auto
|
|
83
90
|
- name: generate coverage report
|
|
84
91
|
run: |
|
|
85
|
-
# See https://coverage.readthedocs.io/
|
|
92
|
+
# See https://coverage.readthedocs.io/page/config.html#run-patch
|
|
86
93
|
test -f .coverage || uvx hatch run ${{ matrix.env.name }}:cov-combine
|
|
87
94
|
uvx hatch run ${{ matrix.env.name }}:cov-report # report visibly
|
|
88
95
|
uvx hatch run ${{ matrix.env.name }}:coverage xml # create report for upload
|
|
89
96
|
- name: Upload coverage
|
|
90
|
-
uses: codecov/codecov-action@
|
|
97
|
+
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
|
|
91
98
|
with:
|
|
92
99
|
fail_ci_if_error: true
|
|
93
100
|
use_oidc: true
|
|
@@ -102,7 +109,7 @@ jobs:
|
|
|
102
109
|
- test
|
|
103
110
|
runs-on: ubuntu-latest
|
|
104
111
|
steps:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
- uses: re-actors/alls-green@b5b5b37504aa4183270bd3d855c52a67f212be35 # v1.3.0
|
|
113
|
+
with:
|
|
114
|
+
allowed-failures: ${{ needs.get-environments.outputs.allowed-failures }}
|
|
115
|
+
jobs: ${{ toJSON(needs) }}
|
|
@@ -7,16 +7,16 @@ default_stages:
|
|
|
7
7
|
minimum_pre_commit_version: 2.16.0
|
|
8
8
|
repos:
|
|
9
9
|
- repo: https://github.com/biomejs/pre-commit
|
|
10
|
-
rev: v2.
|
|
10
|
+
rev: v2.6.3
|
|
11
11
|
hooks:
|
|
12
12
|
- id: biome-format
|
|
13
13
|
exclude: ^\.cruft\.json$ # inconsistent indentation with cruft - file never to be modified manually.
|
|
14
14
|
- repo: https://github.com/tox-dev/pyproject-fmt
|
|
15
|
-
rev: v2.
|
|
15
|
+
rev: v2.30.3
|
|
16
16
|
hooks:
|
|
17
17
|
- id: pyproject-fmt
|
|
18
18
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
19
|
-
rev: v0.
|
|
19
|
+
rev: v0.17.2
|
|
20
20
|
hooks:
|
|
21
21
|
- id: ruff-check
|
|
22
22
|
types_or: [python, pyi, jupyter]
|
|
@@ -36,3 +36,9 @@ repos:
|
|
|
36
36
|
# Check that there are no merge conflicts (could be generated by template sync)
|
|
37
37
|
- id: check-merge-conflict
|
|
38
38
|
args: [--assume-in-merge]
|
|
39
|
+
|
|
40
|
+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
41
|
+
rev: v1.31.1
|
|
42
|
+
hooks:
|
|
43
|
+
- id: zizmor
|
|
44
|
+
args: [--no-progress, --fix]
|
|
@@ -8,15 +8,46 @@ and this project adheres to [Semantic Versioning][].
|
|
|
8
8
|
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
|
|
9
9
|
[semantic versioning]: https://semver.org/spec/v2.0.0.html
|
|
10
10
|
|
|
11
|
+
## 2.3.1
|
|
12
|
+
|
|
13
|
+
### Bugfixes
|
|
14
|
+
|
|
15
|
+
- Fixed `mt.zscore` swapping the `KSEA` and `RoKAI` flavors, restoring the behaviour of `decoupler<2`. Scores from the default `RoKAI` flavor change (#382)
|
|
16
|
+
- Fixed `mt.gsea` giving p-values of 0 when no permutation reached the observed score. The observed score is now counted as one of the permutations, as in `mt.waggr` (#383)
|
|
17
|
+
- Fixed `mt.waggr` aborting the Python process with numba's `workqueue` threading layer (default when TBB/OpenMP are unavailable, e.g. macOS arm64) due to nested parallel regions
|
|
18
|
+
|
|
19
|
+
## 2.3.0
|
|
20
|
+
|
|
21
|
+
### Changes
|
|
22
|
+
|
|
23
|
+
- Updated the bundled decoupler Agent Skill, and `decoupler-install-skills` now supports multiple agent frameworks
|
|
24
|
+
- `pp.filter_by_prop` now defaults to `min_prop=0.1` (was `0.2`) to match the value used in the vignettes
|
|
25
|
+
- `ds.msvisium` now returns log-normalized data (`sc.pp.normalize_total` + `sc.pp.log1p`), with the log-normalized matrix also stored in `adata.layers["norm"]`, instead of raw counts
|
|
26
|
+
- Dropped support for Python 3.11; decoupler now requires Python 3.12 or newer
|
|
27
|
+
- Updated to the scverse cookiecutter template v0.8.0 (hash-pinned GitHub Actions checked by zizmor, `prek` instead of `pre-commit`, `sphinx-design` instead of `sphinx-tabs`, shared Sphinx extensions from `scverse-misc`)
|
|
28
|
+
|
|
29
|
+
### Bugfixes
|
|
30
|
+
|
|
31
|
+
- Fixed `mt.ora` selecting the bottom `nvar - n_up` features instead of the top `n_up` ones. Ranks are ascending, so the threshold is now `nvar - n_up`, restoring the behaviour of `decoupler<2`. With the default `n_up` (top 5%) this selected 95% of the features as observed, which also made `mt.ora` fail with `invalid contingency table` whenever `nvar - n_up` exceeded `n_bg` (#346)
|
|
32
|
+
- Fixed `n_bm` in `mt.ora` selecting the bottom `n_bm - 1` features instead of `n_bm`
|
|
33
|
+
- `mt.ora` now validates that `n_up` and `n_bm` do not overlap and that `n_bg` is large enough for the number of selected features, instead of failing inside the Fisher exact test
|
|
34
|
+
- `mt.query_set` now raises an informative error when `n_bg` is smaller than the number of features to test, instead of failing inside `scipy.stats.fisher_exact`
|
|
35
|
+
- Fixed `mt.gsea` not shuffling the permutation indices when `seed=0`, which produced identical permutations and invalid p-values (#355)
|
|
36
|
+
- Fixed `mt.waggr` folding its already two-sided permutation p-values as one-sided, which gave scores near 0 the smallest p-value (#373)
|
|
37
|
+
- Fixed `pl.dotplot` showing an empty size legend when all dots have the same size (#370)
|
|
38
|
+
- Fixed `ds.msvisium` failing with HTTP 403 by fetching the spot metadata from `cells.ucsc.edu` instead of the `cells-test.gi.ucsc.edu` mirror
|
|
39
|
+
|
|
11
40
|
## 2.2.0
|
|
12
41
|
|
|
13
42
|
### Added
|
|
43
|
+
|
|
14
44
|
- Bundled a Claude Code [Agent Skill](https://docs.claude.com/en/docs/claude-code/skills) that teaches coding agents to use decoupler correctly (method selection, calling conventions, output locations, priors, datasets, and benchmarking)
|
|
15
45
|
- Added the `decoupler-install-skills` console script to install the skill into `~/.claude/skills/decoupler/` (use `--force` to refresh after upgrading, or `--print-path` to point `CLAUDE_SKILLS_PATH` at the bundled copy in place)
|
|
16
46
|
|
|
17
47
|
## 2.1.6
|
|
18
48
|
|
|
19
49
|
### Bugfixes
|
|
50
|
+
|
|
20
51
|
- Fixed `op.translate` (and every `op.resource` call for non-human organisms) failing with HTTP 404 after HGNC dropped the `genenames/` subtree from the EBI FTP mirror; the HCOP fifteen-column files are now fetched from the new HGNC Google Cloud Storage bucket (#303)
|
|
21
52
|
- Removed a redundant `pd.read_csv` call in `op.translate` that re-downloaded the HCOP file a second time and bypassed the retry logic in `_download`
|
|
22
53
|
- Fixed `bm.benchmark` ground-truth matrix row order not matching score matrix after `pivot`, which silently misaligned perturbation labels when obs names sort differently from their original order (#302)
|
|
@@ -24,29 +55,35 @@ and this project adheres to [Semantic Versioning][].
|
|
|
24
55
|
## 2.1.5
|
|
25
56
|
|
|
26
57
|
### Added
|
|
58
|
+
|
|
27
59
|
- `pl.volcano` now accepts a gene name (`str`) or list of gene names (`list[str]`) for the `top` parameter to annotate specific features on volcano plots
|
|
28
60
|
|
|
29
61
|
### Changes
|
|
62
|
+
|
|
30
63
|
- Refactored `ds.ensmbl_to_symbol` to reuse `_download` and fixed mirror fallback to actually switch between Ensembl mirrors
|
|
31
64
|
- Made `tqdm` progress bar compact in `_download`
|
|
32
65
|
|
|
33
66
|
### Bugfixes
|
|
67
|
+
|
|
34
68
|
- Fixed `pl.dotplot` ignoring `vcenter=0` due to falsy check (#293)
|
|
35
69
|
- Fixed `_log` setting the root logging level to INFO for all packages (#296)
|
|
36
70
|
|
|
37
71
|
## 2.1.4
|
|
38
72
|
|
|
39
73
|
### Changes
|
|
74
|
+
|
|
40
75
|
- Added `alternative` argument to `decoupler.mt.query_set`. By default `'greater'`, before it was `'two-sided'`
|
|
41
76
|
- Unpinned `scipy` version limit
|
|
42
77
|
|
|
43
78
|
### Bugfixes
|
|
79
|
+
|
|
44
80
|
- Fixed missing progressbar for `decoupler._download._download`
|
|
45
81
|
- Added missing `decoupler.mt.query_set` documentation
|
|
46
82
|
|
|
47
83
|
## 2.1.3
|
|
48
84
|
|
|
49
85
|
### Changes
|
|
86
|
+
|
|
50
87
|
- `pp.adjmat` now returns the same features as used as input instead of the subset of `net`
|
|
51
88
|
- `pp.pseudobulk` now returns the same order features as used as input instead of shuffling them
|
|
52
89
|
- Added a dedicated header and 5 attemps to `_download` to mitigate 429 Client Error from Zenodo downloads
|
|
@@ -54,6 +91,7 @@ and this project adheres to [Semantic Versioning][].
|
|
|
54
91
|
## 2.1.2
|
|
55
92
|
|
|
56
93
|
### Added
|
|
94
|
+
|
|
57
95
|
- `pp.query_set` to test overlap between a given feature set against a database of sets
|
|
58
96
|
|
|
59
97
|
### Changes
|
|
@@ -65,10 +103,12 @@ and this project adheres to [Semantic Versioning][].
|
|
|
65
103
|
## 2.1.1
|
|
66
104
|
|
|
67
105
|
### Added
|
|
106
|
+
|
|
68
107
|
- mypy checks in CI
|
|
69
108
|
- notebook checks in CI
|
|
70
109
|
|
|
71
110
|
### Bugfixes
|
|
111
|
+
|
|
72
112
|
- Fixed error in `decoupler.pp.pseudobulk` when `adata.obs_names` were not unique, now throws verbose error
|
|
73
113
|
- Fixed corner case in `decoupler.mt.gsea` when p-values were infitite and could not be corrected
|
|
74
114
|
|
|
@@ -81,41 +121,49 @@ and this project adheres to [Semantic Versioning][].
|
|
|
81
121
|
- Enrichment methods and pseudobulking now work with backed AnnData objects, useful when working with big datasets and memory is limited
|
|
82
122
|
|
|
83
123
|
### Bugfixes
|
|
124
|
+
|
|
84
125
|
- Fixed error in `pl.obsm` where default value of `cmap_obs` was not properly set.
|
|
85
126
|
|
|
86
127
|
## 2.0.7
|
|
87
128
|
|
|
88
129
|
### Changes
|
|
130
|
+
|
|
89
131
|
- Added `pre-commit` functionality to the repository
|
|
90
132
|
|
|
91
133
|
## 2.0.6
|
|
92
134
|
|
|
93
135
|
### Changes
|
|
136
|
+
|
|
94
137
|
- Modified links and paths to follow scverse's repository
|
|
95
138
|
|
|
96
139
|
## 2.0.5
|
|
97
140
|
|
|
98
141
|
### Bugfixes
|
|
142
|
+
|
|
99
143
|
- Fixed error message when extra dependencies where not installed
|
|
100
144
|
|
|
101
145
|
## 2.0.4
|
|
102
146
|
|
|
103
147
|
### Bugfixes
|
|
148
|
+
|
|
104
149
|
- Fixed `dcor` import bug as an external dependency
|
|
105
150
|
|
|
106
151
|
## 2.0.3
|
|
107
152
|
|
|
108
153
|
### Bugfixes
|
|
154
|
+
|
|
109
155
|
- Fixed error in `pp.pseudobulk` when obs columns were not categorical
|
|
110
156
|
|
|
111
157
|
## 2.0.2
|
|
112
158
|
|
|
113
159
|
### Changes
|
|
160
|
+
|
|
114
161
|
- Allowed ordering functions (`pp.bin_order`, `pl.order` and `pl.order_targets`) not to be bound between 0 and 1
|
|
115
162
|
- Added ipywidgets as dependency
|
|
116
163
|
- Silenced xgboost warnings
|
|
117
164
|
|
|
118
165
|
### Bugfixes
|
|
166
|
+
|
|
119
167
|
- Handled corner case in `bm.metric.auc` when scores are all 0
|
|
120
168
|
- Fixed error in `bm.metric.hmean` when metrics were str instead of list
|
|
121
169
|
- Fixed error when `obs` column is a list in `pp.pseudobulk`
|
|
@@ -123,6 +171,7 @@ and this project adheres to [Semantic Versioning][].
|
|
|
123
171
|
## 2.0.1
|
|
124
172
|
|
|
125
173
|
### Bugfixes
|
|
174
|
+
|
|
126
175
|
- Fixed an error in `pp.pseudobulk` when handling empty samples or features
|
|
127
176
|
|
|
128
177
|
## 2.0.0
|
|
@@ -149,7 +198,7 @@ All functions have been rewritten to follow the new API, errors when running pre
|
|
|
149
198
|
- Fixed `collectri` to the publication version instead of the OmniPath one
|
|
150
199
|
- Made `progeny` only return significant genes by default instead of the top N genes per pathway
|
|
151
200
|
- Plots are now in a new `pl` module
|
|
152
|
-
|
|
201
|
+
- Use `decoupler.pl.<plot_name>` to call a plot
|
|
153
202
|
- They use a common class `Plotter` to make it easier to share arguments between them
|
|
154
203
|
- `plot_violins` has been deprecated
|
|
155
204
|
- Names that have changed
|
|
@@ -169,7 +218,7 @@ All functions have been rewritten to follow the new API, errors when running pre
|
|
|
169
218
|
### Added
|
|
170
219
|
|
|
171
220
|
- `ds` module with functions to download several datasets at different resolutions
|
|
172
|
-
|
|
221
|
+
- Bulk: `hsctgfb` and `knocktf`
|
|
173
222
|
- Single-cell: `pbmc3k`, `covid5k` and `erygast1k`
|
|
174
223
|
- Spatial: `msvisium`
|
|
175
224
|
- Toy data: `toy` and `toy_bench`
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: decoupler
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Python package to perform enrichment analysis from omics data.
|
|
5
|
-
Project-URL: Documentation, https://decoupler.
|
|
5
|
+
Project-URL: Documentation, https://decoupler.scverse.org/
|
|
6
6
|
Project-URL: Homepage, https://github.com/scverse/decoupler
|
|
7
7
|
Project-URL: Source, https://github.com/scverse/decoupler
|
|
8
8
|
Author: Pau Badia i Mompel
|
|
@@ -39,11 +39,11 @@ License: BSD 3-Clause License
|
|
|
39
39
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
40
40
|
License-File: LICENSE
|
|
41
41
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
42
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
43
42
|
Classifier: Programming Language :: Python :: 3.12
|
|
44
43
|
Classifier: Programming Language :: Python :: 3.13
|
|
45
44
|
Classifier: Programming Language :: Python :: 3.14
|
|
46
|
-
|
|
45
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
46
|
+
Requires-Python: >=3.12
|
|
47
47
|
Requires-Dist: adjusttext
|
|
48
48
|
Requires-Dist: anndata
|
|
49
49
|
Requires-Dist: docrep
|
|
@@ -56,6 +56,7 @@ Requires-Dist: tqdm
|
|
|
56
56
|
Description-Content-Type: text/markdown
|
|
57
57
|
|
|
58
58
|
# decoupler - Ensemble of methods to infer enrichment scores
|
|
59
|
+
|
|
59
60
|
<img src="https://raw.githubusercontent.com/scverse/decoupler/refs/heads/main/docs/_static/images/logo.svg" align="right" width="120" class="no-scaled-link" />
|
|
60
61
|
|
|
61
62
|
[![Tests][badge-tests]][tests]
|
|
@@ -86,7 +87,7 @@ Description-Content-Type: text/markdown
|
|
|
86
87
|
`decoupler` is a python package containing different enrichment statistical methods to extract biologically driven scores from omics data within a unified framework.
|
|
87
88
|
This is its faster and memory efficient Python implementation, a deprecated version in R can be found [here](https://github.com/saezlab/decoupler).
|
|
88
89
|
|
|
89
|
-
[//]: #
|
|
90
|
+
[//]: # "numfocus-fiscal-sponsor-attribution"
|
|
90
91
|
|
|
91
92
|
decoupler is part of the scverse® project ([website](https://scverse.org), [governance](https://scverse.org/about/roles)) and is fiscally sponsored by [NumFOCUS](https://numfocus.org/).
|
|
92
93
|
If you like scverse® and want to support our mission, please consider making a tax-deductible [donation](https://numfocus.org/donate-to-scverse) to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.
|
|
@@ -107,7 +108,7 @@ in particular, the [API documentation][].
|
|
|
107
108
|
|
|
108
109
|
## Installation
|
|
109
110
|
|
|
110
|
-
You need to have Python 3.
|
|
111
|
+
You need to have Python 3.12 or newer installed on your system.
|
|
111
112
|
If you don't have Python installed, we recommend installing [uv][].
|
|
112
113
|
|
|
113
114
|
There are several alternative options to install decoupler:
|
|
@@ -136,19 +137,15 @@ mamba create -n=dcp conda-forge::decoupler-py
|
|
|
136
137
|
pip install git+https://github.com/scverse/decoupler.git@main
|
|
137
138
|
```
|
|
138
139
|
|
|
139
|
-
##
|
|
140
|
+
## Agent Skill
|
|
140
141
|
|
|
141
|
-
decoupler ships an [Agent Skill](https://docs.claude.com/en/docs/claude-code/skills)
|
|
142
|
+
decoupler ships an [Agent Skill](https://docs.claude.com/en/docs/claude-code/skills) that teaches coding agents to use the library correctly. Install it into your agent's skills directory by choosing a framework with `--agent {claude,codex,agents,claude-science}` (or an explicit directory with `--dest`):
|
|
142
143
|
|
|
143
144
|
```bash
|
|
144
|
-
decoupler-install-skills
|
|
145
|
+
decoupler-install-skills --agent claude
|
|
145
146
|
```
|
|
146
147
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
```bash
|
|
150
|
-
export CLAUDE_SKILLS_PATH="$(decoupler-install-skills --print-path)"
|
|
151
|
-
```
|
|
148
|
+
Re-run with `--force` after upgrading, use `--check` to see whether an installed copy is up to date, or `--print-path` to show where the bundled copy lives inside the package.
|
|
152
149
|
|
|
153
150
|
## Release notes
|
|
154
151
|
|
|
@@ -159,22 +156,30 @@ See the [changelog][].
|
|
|
159
156
|
For questions and help requests, you can reach out in the [scverse discourse][].
|
|
160
157
|
If you found a bug, please use the [issue tracker][].
|
|
161
158
|
|
|
159
|
+
## License
|
|
160
|
+
|
|
161
|
+
Enrichment methods inside decoupler can be used for academic or commercial purposes, except `viper` which holds a non-commercial license.
|
|
162
|
+
|
|
163
|
+
The data redistributed by OmniPath does not have a single license, each original resource has its own. By default, `decoupler`
|
|
164
|
+
assumes an academic license, but commercial or nonprofit licenses can be specified in the `license` parameter of `decoupler`'s OmniPath functions.
|
|
165
|
+
[Here](https://omnipathdb.org/info) one can find the license information of all the resources in OmniPath.
|
|
166
|
+
|
|
162
167
|
## Citation
|
|
163
168
|
|
|
164
169
|
> Badia-i-Mompel P., Vélez Santiago J., Braunger J., Geiss C., Dimitrov D.,
|
|
165
|
-
Müller-Dott S., Taus P., Dugourd A., Holland C.H., Ramirez Flores R.O.
|
|
166
|
-
and Saez-Rodriguez J. 2022. decoupleR: Ensemble of computational methods
|
|
167
|
-
to infer biological activities from omics data. Bioinformatics Advances.
|
|
168
|
-
<https://doi.org/10.1093/bioadv/vbac016>
|
|
170
|
+
> Müller-Dott S., Taus P., Dugourd A., Holland C.H., Ramirez Flores R.O.
|
|
171
|
+
> and Saez-Rodriguez J. 2022. decoupleR: Ensemble of computational methods
|
|
172
|
+
> to infer biological activities from omics data. Bioinformatics Advances.
|
|
173
|
+
> <https://doi.org/10.1093/bioadv/vbac016>
|
|
169
174
|
|
|
170
175
|
[uv]: https://github.com/astral-sh/uv
|
|
171
176
|
[scverse discourse]: https://discourse.scverse.org/
|
|
172
177
|
[scverse]: https://scverse.org/
|
|
173
178
|
[issue tracker]: https://github.com/scverse/decoupler/issues
|
|
174
179
|
[tests]: https://github.com/scverse/decoupler/actions/workflows/test.yaml
|
|
175
|
-
[documentation]: https://decoupler.
|
|
176
|
-
[changelog]: https://decoupler.
|
|
177
|
-
[api documentation]: https://decoupler.
|
|
180
|
+
[documentation]: https://decoupler.scverse.org/
|
|
181
|
+
[changelog]: https://decoupler.scverse.org/page/changelog.html
|
|
182
|
+
[api documentation]: https://decoupler.scverse.org/page/api.html
|
|
178
183
|
[pypi]: https://pypi.org/project/decoupler
|
|
179
184
|
[down]: https://pepy.tech/project/decoupler
|
|
180
185
|
[conda]: https://anaconda.org/conda-forge/decoupler-py
|