scib-metrics 0.5.6__tar.gz → 0.5.7__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.
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/workflows/build.yaml +2 -2
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/workflows/test_linux.yaml +1 -1
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/workflows/test_linux_cuda.yaml +2 -2
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/workflows/test_linux_pre.yaml +1 -1
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/workflows/test_macos.yaml +1 -1
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/workflows/test_macos_m1.yaml +1 -1
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/workflows/test_windows.yaml +1 -1
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.pre-commit-config.yaml +2 -2
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.readthedocs.yaml +1 -1
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/PKG-INFO +2 -2
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/pyproject.toml +2 -2
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/benchmark/_core.py +9 -1
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/test_benchmarker.py +12 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.codecov.yaml +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.cruft.json +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.editorconfig +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.github/workflows/release.yaml +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/.gitignore +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/CHANGELOG.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/LICENSE +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/README.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/Makefile +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/_static/.gitkeep +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/_static/css/custom.css +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/_templates/.gitkeep +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/_templates/autosummary/class.rst +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/_templates/class_no_inherited.rst +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/api.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/changelog.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/conf.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/contributing.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/extensions/.gitkeep +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/extensions/typed_returns.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/index.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/notebooks/large_scale.ipynb +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/notebooks/lung_example.ipynb +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/references.bib +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/references.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/template_usage.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/docs/tutorials.md +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/setup.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/__init__.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/_settings.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/_types.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/benchmark/__init__.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/metrics/__init__.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/metrics/_graph_connectivity.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/metrics/_isolated_labels.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/metrics/_kbet.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/metrics/_lisi.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/metrics/_nmi_ari.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/metrics/_pcr_comparison.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/metrics/_silhouette.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/nearest_neighbors/__init__.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/nearest_neighbors/_dataclass.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/nearest_neighbors/_jax.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/nearest_neighbors/_pynndescent.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/__init__.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/_diffusion_nn.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/_dist.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/_kmeans.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/_lisi.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/_pca.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/_pcr.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/_silhouette.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/utils/_utils.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/__init__.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/test_BRAS_metric.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/test_metrics.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/test_neighbors.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/test_pcr_comparison.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/utils/__init__.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/utils/data.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/utils/sampling.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/utils/test_pca.py +0 -0
- {scib_metrics-0.5.6 → scib_metrics-0.5.7}/tests/utils/test_pcr.py +0 -0
|
@@ -15,10 +15,10 @@ jobs:
|
|
|
15
15
|
runs-on: ubuntu-latest
|
|
16
16
|
steps:
|
|
17
17
|
- uses: actions/checkout@v4
|
|
18
|
-
- name: Set up Python 3.
|
|
18
|
+
- name: Set up Python 3.12
|
|
19
19
|
uses: actions/setup-python@v5
|
|
20
20
|
with:
|
|
21
|
-
python-version: "3.
|
|
21
|
+
python-version: "3.12"
|
|
22
22
|
cache: "pip"
|
|
23
23
|
cache-dependency-path: "**/pyproject.toml"
|
|
24
24
|
- name: Install build dependencies
|
|
@@ -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.12.
|
|
14
|
+
rev: v0.12.12
|
|
15
15
|
hooks:
|
|
16
16
|
- id: ruff
|
|
17
17
|
types_or: [python, pyi, jupyter]
|
|
@@ -19,7 +19,7 @@ repos:
|
|
|
19
19
|
- id: ruff-format
|
|
20
20
|
types_or: [python, pyi, jupyter]
|
|
21
21
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
22
|
-
rev:
|
|
22
|
+
rev: v6.0.0
|
|
23
23
|
hooks:
|
|
24
24
|
- id: detect-private-key
|
|
25
25
|
- id: check-ast
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scib-metrics
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.7
|
|
4
4
|
Summary: Accelerated and Python-only scIB metrics
|
|
5
5
|
Project-URL: Documentation, https://scib-metrics.readthedocs.io/
|
|
6
6
|
Project-URL: Source, https://github.com/yoseflab/scib-metrics
|
|
@@ -37,7 +37,7 @@ License: BSD 3-Clause License
|
|
|
37
37
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
38
38
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
39
39
|
License-File: LICENSE
|
|
40
|
-
Requires-Python: >=3.
|
|
40
|
+
Requires-Python: >=3.11
|
|
41
41
|
Requires-Dist: anndata
|
|
42
42
|
Requires-Dist: chex
|
|
43
43
|
Requires-Dist: igraph>0.9.0
|
|
@@ -5,10 +5,10 @@ requires = ["hatchling"]
|
|
|
5
5
|
|
|
6
6
|
[project]
|
|
7
7
|
name = "scib-metrics"
|
|
8
|
-
version = "0.5.
|
|
8
|
+
version = "0.5.7"
|
|
9
9
|
description = "Accelerated and Python-only scIB metrics"
|
|
10
10
|
readme = "README.md"
|
|
11
|
-
requires-python = ">=3.
|
|
11
|
+
requires-python = ">=3.11"
|
|
12
12
|
license = { file = "LICENSE" }
|
|
13
13
|
authors = [{ name = "Adam Gayoso" }]
|
|
14
14
|
maintainers = [{ name = "Adam Gayoso", email = "adamgayoso@berkeley.edu" }]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import gc
|
|
1
2
|
import os
|
|
2
3
|
import warnings
|
|
3
4
|
from collections.abc import Callable
|
|
@@ -120,6 +121,8 @@ class Benchmarker:
|
|
|
120
121
|
progress_bar
|
|
121
122
|
Whether to show a progress bar for :meth:`~scib_metrics.benchmark.Benchmarker.prepare` and
|
|
122
123
|
:meth:`~scib_metrics.benchmark.Benchmarker.benchmark`.
|
|
124
|
+
solver
|
|
125
|
+
SVD solver to use during PCA. can help stability issues. Choose from: "arpack", "randomized" or "auto"
|
|
123
126
|
|
|
124
127
|
Notes
|
|
125
128
|
-----
|
|
@@ -142,6 +145,7 @@ class Benchmarker:
|
|
|
142
145
|
pre_integrated_embedding_obsm_key: str | None = None,
|
|
143
146
|
n_jobs: int = 1,
|
|
144
147
|
progress_bar: bool = True,
|
|
148
|
+
solver: str = "arpack",
|
|
145
149
|
):
|
|
146
150
|
self._adata = adata
|
|
147
151
|
self._embedding_obsm_keys = embedding_obsm_keys
|
|
@@ -158,6 +162,7 @@ class Benchmarker:
|
|
|
158
162
|
self._n_jobs = n_jobs
|
|
159
163
|
self._progress_bar = progress_bar
|
|
160
164
|
self._compute_neighbors = True
|
|
165
|
+
self._solver = solver
|
|
161
166
|
|
|
162
167
|
if self._bio_conservation_metrics is None and self._batch_correction_metrics is None:
|
|
163
168
|
raise ValueError("Either batch or bio metrics must be defined.")
|
|
@@ -179,11 +184,13 @@ class Benchmarker:
|
|
|
179
184
|
the data and the number of neighbors to compute and return a :class:`~scib_metrics.utils.nearest_neighbors.NeighborsResults`
|
|
180
185
|
object.
|
|
181
186
|
"""
|
|
187
|
+
gc.collect()
|
|
188
|
+
|
|
182
189
|
# Compute PCA
|
|
183
190
|
if self._pre_integrated_embedding_obsm_key is None:
|
|
184
191
|
# This is how scib does it
|
|
185
192
|
# https://github.com/theislab/scib/blob/896f689e5fe8c57502cb012af06bed1a9b2b61d2/scib/metrics/pcr.py#L197
|
|
186
|
-
sc.tl.pca(self._adata, use_highly_variable=False)
|
|
193
|
+
sc.tl.pca(self._adata, svd_solver=self._solver, use_highly_variable=False)
|
|
187
194
|
self._pre_integrated_embedding_obsm_key = "X_pca"
|
|
188
195
|
|
|
189
196
|
for emb_key in self._embedding_obsm_keys:
|
|
@@ -240,6 +247,7 @@ class Benchmarker:
|
|
|
240
247
|
pbar = tqdm(total=num_metrics, desc="Metrics", position=1, leave=False, colour="blue")
|
|
241
248
|
for metric_type, metric_collection in self._metric_collection_dict.items():
|
|
242
249
|
for metric_name, use_metric_or_kwargs in asdict(metric_collection).items():
|
|
250
|
+
gc.collect()
|
|
243
251
|
if use_metric_or_kwargs:
|
|
244
252
|
pbar.set_postfix_str(f"{metric_type}: {metric_name}") if pbar is not None else None
|
|
245
253
|
metric_fn = getattr(scib_metrics, metric_name)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pandas as pd
|
|
2
|
+
import pytest
|
|
2
3
|
|
|
3
4
|
from scib_metrics.benchmark import BatchCorrection, Benchmarker, BioConservation
|
|
4
5
|
from scib_metrics.nearest_neighbors import jax_approx_min_k
|
|
@@ -52,6 +53,7 @@ def test_benchmarker_custom_metric_booleans():
|
|
|
52
53
|
assert "kbet_per_label" not in results.columns
|
|
53
54
|
assert "graph_connectivity" not in results.columns
|
|
54
55
|
assert "ilisi_knn" in results.columns
|
|
56
|
+
assert "bras" in results.columns
|
|
55
57
|
|
|
56
58
|
|
|
57
59
|
def test_benchmarker_custom_metric_callable():
|
|
@@ -80,3 +82,13 @@ def test_benchmarker_custom_near_neighs():
|
|
|
80
82
|
results = bm.get_results()
|
|
81
83
|
assert isinstance(results, pd.DataFrame)
|
|
82
84
|
bm.plot_results_table()
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@pytest.mark.parametrize("solver", ["arpack", "randomized"])
|
|
88
|
+
def test_benchmarker_different_solvers(solver):
|
|
89
|
+
ad, emb_keys, batch_key, labels_key = dummy_benchmarker_adata()
|
|
90
|
+
bm = Benchmarker(ad, batch_key, labels_key, emb_keys, solver=solver)
|
|
91
|
+
bm.benchmark()
|
|
92
|
+
results = bm.get_results()
|
|
93
|
+
assert isinstance(results, pd.DataFrame)
|
|
94
|
+
bm.plot_results_table()
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scib_metrics-0.5.6 → scib_metrics-0.5.7}/src/scib_metrics/nearest_neighbors/_pynndescent.py
RENAMED
|
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
|
|
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
|