pertpy 0.7.0__tar.gz → 0.8.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (200) hide show
  1. {pertpy-0.7.0 → pertpy-0.8.0}/.github/release-drafter.yml +2 -2
  2. {pertpy-0.7.0 → pertpy-0.8.0}/.github/workflows/test.yml +26 -5
  3. {pertpy-0.7.0 → pertpy-0.8.0}/.gitmodules +1 -1
  4. {pertpy-0.7.0 → pertpy-0.8.0}/.pre-commit-config.yaml +2 -2
  5. {pertpy-0.7.0 → pertpy-0.8.0}/.readthedocs.yml +1 -0
  6. {pertpy-0.7.0 → pertpy-0.8.0}/PKG-INFO +22 -13
  7. {pertpy-0.7.0 → pertpy-0.8.0}/README.md +12 -6
  8. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_ext/edit_on_github.py +1 -1
  9. pertpy-0.8.0/docs/_static/tutorials/dge.png +0 -0
  10. pertpy-0.8.0/docs/_static/tutorials/metadata.png +0 -0
  11. {pertpy-0.7.0 → pertpy-0.8.0}/docs/conf.py +16 -8
  12. {pertpy-0.7.0 → pertpy-0.8.0}/docs/contributing.md +2 -2
  13. {pertpy-0.7.0 → pertpy-0.8.0}/docs/index.md +2 -2
  14. {pertpy-0.7.0 → pertpy-0.8.0}/docs/installation.md +31 -13
  15. {pertpy-0.7.0 → pertpy-0.8.0}/docs/tutorials/index.md +3 -1
  16. {pertpy-0.7.0 → pertpy-0.8.0}/docs/usage/usage.md +13 -3
  17. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/__init__.py +2 -1
  18. pertpy-0.8.0/pertpy/data/__init__.py +117 -0
  19. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/data/_dataloader.py +27 -23
  20. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/data/_datasets.py +58 -0
  21. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/metadata/__init__.py +2 -0
  22. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/metadata/_cell_line.py +39 -70
  23. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/metadata/_compound.py +3 -4
  24. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/metadata/_drug.py +2 -6
  25. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/metadata/_look_up.py +38 -51
  26. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/metadata/_metadata.py +7 -10
  27. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/metadata/_moa.py +2 -6
  28. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/preprocessing/__init__.py +2 -0
  29. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/preprocessing/_guide_rna.py +2 -3
  30. pertpy-0.8.0/pertpy/tools/__init__.py +57 -0
  31. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_augur.py +14 -15
  32. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_cinemaot.py +2 -2
  33. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_coda/_base_coda.py +118 -142
  34. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_coda/_sccoda.py +16 -15
  35. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_coda/_tasccoda.py +21 -22
  36. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_dialogue.py +18 -23
  37. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/__init__.py +20 -0
  38. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/_base.py +657 -0
  39. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/_checks.py +41 -0
  40. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/_dge_comparison.py +86 -0
  41. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/_edger.py +125 -0
  42. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/_formulaic.py +189 -0
  43. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/_pydeseq2.py +95 -0
  44. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/_simple_tests.py +162 -0
  45. pertpy-0.8.0/pertpy/tools/_differential_gene_expression/_statsmodels.py +72 -0
  46. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_distances/_distance_tests.py +21 -16
  47. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_distances/_distances.py +406 -70
  48. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_enrichment.py +10 -15
  49. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_kernel_pca.py +1 -1
  50. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_milo.py +76 -53
  51. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_mixscape.py +15 -11
  52. pertpy-0.8.0/pertpy/tools/_perturbation_space/__init__.py +0 -0
  53. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_perturbation_space/_clustering.py +5 -2
  54. pertpy-0.8.0/pertpy/tools/_perturbation_space/_comparison.py +112 -0
  55. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_perturbation_space/_discriminator_classifiers.py +20 -22
  56. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_perturbation_space/_perturbation_space.py +23 -21
  57. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_perturbation_space/_simple.py +3 -3
  58. pertpy-0.8.0/pertpy/tools/_scgen/__init__.py +1 -0
  59. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_scgen/_base_components.py +2 -3
  60. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_scgen/_scgen.py +33 -28
  61. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_scgen/_utils.py +2 -2
  62. {pertpy-0.7.0 → pertpy-0.8.0}/pyproject.toml +16 -10
  63. pertpy-0.8.0/tests/conftest.py +20 -0
  64. pertpy-0.8.0/tests/metadata/test_cell_line.py +82 -0
  65. pertpy-0.8.0/tests/metadata/test_compound.py +44 -0
  66. pertpy-0.8.0/tests/metadata/test_drug.py +36 -0
  67. pertpy-0.8.0/tests/metadata/test_moa.py +50 -0
  68. {pertpy-0.7.0 → pertpy-0.8.0}/tests/preprocessing/test_grna_assignment.py +1 -1
  69. pertpy-0.8.0/tests/tools/_coda/test_sccoda.py +113 -0
  70. pertpy-0.8.0/tests/tools/_coda/test_tasccoda.py +76 -0
  71. pertpy-0.8.0/tests/tools/_differential_gene_expression/__init__.py +0 -0
  72. pertpy-0.8.0/tests/tools/_differential_gene_expression/conftest.py +64 -0
  73. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_base.py +86 -0
  74. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_compare_groups.py +58 -0
  75. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_dge.py +80 -0
  76. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_edger.py +33 -0
  77. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_formulaic.py +208 -0
  78. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_input_checks.py +73 -0
  79. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_pydeseq2.py +33 -0
  80. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_simple_tests.py +113 -0
  81. pertpy-0.8.0/tests/tools/_differential_gene_expression/test_statsmodels.py +30 -0
  82. pertpy-0.8.0/tests/tools/_distances/test_distance_tests.py +56 -0
  83. pertpy-0.8.0/tests/tools/_distances/test_distances.py +208 -0
  84. pertpy-0.8.0/tests/tools/_perturbation_space/test_comparison.py +29 -0
  85. pertpy-0.8.0/tests/tools/test_augur.py +181 -0
  86. pertpy-0.8.0/tests/tools/test_cinemaot.py +83 -0
  87. pertpy-0.8.0/tests/tools/test_dialogue.py +37 -0
  88. {pertpy-0.7.0 → pertpy-0.8.0}/tests/tools/test_enrichment.py +16 -16
  89. pertpy-0.8.0/tests/tools/test_milo.py +283 -0
  90. pertpy-0.8.0/tests/tools/test_mixscape.py +100 -0
  91. {pertpy-0.7.0 → pertpy-0.8.0}/tests/tools/test_scgen.py +4 -4
  92. pertpy-0.7.0/pertpy/data/__init__.py +0 -56
  93. pertpy-0.7.0/pertpy/plot/__init__.py +0 -5
  94. pertpy-0.7.0/pertpy/plot/_augur.py +0 -171
  95. pertpy-0.7.0/pertpy/plot/_coda.py +0 -601
  96. pertpy-0.7.0/pertpy/plot/_guide_rna.py +0 -64
  97. pertpy-0.7.0/pertpy/plot/_milopy.py +0 -209
  98. pertpy-0.7.0/pertpy/plot/_mixscape.py +0 -355
  99. pertpy-0.7.0/pertpy/tools/__init__.py +0 -19
  100. pertpy-0.7.0/pertpy/tools/_differential_gene_expression.py +0 -325
  101. pertpy-0.7.0/pertpy/tools/_scgen/__init__.py +0 -1
  102. pertpy-0.7.0/tests/conftest.py +0 -7
  103. pertpy-0.7.0/tests/metadata/test_cell_line.py +0 -77
  104. pertpy-0.7.0/tests/metadata/test_compound.py +0 -43
  105. pertpy-0.7.0/tests/metadata/test_drug.py +0 -34
  106. pertpy-0.7.0/tests/metadata/test_moa.py +0 -49
  107. pertpy-0.7.0/tests/tools/_coda/test_sccoda.py +0 -107
  108. pertpy-0.7.0/tests/tools/_coda/test_tasccoda.py +0 -73
  109. pertpy-0.7.0/tests/tools/_distances/test_distance_tests.py +0 -51
  110. pertpy-0.7.0/tests/tools/_distances/test_distances.py +0 -134
  111. pertpy-0.7.0/tests/tools/test_augur.py +0 -180
  112. pertpy-0.7.0/tests/tools/test_cinemaot.py +0 -83
  113. pertpy-0.7.0/tests/tools/test_differential_gene_expression.py +0 -81
  114. pertpy-0.7.0/tests/tools/test_milo.py +0 -266
  115. pertpy-0.7.0/tests/tools/test_mixscape.py +0 -97
  116. {pertpy-0.7.0 → pertpy-0.8.0}/.editorconfig +0 -0
  117. {pertpy-0.7.0 → pertpy-0.8.0}/.gitattributes +0 -0
  118. {pertpy-0.7.0 → pertpy-0.8.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  119. {pertpy-0.7.0 → pertpy-0.8.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  120. {pertpy-0.7.0 → pertpy-0.8.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  121. {pertpy-0.7.0 → pertpy-0.8.0}/.github/labels.yml +0 -0
  122. {pertpy-0.7.0 → pertpy-0.8.0}/.github/pull_request_template.md +0 -0
  123. {pertpy-0.7.0 → pertpy-0.8.0}/.github/workflows/build.yml +0 -0
  124. {pertpy-0.7.0 → pertpy-0.8.0}/.github/workflows/labeler.yml +0 -0
  125. {pertpy-0.7.0 → pertpy-0.8.0}/.github/workflows/release.yml +0 -0
  126. {pertpy-0.7.0 → pertpy-0.8.0}/.github/workflows/release_drafter.yml +0 -0
  127. {pertpy-0.7.0 → pertpy-0.8.0}/.gitignore +0 -0
  128. {pertpy-0.7.0 → pertpy-0.8.0}/CODE_OF_CONDUCT.md +0 -0
  129. {pertpy-0.7.0 → pertpy-0.8.0}/LICENSE +0 -0
  130. {pertpy-0.7.0 → pertpy-0.8.0}/codecov.yml +0 -0
  131. {pertpy-0.7.0 → pertpy-0.8.0}/docs/Makefile +0 -0
  132. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_ext/typed_returns.py +0 -0
  133. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/SCVI_LICENSE +0 -0
  134. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/css/overwrite.css +0 -0
  135. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/css/sphinx_gallery.css +0 -0
  136. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/augur_dp_scatter.png +0 -0
  137. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/augur_important_features.png +0 -0
  138. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/augur_lollipop.png +0 -0
  139. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/augur_scatterplot.png +0 -0
  140. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/dialogue_pairplot.png +0 -0
  141. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/dialogue_violin.png +0 -0
  142. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/enrichment_dotplot.png +0 -0
  143. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/enrichment_gsea.png +0 -0
  144. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/milo_da_beeswarm.png +0 -0
  145. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/milo_nhood.png +0 -0
  146. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/milo_nhood_graph.png +0 -0
  147. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/mixscape_barplot.png +0 -0
  148. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/mixscape_heatmap.png +0 -0
  149. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/mixscape_lda.png +0 -0
  150. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/mixscape_perturbscore.png +0 -0
  151. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/mixscape_violin.png +0 -0
  152. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/sccoda_boxplots.png +0 -0
  153. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/sccoda_effects_barplot.png +0 -0
  154. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/sccoda_rel_abundance_dispersion_plot.png +0 -0
  155. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/sccoda_stacked_barplot.png +0 -0
  156. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/scgen_reg_mean.png +0 -0
  157. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/tasccoda_draw_effects.png +0 -0
  158. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/tasccoda_draw_tree.png +0 -0
  159. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/docstring_previews/tasccoda_effects_umap.png +0 -0
  160. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/icons/code-24px.svg +0 -0
  161. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/icons/computer-24px.svg +0 -0
  162. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/icons/library_books-24px.svg +0 -0
  163. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/icons/play_circle_outline-24px.svg +0 -0
  164. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/placeholder.png +0 -0
  165. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/augur.png +0 -0
  166. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/cinemaot.png +0 -0
  167. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/dialogue.png +0 -0
  168. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/distances.png +0 -0
  169. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/distances_tests.png +0 -0
  170. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/enrichment.png +0 -0
  171. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/guide_rna_assignment.png +0 -0
  172. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/milo.png +0 -0
  173. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/mixscape.png +0 -0
  174. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/ontology.png +0 -0
  175. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/perturbation_space.png +0 -0
  176. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/placeholder.png +0 -0
  177. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/sccoda.png +0 -0
  178. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/sccoda_extended.png +0 -0
  179. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/scgen_perturbation_prediction.png +0 -0
  180. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_static/tutorials/tasccoda.png +0 -0
  181. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_templates/autosummary/class.rst +0 -0
  182. {pertpy-0.7.0 → pertpy-0.8.0}/docs/_templates/class_no_inherited.rst +0 -0
  183. {pertpy-0.7.0 → pertpy-0.8.0}/docs/code_of_conduct.md +0 -0
  184. {pertpy-0.7.0 → pertpy-0.8.0}/docs/make.bat +0 -0
  185. {pertpy-0.7.0 → pertpy-0.8.0}/docs/references.bib +0 -0
  186. {pertpy-0.7.0 → pertpy-0.8.0}/docs/references.md +0 -0
  187. {pertpy-0.7.0 → pertpy-0.8.0}/docs/utils.py +0 -0
  188. {pertpy-0.7.0/pertpy/tools/_coda → pertpy-0.8.0/pertpy/plot}/__init__.py +0 -0
  189. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/py.typed +0 -0
  190. {pertpy-0.7.0/pertpy/tools/_distances → pertpy-0.8.0/pertpy/tools/_coda}/__init__.py +0 -0
  191. {pertpy-0.7.0/pertpy/tools/_perturbation_space → pertpy-0.8.0/pertpy/tools/_distances}/__init__.py +0 -0
  192. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_perturbation_space/_metrics.py +0 -0
  193. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/_scgen/_scgenvae.py +0 -0
  194. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/decoupler_LICENSE +0 -0
  195. {pertpy-0.7.0 → pertpy-0.8.0}/pertpy/tools/transferlearning_MMD_LICENSE +0 -0
  196. {pertpy-0.7.0 → pertpy-0.8.0}/tests/tools/_perturbation_space/test_discriminator_classifiers.py +0 -0
  197. {pertpy-0.7.0 → pertpy-0.8.0}/tests/tools/_perturbation_space/test_simple_cluster_space.py +0 -0
  198. {pertpy-0.7.0 → pertpy-0.8.0}/tests/tools/_perturbation_space/test_simple_perturbation_space.py +0 -0
  199. {pertpy-0.7.0 → pertpy-0.8.0}/tests/tools/haber_data.csv +0 -0
  200. {pertpy-0.7.0 → pertpy-0.8.0}/tests/tools/r_result.csv +0 -0
@@ -1,5 +1,5 @@
1
- name-template: "0.7.0 🌈"
2
- tag-template: 0.7.0
1
+ name-template: "0.8.0 🌈"
2
+ tag-template: 0.8.0
3
3
  exclude-labels:
4
4
  - "skip-changelog"
5
5
 
@@ -23,10 +23,16 @@ jobs:
23
23
  include:
24
24
  - os: ubuntu-latest
25
25
  python: "3.10"
26
+ run_mode: "slow"
26
27
  - os: ubuntu-latest
27
28
  python: "3.11"
29
+ run_mode: "slow"
28
30
  - os: ubuntu-latest
29
31
  python: "3.11"
32
+ run_mode: "fast"
33
+ - os: ubuntu-latest
34
+ python: "3.11"
35
+ run_mode: slow
30
36
  pip-flags: "--pre"
31
37
 
32
38
  env:
@@ -39,26 +45,41 @@ jobs:
39
45
  uses: actions/setup-python@v5
40
46
  with:
41
47
  python-version: ${{ matrix.python }}
42
- cache: "pip"
43
- cache-dependency-path: "**/pyproject.toml"
48
+
49
+ - uses: actions/checkout@v4
50
+ - name: Install R
51
+ uses: r-lib/actions/setup-r@v2
52
+ with:
53
+ r-version: "4"
54
+
55
+ - name: Install edgeR
56
+ run: Rscript --vanilla -e "install.packages(c('BiocManager', 'statmod'), repos='https://cran.r-project.org'); library('BiocManager'); BiocManager::install('edgeR')"
44
57
 
45
58
  - name: Install test dependencies
46
59
  run: python -m pip install --upgrade uv wheel
47
60
  - name: Install dependencies
48
- run: uv pip install --system ${{ matrix.pip-flags }} ".[dev,test,coda]"
61
+ run: |
62
+ uv pip install --system rpy2
63
+ uv pip install --system ${{ matrix.pip-flags }} ".[dev,test,coda,de]"
49
64
 
50
65
  - name: Test
51
66
  env:
52
67
  MPLBACKEND: agg
53
68
  PLATFORM: ${{ matrix.os }}
54
69
  DISPLAY: :42
55
- run: coverage run -m pytest -v --color=yes
70
+ run: |
71
+ pytest_args="-m pytest -v --color=yes"
72
+ if [ "${{ matrix.run_mode }}" = "slow" ]; then
73
+ pytest_args="$pytest_args --runslow"
74
+ fi
75
+ coverage run $pytest_args
56
76
 
57
77
  - name: Show coverage report
58
78
  run: coverage report -m
59
79
 
60
80
  - name: Upload coverage
61
- uses: codecov/codecov-action@v3
81
+ uses: codecov/codecov-action@v4
62
82
  with:
83
+ token: ${{ secrets.CODECOV_TOKEN }}
63
84
  fail_ci_if_error: true
64
85
  verbose: true
@@ -1,3 +1,3 @@
1
1
  [submodule "docs/notebooks"]
2
2
  path = docs/tutorials/notebooks
3
- url = https://github.com/theislab/pertpy-tutorials/
3
+ url = https://github.com/scverse/pertpy-tutorials/
@@ -11,7 +11,7 @@ repos:
11
11
  hooks:
12
12
  - id: prettier
13
13
  - repo: https://github.com/astral-sh/ruff-pre-commit
14
- rev: v0.3.5
14
+ rev: v0.4.7
15
15
  hooks:
16
16
  - id: ruff
17
17
  args: [--fix, --exit-non-zero-on-fix, --unsafe-fixes]
@@ -27,7 +27,7 @@ repos:
27
27
  - id: trailing-whitespace
28
28
  - id: check-case-conflict
29
29
  - repo: https://github.com/pre-commit/mirrors-mypy
30
- rev: v1.9.0
30
+ rev: v1.10.0
31
31
  hooks:
32
32
  - id: mypy
33
33
  args: [--no-strict-optional, --ignore-missing-imports]
@@ -17,6 +17,7 @@ python:
17
17
  extra_requirements:
18
18
  - doc
19
19
  - coda
20
+ - de
20
21
 
21
22
  submodules:
22
23
  include: all
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pertpy
3
- Version: 0.7.0
3
+ Version: 0.8.0
4
4
  Summary: Perturbation Analysis in the scverse ecosystem.
5
5
  Project-URL: Documentation, https://pertpy.readthedocs.io
6
- Project-URL: Source, https://github.com/theislab/pertpy
7
- Project-URL: Home-page, https://github.com/theislab/pertpy
8
- Author: Lukas Heumos, Yuge Ji, Alejandro Tejada, Johannes Köster, Emma Dann, Xinyue Zhang, Xichen Wu, Amir Moinfar, Sergei Rybakov, Tessa Green, Stefan Peidli, Antonia Schumacher, Lilly May
6
+ Project-URL: Source, https://github.com/scverse/pertpy
7
+ Project-URL: Home-page, https://github.com/scverse/pertpy
8
+ Author: Lukas Heumos, Yuge Ji, Lilly May, Alejandro Tejada, Johannes Köster, Emma Dann, Xinyue Zhang, Xichen Wu, Tessa Green, Stefan Peidli, Antonia Schumacher, Gregor Sturm
9
9
  Maintainer-email: Lukas Heumos <lukas.heumos@posteo.net>
10
10
  License: MIT License
11
11
 
@@ -45,11 +45,10 @@ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
45
45
  Classifier: Topic :: Scientific/Engineering :: Visualization
46
46
  Requires-Python: >=3.10
47
47
  Requires-Dist: adjusttext
48
- Requires-Dist: arviz
49
48
  Requires-Dist: blitzgsea
50
49
  Requires-Dist: decoupler
50
+ Requires-Dist: lamin-utils
51
51
  Requires-Dist: muon
52
- Requires-Dist: numpyro
53
52
  Requires-Dist: openpyxl
54
53
  Requires-Dist: ott-jax
55
54
  Requires-Dist: pubchempy
@@ -61,10 +60,14 @@ Requires-Dist: scikit-misc
61
60
  Requires-Dist: scipy
62
61
  Requires-Dist: scvi-tools
63
62
  Requires-Dist: sparsecca
64
- Requires-Dist: toytree
65
63
  Provides-Extra: coda
64
+ Requires-Dist: arviz; extra == 'coda'
66
65
  Requires-Dist: ete3; extra == 'coda'
67
66
  Requires-Dist: pyqt5; extra == 'coda'
67
+ Requires-Dist: toytree; extra == 'coda'
68
+ Provides-Extra: de
69
+ Requires-Dist: formulaic; extra == 'de'
70
+ Requires-Dist: pydeseq2; extra == 'de'
68
71
  Provides-Extra: dev
69
72
  Requires-Dist: pre-commit; extra == 'dev'
70
73
  Provides-Extra: doc
@@ -94,18 +97,18 @@ Requires-Dist: pytest; extra == 'test'
94
97
  Description-Content-Type: text/markdown
95
98
 
96
99
  [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
97
- [![Build](https://github.com/theislab/pertpy/actions/workflows/build.yml/badge.svg)](https://github.com/theislab/pertpy/actions/workflows/build.yml)
98
- [![codecov](https://codecov.io/gh/theislab/pertpy/graph/badge.svg?token=1dTpIPBShv)](https://codecov.io/gh/theislab/pertpy)
99
- [![License](https://img.shields.io/github/license/theislab/pertpy)](https://opensource.org/licenses/Apache2.0)
100
+ [![Build](https://github.com/scverse/pertpy/actions/workflows/build.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/build.yml)
101
+ [![codecov](https://codecov.io/gh/scverse/pertpy/graph/badge.svg?token=1dTpIPBShv)](https://codecov.io/gh/scverse/pertpy)
102
+ [![License](https://img.shields.io/github/license/scverse/pertpy)](https://opensource.org/licenses/Apache2.0)
100
103
  [![PyPI](https://img.shields.io/pypi/v/pertpy.svg)](https://pypi.org/project/pertpy/)
101
104
  [![Python Version](https://img.shields.io/pypi/pyversions/pertpy)](https://pypi.org/project/pertpy)
102
105
  [![Read the Docs](https://img.shields.io/readthedocs/pertpy/latest.svg?label=Read%20the%20Docs)](https://pertpy.readthedocs.io/)
103
- [![Test](https://github.com/theislab/pertpy/actions/workflows/test.yml/badge.svg)](https://github.com/theislab/pertpy/actions/workflows/test.yml)
106
+ [![Test](https://github.com/scverse/pertpy/actions/workflows/test.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/test.yml)
104
107
  [![PyPI](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
105
108
 
106
109
  # pertpy
107
110
 
108
- ![fig1](https://github.com/theislab/pertpy/assets/99650244/182fa9c3-6d23-4002-b86a-82bf2a243377)
111
+ ![fig1](https://github.com/scverse/pertpy/assets/99650244/182fa9c3-6d23-4002-b86a-82bf2a243377)
109
112
 
110
113
  ## Documentation
111
114
 
@@ -119,12 +122,18 @@ You can install _pertpy_ via [pip] from [PyPI]:
119
122
  pip install pertpy
120
123
  ```
121
124
 
122
- if you want to use scCODA please install it as:
125
+ if you want to use scCODA or tascCODA, please install pertpy as follows:
123
126
 
124
127
  ```console
125
128
  pip install pertpy[coda]
126
129
  ```
127
130
 
131
+ If you want to use the differential gene expression interface, please install pertpy by running:
132
+
133
+ ```console
134
+ pip install pertpy[de]
135
+ ```
136
+
128
137
  [pip]: https://pip.pypa.io/
129
138
  [pypi]: https://pypi.org/
130
139
  [usage]: https://pertpy.readthedocs.io/en/latest/usage/usage.html
@@ -1,16 +1,16 @@
1
1
  [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
2
- [![Build](https://github.com/theislab/pertpy/actions/workflows/build.yml/badge.svg)](https://github.com/theislab/pertpy/actions/workflows/build.yml)
3
- [![codecov](https://codecov.io/gh/theislab/pertpy/graph/badge.svg?token=1dTpIPBShv)](https://codecov.io/gh/theislab/pertpy)
4
- [![License](https://img.shields.io/github/license/theislab/pertpy)](https://opensource.org/licenses/Apache2.0)
2
+ [![Build](https://github.com/scverse/pertpy/actions/workflows/build.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/build.yml)
3
+ [![codecov](https://codecov.io/gh/scverse/pertpy/graph/badge.svg?token=1dTpIPBShv)](https://codecov.io/gh/scverse/pertpy)
4
+ [![License](https://img.shields.io/github/license/scverse/pertpy)](https://opensource.org/licenses/Apache2.0)
5
5
  [![PyPI](https://img.shields.io/pypi/v/pertpy.svg)](https://pypi.org/project/pertpy/)
6
6
  [![Python Version](https://img.shields.io/pypi/pyversions/pertpy)](https://pypi.org/project/pertpy)
7
7
  [![Read the Docs](https://img.shields.io/readthedocs/pertpy/latest.svg?label=Read%20the%20Docs)](https://pertpy.readthedocs.io/)
8
- [![Test](https://github.com/theislab/pertpy/actions/workflows/test.yml/badge.svg)](https://github.com/theislab/pertpy/actions/workflows/test.yml)
8
+ [![Test](https://github.com/scverse/pertpy/actions/workflows/test.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/test.yml)
9
9
  [![PyPI](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
10
10
 
11
11
  # pertpy
12
12
 
13
- ![fig1](https://github.com/theislab/pertpy/assets/99650244/182fa9c3-6d23-4002-b86a-82bf2a243377)
13
+ ![fig1](https://github.com/scverse/pertpy/assets/99650244/182fa9c3-6d23-4002-b86a-82bf2a243377)
14
14
 
15
15
  ## Documentation
16
16
 
@@ -24,12 +24,18 @@ You can install _pertpy_ via [pip] from [PyPI]:
24
24
  pip install pertpy
25
25
  ```
26
26
 
27
- if you want to use scCODA please install it as:
27
+ if you want to use scCODA or tascCODA, please install pertpy as follows:
28
28
 
29
29
  ```console
30
30
  pip install pertpy[coda]
31
31
  ```
32
32
 
33
+ If you want to use the differential gene expression interface, please install pertpy by running:
34
+
35
+ ```console
36
+ pip install pertpy[de]
37
+ ```
38
+
33
39
  [pip]: https://pip.pypa.io/
34
40
  [pypi]: https://pypi.org/
35
41
  [usage]: https://pertpy.readthedocs.io/en/latest/usage/usage.html
@@ -37,7 +37,7 @@ def _html_page_context(
37
37
 
38
38
  # For sphinx_rtd_theme.
39
39
  context["display_github"] = True
40
- context["github_user"] = "theislab"
40
+ context["github_user"] = "scverse"
41
41
  context["github_version"] = "master"
42
42
  context["github_repo"] = repo
43
43
  context["conf_py_path"] = "/docs/source/"
@@ -2,6 +2,8 @@
2
2
  # mypy: ignore-errors
3
3
 
4
4
  import sys
5
+ from datetime import datetime
6
+ from importlib.metadata import metadata
5
7
  from pathlib import Path
6
8
 
7
9
  HERE = Path(__file__).parent
@@ -9,13 +11,16 @@ sys.path[:0] = [str(HERE.parent), str(HERE / "extensions")]
9
11
 
10
12
  needs_sphinx = "4.3"
11
13
 
12
- project = "pertpy"
13
- copyright = "2021, Lukas Heumos, Theislab"
14
- author = "Lukas Heumos"
14
+ info = metadata("pertpy")
15
+ project_name = info["Name"]
16
+ author = info["Author"]
17
+ copyright = f"{datetime.now():%Y}, {author}."
18
+ version = info["Version"]
19
+ urls = dict(pu.split(", ") for pu in info.get_all("Project-URL"))
20
+ repository_url = urls["Source"]
21
+ release = info["Version"]
15
22
  github_repo = "pertpy"
16
23
 
17
- version = "0.7.0"
18
- release = "0.7.0"
19
24
 
20
25
  extensions = [
21
26
  "myst_parser",
@@ -97,7 +102,8 @@ intersphinx_mapping = {
97
102
 
98
103
  language = "en"
99
104
 
100
- # The name of the Pygments (syntax highlighting) style to use.
105
+ typehints_defaults = "comma"
106
+
101
107
  pygments_style = "default"
102
108
  pygments_dark_style = "native"
103
109
 
@@ -166,7 +172,7 @@ nbsphinx_prolog = r"""
166
172
  <p class="admonition-title">Note</p>
167
173
  <p>
168
174
  This page was generated from
169
- <a class="reference external" href="https://github.com/theislab/pertpy/tree/{version}/">{docname}</a>.
175
+ <a class="reference external" href="https://github.com/scverse/pertpy/tree/{version}/">{docname}</a>.
170
176
  Some tutorial content may look better in light mode.
171
177
  </p>
172
178
  </div>
@@ -185,6 +191,8 @@ nbsphinx_thumbnails = {
185
191
  "tutorials/notebooks/distance_tests": "_static/tutorials/distances_tests.png",
186
192
  "tutorials/notebooks/cinemaot": "_static/tutorials/cinemaot.png",
187
193
  "tutorials/notebooks/scgen_perturbation_prediction": "_static/tutorials/scgen_perturbation_prediction.png",
188
- "tutorials/notebooks/ontology_mapping": "_static/tutorials/ontology.png",
189
194
  "tutorials/notebooks/perturbation_space": "_static/tutorials/perturbation_space.png",
195
+ "tutorials/notebooks/differential_gene_expression": "_static/tutorials/dge.png",
196
+ "tutorials/notebooks/metadata_annotation": "_static/tutorials/metadata.png",
197
+ "tutorials/notebooks/ontology_mapping": "_static/tutorials/ontology.png",
190
198
  }
@@ -13,7 +13,7 @@ In addition to the packages needed to _use_ this package, you need additional py
13
13
  the documentation_. It's easy to install them using `pip`:
14
14
 
15
15
  ```bash
16
- git clone https://github.com/theislab/pertpy.git
16
+ git clone https://github.com/scverse/pertpy.git
17
17
  cd pertpy
18
18
  pip install -e ".[dev,test,doc]"
19
19
  ```
@@ -146,7 +146,7 @@ on how to write documentation.
146
146
  The documentation is set-up to render jupyter notebooks stored in the `docs/tutorials` directory using [myst-nb][].
147
147
  Currently, only notebooks in `.ipynb` format are supported that will be included with both their input and output cells.
148
148
 
149
- These notebooks come from [pert-tutorials](https://github.com/theislab/pertpy-tutorials) which is a git submodule of pertpy.
149
+ These notebooks come from [pert-tutorials](https://github.com/scverse/pertpy-tutorials) which is a git submodule of pertpy.
150
150
 
151
151
  #### Hints
152
152
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  ```{eval-rst}
36
36
  .. card:: GitHub :octicon:`mark-github;1em;`
37
- :link: https://github.com/theislab/pertpy
37
+ :link: https://github.com/scverse/pertpy
38
38
 
39
39
  Find a bug? Interested in improving pertpy? Checkout our GitHub for the latest developments.
40
40
 
@@ -50,7 +50,7 @@ usage/usage
50
50
  tutorials/index
51
51
  contributing
52
52
  code_of_conduct
53
- Discussions <https://github.com/theislab/pertpy/discussions>
53
+ Discussions <https://github.com/scverse/pertpy/discussions>
54
54
  references
55
55
  ```
56
56
 
@@ -9,7 +9,7 @@
9
9
  To install pertpy, run this command in your terminal:
10
10
 
11
11
  ```console
12
- $ pip install pertpy
12
+ pip install pertpy
13
13
  ```
14
14
 
15
15
  This is the preferred method to install pertpy, as it will always install the most recent stable release.
@@ -18,14 +18,32 @@ If you don't have [pip] installed, this [Python installation guide] can guide yo
18
18
 
19
19
  ## Google Colab and TascCODA support
20
20
 
21
- TascCODA requires an additional set of dependencies (ete3 and pyqt5) that can be installed using
21
+ TascCODA requires an additional set of dependencies (ete3 and pyqt5) that can be installed by running:
22
22
 
23
23
  ```console
24
- $ pip install pertpy[coda]
24
+ pip install pertpy[coda]
25
25
  ```
26
26
 
27
27
  this also solves any "AttributeError: module 'pertpy.plot' has no attribute 'coda'" issues.
28
28
 
29
+ ## Differential gene expression interface
30
+
31
+ The DGE interface of pertpy requires additional dependencies that can be installed by running:
32
+
33
+ ```console
34
+ pip install pertpy[de]
35
+ ```
36
+
37
+ Note that edger in pertpy requires edger and rpy2 to be installed:
38
+
39
+ ```R
40
+ BiocManager::install("edgeR")
41
+ ```
42
+
43
+ ```console
44
+ pip install rpy2
45
+ ```
46
+
29
47
  ## From sources
30
48
 
31
49
  The sources for pertpy can be downloaded from the [Github repo].
@@ -34,13 +52,13 @@ Please note that you require [poetry] to be installed.
34
52
  You can either clone the public repository:
35
53
 
36
54
  ```console
37
- $ git clone git://github.com/theislab/pertpy
55
+ $ git clone git://github.com/scverse/pertpy
38
56
  ```
39
57
 
40
58
  Or download the [tarball]:
41
59
 
42
60
  ```console
43
- $ curl -OJL https://github.com/theislab/pertpy/tarball/master
61
+ $ curl -OJL https://github.com/scverse/pertpy/tarball/master
44
62
  ```
45
63
 
46
64
  ## Apple Silicon
@@ -57,35 +75,35 @@ Follow these steps to install pertpy on an Apple Silicon machine (tested on a Ma
57
75
  having both mamba and conda won't cause conflicts)
58
76
 
59
77
  ```console
60
- $ brew install --cask mambaforge
78
+ brew install --cask mambaforge
61
79
  ```
62
80
 
63
81
  3. Create a new environment using mamba (here with python 3.10) and activate it
64
82
 
65
83
  ```console
66
- $ mamba create -n pertpy-env python=3.11
67
- $ mamba activate pertpy-env
84
+ mamba create -n pertpy-env python=3.11
85
+ mamba activate pertpy-env
68
86
  ```
69
87
 
70
88
  4. Clone the GitHub Repository
71
89
 
72
90
  ```console
73
- $ git clone https://github.com/theislab/pertpy.git
91
+ git clone https://github.com/scverse/pertpy.git
74
92
  ```
75
93
 
76
94
  5. Go inside the pertpy folder and install pertpy
77
95
 
78
96
  ```console
79
- $ cd pertpy
80
- $ pip install .
97
+ cd pertpy
98
+ pip install .
81
99
  ```
82
100
 
83
101
  Now you're ready to use pertpy as usual within the environment (`import pertpy`).
84
102
 
85
- [github repo]: https://github.com/theislab/pertpy
103
+ [github repo]: https://github.com/scverse/pertpy
86
104
  [pip]: https://pip.pypa.io
87
105
  [poetry]: https://python-poetry.org/
88
106
  [python installation guide]: http://docs.python-guide.org/en/latest/starting/installation/
89
- [tarball]: https://github.com/theislab/pertpy/tarball/master
107
+ [tarball]: https://github.com/scverse/pertpy/tarball/master
90
108
  [scvi-tools]: https://docs.scvi-tools.org/en/latest/installation.html
91
109
  [Homebrew]: https://brew.sh/
@@ -29,8 +29,10 @@ For questions about the usage of pertpy use the [scverse discourse](https://disc
29
29
  notebooks/distance_tests
30
30
  notebooks/cinemaot
31
31
  notebooks/scgen_perturbation_prediction
32
- notebooks/ontology_mapping
33
32
  notebooks/perturbation_space
33
+ notebooks/differential_gene_expression
34
+ notebooks/metadata_annotation
35
+ notebooks/ontology_mapping
34
36
  ```
35
37
 
36
38
  ### Glossary
@@ -38,8 +38,10 @@ harmonized names and be loadable as MuData objects.
38
38
  data.datlinger_2017
39
39
  data.datlinger_2021
40
40
  data.dialogue_example
41
+ data.distance_example
41
42
  data.dixit_2016
42
43
  data.dixit_2016_raw
44
+ data.dong_2023
43
45
  data.frangieh_2021
44
46
  data.frangieh_2021_protein
45
47
  data.frangieh_2021_raw
@@ -49,6 +51,7 @@ harmonized names and be loadable as MuData objects.
49
51
  data.gasperini_2019_lowmoi
50
52
  data.gehring_2019
51
53
  data.haber_2017_regions
54
+ data.hagai_2018
52
55
  data.kang_2018
53
56
  data.mcfarland_2020
54
57
  data.norman_2019
@@ -62,6 +65,7 @@ harmonized names and be loadable as MuData objects.
62
65
  data.schiebinger_2019_18day
63
66
  data.schraivogel_2020_tap_screen_chr8
64
67
  data.schraivogel_2020_tap_screen_chr11
68
+ data.sciplex_gxe1
65
69
  data.sciplex3_raw
66
70
  data.shifrut_2018
67
71
  data.smillie_2019
@@ -69,6 +73,7 @@ harmonized names and be loadable as MuData objects.
69
73
  data.srivatsan_2020_sciplex3
70
74
  data.srivatsan_2020_sciplex4
71
75
  data.stephenson_2021_subsampled
76
+ data.tasccoda_example
72
77
  data.tian_2019_day7neuron
73
78
  data.tian_2019_ipsc
74
79
  data.tian_2021_crispra
@@ -76,6 +81,7 @@ harmonized names and be loadable as MuData objects.
76
81
  data.weinreb_2020
77
82
  data.xie_2017
78
83
  data.zhao_2021
84
+ data.zhang_2021
79
85
  ```
80
86
 
81
87
  ## Preprocessing
@@ -126,7 +132,11 @@ Pertpy provides utilities to conduct differential gene expression tests through
126
132
  :toctree: preprocessing
127
133
  :nosignatures:
128
134
 
129
- tools.DifferentialGeneExpression
135
+ tools.PyDESeq2
136
+ tools.EdgeR
137
+ tools.WilcoxonTest
138
+ tools.TTest
139
+ tools.Statsmodels
130
140
  ```
131
141
 
132
142
  ### Pooled CRISPR screens
@@ -455,8 +465,8 @@ train_new = train[
455
465
  ]
456
466
  train_new = train_new.copy()
457
467
 
458
- pt.tl.SCGEN.setup_anndata(train_new, batch_key="condition", labels_key="cell_type")
459
- scgen = pt.tl.SCGEN(train_new)
468
+ pt.tl.Scgen.setup_anndata(train_new, batch_key="condition", labels_key="cell_type")
469
+ scgen = pt.tl.Scgen(train_new)
460
470
  scgen.train(max_epochs=100, batch_size=32)
461
471
 
462
472
  pred, delta = scgen.predict(
@@ -2,7 +2,7 @@
2
2
 
3
3
  __author__ = "Lukas Heumos"
4
4
  __email__ = "lukas.heumos@posteo.net"
5
- __version__ = "0.7.0"
5
+ __version__ = "0.8.0"
6
6
 
7
7
  import warnings
8
8
 
@@ -11,6 +11,7 @@ from numba import NumbaDeprecationWarning
11
11
 
12
12
  warnings.filterwarnings("ignore", category=NumbaDeprecationWarning)
13
13
  warnings.filterwarnings("ignore", category=MatplotlibDeprecationWarning)
14
+ warnings.filterwarnings("ignore", category=SyntaxWarning)
14
15
  warnings.filterwarnings("ignore", category=UserWarning, module="scvi._settings")
15
16
 
16
17
  from . import data as dt
@@ -0,0 +1,117 @@
1
+ from pertpy.data._datasets import (
2
+ adamson_2016_pilot,
3
+ adamson_2016_upr_epistasis,
4
+ adamson_2016_upr_perturb_seq,
5
+ aissa_2021,
6
+ bhattacherjee,
7
+ burczynski_crohn,
8
+ chang_2021,
9
+ cinemaot_example,
10
+ combosciplex,
11
+ datlinger_2017,
12
+ datlinger_2021,
13
+ dialogue_example,
14
+ distance_example,
15
+ dixit_2016,
16
+ dixit_2016_raw,
17
+ dong_2023,
18
+ frangieh_2021,
19
+ frangieh_2021_protein,
20
+ frangieh_2021_raw,
21
+ frangieh_2021_rna,
22
+ gasperini_2019_atscale,
23
+ gasperini_2019_highmoi,
24
+ gasperini_2019_lowmoi,
25
+ gehring_2019,
26
+ haber_2017_regions,
27
+ hagai_2018,
28
+ kang_2018,
29
+ mcfarland_2020,
30
+ norman_2019,
31
+ norman_2019_raw,
32
+ papalexi_2021,
33
+ replogle_2022_k562_essential,
34
+ replogle_2022_k562_gwps,
35
+ replogle_2022_rpe1,
36
+ sc_sim_augur,
37
+ schiebinger_2019_16day,
38
+ schiebinger_2019_18day,
39
+ schraivogel_2020_tap_screen_chr8,
40
+ schraivogel_2020_tap_screen_chr11,
41
+ sciplex3_raw,
42
+ sciplex_gxe1,
43
+ shifrut_2018,
44
+ smillie_2019,
45
+ srivatsan_2020_sciplex2,
46
+ srivatsan_2020_sciplex3,
47
+ srivatsan_2020_sciplex4,
48
+ stephenson_2021_subsampled,
49
+ tasccoda_example,
50
+ tian_2019_day7neuron,
51
+ tian_2019_ipsc,
52
+ tian_2021_crispra,
53
+ tian_2021_crispri,
54
+ weinreb_2020,
55
+ xie_2017,
56
+ zhang_2021,
57
+ zhao_2021,
58
+ )
59
+
60
+ __all__ = [
61
+ "adamson_2016_pilot",
62
+ "adamson_2016_upr_epistasis",
63
+ "adamson_2016_upr_perturb_seq",
64
+ "aissa_2021",
65
+ "bhattacherjee",
66
+ "burczynski_crohn",
67
+ "chang_2021",
68
+ "cinemaot_example",
69
+ "combosciplex",
70
+ "datlinger_2017",
71
+ "datlinger_2021",
72
+ "dialogue_example",
73
+ "distance_example",
74
+ "dixit_2016",
75
+ "dixit_2016_raw",
76
+ "dong_2023",
77
+ "frangieh_2021",
78
+ "frangieh_2021_protein",
79
+ "frangieh_2021_raw",
80
+ "frangieh_2021_rna",
81
+ "gasperini_2019_atscale",
82
+ "gasperini_2019_highmoi",
83
+ "gasperini_2019_lowmoi",
84
+ "gehring_2019",
85
+ "haber_2017_regions",
86
+ "hagai_2018",
87
+ "kang_2018",
88
+ "mcfarland_2020",
89
+ "norman_2019",
90
+ "norman_2019_raw",
91
+ "papalexi_2021",
92
+ "replogle_2022_k562_essential",
93
+ "replogle_2022_k562_gwps",
94
+ "replogle_2022_rpe1",
95
+ "sc_sim_augur",
96
+ "schiebinger_2019_16day",
97
+ "schiebinger_2019_18day",
98
+ "schraivogel_2020_tap_screen_chr8",
99
+ "schraivogel_2020_tap_screen_chr11",
100
+ "sciplex3_raw",
101
+ "sciplex_gxe1",
102
+ "shifrut_2018",
103
+ "smillie_2019",
104
+ "srivatsan_2020_sciplex2",
105
+ "srivatsan_2020_sciplex3",
106
+ "srivatsan_2020_sciplex4",
107
+ "stephenson_2021_subsampled",
108
+ "tasccoda_example",
109
+ "tian_2019_day7neuron",
110
+ "tian_2019_ipsc",
111
+ "tian_2021_crispra",
112
+ "tian_2021_crispri",
113
+ "weinreb_2020",
114
+ "xie_2017",
115
+ "zhao_2021",
116
+ "zhang_2021",
117
+ ]