pertpy 0.11.0__tar.gz → 0.11.2__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.
Files changed (195) hide show
  1. {pertpy-0.11.0 → pertpy-0.11.2}/.editorconfig +1 -1
  2. {pertpy-0.11.0 → pertpy-0.11.2}/.github/release-drafter.yml +2 -2
  3. {pertpy-0.11.0 → pertpy-0.11.2}/.github/workflows/release.yml +6 -4
  4. {pertpy-0.11.0 → pertpy-0.11.2}/.github/workflows/test.yml +0 -8
  5. {pertpy-0.11.0 → pertpy-0.11.2}/.gitignore +4 -1
  6. {pertpy-0.11.0 → pertpy-0.11.2}/.pre-commit-config.yaml +2 -2
  7. pertpy-0.11.2/.readthedocs.yml +18 -0
  8. {pertpy-0.11.0 → pertpy-0.11.2}/PKG-INFO +9 -7
  9. {pertpy-0.11.0 → pertpy-0.11.2}/README.md +6 -4
  10. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/css/overwrite.css +6 -7
  11. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/pertpy_logo.svg +0 -1
  12. pertpy-0.11.2/docs/api/datasets_index.md +70 -0
  13. pertpy-0.11.2/docs/api/metadata_index.md +55 -0
  14. pertpy-0.11.2/docs/api/preprocessing_index.md +37 -0
  15. pertpy-0.11.0/docs/api/api.md → pertpy-0.11.2/docs/api/tools_index.md +16 -189
  16. pertpy-0.11.2/docs/api.md +22 -0
  17. pertpy-0.11.2/docs/changelog.md +309 -0
  18. {pertpy-0.11.0 → pertpy-0.11.2}/docs/conf.py +7 -4
  19. {pertpy-0.11.0 → pertpy-0.11.2}/docs/index.md +15 -6
  20. pertpy-0.11.2/docs/tutorials/metadata.md +8 -0
  21. pertpy-0.11.2/docs/tutorials/preprocessing.md +7 -0
  22. pertpy-0.11.2/docs/tutorials/tools.md +64 -0
  23. pertpy-0.11.2/docs/tutorials.md +19 -0
  24. pertpy-0.11.2/docs/usecases.md +13 -0
  25. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/__init__.py +1 -1
  26. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/data/_dataloader.py +2 -2
  27. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/metadata/_cell_line.py +21 -37
  28. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/metadata/_compound.py +2 -1
  29. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/metadata/_look_up.py +1 -1
  30. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/metadata/_metadata.py +4 -9
  31. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/metadata/_moa.py +0 -2
  32. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/__init__.py +4 -3
  33. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_augur.py +0 -1
  34. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_coda/_base_coda.py +5 -3
  35. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_coda/_sccoda.py +3 -1
  36. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_coda/_tasccoda.py +3 -1
  37. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_dialogue.py +0 -1
  38. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_distances/_distances.py +0 -1
  39. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_mixscape.py +3 -4
  40. {pertpy-0.11.0 → pertpy-0.11.2}/pyproject.toml +3 -4
  41. pertpy-0.11.2/tests/conftest.py +7 -0
  42. {pertpy-0.11.0 → pertpy-0.11.2}/tests/metadata/test_cell_line.py +0 -1
  43. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_coda/test_sccoda.py +0 -1
  44. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_distances/test_distance_tests.py +0 -3
  45. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/test_augur.py +0 -1
  46. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/test_dialogue.py +0 -2
  47. pertpy-0.11.0/.readthedocs.yml +0 -18
  48. pertpy-0.11.0/docs/data/adamson_2016_pilot.h5ad.lock +0 -0
  49. pertpy-0.11.0/docs/tutorials/index.md +0 -57
  50. pertpy-0.11.0/tests/conftest.py +0 -20
  51. {pertpy-0.11.0 → pertpy-0.11.2}/.gitattributes +0 -0
  52. {pertpy-0.11.0 → pertpy-0.11.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  53. {pertpy-0.11.0 → pertpy-0.11.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  54. {pertpy-0.11.0 → pertpy-0.11.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  55. {pertpy-0.11.0 → pertpy-0.11.2}/.github/labels.yml +0 -0
  56. {pertpy-0.11.0 → pertpy-0.11.2}/.github/pull_request_template.md +0 -0
  57. {pertpy-0.11.0 → pertpy-0.11.2}/.github/workflows/build.yml +0 -0
  58. {pertpy-0.11.0 → pertpy-0.11.2}/.github/workflows/labeler.yml +0 -0
  59. {pertpy-0.11.0 → pertpy-0.11.2}/.github/workflows/release_drafter.yml +0 -0
  60. {pertpy-0.11.0 → pertpy-0.11.2}/.gitmodules +0 -0
  61. {pertpy-0.11.0 → pertpy-0.11.2}/LICENSE +0 -0
  62. {pertpy-0.11.0 → pertpy-0.11.2}/biome.jsonc +0 -0
  63. {pertpy-0.11.0 → pertpy-0.11.2}/codecov.yml +0 -0
  64. {pertpy-0.11.0 → pertpy-0.11.2}/docs/Makefile +0 -0
  65. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_ext/edit_on_github.py +0 -0
  66. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_ext/typed_returns.py +0 -0
  67. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/SCVI_LICENSE +0 -0
  68. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/css/sphinx_gallery.css +0 -0
  69. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/augur_dp_scatter.png +0 -0
  70. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/augur_important_features.png +0 -0
  71. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/augur_lollipop.png +0 -0
  72. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/augur_scatterplot.png +0 -0
  73. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/de_fold_change.png +0 -0
  74. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/de_multicomparison_fc.png +0 -0
  75. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/de_paired_expression.png +0 -0
  76. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/de_volcano.png +0 -0
  77. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/dialogue_pairplot.png +0 -0
  78. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/dialogue_violin.png +0 -0
  79. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/enrichment_dotplot.png +0 -0
  80. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/enrichment_gsea.png +0 -0
  81. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/milo_da_beeswarm.png +0 -0
  82. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/milo_nhood.png +0 -0
  83. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/milo_nhood_graph.png +0 -0
  84. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_barplot.png +0 -0
  85. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_heatmap.png +0 -0
  86. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_lda.png +0 -0
  87. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_perturbscore.png +0 -0
  88. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_violin.png +0 -0
  89. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/pseudobulk_samples.png +0 -0
  90. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/sccoda_boxplots.png +0 -0
  91. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/sccoda_effects_barplot.png +0 -0
  92. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/sccoda_rel_abundance_dispersion_plot.png +0 -0
  93. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/sccoda_stacked_barplot.png +0 -0
  94. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/scgen_reg_mean.png +0 -0
  95. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/tasccoda_draw_effects.png +0 -0
  96. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/tasccoda_draw_tree.png +0 -0
  97. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/docstring_previews/tasccoda_effects_umap.png +0 -0
  98. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/icons/code-24px.svg +0 -0
  99. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/icons/computer-24px.svg +0 -0
  100. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/icons/library_books-24px.svg +0 -0
  101. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/icons/play_circle_outline-24px.svg +0 -0
  102. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/pertpy_logo.png +0 -0
  103. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/placeholder.png +0 -0
  104. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/augur.png +0 -0
  105. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/cinemaot.png +0 -0
  106. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/dge.png +0 -0
  107. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/dialogue.png +0 -0
  108. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/distances.png +0 -0
  109. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/distances_tests.png +0 -0
  110. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/enrichment.png +0 -0
  111. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/guide_rna_assignment.png +0 -0
  112. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/mcfarland.png +0 -0
  113. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/metadata.png +0 -0
  114. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/milo.png +0 -0
  115. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/mixscape.png +0 -0
  116. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/norman.png +0 -0
  117. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/ontology.png +0 -0
  118. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/perturbation_space.png +0 -0
  119. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/placeholder.png +0 -0
  120. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/sccoda.png +0 -0
  121. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/sccoda_extended.png +0 -0
  122. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/scgen_perturbation_prediction.png +0 -0
  123. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/tasccoda.png +0 -0
  124. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_static/tutorials/zhang.png +0 -0
  125. {pertpy-0.11.0 → pertpy-0.11.2}/docs/_templates/autosummary/class.rst +0 -0
  126. {pertpy-0.11.0 → pertpy-0.11.2}/docs/contributing.md +0 -0
  127. {pertpy-0.11.0 → pertpy-0.11.2}/docs/installation.md +0 -0
  128. {pertpy-0.11.0 → pertpy-0.11.2}/docs/make.bat +0 -0
  129. {pertpy-0.11.0 → pertpy-0.11.2}/docs/references.bib +0 -0
  130. {pertpy-0.11.0 → pertpy-0.11.2}/docs/references.md +0 -0
  131. {pertpy-0.11.0 → pertpy-0.11.2}/docs/utils.py +0 -0
  132. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/_doc.py +0 -0
  133. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/_types.py +0 -0
  134. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/data/__init__.py +0 -0
  135. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/data/_datasets.py +0 -0
  136. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/metadata/__init__.py +0 -0
  137. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/metadata/_drug.py +0 -0
  138. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/plot/__init__.py +0 -0
  139. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/preprocessing/__init__.py +0 -0
  140. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/preprocessing/_guide_rna.py +0 -0
  141. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/preprocessing/_guide_rna_mixture.py +0 -0
  142. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/py.typed +0 -0
  143. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_cinemaot.py +0 -0
  144. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_coda/__init__.py +0 -0
  145. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/__init__.py +0 -0
  146. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_base.py +0 -0
  147. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_checks.py +0 -0
  148. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_dge_comparison.py +0 -0
  149. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_edger.py +0 -0
  150. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_pydeseq2.py +0 -0
  151. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_simple_tests.py +0 -0
  152. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_statsmodels.py +0 -0
  153. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_distances/__init__.py +0 -0
  154. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_distances/_distance_tests.py +0 -0
  155. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_enrichment.py +0 -0
  156. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_milo.py +0 -0
  157. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/__init__.py +0 -0
  158. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_clustering.py +0 -0
  159. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_comparison.py +0 -0
  160. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_discriminator_classifiers.py +0 -0
  161. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_metrics.py +0 -0
  162. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_perturbation_space.py +0 -0
  163. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_simple.py +0 -0
  164. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_scgen/__init__.py +0 -0
  165. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_scgen/_base_components.py +0 -0
  166. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_scgen/_scgen.py +0 -0
  167. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_scgen/_scgenvae.py +0 -0
  168. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/_scgen/_utils.py +0 -0
  169. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/decoupler_LICENSE +0 -0
  170. {pertpy-0.11.0 → pertpy-0.11.2}/pertpy/tools/transferlearning_MMD_LICENSE +0 -0
  171. {pertpy-0.11.0 → pertpy-0.11.2}/tests/metadata/test_compound.py +0 -0
  172. {pertpy-0.11.0 → pertpy-0.11.2}/tests/metadata/test_drug.py +0 -0
  173. {pertpy-0.11.0 → pertpy-0.11.2}/tests/metadata/test_moa.py +0 -0
  174. {pertpy-0.11.0 → pertpy-0.11.2}/tests/preprocessing/test_grna_assignment.py +0 -0
  175. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_coda/test_tasccoda.py +0 -0
  176. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/__init__.py +0 -0
  177. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/conftest.py +0 -0
  178. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_base.py +0 -0
  179. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_compare_groups.py +0 -0
  180. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_dge.py +0 -0
  181. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_edger.py +0 -0
  182. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_input_checks.py +0 -0
  183. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_pydeseq2.py +0 -0
  184. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_simple_tests.py +0 -0
  185. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_statsmodels.py +0 -0
  186. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_distances/test_distances.py +0 -0
  187. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_perturbation_space/test_comparison.py +0 -0
  188. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_perturbation_space/test_discriminator_classifiers.py +0 -0
  189. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_perturbation_space/test_simple_cluster_space.py +0 -0
  190. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/_perturbation_space/test_simple_perturbation_space.py +0 -0
  191. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/test_cinemaot.py +0 -0
  192. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/test_enrichment.py +0 -0
  193. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/test_milo.py +0 -0
  194. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/test_mixscape.py +0 -0
  195. {pertpy-0.11.0 → pertpy-0.11.2}/tests/tools/test_scgen.py +0 -0
@@ -15,7 +15,7 @@ indent_style = tab
15
15
  end_of_line = crlf
16
16
 
17
17
  [LICENSE]
18
- insert_final_newline = false
18
+ insert_final_newline = true
19
19
 
20
20
  [Makefile]
21
21
  indent_style = tab
@@ -1,5 +1,5 @@
1
- name-template: "0.11.0 🌈"
2
- tag-template: 0.11.0
1
+ name-template: "0.11.2 🌈"
2
+ tag-template: 0.11.2
3
3
  exclude-labels:
4
4
  - "skip-changelog"
5
5
 
@@ -18,11 +18,13 @@ jobs:
18
18
  with:
19
19
  python-version: "3.x"
20
20
 
21
- - name: Install hatch
22
- run: pip install hatch
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v5
23
+ with:
24
+ cache-dependency-glob: pyproject.toml
23
25
 
24
- - name: Build project for distribution
25
- run: hatch build
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
@@ -24,13 +24,8 @@ jobs:
24
24
  include:
25
25
  - os: ubuntu-latest
26
26
  python: "3.13"
27
- run_mode: "slow"
28
27
  - os: ubuntu-latest
29
28
  python: "3.13"
30
- run_mode: "fast"
31
- - os: ubuntu-latest
32
- python: "3.13"
33
- run_mode: slow
34
29
  pip-flags: "--pre"
35
30
 
36
31
  env:
@@ -91,9 +86,6 @@ jobs:
91
86
  DISPLAY: :42
92
87
  run: |
93
88
  pytest_args="-m pytest -v --color=yes"
94
- if [ "${{ matrix.run_mode }}" = "slow" ]; then
95
- pytest_args="$pytest_args --runslow"
96
- fi
97
89
  coverage run $pytest_args
98
90
 
99
91
  - name: Show coverage report
@@ -72,7 +72,10 @@ instance/
72
72
 
73
73
  # Sphinx documentation
74
74
  docs/_build/
75
- docs/api/*
75
+ docs/api/data
76
+ docs/api/metadata
77
+ docs/api/tools
78
+ docs/api/preprocessing
76
79
  !docs/api/api.md
77
80
 
78
81
  # PyBuilder
@@ -11,7 +11,7 @@ repos:
11
11
  hooks:
12
12
  - id: biome-format
13
13
  - repo: https://github.com/astral-sh/ruff-pre-commit
14
- rev: v0.11.5
14
+ rev: v0.11.9
15
15
  hooks:
16
16
  - id: ruff
17
17
  args: [--fix, --exit-non-zero-on-fix, --unsafe-fixes]
@@ -33,7 +33,7 @@ repos:
33
33
  - id: no-commit-to-branch
34
34
  args: ["--branch=main"]
35
35
  - repo: https://github.com/pre-commit/mirrors-mypy
36
- rev: v1.14.1
36
+ rev: v1.15.0
37
37
  hooks:
38
38
  - id: mypy
39
39
  args: [--no-strict-optional, --ignore-missing-imports]
@@ -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.0
3
+ Version: 0.11.2
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.0pre1; extra == 'de'
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>=6; extra == 'doc'
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
- [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
105
104
  [![Build](https://github.com/scverse/pertpy/actions/workflows/build.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/build.yml)
106
105
  [![codecov](https://codecov.io/gh/scverse/pertpy/graph/badge.svg?token=1dTpIPBShv)](https://codecov.io/gh/scverse/pertpy)
107
106
  [![License](https://img.shields.io/github/license/scverse/pertpy)](https://opensource.org/licenses/Apache2.0)
@@ -111,13 +110,16 @@ Description-Content-Type: text/markdown
111
110
  [![Test](https://github.com/scverse/pertpy/actions/workflows/test.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/test.yml)
112
111
  [![PyPI](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](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
  ![fig1](https://github.com/user-attachments/assets/d2e32d69-b767-4be3-a938-77a9dce45d3f)
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
 
@@ -149,7 +151,7 @@ bioRxiv 2024.08.04.606516; doi: https://doi.org/10.1101/2024.08.04.606516](https
149
151
 
150
152
  [pip]: https://pip.pypa.io/
151
153
  [pypi]: https://pypi.org/
152
- [api]: https://pertpy.readthedocs.io/en/latest/api/api.html
154
+ [api]: https://pertpy.readthedocs.io/en/latest/api.html
153
155
  [//]: # "numfocus-fiscal-sponsor-attribution"
154
156
 
155
157
  pertpy 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/).
@@ -1,4 +1,3 @@
1
- [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
2
1
  [![Build](https://github.com/scverse/pertpy/actions/workflows/build.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/build.yml)
3
2
  [![codecov](https://codecov.io/gh/scverse/pertpy/graph/badge.svg?token=1dTpIPBShv)](https://codecov.io/gh/scverse/pertpy)
4
3
  [![License](https://img.shields.io/github/license/scverse/pertpy)](https://opensource.org/licenses/Apache2.0)
@@ -8,13 +7,16 @@
8
7
  [![Test](https://github.com/scverse/pertpy/actions/workflows/test.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/test.yml)
9
8
  [![PyPI](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](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
  ![fig1](https://github.com/user-attachments/assets/d2e32d69-b767-4be3-a938-77a9dce45d3f)
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
 
@@ -46,7 +48,7 @@ bioRxiv 2024.08.04.606516; doi: https://doi.org/10.1101/2024.08.04.606516](https
46
48
 
47
49
  [pip]: https://pip.pypa.io/
48
50
  [pypi]: https://pypi.org/
49
- [api]: https://pertpy.readthedocs.io/en/latest/api/api.html
51
+ [api]: https://pertpy.readthedocs.io/en/latest/api.html
50
52
  [//]: # "numfocus-fiscal-sponsor-attribution"
51
53
 
52
54
  pertpy 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/).
@@ -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
+ }
@@ -1,5 +1,4 @@
1
1
  <svg width="308" height="105" viewBox="0 0 308 105" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <rect width="308" height="105" fill="#1E1E1E"/>
3
2
  <path d="M26.432 17.656C41.664 17.4 48.576 31.736 48.704 47.992C48.704 62.328 41.536 75.768 26.176 76.28C19.904 76.28 14.528 74.36 9.28 71.16V104.312L0.0640001 100.984L0.192 27.384C0.0640001 27.384 7.36 17.784 26.304 17.528L26.432 17.656ZM24.128 69.624C36.416 68.856 37.952 56.824 37.952 47.352C37.952 38.136 36.416 24.312 24.768 23.8C16.832 23.288 10.432 27 9.152 28.28V64.76C12.224 66.68 18.368 70.008 24.128 69.624ZM105.92 69.88C102.976 71.8 100.032 73.464 96.32 74.616C88.256 76.92 77.76 77.048 71.104 71.416C64.96 66.168 61.248 57.336 61.248 47.864C61.376 33.144 67.392 17.912 83.776 17.912C99.392 17.912 105.152 28.664 105.408 45.944H71.104C70.08 60.536 77.504 70.392 88 70.008C94.4 69.88 99.008 67.704 103.744 65.4L105.92 69.88ZM95.936 40.44L96.064 40.568C96.064 32.376 92.48 23.672 84.16 23.672C75.2 23.672 72 32.376 71.36 40.44H95.936ZM142.476 24.568H142.348C136.204 24.568 131.98 26.872 128.652 29.688V75H119.308V28.408C122.764 24.568 127.372 21.496 132.62 19.704C138.252 17.656 143.628 16.376 151.436 17.784C150.284 20.088 148.748 23.032 147.724 25.336C145.932 24.952 143.756 24.568 142.476 24.568ZM163.362 24.952H156.962V18.936H163.362V3.32L172.706 -0.00800323V18.936H183.202V24.952H172.706V61.432C172.706 68.856 176.674 70.648 183.202 70.904V75.768C170.786 76.92 163.362 71.288 163.362 61.688V24.952Z" fill="#30679A"/>
4
3
  <path d="M223.307 17.656C238.539 17.4 245.451 31.736 245.579 47.992C245.579 62.328 238.411 75.768 223.051 76.28C216.779 76.28 211.403 74.36 206.155 71.16V104.312L196.939 100.984L197.067 27.384C196.939 27.384 204.235 17.784 223.179 17.528L223.307 17.656ZM221.003 69.624C233.291 68.856 234.827 56.824 234.827 47.352C234.827 38.136 233.291 24.312 221.643 23.8C213.707 23.288 207.307 27 206.027 28.28V64.76C209.099 66.68 215.243 70.008 221.003 69.624ZM270.411 56.824V56.696C270.411 65.272 276.555 69.752 284.875 69.624C289.867 69.496 295.499 66.68 298.571 64.632V18.936H307.915V69.752C307.915 76.28 307.531 86.136 304.843 91.256C300.107 100.216 286.795 103.8 277.323 104.056L275.787 98.168C282.955 97.144 293.195 96.12 297.035 88.824C298.955 85.24 299.083 78.2 299.083 74.104C299.083 72.696 299.211 73.08 299.083 71.672C296.267 72.952 289.995 76.024 278.987 76.024C270.539 76.024 260.939 70.008 260.939 59.64V20.728L270.411 17.528V56.824Z" fill="#D2455E"/>
5
4
  </svg>
@@ -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).