pertpy 0.11.1__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 (192) hide show
  1. {pertpy-0.11.1 → pertpy-0.11.2}/.github/release-drafter.yml +2 -2
  2. {pertpy-0.11.1 → pertpy-0.11.2}/.github/workflows/test.yml +0 -8
  3. {pertpy-0.11.1 → pertpy-0.11.2}/.pre-commit-config.yaml +2 -2
  4. {pertpy-0.11.1 → pertpy-0.11.2}/PKG-INFO +2 -2
  5. {pertpy-0.11.1 → pertpy-0.11.2}/README.md +1 -1
  6. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/pertpy_logo.svg +0 -1
  7. {pertpy-0.11.1 → pertpy-0.11.2}/docs/changelog.md +6 -0
  8. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/__init__.py +1 -1
  9. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/data/_dataloader.py +2 -2
  10. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/metadata/_cell_line.py +21 -37
  11. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/metadata/_compound.py +2 -1
  12. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/metadata/_look_up.py +1 -1
  13. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/metadata/_metadata.py +4 -9
  14. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/metadata/_moa.py +0 -2
  15. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_augur.py +0 -1
  16. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_mixscape.py +3 -4
  17. {pertpy-0.11.1 → pertpy-0.11.2}/pyproject.toml +1 -2
  18. pertpy-0.11.2/tests/conftest.py +7 -0
  19. {pertpy-0.11.1 → pertpy-0.11.2}/tests/metadata/test_cell_line.py +0 -1
  20. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_coda/test_sccoda.py +0 -1
  21. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_distances/test_distance_tests.py +0 -3
  22. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/test_augur.py +0 -1
  23. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/test_dialogue.py +0 -2
  24. pertpy-0.11.1/tests/conftest.py +0 -20
  25. {pertpy-0.11.1 → pertpy-0.11.2}/.editorconfig +0 -0
  26. {pertpy-0.11.1 → pertpy-0.11.2}/.gitattributes +0 -0
  27. {pertpy-0.11.1 → pertpy-0.11.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  28. {pertpy-0.11.1 → pertpy-0.11.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  29. {pertpy-0.11.1 → pertpy-0.11.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  30. {pertpy-0.11.1 → pertpy-0.11.2}/.github/labels.yml +0 -0
  31. {pertpy-0.11.1 → pertpy-0.11.2}/.github/pull_request_template.md +0 -0
  32. {pertpy-0.11.1 → pertpy-0.11.2}/.github/workflows/build.yml +0 -0
  33. {pertpy-0.11.1 → pertpy-0.11.2}/.github/workflows/labeler.yml +0 -0
  34. {pertpy-0.11.1 → pertpy-0.11.2}/.github/workflows/release.yml +0 -0
  35. {pertpy-0.11.1 → pertpy-0.11.2}/.github/workflows/release_drafter.yml +0 -0
  36. {pertpy-0.11.1 → pertpy-0.11.2}/.gitignore +0 -0
  37. {pertpy-0.11.1 → pertpy-0.11.2}/.gitmodules +0 -0
  38. {pertpy-0.11.1 → pertpy-0.11.2}/.readthedocs.yml +0 -0
  39. {pertpy-0.11.1 → pertpy-0.11.2}/LICENSE +0 -0
  40. {pertpy-0.11.1 → pertpy-0.11.2}/biome.jsonc +0 -0
  41. {pertpy-0.11.1 → pertpy-0.11.2}/codecov.yml +0 -0
  42. {pertpy-0.11.1 → pertpy-0.11.2}/docs/Makefile +0 -0
  43. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_ext/edit_on_github.py +0 -0
  44. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_ext/typed_returns.py +0 -0
  45. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/SCVI_LICENSE +0 -0
  46. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/css/overwrite.css +0 -0
  47. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/css/sphinx_gallery.css +0 -0
  48. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/augur_dp_scatter.png +0 -0
  49. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/augur_important_features.png +0 -0
  50. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/augur_lollipop.png +0 -0
  51. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/augur_scatterplot.png +0 -0
  52. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/de_fold_change.png +0 -0
  53. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/de_multicomparison_fc.png +0 -0
  54. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/de_paired_expression.png +0 -0
  55. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/de_volcano.png +0 -0
  56. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/dialogue_pairplot.png +0 -0
  57. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/dialogue_violin.png +0 -0
  58. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/enrichment_dotplot.png +0 -0
  59. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/enrichment_gsea.png +0 -0
  60. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/milo_da_beeswarm.png +0 -0
  61. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/milo_nhood.png +0 -0
  62. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/milo_nhood_graph.png +0 -0
  63. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_barplot.png +0 -0
  64. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_heatmap.png +0 -0
  65. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_lda.png +0 -0
  66. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_perturbscore.png +0 -0
  67. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/mixscape_violin.png +0 -0
  68. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/pseudobulk_samples.png +0 -0
  69. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/sccoda_boxplots.png +0 -0
  70. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/sccoda_effects_barplot.png +0 -0
  71. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/sccoda_rel_abundance_dispersion_plot.png +0 -0
  72. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/sccoda_stacked_barplot.png +0 -0
  73. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/scgen_reg_mean.png +0 -0
  74. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/tasccoda_draw_effects.png +0 -0
  75. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/tasccoda_draw_tree.png +0 -0
  76. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/docstring_previews/tasccoda_effects_umap.png +0 -0
  77. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/icons/code-24px.svg +0 -0
  78. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/icons/computer-24px.svg +0 -0
  79. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/icons/library_books-24px.svg +0 -0
  80. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/icons/play_circle_outline-24px.svg +0 -0
  81. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/pertpy_logo.png +0 -0
  82. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/placeholder.png +0 -0
  83. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/augur.png +0 -0
  84. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/cinemaot.png +0 -0
  85. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/dge.png +0 -0
  86. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/dialogue.png +0 -0
  87. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/distances.png +0 -0
  88. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/distances_tests.png +0 -0
  89. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/enrichment.png +0 -0
  90. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/guide_rna_assignment.png +0 -0
  91. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/mcfarland.png +0 -0
  92. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/metadata.png +0 -0
  93. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/milo.png +0 -0
  94. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/mixscape.png +0 -0
  95. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/norman.png +0 -0
  96. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/ontology.png +0 -0
  97. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/perturbation_space.png +0 -0
  98. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/placeholder.png +0 -0
  99. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/sccoda.png +0 -0
  100. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/sccoda_extended.png +0 -0
  101. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/scgen_perturbation_prediction.png +0 -0
  102. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/tasccoda.png +0 -0
  103. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_static/tutorials/zhang.png +0 -0
  104. {pertpy-0.11.1 → pertpy-0.11.2}/docs/_templates/autosummary/class.rst +0 -0
  105. {pertpy-0.11.1 → pertpy-0.11.2}/docs/api/datasets_index.md +0 -0
  106. {pertpy-0.11.1 → pertpy-0.11.2}/docs/api/metadata_index.md +0 -0
  107. {pertpy-0.11.1 → pertpy-0.11.2}/docs/api/preprocessing_index.md +0 -0
  108. {pertpy-0.11.1 → pertpy-0.11.2}/docs/api/tools_index.md +0 -0
  109. {pertpy-0.11.1 → pertpy-0.11.2}/docs/api.md +0 -0
  110. {pertpy-0.11.1 → pertpy-0.11.2}/docs/conf.py +0 -0
  111. {pertpy-0.11.1 → pertpy-0.11.2}/docs/contributing.md +0 -0
  112. {pertpy-0.11.1 → pertpy-0.11.2}/docs/index.md +0 -0
  113. {pertpy-0.11.1 → pertpy-0.11.2}/docs/installation.md +0 -0
  114. {pertpy-0.11.1 → pertpy-0.11.2}/docs/make.bat +0 -0
  115. {pertpy-0.11.1 → pertpy-0.11.2}/docs/references.bib +0 -0
  116. {pertpy-0.11.1 → pertpy-0.11.2}/docs/references.md +0 -0
  117. {pertpy-0.11.1 → pertpy-0.11.2}/docs/tutorials/metadata.md +0 -0
  118. {pertpy-0.11.1 → pertpy-0.11.2}/docs/tutorials/preprocessing.md +0 -0
  119. {pertpy-0.11.1 → pertpy-0.11.2}/docs/tutorials/tools.md +0 -0
  120. {pertpy-0.11.1 → pertpy-0.11.2}/docs/tutorials.md +0 -0
  121. {pertpy-0.11.1 → pertpy-0.11.2}/docs/usecases.md +0 -0
  122. {pertpy-0.11.1 → pertpy-0.11.2}/docs/utils.py +0 -0
  123. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/_doc.py +0 -0
  124. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/_types.py +0 -0
  125. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/data/__init__.py +0 -0
  126. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/data/_datasets.py +0 -0
  127. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/metadata/__init__.py +0 -0
  128. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/metadata/_drug.py +0 -0
  129. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/plot/__init__.py +0 -0
  130. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/preprocessing/__init__.py +0 -0
  131. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/preprocessing/_guide_rna.py +0 -0
  132. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/preprocessing/_guide_rna_mixture.py +0 -0
  133. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/py.typed +0 -0
  134. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/__init__.py +0 -0
  135. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_cinemaot.py +0 -0
  136. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_coda/__init__.py +0 -0
  137. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_coda/_base_coda.py +0 -0
  138. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_coda/_sccoda.py +0 -0
  139. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_coda/_tasccoda.py +0 -0
  140. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_dialogue.py +0 -0
  141. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/__init__.py +0 -0
  142. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_base.py +0 -0
  143. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_checks.py +0 -0
  144. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_dge_comparison.py +0 -0
  145. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_edger.py +0 -0
  146. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_pydeseq2.py +0 -0
  147. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_simple_tests.py +0 -0
  148. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_differential_gene_expression/_statsmodels.py +0 -0
  149. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_distances/__init__.py +0 -0
  150. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_distances/_distance_tests.py +0 -0
  151. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_distances/_distances.py +0 -0
  152. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_enrichment.py +0 -0
  153. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_milo.py +0 -0
  154. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/__init__.py +0 -0
  155. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_clustering.py +0 -0
  156. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_comparison.py +0 -0
  157. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_discriminator_classifiers.py +0 -0
  158. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_metrics.py +0 -0
  159. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_perturbation_space.py +0 -0
  160. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_perturbation_space/_simple.py +0 -0
  161. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_scgen/__init__.py +0 -0
  162. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_scgen/_base_components.py +0 -0
  163. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_scgen/_scgen.py +0 -0
  164. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_scgen/_scgenvae.py +0 -0
  165. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/_scgen/_utils.py +0 -0
  166. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/decoupler_LICENSE +0 -0
  167. {pertpy-0.11.1 → pertpy-0.11.2}/pertpy/tools/transferlearning_MMD_LICENSE +0 -0
  168. {pertpy-0.11.1 → pertpy-0.11.2}/tests/metadata/test_compound.py +0 -0
  169. {pertpy-0.11.1 → pertpy-0.11.2}/tests/metadata/test_drug.py +0 -0
  170. {pertpy-0.11.1 → pertpy-0.11.2}/tests/metadata/test_moa.py +0 -0
  171. {pertpy-0.11.1 → pertpy-0.11.2}/tests/preprocessing/test_grna_assignment.py +0 -0
  172. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_coda/test_tasccoda.py +0 -0
  173. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/__init__.py +0 -0
  174. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/conftest.py +0 -0
  175. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_base.py +0 -0
  176. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_compare_groups.py +0 -0
  177. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_dge.py +0 -0
  178. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_edger.py +0 -0
  179. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_input_checks.py +0 -0
  180. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_pydeseq2.py +0 -0
  181. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_simple_tests.py +0 -0
  182. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_differential_gene_expression/test_statsmodels.py +0 -0
  183. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_distances/test_distances.py +0 -0
  184. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_perturbation_space/test_comparison.py +0 -0
  185. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_perturbation_space/test_discriminator_classifiers.py +0 -0
  186. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_perturbation_space/test_simple_cluster_space.py +0 -0
  187. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/_perturbation_space/test_simple_perturbation_space.py +0 -0
  188. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/test_cinemaot.py +0 -0
  189. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/test_enrichment.py +0 -0
  190. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/test_milo.py +0 -0
  191. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/test_mixscape.py +0 -0
  192. {pertpy-0.11.1 → pertpy-0.11.2}/tests/tools/test_scgen.py +0 -0
@@ -1,5 +1,5 @@
1
- name-template: "0.11.1 🌈"
2
- tag-template: 0.11.1
1
+ name-template: "0.11.2 🌈"
2
+ tag-template: 0.11.2
3
3
  exclude-labels:
4
4
  - "skip-changelog"
5
5
 
@@ -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
@@ -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]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pertpy
3
- Version: 0.11.1
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
@@ -151,7 +151,7 @@ bioRxiv 2024.08.04.606516; doi: https://doi.org/10.1101/2024.08.04.606516](https
151
151
 
152
152
  [pip]: https://pip.pypa.io/
153
153
  [pypi]: https://pypi.org/
154
- [api]: https://pertpy.readthedocs.io/en/latest/api/api.html
154
+ [api]: https://pertpy.readthedocs.io/en/latest/api.html
155
155
  [//]: # "numfocus-fiscal-sponsor-attribution"
156
156
 
157
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/).
@@ -48,7 +48,7 @@ bioRxiv 2024.08.04.606516; doi: https://doi.org/10.1101/2024.08.04.606516](https
48
48
 
49
49
  [pip]: https://pip.pypa.io/
50
50
  [pypi]: https://pypi.org/
51
- [api]: https://pertpy.readthedocs.io/en/latest/api/api.html
51
+ [api]: https://pertpy.readthedocs.io/en/latest/api.html
52
52
  [//]: # "numfocus-fiscal-sponsor-attribution"
53
53
 
54
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,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>
@@ -5,6 +5,12 @@ 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.2
9
+
10
+ ### 🚀 Features
11
+
12
+ * Simplify Metadata errors ([#765](https://github.com/scverse/pertpy/pull/765)) @Zethson
13
+
8
14
  ## v0.11.1
9
15
 
10
16
  ### 🐛 Bug Fixes
@@ -2,7 +2,7 @@
2
2
 
3
3
  __author__ = "Lukas Heumos"
4
4
  __email__ = "lukas.heumos@posteo.net"
5
- __version__ = "0.11.1"
5
+ __version__ = "0.11.2"
6
6
 
7
7
  import warnings
8
8
 
@@ -15,8 +15,8 @@ from rich.progress import Progress
15
15
 
16
16
  def _download( # pragma: no cover
17
17
  url: str,
18
- output_file_name: str = None,
19
- output_path: str | Path = None,
18
+ output_file_name: str | None = None,
19
+ output_path: str | Path | None = None,
20
20
  block_size: int = 1024,
21
21
  overwrite: bool = False,
22
22
  is_zip: bool = False,
@@ -215,7 +215,7 @@ class CellLine(MetaData):
215
215
  For each cell, we fetch cell line annotation from either the Dependency Map (DepMap) or The Genomics of Drug Sensitivity in Cancer Project (Cancerxgene).
216
216
 
217
217
  Args:
218
- adata: The data object to annotate.
218
+ adata: The AnnData object to annotate.
219
219
  query_id: The column of ``.obs`` with cell line information.
220
220
  reference_id: The type of cell line identifier in the metadata, e.g. ModelID, CellLineName or StrippedCellLineName.
221
221
  If fetching cell line metadata from Cancerrxgene, it is recommended to choose "stripped_cell_line_name".
@@ -311,11 +311,9 @@ class CellLine(MetaData):
311
311
 
312
312
  else:
313
313
  raise ValueError(
314
- f"The requested cell line type {reference_id} is currently unavailable in the database.\n"
315
- "Refer to the available reference identifier in the chosen database.\n"
316
- "DepMap_ID is compared by default.\n"
317
- "Alternatively, create a `CellLineMetaData.lookup()` object to "
318
- "obtain the available reference identifiers in the metadata."
314
+ f"The requested cell line type {reference_id} is unavailable."
315
+ "Refer to the available reference identifier in the chosen database."
316
+ "Alternatively, create a `CellLineMetaData.lookup()` object to obtain the available reference identifiers in the metadata."
319
317
  )
320
318
 
321
319
  return adata
@@ -362,11 +360,9 @@ class CellLine(MetaData):
362
360
  # then we can compare these keys and fetch the corresponding metadata.
363
361
  if query_id not in adata.obs.columns and query_id is not None:
364
362
  raise ValueError(
365
- f"The specified `query_id` {query_id} can't be found in the `adata.obs`. \n"
366
- "Ensure that you are using one of the available query IDs present in the adata.obs for the annotation."
367
- "If the desired query ID is not available, you can fetch the cell line metadata "
368
- "using the `annotate()` function before calling 'annotate_bulk_rna()'. "
369
- "This ensures that the required query ID is included in your data, e.g. stripped_cell_line_name, DepMap ID."
363
+ f"Specified `query_id` {query_id} can't be found in `adata.obs`. \n"
364
+ "If the desired query ID is not available, fetch the cell line metadata "
365
+ "using the `annotate()` function before calling 'annotate_bulk_rna()'."
370
366
  )
371
367
  if query_id is None:
372
368
  query_id = "cell_line_name" if cell_line_source == "sanger" else "DepMap_ID"
@@ -376,9 +372,8 @@ class CellLine(MetaData):
376
372
  if cell_line_source == "sanger":
377
373
  if query_id not in adata.obs.columns:
378
374
  raise ValueError(
379
- "To annotate bulk RNA data from Wellcome Sanger Institute, `cell_line_name` is used as default reference and query identifier if no `query_id` is given."
380
- "Ensure that you have column `cell_line_name` in `adata.obs` or specify column name in which cell line name is stored."
381
- "If cell line name isn't available in 'adata.obs', use `annotate()` to annotate the cell line first."
375
+ f"Missing '{query_id}' in `adata.obs`. For Sanger, need `cell_line_name` column "
376
+ f"or specify column with cell line names via `query_id` parameter."
382
377
  )
383
378
  if self.bulk_rna_sanger is None:
384
379
  self._download_bulk_rna(cell_line_source="sanger")
@@ -387,9 +382,8 @@ class CellLine(MetaData):
387
382
  else:
388
383
  if query_id not in adata.obs.columns:
389
384
  raise ValueError(
390
- "To annotate bulk RNA data from Broad Institue, `DepMap_ID` is used as default reference and query identifier if no `query_id` is given."
391
- "Ensure that you have column `DepMap_ID` in `adata.obs` or specify column name in which DepMap ID is stored."
392
- "If DepMap ID isn't available in 'adata.obs', use `annotate()` to annotate the cell line first."
385
+ f"Missing '{query_id}' in `adata.obs`. For Broad Institute data, need `DepMap_ID` column "
386
+ f"or specify column with DepMap IDs via `query_id` parameter."
393
387
  )
394
388
  reference_id = "DepMap_ID"
395
389
 
@@ -472,19 +466,16 @@ class CellLine(MetaData):
472
466
  # then we can compare these keys and fetch the corresponding metadata.
473
467
  if query_id not in adata.obs.columns:
474
468
  raise ValueError(
475
- f"The specified `query_id` {query_id} can't be found in `adata.obs`. \n"
476
- "If the desired query ID is not available, you can fetch the cell line metadata \n"
477
- "using the `annotate()` function before calling annotate_protein_expression(). \n"
478
- "This ensures that the required query ID is included in your data."
469
+ f"The specified `query_id` `{query_id}` not found in `adata.obs`. "
470
+ "Fetch cell line metadata with `annotate()` before calling `annotate_protein_expression()`."
479
471
  )
480
472
  # Lazily download the proteomics data
481
473
  if self.proteomics is None:
482
474
  self._download_proteomics()
483
475
  if reference_id not in self.proteomics.columns:
484
476
  raise ValueError(
485
- f"The specified `reference_id`{reference_id} can't be found in the protein expression data. \n"
486
- "To solve the issue, please use the reference identifier available in the metadata. \n"
487
- "Alternatively, create a `CellLineMetaData.lookup()` object to obtain the available reference identifiers in the metadata."
477
+ f"Specified `reference_id` `{reference_id}` not found in protein expression data. "
478
+ f"Use available reference identifiers in metadata or create `CellLineMetaData.lookup()` object."
488
479
  )
489
480
 
490
481
  identifier_num_all = len(adata.obs[query_id].unique())
@@ -551,11 +542,8 @@ class CellLine(MetaData):
551
542
  adata = adata.copy()
552
543
  if query_id not in adata.obs.columns:
553
544
  raise ValueError(
554
- f"The specified `query_id` {query_id} can't be found in the `adata.obs`. \n"
555
- "Ensure that you are using one of the available query IDs present in 'adata.obs' for the annotation.\n"
556
- "If the desired query ID is not available, you can fetch the cell line metadata "
557
- "using the `annotate()` function before calling `annotate_from_gdsc()`. "
558
- "This ensures that the required query ID is included in your data."
545
+ f"Specified `query_id` `{query_id}` not found in `adata.obs`. "
546
+ "Use an available ID or fetch cell line metadata with `annotate()` before calling `annotate_from_gdsc()`."
559
547
  )
560
548
  # Lazily download the GDSC data
561
549
  if gdsc_dataset == "gdsc_1":
@@ -626,11 +614,8 @@ class CellLine(MetaData):
626
614
  adata = adata.copy()
627
615
  if query_id not in adata.obs.columns:
628
616
  raise ValueError(
629
- f"The specified `query_id` {query_id} can't be found in the `adata.obs`. \n"
630
- "Ensure that you are using one of the available query IDs present in 'adata.obs' for the annotation.\n"
631
- "If the desired query ID is not available, you can fetch the cell line metadata "
632
- "using the `annotate()` function before calling `annotate_from_prism()`. "
633
- "This ensures that the required query ID is included in your data."
617
+ f"Specified `query_id` `{query_id}` not found in `adata.obs`. "
618
+ "Use an available ID or fetch cell line metadata with `annotate()` before calling `annotate_from_prism()`."
634
619
  )
635
620
  if self.drug_response_prism is None:
636
621
  self._download_prism()
@@ -700,7 +685,6 @@ class CellLine(MetaData):
700
685
  if self.drug_response_prism is None:
701
686
  self._download_prism()
702
687
 
703
- # Transfer the data
704
688
  return LookUp(
705
689
  type="cell_line",
706
690
  transfer_metadata=[
@@ -775,7 +759,7 @@ class CellLine(MetaData):
775
759
  and sum(adata.obsm[metadata_key].columns != adata.var.index.values) > 0
776
760
  ):
777
761
  raise ValueError(
778
- "Column name of metadata is not the same as the index of adata.var. Ensure that the genes are in the same order."
762
+ "Column name of metadata is not the same as the index of `adata.var`. Ensure that the genes are in the same order."
779
763
  )
780
764
 
781
765
  # Divide cell lines into those are present and not present in the metadata
@@ -832,7 +816,7 @@ class CellLine(MetaData):
832
816
  """
833
817
  if corr is None or pval is None:
834
818
  raise ValueError(
835
- "Missing required input parameter: 'corr' or 'pval'. Please call the function `pt.md.CellLine.correlate()` to generate these outputs before proceeding."
819
+ "Missing required input parameter: 'corr' or 'pval'. Call `pt.md.CellLine.correlate()` before proceeding."
836
820
  )
837
821
 
838
822
  if category == "cell line":
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  from typing import TYPE_CHECKING, Literal
4
4
 
5
5
  import pandas as pd
6
- import pubchempy as pcp
7
6
 
8
7
  from ._look_up import LookUp
9
8
  from ._metadata import MetaData
@@ -44,6 +43,8 @@ class Compound(MetaData):
44
43
  if query_id not in adata.obs.columns:
45
44
  raise ValueError(f"The requested query_id {query_id} is not in `adata.obs`.\n Please check again.")
46
45
 
46
+ import pubchempy as pcp
47
+
47
48
  query_dict = {}
48
49
  not_matched_identifiers = []
49
50
  for compound in adata.obs[query_id].dropna().astype(str).unique():
@@ -27,7 +27,7 @@ class LookUp:
27
27
  Args:
28
28
  type: Metadata type for annotation. One of 'cell_line', 'compound', 'moa' or 'drug.
29
29
  transfer_metadata: DataFrames used to generate Lookup object.
30
- This is currently set to None for CompoundMetaData which does not require any dataframes for transfer.
30
+ Currently set to None for CompoundMetaData which does not require any DataFrames for transfer.
31
31
  """
32
32
  self.type = type
33
33
  if type == "cell_line":
@@ -49,11 +49,8 @@ class MetaData:
49
49
  if metadata_type in ["protein expression", "bulk RNA", "drug response"]:
50
50
  hint = "Additionally, call the `CellLineMetaData.annotate()` function to acquire more possible query IDs that can be used for cell line annotation purposes."
51
51
  raise ValueError(
52
- f"Attempting to match the query id {query_id} in 'adata.obs' to the reference id {reference_id} in the metadata.\n"
53
- "However, none of the query IDs could be found in the {metadata_type} annotation data.\n"
54
- "To resolve this issue, call the `lookup()` function to create a LookUp object.\n"
55
- "This enables obtaining the count of matched identifiers in the AnnData object for different types of reference and query IDs.\n"
56
- f"{hint}"
52
+ f"No matches between `{query_id}` in adata.obs and `{reference_id}` in {metadata_type} data. "
53
+ f"Use `lookup()` to check compatible identifier types. {hint}"
57
54
  )
58
55
  if len(unmatched_identifiers) == 0:
59
56
  return
@@ -61,10 +58,8 @@ class MetaData:
61
58
  verbosity = min(verbosity, len(unmatched_identifiers))
62
59
  if verbosity > 0:
63
60
  logger.info(
64
- f"There are {total_identifiers} identifiers in `adata.obs`."
65
- f"However, {len(unmatched_identifiers)} identifiers can't be found in the {metadata_type} annotation, "
66
- "leading to the presence of NA values for their respective metadata.\n"
67
- f"Please check again: *unmatched_identifiers[:verbosity]..."
61
+ f"{total_identifiers} identifiers in `adata.obs`, {len(unmatched_identifiers)} not found in {metadata_type} data. "
62
+ f"NA values present. Unmatched: {unmatched_identifiers[:verbosity]}"
68
63
  )
69
64
  else:
70
65
  raise ValueError("Only 'all' or a non-negative value is accepted.")
@@ -110,8 +110,6 @@ class Moa(MetaData):
110
110
  """Generate LookUp object for Moa metadata.
111
111
 
112
112
  The LookUp object provides an overview of the metadata to annotate.
113
- annotate_moa function has a corresponding lookup function in the LookUp object,
114
- where users can search the query_ids and targets in the metadata.
115
113
 
116
114
  Returns:
117
115
  Returns a LookUp object specific for MoA annotation.
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import random
4
4
  from collections import defaultdict
5
- from dataclasses import dataclass
6
5
  from math import floor, nan
7
6
  from typing import TYPE_CHECKING, Any, Literal
8
7
 
@@ -26,11 +26,10 @@ if TYPE_CHECKING:
26
26
  from matplotlib.axes import Axes
27
27
  from matplotlib.colors import Colormap
28
28
  from matplotlib.pyplot import Figure
29
- from scipy import sparse
30
29
 
31
30
 
32
31
  class Mixscape:
33
- """Python implementation of Mixscape."""
32
+ """identify perturbation effects in CRISPR screens by separating cells into perturbation groups."""
34
33
 
35
34
  def __init__(self):
36
35
  pass
@@ -71,7 +70,7 @@ class Mixscape:
71
70
  use_rep: Use the indicated representation. `'X'` or any key for `.obsm` is valid.
72
71
  If `None`, the representation is chosen automatically:
73
72
  For `.n_vars` < 50, `.X` is used, otherwise 'X_pca' is used.
74
- If 'X_pca' is not present, its computed with default parameters.
73
+ If 'X_pca' is not present, it's computed with default parameters.
75
74
  n_dims: Number of dimensions to use from the representation to calculate the perturbation signature.
76
75
  If `None`, use all dimensions.
77
76
  n_pcs: If PCA representation is used, the number of principal components to compute.
@@ -1189,7 +1188,7 @@ class MixscapeGaussianMixture(GaussianMixture):
1189
1188
  n_components: Number of Gaussian components
1190
1189
  fixed_means: Means to fix (use None for those that should be estimated)
1191
1190
  fixed_covariances: Covariances to fix (use None for those that should be estimated)
1192
- kwargs: Additional arguments passed to scikit-learn's GaussianMixture
1191
+ **kwargs: Additional arguments passed to scikit-learn's GaussianMixture
1193
1192
  """
1194
1193
  super().__init__(n_components=n_components, **kwargs)
1195
1194
  self.fixed_means = fixed_means
@@ -4,7 +4,7 @@ requires = ["hatchling"]
4
4
 
5
5
  [project]
6
6
  name = "pertpy"
7
- version = "0.11.1"
7
+ version = "0.11.2"
8
8
  description = "Perturbation Analysis in the scverse ecosystem."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.14"
@@ -131,7 +131,6 @@ addopts = [
131
131
  markers = [
132
132
  "conda: marks a subset of tests to be ran on the Bioconda CI.",
133
133
  "extra: marks tests that require extra dependencies.",
134
- "slow: mark test as slow to run"
135
134
  ]
136
135
  minversion = 6.0
137
136
  norecursedirs = [ '.*', 'build', 'dist', '*.egg', 'data', '__pycache__']
@@ -0,0 +1,7 @@
1
+ import numpy as np
2
+ import pytest
3
+
4
+
5
+ @pytest.fixture
6
+ def rng():
7
+ return np.random.default_rng()
@@ -76,7 +76,6 @@ def test_protein_expression_annotation(adata):
76
76
  )
77
77
 
78
78
 
79
- @pytest.mark.slow
80
79
  def test_bulk_rna_expression_annotation(adata):
81
80
  pt_metadata.annotate(adata)
82
81
  pt_metadata.annotate_bulk_rna(adata, query_id="DepMap_ID", cell_line_source="broad")
@@ -90,7 +90,6 @@ def test_credible_effects(adata):
90
90
  assert sccoda.credible_effects(mdata)["condition[T.Salmonella]"]["Enterocyte"]
91
91
 
92
92
 
93
- @pytest.mark.slow
94
93
  def test_make_arviz(adata):
95
94
  adata_salm = adata[adata.obs["condition"].isin(["Control", "Salmonella"])]
96
95
  mdata = sccoda.load(
@@ -39,9 +39,6 @@ def adata():
39
39
 
40
40
  @pytest.mark.parametrize("distance", distances)
41
41
  def test_distancetest(adata, distance):
42
- if distance == "wasserstein":
43
- pytest.mark.apply(pytest.mark.slow)
44
-
45
42
  etest = pt.tl.DistanceTest(distance, n_perms=10, obsm_key="X_pca", alpha=0.05, correction="holm-sidak")
46
43
  tab = etest(adata, groupby="perturbation", contrast="control")
47
44
 
@@ -149,7 +149,6 @@ def test_select_variance(adata):
149
149
  assert len(ad.var.index[ad.var["highly_variable"]]) == 3672
150
150
 
151
151
 
152
- @pytest.mark.slow
153
152
  def test_differential_prioritization():
154
153
  """Test differential prioritization run."""
155
154
  # Requires the full dataset or it fails because of a lack of statistical power
@@ -1,6 +1,5 @@
1
1
  import pandas as pd
2
2
  import pertpy as pt
3
- import pytest
4
3
  import scanpy as sc
5
4
 
6
5
  # This is not a proper test!
@@ -8,7 +7,6 @@ import scanpy as sc
8
7
  # The pipeline is obtained from https://pertpy.readthedocs.io/en/latest/tutorials/notebooks/dialogue.html
9
8
 
10
9
 
11
- @pytest.mark.slow
12
10
  def test_dialogue_pipeline():
13
11
  adata = pt.dt.dialogue_example()
14
12
 
@@ -1,20 +0,0 @@
1
- import numpy as np
2
- import pytest
3
-
4
-
5
- def pytest_addoption(parser):
6
- parser.addoption("--runslow", action="store_true", default=False, help="run slow tests")
7
-
8
-
9
- def pytest_collection_modifyitems(config, items):
10
- """Conditionally skip slow tests unless '--runslow' is specified"""
11
- if not config.getoption("--runslow"):
12
- skip_slow = pytest.mark.skip(reason="need --runslow option to run")
13
- for item in items:
14
- if "slow" in item.keywords:
15
- item.add_marker(skip_slow)
16
-
17
-
18
- @pytest.fixture
19
- def rng():
20
- return np.random.default_rng()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes