pertpy 0.11.0__tar.gz → 0.11.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.
- {pertpy-0.11.0 → pertpy-0.11.1}/.editorconfig +1 -1
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/release-drafter.yml +2 -2
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/workflows/release.yml +6 -4
- {pertpy-0.11.0 → pertpy-0.11.1}/.gitignore +4 -1
- pertpy-0.11.1/.readthedocs.yml +18 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/PKG-INFO +8 -6
- {pertpy-0.11.0 → pertpy-0.11.1}/README.md +5 -3
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/css/overwrite.css +6 -7
- pertpy-0.11.1/docs/api/datasets_index.md +70 -0
- pertpy-0.11.1/docs/api/metadata_index.md +55 -0
- pertpy-0.11.1/docs/api/preprocessing_index.md +37 -0
- pertpy-0.11.0/docs/api/api.md → pertpy-0.11.1/docs/api/tools_index.md +16 -189
- pertpy-0.11.1/docs/api.md +22 -0
- pertpy-0.11.1/docs/changelog.md +303 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/conf.py +7 -4
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/index.md +15 -6
- pertpy-0.11.1/docs/tutorials/metadata.md +8 -0
- pertpy-0.11.1/docs/tutorials/preprocessing.md +7 -0
- pertpy-0.11.1/docs/tutorials/tools.md +64 -0
- pertpy-0.11.1/docs/tutorials.md +19 -0
- pertpy-0.11.1/docs/usecases.md +13 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/__init__.py +1 -1
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/__init__.py +4 -3
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_coda/_base_coda.py +5 -3
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_coda/_sccoda.py +3 -1
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_coda/_tasccoda.py +3 -1
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_dialogue.py +0 -1
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_distances/_distances.py +0 -1
- {pertpy-0.11.0 → pertpy-0.11.1}/pyproject.toml +3 -3
- pertpy-0.11.0/.readthedocs.yml +0 -18
- pertpy-0.11.0/docs/data/adamson_2016_pilot.h5ad.lock +0 -0
- pertpy-0.11.0/docs/tutorials/index.md +0 -57
- {pertpy-0.11.0 → pertpy-0.11.1}/.gitattributes +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/labels.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/pull_request_template.md +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/workflows/build.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/workflows/labeler.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/workflows/release_drafter.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.github/workflows/test.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.gitmodules +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/.pre-commit-config.yaml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/LICENSE +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/biome.jsonc +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/codecov.yml +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/Makefile +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_ext/edit_on_github.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_ext/typed_returns.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/SCVI_LICENSE +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/css/sphinx_gallery.css +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/augur_dp_scatter.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/augur_important_features.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/augur_lollipop.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/augur_scatterplot.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/de_fold_change.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/de_multicomparison_fc.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/de_paired_expression.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/de_volcano.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/dialogue_pairplot.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/dialogue_violin.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/enrichment_dotplot.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/enrichment_gsea.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/milo_da_beeswarm.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/milo_nhood.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/milo_nhood_graph.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/mixscape_barplot.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/mixscape_heatmap.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/mixscape_lda.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/mixscape_perturbscore.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/mixscape_violin.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/pseudobulk_samples.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/sccoda_boxplots.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/sccoda_effects_barplot.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/sccoda_rel_abundance_dispersion_plot.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/sccoda_stacked_barplot.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/scgen_reg_mean.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/tasccoda_draw_effects.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/tasccoda_draw_tree.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/docstring_previews/tasccoda_effects_umap.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/icons/code-24px.svg +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/icons/computer-24px.svg +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/icons/library_books-24px.svg +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/icons/play_circle_outline-24px.svg +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/pertpy_logo.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/pertpy_logo.svg +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/placeholder.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/augur.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/cinemaot.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/dge.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/dialogue.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/distances.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/distances_tests.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/enrichment.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/guide_rna_assignment.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/mcfarland.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/metadata.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/milo.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/mixscape.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/norman.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/ontology.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/perturbation_space.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/placeholder.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/sccoda.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/sccoda_extended.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/scgen_perturbation_prediction.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/tasccoda.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_static/tutorials/zhang.png +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/_templates/autosummary/class.rst +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/contributing.md +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/installation.md +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/make.bat +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/references.bib +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/references.md +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/docs/utils.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/_doc.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/_types.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/data/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/data/_dataloader.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/data/_datasets.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/metadata/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/metadata/_cell_line.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/metadata/_compound.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/metadata/_drug.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/metadata/_look_up.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/metadata/_metadata.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/metadata/_moa.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/plot/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/preprocessing/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/preprocessing/_guide_rna.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/preprocessing/_guide_rna_mixture.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/py.typed +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_augur.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_cinemaot.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_coda/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_differential_gene_expression/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_differential_gene_expression/_base.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_differential_gene_expression/_checks.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_differential_gene_expression/_dge_comparison.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_differential_gene_expression/_edger.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_differential_gene_expression/_pydeseq2.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_differential_gene_expression/_simple_tests.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_differential_gene_expression/_statsmodels.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_distances/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_distances/_distance_tests.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_enrichment.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_milo.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_mixscape.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_perturbation_space/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_perturbation_space/_clustering.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_perturbation_space/_comparison.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_perturbation_space/_discriminator_classifiers.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_perturbation_space/_metrics.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_perturbation_space/_perturbation_space.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_perturbation_space/_simple.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_scgen/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_scgen/_base_components.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_scgen/_scgen.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_scgen/_scgenvae.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/_scgen/_utils.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/decoupler_LICENSE +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/pertpy/tools/transferlearning_MMD_LICENSE +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/conftest.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/metadata/test_cell_line.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/metadata/test_compound.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/metadata/test_drug.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/metadata/test_moa.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/preprocessing/test_grna_assignment.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_coda/test_sccoda.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_coda/test_tasccoda.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/__init__.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/conftest.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/test_base.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/test_compare_groups.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/test_dge.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/test_edger.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/test_input_checks.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/test_pydeseq2.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/test_simple_tests.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_differential_gene_expression/test_statsmodels.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_distances/test_distance_tests.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_distances/test_distances.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_perturbation_space/test_comparison.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_perturbation_space/test_discriminator_classifiers.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_perturbation_space/test_simple_cluster_space.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/_perturbation_space/test_simple_perturbation_space.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/test_augur.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/test_cinemaot.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/test_dialogue.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/test_enrichment.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/test_milo.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/test_mixscape.py +0 -0
- {pertpy-0.11.0 → pertpy-0.11.1}/tests/tools/test_scgen.py +0 -0
@@ -18,11 +18,13 @@ jobs:
|
|
18
18
|
with:
|
19
19
|
python-version: "3.x"
|
20
20
|
|
21
|
-
- name: Install
|
22
|
-
|
21
|
+
- name: Install uv
|
22
|
+
uses: astral-sh/setup-uv@v5
|
23
|
+
with:
|
24
|
+
cache-dependency-glob: pyproject.toml
|
23
25
|
|
24
|
-
- name: Build
|
25
|
-
run:
|
26
|
+
- name: Build package
|
27
|
+
run: uv build
|
26
28
|
|
27
29
|
- name: Publish a Python distribution to PyPI
|
28
30
|
uses: pypa/gh-action-pypi-publish@release/v1
|
@@ -0,0 +1,18 @@
|
|
1
|
+
version: 2
|
2
|
+
build:
|
3
|
+
os: ubuntu-24.04
|
4
|
+
tools:
|
5
|
+
python: "3.13"
|
6
|
+
jobs:
|
7
|
+
create_environment:
|
8
|
+
- asdf plugin add uv
|
9
|
+
- asdf install uv latest
|
10
|
+
- asdf global uv latest
|
11
|
+
- uv venv
|
12
|
+
- uv pip install .[doc,tcoda,de]
|
13
|
+
build:
|
14
|
+
html:
|
15
|
+
- uv run sphinx-build -T -W -b html docs $READTHEDOCS_OUTPUT/html
|
16
|
+
|
17
|
+
submodules:
|
18
|
+
include: all
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pertpy
|
3
|
-
Version: 0.11.
|
3
|
+
Version: 0.11.1
|
4
4
|
Summary: Perturbation Analysis in the scverse ecosystem.
|
5
5
|
Project-URL: Documentation, https://pertpy.readthedocs.io
|
6
6
|
Project-URL: Source, https://github.com/scverse/pertpy
|
@@ -67,7 +67,7 @@ Requires-Dist: sparsecca
|
|
67
67
|
Provides-Extra: de
|
68
68
|
Requires-Dist: formulaic; extra == 'de'
|
69
69
|
Requires-Dist: formulaic-contrasts>=0.2.0; extra == 'de'
|
70
|
-
Requires-Dist: pydeseq2>=v0.5.
|
70
|
+
Requires-Dist: pydeseq2>=v0.5.0; extra == 'de'
|
71
71
|
Provides-Extra: dev
|
72
72
|
Requires-Dist: pre-commit; extra == 'dev'
|
73
73
|
Provides-Extra: doc
|
@@ -88,7 +88,7 @@ Requires-Dist: sphinx-gallery; extra == 'doc'
|
|
88
88
|
Requires-Dist: sphinx-issues; extra == 'doc'
|
89
89
|
Requires-Dist: sphinx-last-updated-by-git; extra == 'doc'
|
90
90
|
Requires-Dist: sphinx-remove-toctrees; extra == 'doc'
|
91
|
-
Requires-Dist: sphinx>=
|
91
|
+
Requires-Dist: sphinx>=8.1; extra == 'doc'
|
92
92
|
Requires-Dist: sphinxcontrib-bibtex>=1.0.0; extra == 'doc'
|
93
93
|
Requires-Dist: sphinxext-opengraph; extra == 'doc'
|
94
94
|
Provides-Extra: tcoda
|
@@ -101,7 +101,6 @@ Requires-Dist: leidenalg; extra == 'test'
|
|
101
101
|
Requires-Dist: pytest; extra == 'test'
|
102
102
|
Description-Content-Type: text/markdown
|
103
103
|
|
104
|
-
[](https://github.com/psf/black)
|
105
104
|
[](https://github.com/scverse/pertpy/actions/workflows/build.yml)
|
106
105
|
[](https://codecov.io/gh/scverse/pertpy)
|
107
106
|
[](https://opensource.org/licenses/Apache2.0)
|
@@ -111,13 +110,16 @@ Description-Content-Type: text/markdown
|
|
111
110
|
[](https://github.com/scverse/pertpy/actions/workflows/test.yml)
|
112
111
|
[](https://github.com/pre-commit/pre-commit)
|
113
112
|
|
114
|
-
# pertpy
|
113
|
+
# pertpy - Perturbation Analysis in Python
|
114
|
+
|
115
|
+
Pertpy is a scverse ecosystem framework for analyzing large-scale single-cell perturbation experiments.
|
116
|
+
It provides tools for harmonizing perturbation datasets, automating metadata annotation, calculating perturbation distances, and efficiently analyzing how cells respond to various stimuli like genetic modifications, drug treatments, and environmental changes.
|
115
117
|
|
116
118
|

|
117
119
|
|
118
120
|
## Documentation
|
119
121
|
|
120
|
-
Please read the [documentation](https://pertpy.readthedocs.io/en/latest).
|
122
|
+
Please read the [documentation](https://pertpy.readthedocs.io/en/latest) for installation, tutorials, use cases, and more.
|
121
123
|
|
122
124
|
## Installation
|
123
125
|
|
@@ -1,4 +1,3 @@
|
|
1
|
-
[](https://github.com/psf/black)
|
2
1
|
[](https://github.com/scverse/pertpy/actions/workflows/build.yml)
|
3
2
|
[](https://codecov.io/gh/scverse/pertpy)
|
4
3
|
[](https://opensource.org/licenses/Apache2.0)
|
@@ -8,13 +7,16 @@
|
|
8
7
|
[](https://github.com/scverse/pertpy/actions/workflows/test.yml)
|
9
8
|
[](https://github.com/pre-commit/pre-commit)
|
10
9
|
|
11
|
-
# pertpy
|
10
|
+
# pertpy - Perturbation Analysis in Python
|
11
|
+
|
12
|
+
Pertpy is a scverse ecosystem framework for analyzing large-scale single-cell perturbation experiments.
|
13
|
+
It provides tools for harmonizing perturbation datasets, automating metadata annotation, calculating perturbation distances, and efficiently analyzing how cells respond to various stimuli like genetic modifications, drug treatments, and environmental changes.
|
12
14
|
|
13
15
|

|
14
16
|
|
15
17
|
## Documentation
|
16
18
|
|
17
|
-
Please read the [documentation](https://pertpy.readthedocs.io/en/latest).
|
19
|
+
Please read the [documentation](https://pertpy.readthedocs.io/en/latest) for installation, tutorials, use cases, and more.
|
18
20
|
|
19
21
|
## Installation
|
20
22
|
|
@@ -1,10 +1,3 @@
|
|
1
|
-
/*
|
2
|
-
Furo CSS variables
|
3
|
-
https://github.com/pradyunsg/furo/blob/main/src/furo/assets/styles/variables/_index.scss
|
4
|
-
https://github.com/pradyunsg/furo/blob/main/src/furo/theme/partials/_head_css_variables.html
|
5
|
-
https://github.com/streamlink/streamlink/blob/17a4088c38709123c0bcab4a150549bd16d19e07/docs/_static/styles/custom.css
|
6
|
-
*/
|
7
|
-
|
8
1
|
/* for the sphinx design cards */
|
9
2
|
body {
|
10
3
|
--sd-color-shadow: dimgrey;
|
@@ -72,3 +65,9 @@ li.toctree-l3 {
|
|
72
65
|
li.toctree-l4 {
|
73
66
|
font-size: 75% !important;
|
74
67
|
}
|
68
|
+
|
69
|
+
.bd-sidebar .caption-text {
|
70
|
+
color: #e63946;
|
71
|
+
font-weight: 600;
|
72
|
+
text-transform: uppercase;
|
73
|
+
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
```{eval-rst}
|
2
|
+
.. currentmodule:: pertpy
|
3
|
+
```
|
4
|
+
|
5
|
+
# Datasets
|
6
|
+
|
7
|
+
pertpy provides access to several curated single-cell datasets spanning several types of perturbations.
|
8
|
+
Many of the datasets originate from [scperturb](http://projects.sanderlab.org/scperturb/) {cite}`Peidli2024`.
|
9
|
+
|
10
|
+
```{eval-rst}
|
11
|
+
.. autosummary::
|
12
|
+
:toctree: data
|
13
|
+
|
14
|
+
data.adamson_2016_pilot
|
15
|
+
data.adamson_2016_upr_epistasis
|
16
|
+
data.adamson_2016_upr_perturb_seq
|
17
|
+
data.aissa_2021
|
18
|
+
data.bhattacherjee
|
19
|
+
data.burczynski_crohn
|
20
|
+
data.chang_2021
|
21
|
+
data.combosciplex
|
22
|
+
data.cinemaot_example
|
23
|
+
data.datlinger_2017
|
24
|
+
data.datlinger_2021
|
25
|
+
data.dialogue_example
|
26
|
+
data.distance_example
|
27
|
+
data.dixit_2016
|
28
|
+
data.dixit_2016_raw
|
29
|
+
data.dong_2023
|
30
|
+
data.frangieh_2021
|
31
|
+
data.frangieh_2021_protein
|
32
|
+
data.frangieh_2021_raw
|
33
|
+
data.frangieh_2021_rna
|
34
|
+
data.gasperini_2019_atscale
|
35
|
+
data.gasperini_2019_highmoi
|
36
|
+
data.gasperini_2019_lowmoi
|
37
|
+
data.gehring_2019
|
38
|
+
data.haber_2017_regions
|
39
|
+
data.hagai_2018
|
40
|
+
data.kang_2018
|
41
|
+
data.mcfarland_2020
|
42
|
+
data.norman_2019
|
43
|
+
data.norman_2019_raw
|
44
|
+
data.papalexi_2021
|
45
|
+
data.replogle_2022_k562_essential
|
46
|
+
data.replogle_2022_k562_gwps
|
47
|
+
data.replogle_2022_rpe1
|
48
|
+
data.sc_sim_augur
|
49
|
+
data.schiebinger_2019_16day
|
50
|
+
data.schiebinger_2019_18day
|
51
|
+
data.schraivogel_2020_tap_screen_chr8
|
52
|
+
data.schraivogel_2020_tap_screen_chr11
|
53
|
+
data.sciplex_gxe1
|
54
|
+
data.sciplex3_raw
|
55
|
+
data.shifrut_2018
|
56
|
+
data.smillie_2019
|
57
|
+
data.srivatsan_2020_sciplex2
|
58
|
+
data.srivatsan_2020_sciplex3
|
59
|
+
data.srivatsan_2020_sciplex4
|
60
|
+
data.stephenson_2021_subsampled
|
61
|
+
data.tasccoda_example
|
62
|
+
data.tian_2019_day7neuron
|
63
|
+
data.tian_2019_ipsc
|
64
|
+
data.tian_2021_crispra
|
65
|
+
data.tian_2021_crispri
|
66
|
+
data.weinreb_2020
|
67
|
+
data.xie_2017
|
68
|
+
data.zhao_2021
|
69
|
+
data.zhang_2021
|
70
|
+
```
|
@@ -0,0 +1,55 @@
|
|
1
|
+
```{eval-rst}
|
2
|
+
.. currentmodule:: pertpy
|
3
|
+
```
|
4
|
+
|
5
|
+
# Metadata
|
6
|
+
|
7
|
+
The metadata module provides tooling to annotate perturbations by querying databases.
|
8
|
+
Such metadata can aid with the development of biologically informed models and can be used for enrichment tests.
|
9
|
+
|
10
|
+
## Cell line
|
11
|
+
|
12
|
+
This module allows for the retrieval of various types of information related to cell lines,
|
13
|
+
including cell line annotation, bulk RNA and protein expression data.
|
14
|
+
|
15
|
+
Available databases for cell line metadata:
|
16
|
+
|
17
|
+
- [The Cancer Dependency Map Project at Broad](https://depmap.org/portal/)
|
18
|
+
- [The Cancer Dependency Map Project at Sanger](https://depmap.sanger.ac.uk/)
|
19
|
+
- [Genomics of Drug Sensitivity in Cancer (GDSC)](https://www.cancerrxgene.org/)
|
20
|
+
|
21
|
+
## Compound
|
22
|
+
|
23
|
+
The Compound module enables the retrieval of various types of information related to compounds of interest, including the most common synonym, pubchemID and canonical SMILES.
|
24
|
+
|
25
|
+
Available databases for compound metadata:
|
26
|
+
|
27
|
+
- [PubChem](https://pubchem.ncbi.nlm.nih.gov/)
|
28
|
+
|
29
|
+
## Mechanism of Action
|
30
|
+
|
31
|
+
This module aims to retrieve metadata of mechanism of action studies related to perturbagens of interest, depending on the molecular targets.
|
32
|
+
|
33
|
+
Available databases for mechanism of action metadata:
|
34
|
+
|
35
|
+
- [CLUE](https://clue.io/)
|
36
|
+
|
37
|
+
## Drug
|
38
|
+
|
39
|
+
This module allows for the retrieval of Drug target information.
|
40
|
+
|
41
|
+
Available databases for drug metadata:
|
42
|
+
|
43
|
+
- [chembl](https://www.ebi.ac.uk/chembl/)
|
44
|
+
|
45
|
+
```{eval-rst}
|
46
|
+
.. autosummary::
|
47
|
+
:toctree: metadata
|
48
|
+
:recursive:
|
49
|
+
|
50
|
+
metadata.CellLine
|
51
|
+
metadata.Compound
|
52
|
+
metadata.Moa
|
53
|
+
metadata.Drug
|
54
|
+
metadata.LookUp
|
55
|
+
```
|
@@ -0,0 +1,37 @@
|
|
1
|
+
```{eval-rst}
|
2
|
+
.. currentmodule:: pertpy
|
3
|
+
```
|
4
|
+
|
5
|
+
# Preprocessing
|
6
|
+
|
7
|
+
## Guide Assignment
|
8
|
+
|
9
|
+
Guide assignment is essential for quality control in single-cell Perturb-seq data, ensuring accurate mapping of guide RNAs to cells for reliable interpretation of gene perturbation effects.
|
10
|
+
pertpy provides a simple function to assign guides based on thresholds and a Gaussian mixture model {cite}`Replogle2022`.
|
11
|
+
|
12
|
+
```{eval-rst}
|
13
|
+
.. autosummary::
|
14
|
+
:toctree: preprocessing
|
15
|
+
:nosignatures:
|
16
|
+
|
17
|
+
preprocessing.GuideAssignment
|
18
|
+
```
|
19
|
+
|
20
|
+
Example implementation:
|
21
|
+
|
22
|
+
```python
|
23
|
+
import pertpy as pt
|
24
|
+
import scanpy as sc
|
25
|
+
|
26
|
+
mdata = pt.dt.papalexi_2021()
|
27
|
+
gdo = mdata.mod["gdo"]
|
28
|
+
gdo.layers["counts"] = gdo.X.copy()
|
29
|
+
sc.pp.log1p(gdo)
|
30
|
+
|
31
|
+
ga = pt.pp.GuideAssignment()
|
32
|
+
ga.assign_by_threshold(gdo, 5, layer="counts", output_layer="assigned_guides")
|
33
|
+
|
34
|
+
ga.plot_heatmap(gdo, layer="assigned_guides")
|
35
|
+
```
|
36
|
+
|
37
|
+
See [guide assignment tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/guide_rna_assignment.html).
|
@@ -1,125 +1,10 @@
|
|
1
|
-
# API
|
2
|
-
|
3
|
-
Import the pertpy API as follows:
|
4
|
-
|
5
|
-
```python
|
6
|
-
import pertpy as pt
|
7
|
-
```
|
8
|
-
|
9
|
-
You can then access the respective modules like:
|
10
|
-
|
11
|
-
```python
|
12
|
-
pt.tl.cool_fancy_tool()
|
13
|
-
```
|
14
|
-
|
15
1
|
```{eval-rst}
|
16
2
|
.. currentmodule:: pertpy
|
17
3
|
```
|
18
4
|
|
19
|
-
|
20
|
-
|
21
|
-
pertpy provides access to several curated single-cell datasets spanning several types of perturbations.
|
22
|
-
Many of the datasets originate from [scperturb](http://projects.sanderlab.org/scperturb/) {cite}`Peidli2024`.
|
23
|
-
|
24
|
-
```{eval-rst}
|
25
|
-
.. autosummary::
|
26
|
-
:toctree: data
|
27
|
-
|
28
|
-
data.adamson_2016_pilot
|
29
|
-
data.adamson_2016_upr_epistasis
|
30
|
-
data.adamson_2016_upr_perturb_seq
|
31
|
-
data.aissa_2021
|
32
|
-
data.bhattacherjee
|
33
|
-
data.burczynski_crohn
|
34
|
-
data.chang_2021
|
35
|
-
data.combosciplex
|
36
|
-
data.cinemaot_example
|
37
|
-
data.datlinger_2017
|
38
|
-
data.datlinger_2021
|
39
|
-
data.dialogue_example
|
40
|
-
data.distance_example
|
41
|
-
data.dixit_2016
|
42
|
-
data.dixit_2016_raw
|
43
|
-
data.dong_2023
|
44
|
-
data.frangieh_2021
|
45
|
-
data.frangieh_2021_protein
|
46
|
-
data.frangieh_2021_raw
|
47
|
-
data.frangieh_2021_rna
|
48
|
-
data.gasperini_2019_atscale
|
49
|
-
data.gasperini_2019_highmoi
|
50
|
-
data.gasperini_2019_lowmoi
|
51
|
-
data.gehring_2019
|
52
|
-
data.haber_2017_regions
|
53
|
-
data.hagai_2018
|
54
|
-
data.kang_2018
|
55
|
-
data.mcfarland_2020
|
56
|
-
data.norman_2019
|
57
|
-
data.norman_2019_raw
|
58
|
-
data.papalexi_2021
|
59
|
-
data.replogle_2022_k562_essential
|
60
|
-
data.replogle_2022_k562_gwps
|
61
|
-
data.replogle_2022_rpe1
|
62
|
-
data.sc_sim_augur
|
63
|
-
data.schiebinger_2019_16day
|
64
|
-
data.schiebinger_2019_18day
|
65
|
-
data.schraivogel_2020_tap_screen_chr8
|
66
|
-
data.schraivogel_2020_tap_screen_chr11
|
67
|
-
data.sciplex_gxe1
|
68
|
-
data.sciplex3_raw
|
69
|
-
data.shifrut_2018
|
70
|
-
data.smillie_2019
|
71
|
-
data.srivatsan_2020_sciplex2
|
72
|
-
data.srivatsan_2020_sciplex3
|
73
|
-
data.srivatsan_2020_sciplex4
|
74
|
-
data.stephenson_2021_subsampled
|
75
|
-
data.tasccoda_example
|
76
|
-
data.tian_2019_day7neuron
|
77
|
-
data.tian_2019_ipsc
|
78
|
-
data.tian_2021_crispra
|
79
|
-
data.tian_2021_crispri
|
80
|
-
data.weinreb_2020
|
81
|
-
data.xie_2017
|
82
|
-
data.zhao_2021
|
83
|
-
data.zhang_2021
|
84
|
-
```
|
85
|
-
|
86
|
-
## Preprocessing
|
5
|
+
# Tools
|
87
6
|
|
88
|
-
|
89
|
-
|
90
|
-
Guide assignment is essential for quality control in single-cell Perturb-seq data, ensuring accurate mapping of guide RNAs to cells for reliable interpretation of gene perturbation effects.
|
91
|
-
pertpy provides a simple function to assign guides based on thresholds and a Gaussian mixture model {cite}`Replogle2022`.
|
92
|
-
|
93
|
-
```{eval-rst}
|
94
|
-
.. autosummary::
|
95
|
-
:toctree: preprocessing
|
96
|
-
:nosignatures:
|
97
|
-
|
98
|
-
preprocessing.GuideAssignment
|
99
|
-
```
|
100
|
-
|
101
|
-
Example implementation:
|
102
|
-
|
103
|
-
```python
|
104
|
-
import pertpy as pt
|
105
|
-
import scanpy as sc
|
106
|
-
|
107
|
-
mdata = pt.dt.papalexi_2021()
|
108
|
-
gdo = mdata.mod["gdo"]
|
109
|
-
gdo.layers["counts"] = gdo.X.copy()
|
110
|
-
sc.pp.log1p(gdo)
|
111
|
-
|
112
|
-
ga = pt.pp.GuideAssignment()
|
113
|
-
ga.assign_by_threshold(gdo, 5, layer="counts", output_layer="assigned_guides")
|
114
|
-
|
115
|
-
ga.plot_heatmap(gdo, layer="assigned_guides")
|
116
|
-
```
|
117
|
-
|
118
|
-
See [guide assignment tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/guide_rna_assignment.html).
|
119
|
-
|
120
|
-
## Tools
|
121
|
-
|
122
|
-
### Differential gene expression
|
7
|
+
## Differential gene expression
|
123
8
|
|
124
9
|
Differential gene expression involves the quantitative comparison of gene expression levels between two or more groups,
|
125
10
|
such as different cell types, tissues, or conditions to discern genes that are significantly up- or downregulated in response to specific biological contexts or stimuli.
|
@@ -137,9 +22,9 @@ Pertpy enables differential gene expression tests through a common interface tha
|
|
137
22
|
tools.Statsmodels
|
138
23
|
```
|
139
24
|
|
140
|
-
|
25
|
+
## Pooled CRISPR screens
|
141
26
|
|
142
|
-
|
27
|
+
### Perturbation assignment - Mixscape
|
143
28
|
|
144
29
|
CRISPR based screens can suffer from off-target effects but also limited efficacy of the guide RNAs.
|
145
30
|
When analyzing CRISPR screen data, it is vital to know which perturbations were successful and which ones were not
|
@@ -174,7 +59,7 @@ ms.plot_lda(adata=mdata["rna"], control="NT")
|
|
174
59
|
|
175
60
|
See [mixscape tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/mixscape.html).
|
176
61
|
|
177
|
-
|
62
|
+
## Compositional analysis
|
178
63
|
|
179
64
|
Compositional data analysis focuses on identifying and quantifying variations in cell type composition across
|
180
65
|
different conditions or samples to uncover biological differences driven by changes in cellular makeup.
|
@@ -186,7 +71,7 @@ Generally, there's two ways of approaching this question:
|
|
186
71
|
|
187
72
|
For a more in-depth explanation we refer to the corresponding [sc-best-practices compositional chapter](https://www.sc-best-practices.org/conditions/compositional.html).
|
188
73
|
|
189
|
-
|
74
|
+
### Without labeled groups - Milo
|
190
75
|
|
191
76
|
[Milo](https://www.nature.com/articles/s41587-021-01033-z) enables the exploration of differential abundance of cell types across different biological conditions or spatial locations {cite}`Dann2022`.
|
192
77
|
It employs a neighborhood-testing approach to statistically assess variations in cell type compositions, providing insights into the microenvironmental and functional heterogeneity within and across samples.
|
@@ -224,7 +109,7 @@ milo.da_nhoods(mdata, design="~Status")
|
|
224
109
|
|
225
110
|
See [milo tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/milo.html).
|
226
111
|
|
227
|
-
|
112
|
+
### With labeled groups - scCODA and tascCODA
|
228
113
|
|
229
114
|
[scCODA](https://www.nature.com/articles/s41467-021-27150-6) is designed to identify differences in cell type compositions from single-cell sequencing data across conditions for labeled groups {cite}`Büttner2021`.
|
230
115
|
It employs a Bayesian hierarchical model and Dirichlet-multinomial distribution, using Markov chain Monte Carlo (MCMC) for inference, to detect significant shifts in cell type composition across conditions.
|
@@ -276,14 +161,14 @@ sccoda.plot_effects_barplot(
|
|
276
161
|
|
277
162
|
See [sccoda tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/sccoda.html), [extended sccoda tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/sccoda_extended.html) and [tasccoda tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/tasccoda.html).
|
278
163
|
|
279
|
-
|
164
|
+
## Multicellular and gene programs
|
280
165
|
|
281
166
|
Multicellular programs are organized interactions and coordinated activities among different cell types within a tissue,
|
282
167
|
forming complex functional units that drive tissue-specific functions, responses to environmental changes, and pathological states.
|
283
168
|
These programs enable a higher level of biological organization by integrating signaling pathways, gene expression,
|
284
169
|
and cellular behaviors across the cellular community to maintain homeostasis and execute collective responses.
|
285
170
|
|
286
|
-
|
171
|
+
### Multicellular programs - DIALOGUE
|
287
172
|
|
288
173
|
[DIALOGUE](https://www.nature.com/articles/s41587-022-01288-0) identifies latent multicellular programs by mapping the data into
|
289
174
|
a feature space where the cell type specific representations are correlated across different samples and environments {cite}`JerbyArnon2022`.
|
@@ -329,15 +214,13 @@ all_results, new_mcps = dl.multilevel_modeling(
|
|
329
214
|
|
330
215
|
See [DIALOGUE tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/dialogue.html).
|
331
216
|
|
332
|
-
|
217
|
+
### Enrichment
|
333
218
|
|
334
219
|
Enrichment tests for single-cell data assess whether specific biological pathways or gene sets are overrepresented in the expression profiles of individual cells,
|
335
220
|
aiding in the identification of functional characteristics and cellular states.
|
336
221
|
While pathway enrichment is a well-studied and commonly applied approach in single-cell RNA-seq, other data sources such as genes targeted by drugs can also be enriched.
|
337
222
|
Drug2cell performs such enrichment tests and is available in pertpy {cite}`Kanemaru2023`.
|
338
223
|
|
339
|
-
This implementation of enrichment is designed to interoperate with [MetaData](#metadata) and uses a simple hypergeometric test.
|
340
|
-
|
341
224
|
```{eval-rst}
|
342
225
|
.. autosummary::
|
343
226
|
:toctree: tools
|
@@ -359,7 +242,7 @@ pt_enricher.score(adata)
|
|
359
242
|
|
360
243
|
See [enrichment tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/enrichment.html).
|
361
244
|
|
362
|
-
|
245
|
+
## Distances and permutation tests
|
363
246
|
|
364
247
|
In settings where many perturbations are applied, it is often times unclear which perturbations had a strong effect and should be investigated further.
|
365
248
|
Differential gene expression poses one option to get candidate genes and p-values.
|
@@ -396,13 +279,13 @@ tab = etest(adata, groupby="perturbation", contrast="control")
|
|
396
279
|
See [distance tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/distances.html)
|
397
280
|
and [distance tests tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/distance_tests.html).
|
398
281
|
|
399
|
-
|
282
|
+
## Response prediction
|
400
283
|
|
401
284
|
Response prediction describes computational models that predict how individual cells or cell populations will respond to
|
402
285
|
specific treatments, conditions, or stimuli based on their gene expression profiles, enabling insights into cellular behaviors and potential therapeutic strategies.
|
403
286
|
Such approaches can also order perturbations by their effect on groups of cells.
|
404
287
|
|
405
|
-
|
288
|
+
### Rank perturbations - Augur
|
406
289
|
|
407
290
|
[Augur](https://doi.org/10.1038/s41587-020-0605-1) aims to rank or prioritize cell types according to their response to experimental perturbations {cite}`Skinnider2021`.
|
408
291
|
Cells that respond strongly to perturbations are more easily distinguishable as treated or control in molecular space.
|
@@ -435,7 +318,7 @@ See [augur tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks
|
|
435
318
|
tools.Augur
|
436
319
|
```
|
437
320
|
|
438
|
-
|
321
|
+
### Gene expression prediction with scGen
|
439
322
|
|
440
323
|
scGen is a deep generative model that leverages autoencoders and adversarial training to integrate single-cell RNA sequencing data from different conditions or tissues,
|
441
324
|
enabling the generation of synthetic single-cell data for cross-condition analysis and predicting cell-type-specific responses to perturbations {cite}`Lotfollahi2019`.
|
@@ -472,7 +355,7 @@ pred.obs["condition"] = "pred"
|
|
472
355
|
|
473
356
|
See [scgen tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/scgen_perturbation_prediction.html).
|
474
357
|
|
475
|
-
|
358
|
+
### Causal perturbation analysis with CINEMA-OT
|
476
359
|
|
477
360
|
CINEMA-OT is a causal framework for perturbation effect analysis to identify individual treatment effects and synergy at the single cell level {cite}`Dong2023`.
|
478
361
|
CINEMA-OT separates confounding sources of variation from perturbation effects to obtain an optimal transport matching that reflects counterfactual cell pairs.
|
@@ -510,7 +393,7 @@ de = model.causaleffect(
|
|
510
393
|
|
511
394
|
See [CINEMA-OT tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/cinemaot.html).
|
512
395
|
|
513
|
-
|
396
|
+
## Perturbation space
|
514
397
|
|
515
398
|
Perturbation spaces depart from the individualistic perspective of cells and instead organizes cells into cohesive ensembles.
|
516
399
|
This specialized space enables comprehending the collective impact of perturbations on cells.
|
@@ -546,59 +429,3 @@ ps_adata = ps.compute(
|
|
546
429
|
```
|
547
430
|
|
548
431
|
See [perturbation space tutorial](https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/perturbation_space.html).
|
549
|
-
|
550
|
-
## MetaData
|
551
|
-
|
552
|
-
MetaData provides tooling to annotate perturbations by querying databases.
|
553
|
-
Such metadata can aid with the development of biologically informed models and can be used for enrichment tests.
|
554
|
-
|
555
|
-
### Cell line
|
556
|
-
|
557
|
-
This module allows for the retrieval of various types of information related to cell lines,
|
558
|
-
including cell line annotation, bulk RNA and protein expression data.
|
559
|
-
|
560
|
-
Available databases for cell line metadata:
|
561
|
-
|
562
|
-
- [The Cancer Dependency Map Project at Broad](https://depmap.org/portal/)
|
563
|
-
- [The Cancer Dependency Map Project at Sanger](https://depmap.sanger.ac.uk/)
|
564
|
-
- [Genomics of Drug Sensitivity in Cancer (GDSC)](https://www.cancerrxgene.org/)
|
565
|
-
|
566
|
-
### Compound
|
567
|
-
|
568
|
-
The Compound module enables the retrieval of various types of information related to compounds of interest, including the most common synonym, pubchemID and canonical SMILES.
|
569
|
-
|
570
|
-
Available databases for compound metadata:
|
571
|
-
|
572
|
-
- [PubChem](https://pubchem.ncbi.nlm.nih.gov/)
|
573
|
-
|
574
|
-
### Mechanism of Action
|
575
|
-
|
576
|
-
This module aims to retrieve metadata of mechanism of action studies related to perturbagens of interest, depending on the molecular targets.
|
577
|
-
|
578
|
-
Available databases for mechanism of action metadata:
|
579
|
-
|
580
|
-
- [CLUE](https://clue.io/)
|
581
|
-
|
582
|
-
### Drug
|
583
|
-
|
584
|
-
This module allows for the retrieval of Drug target information.
|
585
|
-
|
586
|
-
Available databases for drug metadata:
|
587
|
-
|
588
|
-
- [chembl](https://www.ebi.ac.uk/chembl/)
|
589
|
-
|
590
|
-
```{eval-rst}
|
591
|
-
.. autosummary::
|
592
|
-
:toctree: metadata
|
593
|
-
:recursive:
|
594
|
-
|
595
|
-
metadata.CellLine
|
596
|
-
metadata.Compound
|
597
|
-
metadata.Moa
|
598
|
-
metadata.Drug
|
599
|
-
metadata.LookUp
|
600
|
-
```
|
601
|
-
|
602
|
-
## Plots
|
603
|
-
|
604
|
-
Every tool has a set of plotting functions that start with `plot_`.
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# API
|
2
|
+
|
3
|
+
Import the pertpy API as follows:
|
4
|
+
|
5
|
+
```python
|
6
|
+
import pertpy as pt
|
7
|
+
```
|
8
|
+
|
9
|
+
You can then access the respective modules like:
|
10
|
+
|
11
|
+
```python
|
12
|
+
pt.tl.cool_fancy_tool()
|
13
|
+
```
|
14
|
+
|
15
|
+
```{toctree}
|
16
|
+
:maxdepth: 1
|
17
|
+
|
18
|
+
api/datasets_index
|
19
|
+
api/preprocessing_index
|
20
|
+
api/tools_index
|
21
|
+
api/metadata_index
|
22
|
+
```
|