lamindb 0.76.2__py3-none-any.whl → 0.76.4__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.
- lamindb/__init__.py +7 -9
- lamindb/_artifact.py +43 -24
- lamindb/_can_validate.py +20 -4
- lamindb/_curate.py +120 -40
- lamindb/_filter.py +7 -21
- lamindb/_finish.py +97 -81
- lamindb/_query_set.py +67 -34
- lamindb/_record.py +3 -2
- lamindb/_transform.py +1 -2
- lamindb/core/__init__.py +2 -2
- lamindb/core/_context.py +24 -14
- lamindb/core/_label_manager.py +1 -3
- lamindb/core/_mapped_collection.py +31 -1
- lamindb/core/exceptions.py +1 -1
- lamindb/core/storage/__init__.py +1 -1
- lamindb/core/storage/_anndata_accessor.py +6 -1
- lamindb/core/storage/_tiledbsoma.py +99 -132
- lamindb/core/versioning.py +4 -0
- lamindb/integrations/__init__.py +3 -0
- lamindb/integrations/_vitessce.py +1 -11
- {lamindb-0.76.2.dist-info → lamindb-0.76.4.dist-info}/METADATA +7 -7
- {lamindb-0.76.2.dist-info → lamindb-0.76.4.dist-info}/RECORD +24 -24
- {lamindb-0.76.2.dist-info → lamindb-0.76.4.dist-info}/LICENSE +0 -0
- {lamindb-0.76.2.dist-info → lamindb-0.76.4.dist-info}/WHEEL +0 -0
lamindb/core/exceptions.py
CHANGED
lamindb/core/storage/__init__.py
CHANGED
@@ -19,7 +19,7 @@ Array accessors.
|
|
19
19
|
from lamindb_setup.core.upath import LocalPathClasses, UPath, infer_filesystem
|
20
20
|
|
21
21
|
from ._backed_access import AnnDataAccessor, BackedAccessor
|
22
|
-
from ._tiledbsoma import
|
22
|
+
from ._tiledbsoma import save_tiledbsoma_experiment
|
23
23
|
from ._valid_suffixes import VALID_SUFFIXES
|
24
24
|
from .objects import infer_suffix, write_to_disk
|
25
25
|
from .paths import delete_storage, load_to_memory
|
@@ -10,7 +10,7 @@ import numpy as np
|
|
10
10
|
import pandas as pd
|
11
11
|
from anndata import AnnData
|
12
12
|
from anndata import __version__ as anndata_version
|
13
|
-
from anndata._core.index import
|
13
|
+
from anndata._core.index import _normalize_indices
|
14
14
|
from anndata._core.views import _resolve_idx
|
15
15
|
from anndata._io.h5ad import read_dataframe_legacy as read_dataframe_legacy_h5
|
16
16
|
from anndata._io.specs.registry import get_spec, read_elem, read_elem_partial
|
@@ -29,6 +29,11 @@ if TYPE_CHECKING:
|
|
29
29
|
|
30
30
|
anndata_version_parse = version.parse(anndata_version)
|
31
31
|
|
32
|
+
if anndata_version_parse < version.parse("0.9.0"):
|
33
|
+
from anndata._core.index import Index
|
34
|
+
else:
|
35
|
+
from anndata.compat import Index
|
36
|
+
|
32
37
|
if anndata_version_parse < version.parse("0.10.0"):
|
33
38
|
if anndata_version_parse < version.parse("0.9.1"):
|
34
39
|
logger.warning(
|
@@ -2,18 +2,19 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
from typing import TYPE_CHECKING, Literal
|
4
4
|
|
5
|
-
from anndata import AnnData
|
5
|
+
from anndata import AnnData, read_h5ad
|
6
6
|
from lamin_utils import logger
|
7
|
+
from lamindb_setup import settings as setup_settings
|
7
8
|
from lamindb_setup.core._settings_storage import get_storage_region
|
8
|
-
from lamindb_setup.core.upath import create_path
|
9
|
-
from lnschema_core import Artifact, Run
|
10
|
-
from upath import UPath
|
9
|
+
from lamindb_setup.core.upath import LocalPathClasses, create_path
|
10
|
+
from lnschema_core import Artifact, Run
|
11
11
|
|
12
12
|
if TYPE_CHECKING:
|
13
13
|
from lamindb_setup.core.types import UPathStr
|
14
14
|
from tiledbsoma import Collection as SOMACollection
|
15
15
|
from tiledbsoma import Experiment as SOMAExperiment
|
16
16
|
from tiledbsoma.io import ExperimentAmbientLabelMapping
|
17
|
+
from upath import UPath
|
17
18
|
|
18
19
|
|
19
20
|
def _read_adata_h5ad_zarr(objpath: UPath):
|
@@ -22,7 +23,12 @@ def _read_adata_h5ad_zarr(objpath: UPath):
|
|
22
23
|
if objpath.is_dir():
|
23
24
|
adata = read_adata_zarr(objpath)
|
24
25
|
else:
|
25
|
-
|
26
|
+
# read only local in backed for now
|
27
|
+
# in principle possible to read remote in backed also
|
28
|
+
if isinstance(objpath, LocalPathClasses):
|
29
|
+
adata = read_h5ad(objpath.as_posix(), backed="r")
|
30
|
+
else:
|
31
|
+
adata = read_adata_h5ad(objpath)
|
26
32
|
return adata
|
27
33
|
|
28
34
|
|
@@ -67,21 +73,41 @@ def _open_tiledbsoma(
|
|
67
73
|
return SOMAType.open(storepath_str, mode=mode, context=ctx)
|
68
74
|
|
69
75
|
|
70
|
-
def
|
71
|
-
|
76
|
+
def save_tiledbsoma_experiment(
|
77
|
+
# Artifact args
|
72
78
|
adatas: list[AnnData | UPathStr],
|
73
|
-
|
74
|
-
|
75
|
-
var_field_name: str,
|
76
|
-
append_obsm_varm: bool = False,
|
79
|
+
key: str | None = None,
|
80
|
+
description: str | None = None,
|
77
81
|
run: Run | None = None,
|
78
|
-
|
79
|
-
|
82
|
+
revises: Artifact | None = None,
|
83
|
+
# tiledbsoma.io.from_anndata args
|
84
|
+
measurement_name: str = "RNA",
|
85
|
+
obs_id_name: str = "obs_id",
|
86
|
+
var_id_name: str = "var_id",
|
87
|
+
append_obsm_varm: bool = False,
|
88
|
+
# additional keyword args for tiledbsoma.io.from_anndata
|
89
|
+
**kwargs,
|
90
|
+
) -> Artifact:
|
91
|
+
"""Write `AnnData` to `tiledbsoma.Experiment`.
|
92
|
+
|
93
|
+
Reads `AnnData` objects, writes them to `tiledbsoma.Experiment`, creates & saves an {class}`~lamindb.Artifact`.
|
80
94
|
|
81
|
-
|
95
|
+
Populates a column `lamin_run_uid` column in `obs` with the current `run.uid`.
|
82
96
|
|
83
|
-
|
84
|
-
<https://tiledbsoma.readthedocs.io/en/latest/_autosummary/tiledbsoma.io.
|
97
|
+
Is based on `tiledbsoma.io.from_anndata
|
98
|
+
<https://tiledbsoma.readthedocs.io/en/latest/_autosummary/tiledbsoma.io.from_anndata.html>`__.
|
99
|
+
|
100
|
+
Args:
|
101
|
+
adatas: `AnnData` objects to write, in-memory or on-disk.
|
102
|
+
key: An optional key to reference the artifact.
|
103
|
+
description: A description.
|
104
|
+
run: The run that creates the artifact.
|
105
|
+
revises: `lamindb.Artifact` with `tiledbsoma.Experiment` to append to.
|
106
|
+
measurement_name: The name of the measurement to store data in `tiledbsoma.Experiment`.
|
107
|
+
obs_id_name: Which `AnnData` `obs` column to use for append mode.
|
108
|
+
var_id_name: Which `AnnData` `var` column to use for append mode.
|
109
|
+
append_obsm_varm: Whether to append `obsm` and `varm` in append mode .
|
110
|
+
**kwargs: Keyword arguments passed to `tiledbsoma.io.from_anndata`.
|
85
111
|
"""
|
86
112
|
try:
|
87
113
|
import tiledbsoma as soma
|
@@ -89,27 +115,36 @@ def register_for_tiledbsoma_store(
|
|
89
115
|
except ImportError as e:
|
90
116
|
raise ImportError("Please install tiledbsoma: pip install tiledbsoma") from e
|
91
117
|
|
92
|
-
|
93
|
-
|
118
|
+
from lamindb.core._data import get_run
|
119
|
+
from lamindb.core.storage.paths import auto_storage_key_from_artifact_uid
|
120
|
+
from lamindb.core.versioning import create_uid
|
121
|
+
|
122
|
+
run = get_run(run)
|
123
|
+
|
124
|
+
appending = revises is not None
|
125
|
+
if appending:
|
126
|
+
storepath = revises.path
|
94
127
|
else:
|
95
|
-
|
128
|
+
uid, _ = create_uid(n_full_id=20)
|
129
|
+
storage_key = auto_storage_key_from_artifact_uid(
|
130
|
+
uid, ".tiledbsoma", is_dir=True
|
131
|
+
)
|
132
|
+
storepath = setup_settings.storage.root / storage_key
|
133
|
+
|
134
|
+
if storepath.protocol == "s3":
|
135
|
+
ctx = soma.SOMATileDBContext(tiledb_config=_tiledb_config_s3(storepath))
|
136
|
+
else:
|
137
|
+
ctx = None
|
138
|
+
|
139
|
+
storepath = storepath.as_posix()
|
96
140
|
|
97
141
|
add_run_uid = True
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
storepath.as_posix(), mode="r", context=ctx
|
105
|
-
) as store:
|
106
|
-
add_run_uid = "lamin_run_uid" in store["obs"].schema.names
|
107
|
-
storepath = storepath.as_posix()
|
108
|
-
|
109
|
-
if add_run_uid:
|
110
|
-
from lamindb.core._data import get_run
|
111
|
-
|
112
|
-
run = get_run(run)
|
142
|
+
if appending:
|
143
|
+
with soma.Experiment.open(storepath, mode="r", context=ctx) as store:
|
144
|
+
add_run_uid = "lamin_run_uid" in store["obs"].schema.names
|
145
|
+
|
146
|
+
if add_run_uid and run is None:
|
147
|
+
raise ValueError("Pass `run`")
|
113
148
|
|
114
149
|
adata_objects = []
|
115
150
|
for adata in adatas:
|
@@ -117,10 +152,9 @@ def register_for_tiledbsoma_store(
|
|
117
152
|
if add_run_uid:
|
118
153
|
if adata.is_view:
|
119
154
|
raise ValueError(
|
120
|
-
"Can not
|
155
|
+
"Can not write an `AnnData` view, please do `adata.copy()` before passing."
|
121
156
|
)
|
122
157
|
else:
|
123
|
-
logger.warning("Mutating in-memory AnnData.")
|
124
158
|
adata.obs["lamin_run_uid"] = run.uid
|
125
159
|
else:
|
126
160
|
adata = _read_adata_h5ad_zarr(create_path(adata))
|
@@ -128,102 +162,35 @@ def register_for_tiledbsoma_store(
|
|
128
162
|
adata.obs["lamin_run_uid"] = run.uid
|
129
163
|
adata_objects.append(adata)
|
130
164
|
|
131
|
-
registration_mapping =
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
return registration_mapping, adata_objects
|
142
|
-
|
143
|
-
|
144
|
-
def write_tiledbsoma_store(
|
145
|
-
store: Artifact | UPathStr,
|
146
|
-
adata: AnnData | UPathStr,
|
147
|
-
run: Run | None = None,
|
148
|
-
artifact_kwargs: dict | None = None,
|
149
|
-
**kwargs,
|
150
|
-
) -> Artifact:
|
151
|
-
"""Write `AnnData` to `tiledbsoma.Experiment`.
|
152
|
-
|
153
|
-
Reads `AnnData`, writes it to `tiledbsoma.Experiment` and creates `lamindb.Artifact`.
|
154
|
-
|
155
|
-
See `tiledbsoma.io.from_h5ad
|
156
|
-
<https://tiledbsoma.readthedocs.io/en/latest/_autosummary/tiledbsoma.io.from_h5ad.html>`__.
|
157
|
-
"""
|
158
|
-
try:
|
159
|
-
import tiledbsoma as soma
|
160
|
-
import tiledbsoma.io as soma_io
|
161
|
-
except ImportError as e:
|
162
|
-
raise ImportError("Please install tiledbsoma: pip install tiledbsoma") from e
|
163
|
-
|
164
|
-
from lamindb.core._data import get_run
|
165
|
-
|
166
|
-
if artifact_kwargs is None:
|
167
|
-
artifact_kwargs = {}
|
168
|
-
|
169
|
-
appending: bool = kwargs.get("registration_mapping", None) is not None
|
170
|
-
store_is_artifact: bool = isinstance(store, Artifact)
|
171
|
-
if store_is_artifact:
|
172
|
-
if not appending:
|
173
|
-
raise ValueError(
|
174
|
-
"Trying to append to an existing store without `registration_mapping`."
|
175
|
-
)
|
176
|
-
storepath = store.path
|
177
|
-
else:
|
178
|
-
storepath = create_path(store)
|
179
|
-
add_run_uid: bool = not appending
|
180
|
-
|
181
|
-
if not isinstance(adata, AnnData):
|
182
|
-
# create_path is used
|
183
|
-
# in case adata is somewhere in our managed s3 bucket or just in s3
|
184
|
-
adata = _read_adata_h5ad_zarr(create_path(adata))
|
185
|
-
elif add_run_uid and adata.is_view:
|
186
|
-
raise ValueError(
|
187
|
-
"Can not write from an `AnnData` view, please do `adata.copy()` before passing."
|
165
|
+
registration_mapping = kwargs.get("registration_mapping", None)
|
166
|
+
if registration_mapping is None and (appending or len(adata_objects) > 1):
|
167
|
+
registration_mapping = soma_io.register_anndatas(
|
168
|
+
experiment_uri=storepath if appending else None,
|
169
|
+
adatas=adata_objects,
|
170
|
+
measurement_name=measurement_name,
|
171
|
+
obs_field_name=obs_id_name,
|
172
|
+
var_field_name=var_id_name,
|
173
|
+
append_obsm_varm=append_obsm_varm,
|
174
|
+
context=ctx,
|
188
175
|
)
|
189
176
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
if add_run_uid:
|
203
|
-
del adata.obs["lamin_run_uid"]
|
177
|
+
for adata_obj in adata_objects:
|
178
|
+
soma_io.from_anndata(
|
179
|
+
storepath,
|
180
|
+
adata_obj,
|
181
|
+
measurement_name,
|
182
|
+
context=ctx,
|
183
|
+
obs_id_name=obs_id_name,
|
184
|
+
var_id_name=var_id_name,
|
185
|
+
registration_mapping=registration_mapping,
|
186
|
+
**kwargs,
|
187
|
+
)
|
204
188
|
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
)
|
214
|
-
|
215
|
-
storage = check_path_in_existing_storage(storepath)
|
216
|
-
if isinstance(storage, Storage):
|
217
|
-
search_by_key = get_relative_path_to_directory(
|
218
|
-
path=storepath, directory=UPath(storage.root)
|
219
|
-
).as_posix()
|
220
|
-
revises = Artifact.filter(
|
221
|
-
key=search_by_key, is_latest=True, _key_is_virtual=False
|
222
|
-
).one_or_none()
|
223
|
-
if revises is not None:
|
224
|
-
logger.info(f"Assuming it is a new version of {revises}.")
|
225
|
-
|
226
|
-
if revises is None:
|
227
|
-
return Artifact(storepath, run=run, **artifact_kwargs)
|
228
|
-
else:
|
229
|
-
return Artifact(storepath, run=run, revises=revises, **artifact_kwargs)
|
189
|
+
return Artifact(
|
190
|
+
storepath,
|
191
|
+
key=key,
|
192
|
+
description=description,
|
193
|
+
run=run,
|
194
|
+
revises=revises,
|
195
|
+
_is_internal_call=True,
|
196
|
+
).save()
|
lamindb/core/versioning.py
CHANGED
@@ -99,6 +99,10 @@ def create_uid(
|
|
99
99
|
n_full_id: int = 20,
|
100
100
|
revises: IsVersioned | None = None,
|
101
101
|
) -> tuple[str, IsVersioned | None]:
|
102
|
+
"""This also updates revises in case it's not the latest version.
|
103
|
+
|
104
|
+
This is why it returns revises.
|
105
|
+
"""
|
102
106
|
if revises is not None:
|
103
107
|
if not revises.is_latest:
|
104
108
|
# need one more request
|
lamindb/integrations/__init__.py
CHANGED
@@ -56,22 +56,12 @@ def save_vitessce_config(
|
|
56
56
|
raise ValueError("Each file must have a 'url' key.")
|
57
57
|
s3_path = file["url"]
|
58
58
|
s3_path_last_element = s3_path.split("/")[-1]
|
59
|
-
# note 1: the following parses the stem uid of the artifact from the S3 path
|
60
|
-
# there might be a better way of doing this in case the vitessce config
|
61
|
-
# gets updated in the future; but given these paths are set in stone
|
62
|
-
# this should be more robust than it looks
|
63
|
-
#
|
64
|
-
# note 2: what's not great is the fact that people might use composite suffixes we don't recognize
|
65
|
-
# I don't know what to do about it other than documenting it clearly
|
66
|
-
# https://github.com/laminlabs/lamindb/blob/main/lamindb/core/storage/_valid_suffixes.py
|
67
|
-
# https://docs.lamin.ai/lamindb.core.storage.valid_suffixes
|
68
|
-
#
|
69
59
|
# now start with attempting to strip the composite suffix candidates
|
70
60
|
for suffix in valid_composite_zarr_suffixes:
|
71
61
|
s3_path_last_element = s3_path_last_element.replace(suffix, "")
|
72
62
|
# in case there was no hit, strip plain ".zarr"
|
73
63
|
artifact_stem_uid = s3_path_last_element.replace(".zarr", "")
|
74
|
-
# if there is still a "." in string,
|
64
|
+
# if there is still a "." in string, raise an error
|
75
65
|
if "." in artifact_stem_uid:
|
76
66
|
raise ValueError(
|
77
67
|
f"Suffix should be '.zarr' or one of {valid_composite_zarr_suffixes}. Inspect your path {s3_path}"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lamindb
|
3
|
-
Version: 0.76.
|
3
|
+
Version: 0.76.4
|
4
4
|
Summary: A data framework for biology.
|
5
5
|
Author-email: Lamin Labs <open-source@lamin.ai>
|
6
6
|
Requires-Python: >=3.8
|
@@ -9,22 +9,22 @@ Classifier: Programming Language :: Python :: 3.8
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.9
|
10
10
|
Classifier: Programming Language :: Python :: 3.10
|
11
11
|
Classifier: Programming Language :: Python :: 3.11
|
12
|
-
Requires-Dist: lnschema_core==0.73.
|
13
|
-
Requires-Dist: lamindb_setup==0.76.
|
12
|
+
Requires-Dist: lnschema_core==0.73.5
|
13
|
+
Requires-Dist: lamindb_setup==0.76.8
|
14
14
|
Requires-Dist: lamin_utils==0.13.4
|
15
|
-
Requires-Dist: lamin_cli==0.
|
15
|
+
Requires-Dist: lamin_cli==0.17.0
|
16
16
|
Requires-Dist: rapidfuzz
|
17
17
|
Requires-Dist: pyarrow
|
18
18
|
Requires-Dist: typing_extensions!=4.6.0
|
19
19
|
Requires-Dist: python-dateutil
|
20
|
-
Requires-Dist: anndata>=0.8.0,<=0.10.
|
20
|
+
Requires-Dist: anndata>=0.8.0,<=0.10.9
|
21
21
|
Requires-Dist: scipy<1.13.0rc1
|
22
22
|
Requires-Dist: fsspec
|
23
23
|
Requires-Dist: pandas
|
24
24
|
Requires-Dist: graphviz
|
25
25
|
Requires-Dist: psycopg2-binary
|
26
26
|
Requires-Dist: lamindb_setup[aws] ; extra == "aws"
|
27
|
-
Requires-Dist: bionty==0.
|
27
|
+
Requires-Dist: bionty==0.49.1 ; extra == "bionty"
|
28
28
|
Requires-Dist: pre-commit ; extra == "dev"
|
29
29
|
Requires-Dist: nox ; extra == "dev"
|
30
30
|
Requires-Dist: laminci>=0.3 ; extra == "dev"
|
@@ -38,7 +38,7 @@ Requires-Dist: django-schema-graph ; extra == "erdiagram"
|
|
38
38
|
Requires-Dist: readfcs>=1.1.8 ; extra == "fcs"
|
39
39
|
Requires-Dist: lamindb_setup[gcp] ; extra == "gcp"
|
40
40
|
Requires-Dist: nbproject==0.10.4 ; extra == "jupyter"
|
41
|
-
Requires-Dist:
|
41
|
+
Requires-Dist: jupytext ; extra == "jupyter"
|
42
42
|
Requires-Dist: nbconvert ; extra == "jupyter"
|
43
43
|
Requires-Dist: zarr>=2.16.0 ; extra == "zarr"
|
44
44
|
Project-URL: Home, https://github.com/laminlabs/lamindb
|
@@ -1,47 +1,47 @@
|
|
1
|
-
lamindb/__init__.py,sha256=
|
2
|
-
lamindb/_artifact.py,sha256=
|
3
|
-
lamindb/_can_validate.py,sha256=
|
1
|
+
lamindb/__init__.py,sha256=faIPIM0ynMz0AU9pziDSQJT-rQhUXqpJ3PWRlmijqbs,2319
|
2
|
+
lamindb/_artifact.py,sha256=QjCge5kaAcfhGv84s299OT99LmHTSYDxgzw5kN-x3-8,44416
|
3
|
+
lamindb/_can_validate.py,sha256=9di9FLmC2m3dpT42sceF34UEFzQITi2e_hjVMa8DIc4,18261
|
4
4
|
lamindb/_collection.py,sha256=F_VgpLBprrzUQ-tPngWvO9vFd7jX66MVwIi031JOris,14871
|
5
|
-
lamindb/_curate.py,sha256=
|
5
|
+
lamindb/_curate.py,sha256=gCbDiqhsJzVZZ6BuEoFXUpsNOffpUNDlrX1dJiOqJJo,58753
|
6
6
|
lamindb/_feature.py,sha256=nZhtrH0ssoNls-hV-dkwfK9sKypg2El59R9qfarxfUE,5340
|
7
7
|
lamindb/_feature_set.py,sha256=DmAy96V_RyV0yiyvWOCHgustXPsCaMwn4TrWwh2qDd8,8104
|
8
|
-
lamindb/_filter.py,sha256=
|
9
|
-
lamindb/_finish.py,sha256=
|
8
|
+
lamindb/_filter.py,sha256=9QHa9J-_6QeYPQATZpTun2VGiFofwzB0Km-KnKajHcM,663
|
9
|
+
lamindb/_finish.py,sha256=NEZmTW7sWzwi-QYTwVgoOeeD-pZxWBrZOITK_YoJreU,9434
|
10
10
|
lamindb/_from_values.py,sha256=8kYpR8Q85EOaTcsPGjVHeZh29fGVgum5OEQf4Hsz_80,13533
|
11
11
|
lamindb/_is_versioned.py,sha256=5lAnhTboltFkZCKVRV1uxkm0OCjJz_HKi3yQq_vEuMs,1306
|
12
12
|
lamindb/_parents.py,sha256=eMavdd6IO6STOVJSlR2TzdRtx6sKYDKsMOtlR3DZlgQ,15599
|
13
13
|
lamindb/_query_manager.py,sha256=Ipe85HL31DDwMbC8CN_1Svbwk48a_DUh_INGQdZL08I,4222
|
14
|
-
lamindb/_query_set.py,sha256=
|
15
|
-
lamindb/_record.py,sha256=
|
14
|
+
lamindb/_query_set.py,sha256=BiGvEiaBSd9aV28EAy83Q8h6RLsYMDjfxLOljAcyMaM,12692
|
15
|
+
lamindb/_record.py,sha256=53_0oU6v45V5gIDJgkAUSX7iIV5Si_4cuOWUHJa8JVo,21241
|
16
16
|
lamindb/_run.py,sha256=5M_r1zGDv9HlqbqRKTWCYCOtENovJ-8mQ4kY7XqcLaU,1888
|
17
17
|
lamindb/_save.py,sha256=Fu7Z84btKOXfTfpunKLni21s5ER2zIllqg5e3nPq-0A,10910
|
18
18
|
lamindb/_storage.py,sha256=GBVChv-DHVMNEBJL5l_JT6B4RDhZ6NnwgzmUICphYKk,413
|
19
|
-
lamindb/_transform.py,sha256=
|
19
|
+
lamindb/_transform.py,sha256=Rgj8uq6t4NpyP7DtQ-0IRJs7vSEKHyWftY5dvwKNFgs,4063
|
20
20
|
lamindb/_ulabel.py,sha256=XDSdZBXX_ki5s1vOths3MjF2x5DPggBR_PV_KF4SGyg,1611
|
21
21
|
lamindb/_utils.py,sha256=LGdiW4k3GClLz65vKAVRkL6Tw-Gkx9DWAdez1jyA5bE,428
|
22
22
|
lamindb/_view.py,sha256=4Ln2ItTb3857PAI-70O8eJYqoTJ_NNFc7E_wds6OGns,2412
|
23
|
-
lamindb/core/__init__.py,sha256=
|
24
|
-
lamindb/core/_context.py,sha256=
|
23
|
+
lamindb/core/__init__.py,sha256=hxPWM_Jnrllx0G_6itEGU2meXwptkkgiL9zsBvlhHM4,1495
|
24
|
+
lamindb/core/_context.py,sha256=U-vmMH4s0ZfvS6KBRj5mOsOFuvcioJ7FgUdn0OOkLvA,19972
|
25
25
|
lamindb/core/_data.py,sha256=eocOXsZGu62LPtz6yIlvHhPSJTf3yF2ITZTffyflWYI,16269
|
26
26
|
lamindb/core/_feature_manager.py,sha256=94tX6gq_Rx7fkDARQBxB2z92qUDpHocFSAdKv5izMT4,32490
|
27
|
-
lamindb/core/_label_manager.py,sha256=
|
28
|
-
lamindb/core/_mapped_collection.py,sha256=
|
27
|
+
lamindb/core/_label_manager.py,sha256=zCE-PS1Y5ALpzoSOx1P6ZTFVPgFNRAmmyTQF0e8QBXA,9131
|
28
|
+
lamindb/core/_mapped_collection.py,sha256=1XzratL2IvRleqioNhWo26Lsuqkev8-HEImmHQxw9Kw,23266
|
29
29
|
lamindb/core/_settings.py,sha256=GGEB8BU5GinIfD4ktr1Smp6GPHGaInu46MhP4EecZDY,5950
|
30
30
|
lamindb/core/_sync_git.py,sha256=qc0yfPyKeG4uuNT_3qsv-mkIMqhLFqfXNeNVO49vV00,4547
|
31
31
|
lamindb/core/_track_environment.py,sha256=STzEVUzOeUEWdX7WDJUkKH4u08k7eupRX6AXQwoVt14,828
|
32
|
-
lamindb/core/exceptions.py,sha256=
|
32
|
+
lamindb/core/exceptions.py,sha256=TKyt1JOUwWIHbkCQjir_LQadf8960eQ95RWhSpz5_Bk,1288
|
33
33
|
lamindb/core/fields.py,sha256=47Jmh3efUr5ZscgimR_yckY-I3cNf8ScLutbwKCK3j4,162
|
34
34
|
lamindb/core/schema.py,sha256=KiYQn_8fokSMztTNDe6qUocZzKXWxU32H-YChNJv51A,1877
|
35
35
|
lamindb/core/types.py,sha256=uVBqSVLoQaTkqP9nqsJhwU6yYnx8H5e6-ZxrB6vpOOw,265
|
36
|
-
lamindb/core/versioning.py,sha256=
|
36
|
+
lamindb/core/versioning.py,sha256=GYhgSA6IOlWMMNfctZu7U_jIvmQP2gdvsZxn4bTanOc,5277
|
37
37
|
lamindb/core/datasets/__init__.py,sha256=zRP98oqUAaXhqWyKMiH0s_ImVIuNeziQQ2kQ_t0f-DI,1353
|
38
38
|
lamindb/core/datasets/_core.py,sha256=CgVF_pXuBXLElzubDMsl1DbpYOnXCY0HleITVvBKih4,19873
|
39
39
|
lamindb/core/datasets/_fake.py,sha256=BZF9R_1iF0HDnvtZNqL2FtsjSMuqDIfuFxnw_LJYIh4,953
|
40
|
-
lamindb/core/storage/__init__.py,sha256=
|
41
|
-
lamindb/core/storage/_anndata_accessor.py,sha256=
|
40
|
+
lamindb/core/storage/__init__.py,sha256=x-Bpxv1rx6uGog-chI0fdpt0UhkXQkwoQqye0TNk0WQ,514
|
41
|
+
lamindb/core/storage/_anndata_accessor.py,sha256=F3ze8ICG7K4BKueg-766olnoEA8Eh8gVrvDSSE2FX-M,24160
|
42
42
|
lamindb/core/storage/_anndata_sizes.py,sha256=aXO3OB--tF5MChenSsigW6Q-RuE8YJJOUTVukkLrv9A,1029
|
43
43
|
lamindb/core/storage/_backed_access.py,sha256=YcWCeT2eligJGsBdjJS_-4el_eC9J088jxUWG9lsleM,3231
|
44
|
-
lamindb/core/storage/_tiledbsoma.py,sha256=
|
44
|
+
lamindb/core/storage/_tiledbsoma.py,sha256=OVDjvu4lRovRtWcn9Tu3N5tA-zbF8snsjkR4DOXOTTc,7001
|
45
45
|
lamindb/core/storage/_valid_suffixes.py,sha256=vUSeQ4s01rdhD_vSd6wKmFBsgMJAKkBMnL_T9Y1znMg,501
|
46
46
|
lamindb/core/storage/_zarr.py,sha256=5ceEz6YIvgvUnVVNWhK5Z4W0WfrvyvY82Yna5jSX1_E,3661
|
47
47
|
lamindb/core/storage/objects.py,sha256=OzvBCS-Urz5mr-O95qYt6RGBDDX5HmjfRRKWPPDn1ZE,1797
|
@@ -49,11 +49,11 @@ lamindb/core/storage/paths.py,sha256=woOrjtBhNnzm8DjF262ipwyZaQ_A-7MT2ZPoiefAfYk
|
|
49
49
|
lamindb/core/subsettings/__init__.py,sha256=KFHPzIE7f7Bj4RgMjGQF4CjTdHVG_VNFBrCndo49ixo,198
|
50
50
|
lamindb/core/subsettings/_creation_settings.py,sha256=54mfMH_osC753hpxcl7Dq1rwBD2LHnWveXtQpkLBITE,1194
|
51
51
|
lamindb/core/subsettings/_transform_settings.py,sha256=4YbCuZtJo6zdytl6UQR4GvdDkTtT6SRBqVzofGzNOt8,583
|
52
|
-
lamindb/integrations/__init__.py,sha256=
|
53
|
-
lamindb/integrations/_vitessce.py,sha256=
|
52
|
+
lamindb/integrations/__init__.py,sha256=RWGMYYIzr8zvmNPyVB4m-p4gMDhxdRbjES2Ed23OItw,215
|
53
|
+
lamindb/integrations/_vitessce.py,sha256=4DM_EXe-o7BVmX7QGTiwREWMHDzAtOqpqDvL70xQKfE,4451
|
54
54
|
lamindb/setup/__init__.py,sha256=OwZpZzPDv5lPPGXZP7-zK6UdO4FHvvuBh439yZvIp3A,410
|
55
55
|
lamindb/setup/core/__init__.py,sha256=SevlVrc2AZWL3uALbE5sopxBnIZPWZ1IB0NBDudiAL8,167
|
56
|
-
lamindb-0.76.
|
57
|
-
lamindb-0.76.
|
58
|
-
lamindb-0.76.
|
59
|
-
lamindb-0.76.
|
56
|
+
lamindb-0.76.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
57
|
+
lamindb-0.76.4.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
58
|
+
lamindb-0.76.4.dist-info/METADATA,sha256=X_O43XFARj0Vg5pAgez5uCI4IQG5jUp6cqd_pMAc0YQ,2372
|
59
|
+
lamindb-0.76.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|