pertpy 1.0.2__py3-none-any.whl → 1.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pertpy/__init__.py +1 -1
- pertpy/data/_dataloader.py +2 -2
- pertpy/data/_datasets.py +62 -62
- pertpy/metadata/_drug.py +4 -2
- pertpy/preprocessing/_guide_rna.py +17 -10
- pertpy/preprocessing/_guide_rna_mixture.py +9 -3
- pertpy/tools/__init__.py +12 -2
- pertpy/tools/_augur.py +37 -14
- pertpy/tools/_coda/_sccoda.py +0 -19
- pertpy/tools/_coda/_tasccoda.py +12 -24
- pertpy/tools/_mixscape.py +48 -39
- pertpy/tools/_perturbation_space/_comparison.py +3 -3
- pertpy/tools/_perturbation_space/_discriminator_classifiers.py +261 -353
- pertpy/tools/_perturbation_space/_perturbation_space.py +22 -14
- pertpy/tools/_perturbation_space/_simple.py +12 -6
- pertpy/tools/_scgen/_scgenvae.py +2 -1
- pertpy/tools/core.py +18 -0
- {pertpy-1.0.2.dist-info → pertpy-1.0.3.dist-info}/METADATA +84 -51
- {pertpy-1.0.2.dist-info → pertpy-1.0.3.dist-info}/RECORD +21 -20
- {pertpy-1.0.2.dist-info → pertpy-1.0.3.dist-info}/WHEEL +1 -1
- {pertpy-1.0.2.dist-info → pertpy-1.0.3.dist-info}/licenses/LICENSE +0 -0
@@ -6,7 +6,6 @@ import numpy as np
|
|
6
6
|
import pandas as pd
|
7
7
|
from anndata import AnnData
|
8
8
|
from lamin_utils import logger
|
9
|
-
from rich import print
|
10
9
|
from scipy.stats import entropy
|
11
10
|
|
12
11
|
if TYPE_CHECKING:
|
@@ -27,6 +26,7 @@ class PerturbationSpace:
|
|
27
26
|
def compute_control_diff( # type: ignore
|
28
27
|
self,
|
29
28
|
adata: AnnData,
|
29
|
+
*,
|
30
30
|
target_col: str = "perturbation",
|
31
31
|
group_col: str = None,
|
32
32
|
reference_key: str = "control",
|
@@ -41,8 +41,8 @@ class PerturbationSpace:
|
|
41
41
|
|
42
42
|
Args:
|
43
43
|
adata: Anndata object of size cells x genes.
|
44
|
-
target_col:
|
45
|
-
group_col:
|
44
|
+
target_col: `.obs` column name that stores the label of the perturbation applied to each cell.
|
45
|
+
group_col: `.obs` column name that stores the label of the group of each cell. If None, ignore groups.
|
46
46
|
reference_key: The key of the control values.
|
47
47
|
layer_key: Key of the AnnData layer to use for computation.
|
48
48
|
new_layer_key: the results are stored in the given layer.
|
@@ -146,6 +146,7 @@ class PerturbationSpace:
|
|
146
146
|
def add(
|
147
147
|
self,
|
148
148
|
adata: AnnData,
|
149
|
+
*,
|
149
150
|
perturbations: Iterable[str],
|
150
151
|
reference_key: str = "control",
|
151
152
|
ensure_consistency: bool = False,
|
@@ -157,8 +158,8 @@ class PerturbationSpace:
|
|
157
158
|
adata: Anndata object of size n_perts x dim.
|
158
159
|
perturbations: Perturbations to add.
|
159
160
|
reference_key: perturbation source from which the perturbation summation starts.
|
160
|
-
ensure_consistency:
|
161
|
-
target_col:
|
161
|
+
ensure_consistency: Whether to run differential expression on all data matrices to ensure consistency of linear space.
|
162
|
+
target_col: `.obs` column name that stores the label of the perturbation applied to each cell.
|
162
163
|
|
163
164
|
Returns:
|
164
165
|
Anndata object of size (n_perts+1) x dim, where the last row is the addition of the specified perturbations.
|
@@ -255,6 +256,7 @@ class PerturbationSpace:
|
|
255
256
|
def subtract(
|
256
257
|
self,
|
257
258
|
adata: AnnData,
|
259
|
+
*,
|
258
260
|
perturbations: Iterable[str],
|
259
261
|
reference_key: str = "control",
|
260
262
|
ensure_consistency: bool = False,
|
@@ -266,8 +268,8 @@ class PerturbationSpace:
|
|
266
268
|
adata: Anndata object of size n_perts x dim.
|
267
269
|
perturbations: Perturbations to subtract.
|
268
270
|
reference_key: Perturbation source from which the perturbation subtraction starts.
|
269
|
-
ensure_consistency:
|
270
|
-
target_col:
|
271
|
+
ensure_consistency: Whether to run differential expression on all data matrices to ensure consistency of linear space.
|
272
|
+
target_col: `.obs` column name that stores the label of the perturbation applied to each cell.
|
271
273
|
|
272
274
|
Returns:
|
273
275
|
Anndata object of size (n_perts+1) x dim, where the last row is the subtraction of the specified perturbations.
|
@@ -361,13 +363,15 @@ class PerturbationSpace:
|
|
361
363
|
|
362
364
|
return new_perturbation
|
363
365
|
|
364
|
-
def label_transfer(
|
366
|
+
def label_transfer( # noqa: D417
|
365
367
|
self,
|
366
368
|
adata: AnnData,
|
367
|
-
|
369
|
+
*,
|
370
|
+
target_column: str = "perturbation",
|
368
371
|
column_uncertainty_score_key: str = "perturbation_transfer_uncertainty",
|
369
372
|
target_val: str = "unknown",
|
370
373
|
neighbors_key: str = "neighbors",
|
374
|
+
**kwargs,
|
371
375
|
) -> None:
|
372
376
|
"""Impute missing values in the specified column using KNN imputation in the space defined by `use_rep`.
|
373
377
|
|
@@ -377,7 +381,7 @@ class PerturbationSpace:
|
|
377
381
|
|
378
382
|
Args:
|
379
383
|
adata: The AnnData object containing single-cell data.
|
380
|
-
|
384
|
+
target_column: The column name in adata.obs to perform imputation on.
|
381
385
|
column_uncertainty_score_key: The column name in adata.obs to store the uncertainty score of the label transfer.
|
382
386
|
target_val: The target value to impute.
|
383
387
|
neighbors_key: The key in adata.uns where the neighbors are stored.
|
@@ -399,12 +403,16 @@ class PerturbationSpace:
|
|
399
403
|
if neighbors_key not in adata.uns:
|
400
404
|
raise ValueError(f"Key {neighbors_key} not found in adata.uns. Please run `sc.pp.neighbors` first.")
|
401
405
|
|
402
|
-
|
406
|
+
# backwards compatibility
|
407
|
+
if "column" in kwargs:
|
408
|
+
target_column = kwargs.pop("column")
|
409
|
+
|
410
|
+
labels = adata.obs[target_column].astype(str)
|
403
411
|
target_cells = labels == target_val
|
404
412
|
|
405
413
|
connectivities = adata.obsp[adata.uns[neighbors_key]["connectivities_key"]]
|
406
414
|
# convert labels to an incidence matrix
|
407
|
-
one_hot_encoded_labels = adata.obs[
|
415
|
+
one_hot_encoded_labels = adata.obs[target_column].astype(str).str.get_dummies()
|
408
416
|
# convert to distance-weighted neighborhood incidence matrix
|
409
417
|
weighted_label_occurence = pd.DataFrame(
|
410
418
|
(one_hot_encoded_labels.values.T * connectivities).T,
|
@@ -413,8 +421,8 @@ class PerturbationSpace:
|
|
413
421
|
)
|
414
422
|
# choose best label for each target cell
|
415
423
|
best_labels = weighted_label_occurence.drop(target_val, axis=1)[target_cells].idxmax(axis=1)
|
416
|
-
adata.obs[
|
417
|
-
adata.obs.loc[target_cells,
|
424
|
+
adata.obs[target_column] = labels
|
425
|
+
adata.obs.loc[target_cells, target_column] = best_labels
|
418
426
|
|
419
427
|
# calculate uncertainty
|
420
428
|
uncertainty = np.zeros(adata.n_obs)
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
3
3
|
from typing import Literal
|
4
4
|
|
5
5
|
import numpy as np
|
6
|
+
import pandas as pd
|
6
7
|
import scanpy as sc
|
7
8
|
from anndata import AnnData
|
8
9
|
from sklearn.cluster import DBSCAN, KMeans
|
@@ -29,8 +30,8 @@ class CentroidSpace(PerturbationSpace):
|
|
29
30
|
target_col: .obs column that stores the label of the perturbation applied to each cell.
|
30
31
|
layer_key: If specified pseudobulk computation is done by using the specified layer. Otherwise, computation is done with .X
|
31
32
|
embedding_key: `obsm` key of the AnnData embedding to use for computation. Defaults to the 'X' matrix otherwise.
|
32
|
-
keep_obs: Whether .obs columns in the input AnnData should be kept in the output pseudobulk AnnData.
|
33
|
-
each cell of one perturbation are kept.
|
33
|
+
keep_obs: Whether .obs columns in the input AnnData should be kept in the output pseudobulk AnnData.
|
34
|
+
Only .obs columns with the same value for each cell of one perturbation are kept.
|
34
35
|
|
35
36
|
Returns:
|
36
37
|
AnnData object with one observation per perturbation, storing the embedding data of the
|
@@ -170,10 +171,15 @@ class PseudobulkSpace(PerturbationSpace):
|
|
170
171
|
if mode in ps_adata.layers:
|
171
172
|
ps_adata.X = ps_adata.layers[mode]
|
172
173
|
|
173
|
-
for col in original_obs.columns
|
174
|
-
|
175
|
-
|
176
|
-
|
174
|
+
missing_cols = [col for col in original_obs.columns if col not in ps_adata.obs.columns]
|
175
|
+
new_cols_data = {}
|
176
|
+
|
177
|
+
for col in missing_cols:
|
178
|
+
grouped_values = original_obs.groupby(grouping_cols, observed=False)[col].first()
|
179
|
+
new_cols_data[col] = grouped_values.reindex(ps_adata.obs.index).values
|
180
|
+
|
181
|
+
if new_cols_data:
|
182
|
+
ps_adata.obs = pd.concat([ps_adata.obs, pd.DataFrame(new_cols_data, index=ps_adata.obs.index)], axis=1)
|
177
183
|
|
178
184
|
ps_adata.obs[target_col] = ps_adata.obs[target_col].astype("category")
|
179
185
|
|
pertpy/tools/_scgen/_scgenvae.py
CHANGED
@@ -4,7 +4,8 @@ import flax.linen as nn
|
|
4
4
|
import jax.numpy as jnp
|
5
5
|
import numpyro.distributions as dist
|
6
6
|
from scvi import REGISTRY_KEYS
|
7
|
-
from scvi.module.
|
7
|
+
from scvi.module._jaxvae import LossOutput
|
8
|
+
from scvi.module.base import JaxBaseModuleClass, flax_configure
|
8
9
|
|
9
10
|
from ._base_components import FlaxDecoder, FlaxEncoder
|
10
11
|
|
pertpy/tools/core.py
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
import numpy as np
|
2
|
+
from scipy import sparse
|
3
|
+
|
4
|
+
|
5
|
+
def _is_raw_counts(X: np.ndarray | sparse.spmatrix) -> bool:
|
6
|
+
"""Check if data appears to be raw counts."""
|
7
|
+
if sparse.issparse(X):
|
8
|
+
sample = X[:1000, :1000] if X.shape[0] > 1000 else X
|
9
|
+
data = sample.data
|
10
|
+
else:
|
11
|
+
sample = X[:1000, :1000] if X.shape[0] > 1000 else X
|
12
|
+
data = sample.ravel()
|
13
|
+
|
14
|
+
non_zero_data = data[data > 0]
|
15
|
+
if len(non_zero_data) == 0:
|
16
|
+
return True
|
17
|
+
|
18
|
+
return np.all(data >= 0) and np.all(data == np.round(data))
|
@@ -1,17 +1,41 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pertpy
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.3
|
4
4
|
Summary: Perturbation Analysis in the scverse ecosystem.
|
5
|
+
Project-URL: Documentation, https://pertpy.readthedocs.io
|
6
|
+
Project-URL: Source, https://github.com/scverse/pertpy
|
7
|
+
Project-URL: Home-page, https://github.com/scverse/pertpy
|
5
8
|
Author: Lukas Heumos, Lilly May, Stefan Peidli, Johannes Ostner, Gregor Sturm, Emma Dann, Yuge Ji, Xinyue Zhang, Xichen Wu, Tessa Green, Antonia Schumacher
|
6
9
|
Maintainer-email: Lukas Heumos <lukas.heumos@posteo.net>
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
+
License: MIT License
|
11
|
+
|
12
|
+
Copyright (c) 2021, Lukas Heumos
|
13
|
+
Copyright (c) 2025, scverse®
|
14
|
+
|
15
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
16
|
+
of this software and associated documentation files (the "Software"), to deal
|
17
|
+
in the Software without restriction, including without limitation the rights
|
18
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
19
|
+
copies of the Software, and to permit persons to whom the Software is
|
20
|
+
furnished to do so, subject to the following conditions:
|
21
|
+
|
22
|
+
The above copyright notice and this permission notice shall be included in all
|
23
|
+
copies or substantial portions of the Software.
|
24
|
+
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
26
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
27
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
28
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
29
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
30
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
31
|
+
SOFTWARE.
|
32
|
+
License-File: LICENSE
|
10
33
|
Classifier: Development Status :: 5 - Production/Stable
|
11
34
|
Classifier: Environment :: Console
|
12
35
|
Classifier: Framework :: Jupyter
|
13
36
|
Classifier: Intended Audience :: Developers
|
14
37
|
Classifier: Intended Audience :: Science/Research
|
38
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
15
39
|
Classifier: Natural Language :: English
|
16
40
|
Classifier: Operating System :: MacOS :: MacOS X
|
17
41
|
Classifier: Operating System :: POSIX :: Linux
|
@@ -21,62 +45,72 @@ Classifier: Programming Language :: Python :: 3.12
|
|
21
45
|
Classifier: Programming Language :: Python :: 3.13
|
22
46
|
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
23
47
|
Classifier: Topic :: Scientific/Engineering :: Visualization
|
24
|
-
|
25
|
-
Requires-Dist: rich
|
26
|
-
Requires-Dist: scanpy
|
27
|
-
Requires-Dist: mudata
|
28
|
-
Requires-Dist: requests
|
29
|
-
Requires-Dist: scikit-misc
|
30
|
-
Requires-Dist: scvi-tools
|
48
|
+
Requires-Python: <3.14,>=3.11
|
31
49
|
Requires-Dist: adjusttext
|
32
|
-
Requires-Dist:
|
33
|
-
Requires-Dist:
|
50
|
+
Requires-Dist: arviz
|
51
|
+
Requires-Dist: blitzgsea
|
52
|
+
Requires-Dist: fast-array-utils[accel,sparse]
|
53
|
+
Requires-Dist: flax
|
54
|
+
Requires-Dist: funsor
|
55
|
+
Requires-Dist: lamin-utils
|
56
|
+
Requires-Dist: mudata
|
57
|
+
Requires-Dist: numpyro
|
34
58
|
Requires-Dist: openpyxl
|
59
|
+
Requires-Dist: ott-jax
|
35
60
|
Requires-Dist: pubchempy
|
36
61
|
Requires-Dist: pyarrow
|
37
|
-
Requires-Dist:
|
62
|
+
Requires-Dist: requests
|
63
|
+
Requires-Dist: rich
|
64
|
+
Requires-Dist: scanpy
|
38
65
|
Requires-Dist: scikit-learn>=1.4
|
39
|
-
Requires-Dist:
|
40
|
-
Requires-Dist:
|
41
|
-
|
42
|
-
Requires-Dist:
|
43
|
-
Requires-Dist: formulaic
|
44
|
-
Requires-Dist:
|
45
|
-
Requires-Dist:
|
46
|
-
Requires-Dist:
|
47
|
-
Requires-Dist:
|
48
|
-
Requires-Dist:
|
49
|
-
Requires-Dist: sphinx-book-theme ; extra == "doc"
|
50
|
-
Requires-Dist: myst-nb ; extra == "doc"
|
51
|
-
Requires-Dist: sphinxcontrib-bibtex>=1.0.0 ; extra == "doc"
|
52
|
-
Requires-Dist: sphinx-issues ; extra == "doc"
|
53
|
-
Requires-Dist: sphinx-gallery ; extra == "doc"
|
54
|
-
Requires-Dist: sphinx-autodoc-typehints ; extra == "doc"
|
55
|
-
Requires-Dist: sphinx-copybutton ; extra == "doc"
|
56
|
-
Requires-Dist: sphinx-remove-toctrees ; extra == "doc"
|
57
|
-
Requires-Dist: sphinx-design ; extra == "doc"
|
58
|
-
Requires-Dist: sphinx-last-updated-by-git ; extra == "doc"
|
59
|
-
Requires-Dist: sphinx-automodapi ; extra == "doc"
|
60
|
-
Requires-Dist: sphinxext-opengraph ; extra == "doc"
|
61
|
-
Requires-Dist: pygments ; extra == "doc"
|
62
|
-
Requires-Dist: nbsphinx ; extra == "doc"
|
63
|
-
Requires-Dist: nbsphinx-link ; extra == "doc"
|
64
|
-
Requires-Dist: ipykernel ; extra == "doc"
|
65
|
-
Requires-Dist: ipython ; extra == "doc"
|
66
|
-
Requires-Dist: toytree>=3.0 ; extra == "tcoda"
|
67
|
-
Requires-Dist: ete4 ; extra == "tcoda"
|
68
|
-
Requires-Dist: pyqt6 ; extra == "tcoda"
|
69
|
-
Requires-Dist: pytest ; extra == "test"
|
70
|
-
Requires-Dist: coverage ; extra == "test"
|
71
|
-
Requires-Dist: leidenalg ; extra == "test"
|
72
|
-
Project-URL: Documentation, https://pertpy.readthedocs.io
|
73
|
-
Project-URL: Home-page, https://github.com/scverse/pertpy
|
74
|
-
Project-URL: Source, https://github.com/scverse/pertpy
|
66
|
+
Requires-Dist: scikit-misc
|
67
|
+
Requires-Dist: sparsecca
|
68
|
+
Provides-Extra: all
|
69
|
+
Requires-Dist: ete4; extra == 'all'
|
70
|
+
Requires-Dist: formulaic; extra == 'all'
|
71
|
+
Requires-Dist: formulaic-contrasts>=0.2.0; extra == 'all'
|
72
|
+
Requires-Dist: pydeseq2>=v0.5.0; extra == 'all'
|
73
|
+
Requires-Dist: pyqt6; extra == 'all'
|
74
|
+
Requires-Dist: scvi-tools[jax]; extra == 'all'
|
75
|
+
Requires-Dist: toytree>=3.0; extra == 'all'
|
75
76
|
Provides-Extra: de
|
77
|
+
Requires-Dist: formulaic; extra == 'de'
|
78
|
+
Requires-Dist: formulaic-contrasts>=0.2.0; extra == 'de'
|
79
|
+
Requires-Dist: pydeseq2>=v0.5.0; extra == 'de'
|
76
80
|
Provides-Extra: dev
|
81
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
77
82
|
Provides-Extra: doc
|
83
|
+
Requires-Dist: docutils>=0.8; extra == 'doc'
|
84
|
+
Requires-Dist: ipykernel; extra == 'doc'
|
85
|
+
Requires-Dist: ipython; extra == 'doc'
|
86
|
+
Requires-Dist: myst-nb; extra == 'doc'
|
87
|
+
Requires-Dist: nbsphinx; extra == 'doc'
|
88
|
+
Requires-Dist: nbsphinx-link; extra == 'doc'
|
89
|
+
Requires-Dist: pygments; extra == 'doc'
|
90
|
+
Requires-Dist: scanpydoc; extra == 'doc'
|
91
|
+
Requires-Dist: sphinx-autodoc-typehints; extra == 'doc'
|
92
|
+
Requires-Dist: sphinx-automodapi; extra == 'doc'
|
93
|
+
Requires-Dist: sphinx-book-theme; extra == 'doc'
|
94
|
+
Requires-Dist: sphinx-copybutton; extra == 'doc'
|
95
|
+
Requires-Dist: sphinx-design; extra == 'doc'
|
96
|
+
Requires-Dist: sphinx-gallery; extra == 'doc'
|
97
|
+
Requires-Dist: sphinx-issues; extra == 'doc'
|
98
|
+
Requires-Dist: sphinx-last-updated-by-git; extra == 'doc'
|
99
|
+
Requires-Dist: sphinx-remove-toctrees; extra == 'doc'
|
100
|
+
Requires-Dist: sphinx>=8.1; extra == 'doc'
|
101
|
+
Requires-Dist: sphinxcontrib-bibtex>=1.0.0; extra == 'doc'
|
102
|
+
Requires-Dist: sphinxext-opengraph; extra == 'doc'
|
103
|
+
Provides-Extra: scgen
|
104
|
+
Requires-Dist: scvi-tools[jax]; extra == 'scgen'
|
78
105
|
Provides-Extra: tcoda
|
106
|
+
Requires-Dist: ete4; extra == 'tcoda'
|
107
|
+
Requires-Dist: pyqt6; extra == 'tcoda'
|
108
|
+
Requires-Dist: toytree>=3.0; extra == 'tcoda'
|
79
109
|
Provides-Extra: test
|
110
|
+
Requires-Dist: coverage; extra == 'test'
|
111
|
+
Requires-Dist: leidenalg; extra == 'test'
|
112
|
+
Requires-Dist: pytest; extra == 'test'
|
113
|
+
Description-Content-Type: text/markdown
|
80
114
|
|
81
115
|
[](https://github.com/scverse/pertpy/actions/workflows/build.yml)
|
82
116
|
[](https://codecov.io/gh/scverse/pertpy)
|
@@ -183,4 +217,3 @@ If you like scverse® and want to support our mission, please consider making a
|
|
183
217
|
>
|
184
218
|
</a>
|
185
219
|
</div>
|
186
|
-
|
@@ -1,34 +1,35 @@
|
|
1
|
-
pertpy/__init__.py,sha256=
|
1
|
+
pertpy/__init__.py,sha256=hrz1ULRH4dscWdjRR-qELR8RJAGHCsOGcQswOodD8Z8,972
|
2
2
|
pertpy/_doc.py,sha256=j5TMNC-DA9yIMqIIUNpjpcVgWfRqyBBfvbRjnCM_OLs,427
|
3
3
|
pertpy/_types.py,sha256=IcHCojCUqx8CapibNkcYf2TUqjBFP2ujeELvn_IBSBQ,154
|
4
4
|
pertpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
pertpy/data/__init__.py,sha256=ah3yvoxkgbdMUNAWxS3SyqcUuVamBOSeuWkF2QRAEwM,2703
|
6
|
-
pertpy/data/_dataloader.py,sha256=
|
7
|
-
pertpy/data/_datasets.py,sha256=
|
6
|
+
pertpy/data/_dataloader.py,sha256=1xiux3_eb4-0ZeirM0L7VAhTg_Tos0t_d8oBLIBTCrs,4679
|
7
|
+
pertpy/data/_datasets.py,sha256=5HF7k2snJFUveidgRdLeaiane43FI2OAgwB6gl2Vp8Q,66301
|
8
8
|
pertpy/metadata/__init__.py,sha256=wROPCXmJX2v5schJaBTPQtGW-FGCNWPfO_6bpnXwk-c,276
|
9
9
|
pertpy/metadata/_cell_line.py,sha256=dtHjyFPtVzA31fib3IdURCBbsHDjbKyGDrJo9veSEU8,42854
|
10
10
|
pertpy/metadata/_compound.py,sha256=JsAv_KCcNkgVVrXTyhu-BeM8rBX8a93Wq5Z6avpxN7Y,4764
|
11
|
-
pertpy/metadata/_drug.py,sha256=
|
11
|
+
pertpy/metadata/_drug.py,sha256=vfd6I3a9nc7vvB4Z4KVgdBIFMyCPdsQ8-cqO46b_2sA,9062
|
12
12
|
pertpy/metadata/_look_up.py,sha256=0nrI_xy-qBZ3tyt4dwhEBwm0A9WP95ZaDiUQFf_88FU,28663
|
13
13
|
pertpy/metadata/_metadata.py,sha256=hzaLHRyf6YtEMdkZ7_fqTvnlYhSmjQINHz42FqVYrSU,2805
|
14
14
|
pertpy/metadata/_moa.py,sha256=kMpjqReu-WV_tbVJLrKe7gc-WyGkkEX-59V-ZUY3X5g,4536
|
15
15
|
pertpy/plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
pertpy/preprocessing/__init__.py,sha256=VAPFaeq2_qCvdFkQTCj_Hm460HC4Tersu8Rig_tnp_Y,71
|
17
|
-
pertpy/preprocessing/_guide_rna.py,sha256=
|
18
|
-
pertpy/preprocessing/_guide_rna_mixture.py,sha256=
|
19
|
-
pertpy/tools/__init__.py,sha256=
|
20
|
-
pertpy/tools/_augur.py,sha256=
|
17
|
+
pertpy/preprocessing/_guide_rna.py,sha256=eJ4ARuVsNJ3t3TFXeHGjbbd3UxBAwomPDR1gGlL-3yo,16107
|
18
|
+
pertpy/preprocessing/_guide_rna_mixture.py,sha256=tLFcgeNOe5K6dNUzXN2rJ4JzYW0d6q9sjEHpULB04FI,6799
|
19
|
+
pertpy/tools/__init__.py,sha256=kIYPSixvRYqprWnS09JCS2gJXd822tmbZP1xQDcyWzs,2387
|
20
|
+
pertpy/tools/_augur.py,sha256=8DPFLPoP-CTJC8ODCadhCIybEaSgp-XnqtfzUMDOGr0,56138
|
21
21
|
pertpy/tools/_cinemaot.py,sha256=54-rS0AEj31dMe7iU4kEmLoAunq3jNuhsBE3IEp9hrI,38071
|
22
22
|
pertpy/tools/_dialogue.py,sha256=xWW5XiQUEHTvB7WURzndmm-EF4EhLeEnOV_-7NP6heU,52360
|
23
23
|
pertpy/tools/_enrichment.py,sha256=55mwotLH9DXQOhl85MCkxXu-MX0RysLyrPheJysAnF0,21369
|
24
24
|
pertpy/tools/_milo.py,sha256=PfLgEsYa5i35j25BNgGEkXk9UPM-ZhFxQbEWDA1e_fc,48192
|
25
|
-
pertpy/tools/_mixscape.py,sha256=
|
25
|
+
pertpy/tools/_mixscape.py,sha256=uL6iotgBc5qcmUamhTg4iirp7GxPKqyJurVzKTN2wuU,58413
|
26
|
+
pertpy/tools/core.py,sha256=hr4aIPJlWy4Q0rJXPghNGwhwpjyQRz9tUnVprf792JM,526
|
26
27
|
pertpy/tools/decoupler_LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
27
28
|
pertpy/tools/transferlearning_MMD_LICENSE,sha256=MUvDA-o_j9htRpI8fStVdCRuyLdPkQUuIH0a_EIc57w,1069
|
28
29
|
pertpy/tools/_coda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
30
|
pertpy/tools/_coda/_base_coda.py,sha256=2YIB7rVf9CxwYyQCpC8e3VYCxfurvyAqUs-4qJ5pubg,111817
|
30
|
-
pertpy/tools/_coda/_sccoda.py,sha256=
|
31
|
-
pertpy/tools/_coda/_tasccoda.py,sha256=
|
31
|
+
pertpy/tools/_coda/_sccoda.py,sha256=TRNJhY5IonCMsyvnGwRBK8w8fYqPH_hjWiT7zL25RiI,22948
|
32
|
+
pertpy/tools/_coda/_tasccoda.py,sha256=AdJTtBBFj5fUBKUSmbuu67nkFSO2cVp53Lyt7t-HBlE,30866
|
32
33
|
pertpy/tools/_differential_gene_expression/__init__.py,sha256=8_u7nsHY5GfFITT0Rs3v1p1vXpsGIWcBzwipuhXM3Ww,1653
|
33
34
|
pertpy/tools/_differential_gene_expression/_base.py,sha256=GbBi8o7rTA3wH5DZJ9C1QzfqB5yak4r3xMvKQrizsTY,38274
|
34
35
|
pertpy/tools/_differential_gene_expression/_checks.py,sha256=hH_GP0lWGO-5zrCFX4YiIVCZBCuK0ZJ0jFmdlx2Qm4k,1639
|
@@ -42,17 +43,17 @@ pertpy/tools/_distances/_distance_tests.py,sha256=wDDRkM-WmcfT5m5Zat-3ianGU1aC6H
|
|
42
43
|
pertpy/tools/_distances/_distances.py,sha256=iJNqMc9CxgZfEMHcxIocKGc4X4S2dJsRy3YerxVnFKo,51003
|
43
44
|
pertpy/tools/_perturbation_space/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
45
|
pertpy/tools/_perturbation_space/_clustering.py,sha256=pNx_SpPkZfCbgF7vzHWqAaiiHdbxPaA-L-hTWTbzFhI,3528
|
45
|
-
pertpy/tools/_perturbation_space/_comparison.py,sha256
|
46
|
-
pertpy/tools/_perturbation_space/_discriminator_classifiers.py,sha256=
|
46
|
+
pertpy/tools/_perturbation_space/_comparison.py,sha256=2sxlnHu-kEn8jApl8uZ8AIwV_gAnIf7SmuOjLaN0kgw,4291
|
47
|
+
pertpy/tools/_perturbation_space/_discriminator_classifiers.py,sha256=4nX_PwQp3JvWPeN8FADaukPfNF87Bn1r2IvZKCy3n8I,20076
|
47
48
|
pertpy/tools/_perturbation_space/_metrics.py,sha256=y8-baP8WRdB1iDgvP3uuQxSCDxA2lcxvEHHM2C_vWHY,3248
|
48
|
-
pertpy/tools/_perturbation_space/_perturbation_space.py,sha256=
|
49
|
-
pertpy/tools/_perturbation_space/_simple.py,sha256=
|
49
|
+
pertpy/tools/_perturbation_space/_perturbation_space.py,sha256=xqSC_jLzsIl4Y_uxVJX7-m3z2HWy5ZVPOAmWMno1xoQ,19677
|
50
|
+
pertpy/tools/_perturbation_space/_simple.py,sha256=8qq1skSnsvxkV9sRgDip-E-_suy2dAs7Fgu9JgHeCkQ,13349
|
50
51
|
pertpy/tools/_scgen/__init__.py,sha256=uERFlFyF88TH0uLiwmsUGEfHfLVCiZMFuk8gO5f7164,45
|
51
52
|
pertpy/tools/_scgen/_base_components.py,sha256=Qq8myRUm43q9XBrZ9gBggfa2cSV2wbz_KYoLgH7iF1A,3009
|
52
53
|
pertpy/tools/_scgen/_scgen.py,sha256=AQNGsDe-9HEqli3oq7UBDg68ofLCoXm-R_jnLFQ-rlc,30856
|
53
|
-
pertpy/tools/_scgen/_scgenvae.py,sha256=
|
54
|
+
pertpy/tools/_scgen/_scgenvae.py,sha256=L6Jfssqo7eNoZPTk4560XIU_ocvhoCpQJFb0DqWC-Nc,3920
|
54
55
|
pertpy/tools/_scgen/_utils.py,sha256=qz5QUn_Bvk2NGyYVzp3jgjWTFOMt1YyHwUo6HWtoThY,2871
|
55
|
-
pertpy-1.0.
|
56
|
-
pertpy-1.0.
|
57
|
-
pertpy-1.0.
|
58
|
-
pertpy-1.0.
|
56
|
+
pertpy-1.0.3.dist-info/METADATA,sha256=vPEEe65P5kDErs7u0hByiNenDuPG15uqpkYIXhw4hGA,9380
|
57
|
+
pertpy-1.0.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
58
|
+
pertpy-1.0.3.dist-info/licenses/LICENSE,sha256=XuiT2hxeRInhquEIBKMZ5M21n5syhDQ4XbABoposIAg,1100
|
59
|
+
pertpy-1.0.3.dist-info/RECORD,,
|
File without changes
|