pertpy 0.11.4__tar.gz → 1.0.0__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 (194) hide show
  1. {pertpy-0.11.4 → pertpy-1.0.0}/.github/release-drafter.yml +2 -2
  2. pertpy-1.0.0/.github/workflows/release.yml +34 -0
  3. {pertpy-0.11.4 → pertpy-1.0.0}/PKG-INFO +15 -2
  4. {pertpy-0.11.4 → pertpy-1.0.0}/README.md +14 -1
  5. {pertpy-0.11.4 → pertpy-1.0.0}/docs/changelog.md +27 -6
  6. {pertpy-0.11.4 → pertpy-1.0.0}/docs/conf.py +13 -5
  7. {pertpy-0.11.4 → pertpy-1.0.0}/docs/index.md +3 -3
  8. {pertpy-0.11.4 → pertpy-1.0.0}/docs/installation.md +18 -43
  9. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/__init__.py +4 -1
  10. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_coda/_base_coda.py +1 -1
  11. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_distances/_distances.py +3 -2
  12. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_milo.py +138 -51
  13. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_mixscape.py +42 -39
  14. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_perturbation_space/_discriminator_classifiers.py +1 -1
  15. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_perturbation_space/_perturbation_space.py +1 -1
  16. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_scgen/_scgen.py +2 -1
  17. {pertpy-0.11.4 → pertpy-1.0.0}/pyproject.toml +15 -2
  18. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/test_edger.py +10 -0
  19. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/test_pydeseq2.py +6 -0
  20. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/test_milo.py +35 -7
  21. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/test_scgen.py +8 -3
  22. pertpy-0.11.4/.github/workflows/release.yml +0 -32
  23. {pertpy-0.11.4 → pertpy-1.0.0}/.editorconfig +0 -0
  24. {pertpy-0.11.4 → pertpy-1.0.0}/.gitattributes +0 -0
  25. {pertpy-0.11.4 → pertpy-1.0.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  26. {pertpy-0.11.4 → pertpy-1.0.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  27. {pertpy-0.11.4 → pertpy-1.0.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  28. {pertpy-0.11.4 → pertpy-1.0.0}/.github/labels.yml +0 -0
  29. {pertpy-0.11.4 → pertpy-1.0.0}/.github/pull_request_template.md +0 -0
  30. {pertpy-0.11.4 → pertpy-1.0.0}/.github/workflows/build.yml +0 -0
  31. {pertpy-0.11.4 → pertpy-1.0.0}/.github/workflows/labeler.yml +0 -0
  32. {pertpy-0.11.4 → pertpy-1.0.0}/.github/workflows/release_drafter.yml +0 -0
  33. {pertpy-0.11.4 → pertpy-1.0.0}/.github/workflows/test.yml +0 -0
  34. {pertpy-0.11.4 → pertpy-1.0.0}/.gitignore +0 -0
  35. {pertpy-0.11.4 → pertpy-1.0.0}/.gitmodules +0 -0
  36. {pertpy-0.11.4 → pertpy-1.0.0}/.pre-commit-config.yaml +0 -0
  37. {pertpy-0.11.4 → pertpy-1.0.0}/.readthedocs.yml +0 -0
  38. {pertpy-0.11.4 → pertpy-1.0.0}/LICENSE +0 -0
  39. {pertpy-0.11.4 → pertpy-1.0.0}/biome.jsonc +0 -0
  40. {pertpy-0.11.4 → pertpy-1.0.0}/codecov.yml +0 -0
  41. {pertpy-0.11.4 → pertpy-1.0.0}/docs/Makefile +0 -0
  42. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_ext/edit_on_github.py +0 -0
  43. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_ext/typed_returns.py +0 -0
  44. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/SCVI_LICENSE +0 -0
  45. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/css/overwrite.css +0 -0
  46. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/css/sphinx_gallery.css +0 -0
  47. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/augur_dp_scatter.png +0 -0
  48. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/augur_important_features.png +0 -0
  49. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/augur_lollipop.png +0 -0
  50. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/augur_scatterplot.png +0 -0
  51. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/de_fold_change.png +0 -0
  52. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/de_multicomparison_fc.png +0 -0
  53. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/de_paired_expression.png +0 -0
  54. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/de_volcano.png +0 -0
  55. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/dialogue_pairplot.png +0 -0
  56. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/dialogue_violin.png +0 -0
  57. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/enrichment_dotplot.png +0 -0
  58. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/enrichment_gsea.png +0 -0
  59. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/milo_da_beeswarm.png +0 -0
  60. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/milo_nhood.png +0 -0
  61. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/milo_nhood_graph.png +0 -0
  62. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/mixscape_barplot.png +0 -0
  63. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/mixscape_heatmap.png +0 -0
  64. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/mixscape_lda.png +0 -0
  65. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/mixscape_perturbscore.png +0 -0
  66. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/mixscape_violin.png +0 -0
  67. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/pseudobulk_samples.png +0 -0
  68. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/sccoda_boxplots.png +0 -0
  69. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/sccoda_effects_barplot.png +0 -0
  70. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/sccoda_rel_abundance_dispersion_plot.png +0 -0
  71. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/sccoda_stacked_barplot.png +0 -0
  72. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/scgen_reg_mean.png +0 -0
  73. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/tasccoda_draw_effects.png +0 -0
  74. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/tasccoda_draw_tree.png +0 -0
  75. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/docstring_previews/tasccoda_effects_umap.png +0 -0
  76. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/icons/code-24px.svg +0 -0
  77. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/icons/computer-24px.svg +0 -0
  78. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/icons/library_books-24px.svg +0 -0
  79. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/icons/play_circle_outline-24px.svg +0 -0
  80. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/pertpy_logo.png +0 -0
  81. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/pertpy_logo.svg +0 -0
  82. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/placeholder.png +0 -0
  83. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/augur.png +0 -0
  84. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/cinemaot.png +0 -0
  85. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/dge.png +0 -0
  86. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/dialogue.png +0 -0
  87. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/distances.png +0 -0
  88. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/distances_tests.png +0 -0
  89. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/enrichment.png +0 -0
  90. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/guide_rna_assignment.png +0 -0
  91. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/mcfarland.png +0 -0
  92. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/metadata.png +0 -0
  93. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/milo.png +0 -0
  94. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/mixscape.png +0 -0
  95. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/norman.png +0 -0
  96. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/ontology.png +0 -0
  97. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/perturbation_space.png +0 -0
  98. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/placeholder.png +0 -0
  99. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/sccoda.png +0 -0
  100. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/sccoda_extended.png +0 -0
  101. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/scgen_perturbation_prediction.png +0 -0
  102. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/tasccoda.png +0 -0
  103. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_static/tutorials/zhang.png +0 -0
  104. {pertpy-0.11.4 → pertpy-1.0.0}/docs/_templates/autosummary/class.rst +0 -0
  105. {pertpy-0.11.4 → pertpy-1.0.0}/docs/about/background.md +0 -0
  106. {pertpy-0.11.4 → pertpy-1.0.0}/docs/about/cite.md +0 -0
  107. {pertpy-0.11.4 → pertpy-1.0.0}/docs/api/datasets_index.md +0 -0
  108. {pertpy-0.11.4 → pertpy-1.0.0}/docs/api/metadata_index.md +0 -0
  109. {pertpy-0.11.4 → pertpy-1.0.0}/docs/api/preprocessing_index.md +0 -0
  110. {pertpy-0.11.4 → pertpy-1.0.0}/docs/api/tools_index.md +0 -0
  111. {pertpy-0.11.4 → pertpy-1.0.0}/docs/api.md +0 -0
  112. {pertpy-0.11.4 → pertpy-1.0.0}/docs/contributing.md +0 -0
  113. {pertpy-0.11.4 → pertpy-1.0.0}/docs/make.bat +0 -0
  114. {pertpy-0.11.4 → pertpy-1.0.0}/docs/references.bib +0 -0
  115. {pertpy-0.11.4 → pertpy-1.0.0}/docs/references.md +0 -0
  116. {pertpy-0.11.4 → pertpy-1.0.0}/docs/tutorials/metadata.md +0 -0
  117. {pertpy-0.11.4 → pertpy-1.0.0}/docs/tutorials/preprocessing.md +0 -0
  118. {pertpy-0.11.4 → pertpy-1.0.0}/docs/tutorials/tools.md +0 -0
  119. {pertpy-0.11.4 → pertpy-1.0.0}/docs/tutorials.md +0 -0
  120. {pertpy-0.11.4 → pertpy-1.0.0}/docs/usecases.md +0 -0
  121. {pertpy-0.11.4 → pertpy-1.0.0}/docs/utils.py +0 -0
  122. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/_doc.py +0 -0
  123. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/_types.py +0 -0
  124. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/data/__init__.py +0 -0
  125. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/data/_dataloader.py +0 -0
  126. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/data/_datasets.py +0 -0
  127. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/metadata/__init__.py +0 -0
  128. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/metadata/_cell_line.py +0 -0
  129. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/metadata/_compound.py +0 -0
  130. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/metadata/_drug.py +0 -0
  131. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/metadata/_look_up.py +0 -0
  132. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/metadata/_metadata.py +0 -0
  133. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/metadata/_moa.py +0 -0
  134. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/plot/__init__.py +0 -0
  135. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/preprocessing/__init__.py +0 -0
  136. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/preprocessing/_guide_rna.py +0 -0
  137. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/preprocessing/_guide_rna_mixture.py +0 -0
  138. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/py.typed +0 -0
  139. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/__init__.py +0 -0
  140. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_augur.py +0 -0
  141. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_cinemaot.py +0 -0
  142. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_coda/__init__.py +0 -0
  143. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_coda/_sccoda.py +0 -0
  144. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_coda/_tasccoda.py +0 -0
  145. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_dialogue.py +0 -0
  146. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_differential_gene_expression/__init__.py +0 -0
  147. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_differential_gene_expression/_base.py +0 -0
  148. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_differential_gene_expression/_checks.py +0 -0
  149. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_differential_gene_expression/_dge_comparison.py +0 -0
  150. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_differential_gene_expression/_edger.py +0 -0
  151. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_differential_gene_expression/_pydeseq2.py +0 -0
  152. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_differential_gene_expression/_simple_tests.py +0 -0
  153. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_differential_gene_expression/_statsmodels.py +0 -0
  154. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_distances/__init__.py +0 -0
  155. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_distances/_distance_tests.py +0 -0
  156. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_enrichment.py +0 -0
  157. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_perturbation_space/__init__.py +0 -0
  158. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_perturbation_space/_clustering.py +0 -0
  159. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_perturbation_space/_comparison.py +0 -0
  160. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_perturbation_space/_metrics.py +0 -0
  161. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_perturbation_space/_simple.py +0 -0
  162. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_scgen/__init__.py +0 -0
  163. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_scgen/_base_components.py +0 -0
  164. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_scgen/_scgenvae.py +0 -0
  165. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/_scgen/_utils.py +0 -0
  166. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/decoupler_LICENSE +0 -0
  167. {pertpy-0.11.4 → pertpy-1.0.0}/pertpy/tools/transferlearning_MMD_LICENSE +0 -0
  168. {pertpy-0.11.4 → pertpy-1.0.0}/tests/conftest.py +0 -0
  169. {pertpy-0.11.4 → pertpy-1.0.0}/tests/metadata/test_cell_line.py +0 -0
  170. {pertpy-0.11.4 → pertpy-1.0.0}/tests/metadata/test_compound.py +0 -0
  171. {pertpy-0.11.4 → pertpy-1.0.0}/tests/metadata/test_drug.py +0 -0
  172. {pertpy-0.11.4 → pertpy-1.0.0}/tests/metadata/test_moa.py +0 -0
  173. {pertpy-0.11.4 → pertpy-1.0.0}/tests/preprocessing/test_grna_assignment.py +0 -0
  174. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_coda/test_sccoda.py +0 -0
  175. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_coda/test_tasccoda.py +0 -0
  176. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/__init__.py +0 -0
  177. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/conftest.py +0 -0
  178. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/test_base.py +0 -0
  179. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/test_compare_groups.py +0 -0
  180. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/test_dge.py +0 -0
  181. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/test_input_checks.py +0 -0
  182. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/test_simple_tests.py +0 -0
  183. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_differential_gene_expression/test_statsmodels.py +0 -0
  184. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_distances/test_distance_tests.py +0 -0
  185. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_distances/test_distances.py +0 -0
  186. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_perturbation_space/test_comparison.py +0 -0
  187. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_perturbation_space/test_discriminator_classifiers.py +0 -0
  188. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_perturbation_space/test_simple_cluster_space.py +0 -0
  189. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/_perturbation_space/test_simple_perturbation_space.py +0 -0
  190. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/test_augur.py +0 -0
  191. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/test_cinemaot.py +0 -0
  192. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/test_dialogue.py +0 -0
  193. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/test_enrichment.py +0 -0
  194. {pertpy-0.11.4 → pertpy-1.0.0}/tests/tools/test_mixscape.py +0 -0
@@ -1,5 +1,5 @@
1
- name-template: "0.11.4 🌈"
2
- tag-template: 0.11.4
1
+ name-template: "1.0.0 🌈"
2
+ tag-template: 1.0.0
3
3
  exclude-labels:
4
4
  - "skip-changelog"
5
5
 
@@ -0,0 +1,34 @@
1
+ name: Release
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ defaults:
8
+ run:
9
+ shell: bash -euo pipefail {0}
10
+
11
+ jobs:
12
+ release:
13
+ name: Upload release to PyPI
14
+ runs-on: ubuntu-latest
15
+ environment:
16
+ name: pypi
17
+ url: https://pypi.org/p/pertpy
18
+ permissions:
19
+ id-token: write
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ with:
23
+ filter: blob:none
24
+ fetch-depth: 0
25
+
26
+ - name: Install uv
27
+ uses: astral-sh/setup-uv@v5
28
+ with:
29
+ cache-dependency-glob: pyproject.toml
30
+
31
+ - name: Build package
32
+ run: uv build
33
+ - name: Publish package distributions to PyPI
34
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pertpy
3
- Version: 0.11.4
3
+ Version: 1.0.0
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
@@ -131,6 +131,12 @@ You can install _pertpy_ in less than a minute via [pip] from [PyPI]:
131
131
  pip install pertpy
132
132
  ```
133
133
 
134
+ or [conda-forge]:
135
+
136
+ ```console
137
+ conda install -c conda-forge pertpy
138
+ ```
139
+
134
140
  ### Differential gene expression
135
141
 
136
142
  If you want to use the differential gene expression interface, please install pertpy by running:
@@ -149,7 +155,13 @@ pip install 'pertpy[tcoda]'
149
155
 
150
156
  ### milo
151
157
 
152
- milo further requires edger, statmod, and rpy2 to be installed:
158
+ milo requires either the "de" extra for the "pydeseq2" solver:
159
+
160
+ ```console
161
+ pip install 'pertpy[de]'
162
+ ```
163
+
164
+ or, edger, statmod, and rpy2 for the "edger" solver:
153
165
 
154
166
  ```R
155
167
  BiocManager::install("edgeR")
@@ -179,6 +191,7 @@ pip install rpy2
179
191
  [pip]: https://pip.pypa.io/
180
192
  [pypi]: https://pypi.org/
181
193
  [api]: https://pertpy.readthedocs.io/en/latest/api.html
194
+ [conda-forge]: https://anaconda.org/conda-forge/pertpy
182
195
  [//]: # "numfocus-fiscal-sponsor-attribution"
183
196
 
184
197
  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/).
@@ -29,6 +29,12 @@ You can install _pertpy_ in less than a minute via [pip] from [PyPI]:
29
29
  pip install pertpy
30
30
  ```
31
31
 
32
+ or [conda-forge]:
33
+
34
+ ```console
35
+ conda install -c conda-forge pertpy
36
+ ```
37
+
32
38
  ### Differential gene expression
33
39
 
34
40
  If you want to use the differential gene expression interface, please install pertpy by running:
@@ -47,7 +53,13 @@ pip install 'pertpy[tcoda]'
47
53
 
48
54
  ### milo
49
55
 
50
- milo further requires edger, statmod, and rpy2 to be installed:
56
+ milo requires either the "de" extra for the "pydeseq2" solver:
57
+
58
+ ```console
59
+ pip install 'pertpy[de]'
60
+ ```
61
+
62
+ or, edger, statmod, and rpy2 for the "edger" solver:
51
63
 
52
64
  ```R
53
65
  BiocManager::install("edgeR")
@@ -77,6 +89,7 @@ pip install rpy2
77
89
  [pip]: https://pip.pypa.io/
78
90
  [pypi]: https://pypi.org/
79
91
  [api]: https://pertpy.readthedocs.io/en/latest/api.html
92
+ [conda-forge]: https://anaconda.org/conda-forge/pertpy
80
93
  [//]: # "numfocus-fiscal-sponsor-attribution"
81
94
 
82
95
  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/).
@@ -5,19 +5,40 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## v0.11.3
8
+ ## v1.0.0
9
+
10
+ ### 🚀 Features
11
+
12
+ * Simplify guide assignment tutorial ([#796](https://github.com/scverse/pertpy/pull/796)) @Zethson
13
+ * Add milo pydeseq2 solver ([#795](https://github.com/scverse/pertpy/pull/795)) @Zethson
14
+
15
+ ## v0.11.5
16
+
17
+ ### 🚀 Features
18
+
19
+ * Move to trusted publishing ([#790](https://github.com/scverse/pertpy/pull/790)) @Zethson
20
+ * Add conda-forge to installation instructions ([#789](https://github.com/scverse/pertpy/pull/789)) @Zethson
21
+ * Fix seaborn 0.14 compat & testing dependencies & speed up tests ([#787](https://github.com/scverse/pertpy/pull/787)) @Zethson
22
+ * Support > 2 colors in `pt.tl.Sccoda.plot_boxplots` ([#784](https://github.com/scverse/pertpy/pull/784)) @mschilli87
23
+
24
+ ### 🐛 Bug Fixes
25
+
26
+ * Fix LIL support for AnnData 0.12 ([#792](https://github.com/scverse/pertpy/pull/792)) @Zethson
27
+ * Fix compatibility with rpy 3.6.0 in milo ([#791](https://github.com/scverse/pertpy/pull/791)) @seohyonkim
28
+
29
+ ## v0.11.4
9
30
 
10
31
  ### 🧰 Maintenance
11
32
 
12
- * Remove decoupler [#783]((https://github.com/scverse/pertpy/pull/783)) @Zethson
33
+ * Remove decoupler ([#783](https://github.com/scverse/pertpy/pull/783)) @Zethson
13
34
 
14
35
  ## v0.11.3
15
36
 
16
- ## 🚀 Features
37
+ ### 🚀 Features
17
38
 
18
- * add about page [#770]((https://github.com/scverse/pertpy/pull/770)) @Zethson
19
- * Simplify Metadata errors [#765]((https://github.com/scverse/pertpy/pull/765)) @Zethson
20
- * Standardize scCODA plot palette interface [#773]((https://github.com/scverse/pertpy/pull/773)) @mschilli87
39
+ * add about page ([#770](https://github.com/scverse/pertpy/pull/770)) @Zethson
40
+ * Simplify Metadata errors ([#765](https://github.com/scverse/pertpy/pull/765)) @Zethson
41
+ * Standardize scCODA plot palette interface ([#773](https://github.com/scverse/pertpy/pull/773)) @mschilli87
21
42
 
22
43
  ## v0.11.2
23
44
 
@@ -62,32 +62,40 @@ pygments_style = "sphinx"
62
62
  templates_path = ["_templates"]
63
63
  bibtex_bibfiles = ["references.bib"]
64
64
  nitpicky = True # Warn about broken links
65
- # source_suffix = ".md"
65
+ source_suffix = {
66
+ ".rst": "restructuredtext",
67
+ ".ipynb": "myst-nb",
68
+ ".myst": "myst-nb",
69
+ }
66
70
 
67
71
  suppress_warnings = ["toc.not_included"]
68
72
 
69
73
  autosummary_generate = True
70
74
  autosummary_imported_members = True
71
- autodoc_member_order = "bysource"
75
+ autodoc_member_order = "groupwise"
72
76
  napoleon_google_docstring = True
73
77
  napoleon_include_init_with_doc = False
74
78
  napoleon_use_rtype = True
75
79
  napoleon_use_param = True
80
+ myst_heading_anchors = 6
76
81
  napoleon_custom_sections = [("Params", "Parameters")]
77
82
  todo_include_todos = False
78
- numpydoc_show_class_members = False
79
83
  annotate_defaults = True
80
84
  myst_enable_extensions = [
85
+ "amsmath",
81
86
  "colon_fence",
87
+ "deflist",
82
88
  "dollarmath",
83
- "amsmath",
89
+ "html_image",
90
+ "html_admonition",
84
91
  ]
92
+ myst_url_schemes = ("http", "https", "mailto")
85
93
  nb_execution_mode = "off"
94
+ nb_merge_streams = True
86
95
  warn_as_error = True
87
96
 
88
97
  typehints_defaults = "comma"
89
98
 
90
- # html_show_sourcelink = True
91
99
  html_theme = "scanpydoc"
92
100
  html_title = "pertpy"
93
101
  html_logo = "_static/pertpy_logo.svg"
@@ -48,7 +48,7 @@ It provides tools for harmonizing perturbation datasets, automating metadata ann
48
48
  ```{toctree}
49
49
  :caption: 'General'
50
50
  :hidden: true
51
- :maxdepth: 1
51
+ :maxdepth: 2
52
52
 
53
53
  installation
54
54
  api
@@ -60,7 +60,7 @@ references
60
60
  ```{toctree}
61
61
  :caption: 'Gallery'
62
62
  :hidden: true
63
- :maxdepth: 1
63
+ :maxdepth: 3
64
64
 
65
65
  tutorials
66
66
  usecases
@@ -69,7 +69,7 @@ usecases
69
69
  ```{toctree}
70
70
  :caption: 'About'
71
71
  :hidden: true
72
- :maxdepth: 1
72
+ :maxdepth: 2
73
73
 
74
74
  about/background
75
75
  about/cite
@@ -6,6 +6,8 @@
6
6
 
7
7
  ## Stable release
8
8
 
9
+ ### PyPI
10
+
9
11
  To install pertpy, run this command in your terminal:
10
12
 
11
13
  ```console
@@ -13,9 +15,16 @@ pip install pertpy
13
15
  ```
14
16
 
15
17
  This is the preferred method to install pertpy, as it will always install the most recent stable release.
16
-
17
18
  If you don't have [pip] installed, this [Python installation guide] can guide you through the process.
18
19
 
20
+ ### conda-forge
21
+
22
+ Alternatively, you can install pertpy from [conda-forge]:
23
+
24
+ ```console
25
+ conda install -c conda-forge pertpy
26
+ ```
27
+
19
28
  ### Additional dependency groups
20
29
 
21
30
  #### Differential gene expression interface
@@ -38,7 +47,13 @@ pip install rpy2
38
47
 
39
48
  #### milo
40
49
 
41
- milo further requires edger, statmod, and rpy2 to be installed:
50
+ milo requires either the "de" extra for the "pydeseq2" solver:
51
+
52
+ ```console
53
+ pip install 'pertpy[de]'
54
+ ```
55
+
56
+ or, edger, statmod, and rpy2 for the "edger" solver:
42
57
 
43
58
  ```R
44
59
  BiocManager::install("edgeR")
@@ -57,45 +72,6 @@ TascCODA requires an additional set of dependencies (ete4, pyqt6, and toytree) t
57
72
  pip install pertpy[tcoda]
58
73
  ```
59
74
 
60
- ## Apple Silicon
61
-
62
- If you want to install and use pertpy on a machine with macOS and M-Chip, the installation is slightly more complex.
63
- This is because pertpy depends on [scvi-tools], which can currently only run on Apple Silicon machines when installed
64
- using a native python version (due to a dependency on jax, which cannot be run via Rosetta).
65
-
66
- Follow these steps to install pertpy on an Apple Silicon machine (tested on a MacBook Pro with M1 chip and macOS 14.0):
67
-
68
- 1. Install [Homebrew]
69
-
70
- 2. Install Apple Silicon version of Mambaforge (If you already have Anaconda/Miniconda installed, make sure
71
- having both mamba and conda won't cause conflicts)
72
-
73
- ```console
74
- brew install --cask mambaforge
75
- ```
76
-
77
- 3. Create a new environment using mamba and activate it
78
-
79
- ```console
80
- mamba create -n pertpy-env
81
- mamba activate pertpy-env
82
- ```
83
-
84
- 4. Clone the GitHub Repository
85
-
86
- ```console
87
- git clone https://github.com/scverse/pertpy.git
88
- ```
89
-
90
- 5. Go inside the pertpy folder and install pertpy
91
-
92
- ```console
93
- cd pertpy
94
- pip install .
95
- ```
96
-
97
- Now you're ready to use pertpy as usual within the environment (`import pertpy`).
98
-
99
75
  ## From sources
100
76
 
101
77
  The sources for pertpy can be downloaded from the [Github repo].
@@ -114,8 +90,7 @@ $ curl -OJL https://github.com/scverse/pertpy/tarball/master
114
90
 
115
91
  [github repo]: https://github.com/scverse/pertpy
116
92
  [pip]: https://pip.pypa.io
117
- [poetry]: https://python-poetry.org/
93
+ [conda-forge]: https://anaconda.org/conda-forge/pertpy
118
94
  [python installation guide]: http://docs.python-guide.org/en/latest/starting/installation/
119
95
  [tarball]: https://github.com/scverse/pertpy/tarball/master
120
- [scvi-tools]: https://docs.scvi-tools.org/en/latest/installation.html
121
96
  [Homebrew]: https://brew.sh/
@@ -2,10 +2,11 @@
2
2
 
3
3
  __author__ = "Lukas Heumos"
4
4
  __email__ = "lukas.heumos@posteo.net"
5
- __version__ = "0.11.4"
5
+ __version__ = "1.0.0"
6
6
 
7
7
  import warnings
8
8
 
9
+ from anndata._core.aligned_df import ImplicitModificationWarning
9
10
  from matplotlib import MatplotlibDeprecationWarning
10
11
  from numba import NumbaDeprecationWarning
11
12
 
@@ -13,6 +14,8 @@ warnings.filterwarnings("ignore", category=NumbaDeprecationWarning)
13
14
  warnings.filterwarnings("ignore", category=MatplotlibDeprecationWarning)
14
15
  warnings.filterwarnings("ignore", category=SyntaxWarning)
15
16
  warnings.filterwarnings("ignore", category=UserWarning, module="scvi._settings")
17
+ warnings.filterwarnings("ignore", message="Environment variable.*redefined by R")
18
+ warnings.filterwarnings("ignore", message="Transforming to str index.", category=ImplicitModificationWarning)
16
19
 
17
20
  import mudata
18
21
 
@@ -1538,7 +1538,7 @@ class CompositionalModel2(ABC):
1538
1538
  if isinstance(data, MuData):
1539
1539
  data = data[modality_key]
1540
1540
  if isinstance(palette, Colormap):
1541
- palette = palette(range(2))
1541
+ palette = list(palette(range(len(data.obs[feature_name].unique()))))
1542
1542
 
1543
1543
  # y scale transformations
1544
1544
  if y_scale == "relative":
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  from abc import ABC, abstractmethod
4
4
  from typing import TYPE_CHECKING, Literal, NamedTuple
5
5
 
6
+ import jax
6
7
  import numpy as np
7
8
  import pandas as pd
8
9
  from numba import jit
@@ -685,6 +686,7 @@ class WassersteinDistance(AbstractDistance):
685
686
  def __init__(self) -> None:
686
687
  super().__init__()
687
688
  self.accepts_precomputed = False
689
+ self.solver = jax.jit(Sinkhorn())
688
690
 
689
691
  def __call__(self, X: np.ndarray, Y: np.ndarray, **kwargs) -> float:
690
692
  X = np.asarray(X, dtype=np.float64)
@@ -699,8 +701,7 @@ class WassersteinDistance(AbstractDistance):
699
701
 
700
702
  def solve_ot_problem(self, geom: Geometry, **kwargs):
701
703
  ot_prob = LinearProblem(geom)
702
- solver = Sinkhorn()
703
- ot = solver(ot_prob, **kwargs)
704
+ ot = self.solver(ot_prob, **kwargs)
704
705
  cost = float(ot.reg_ot_cost)
705
706
 
706
707
  # Check for NaN or invalid cost