lamindb 0.58.0__tar.gz → 0.58.1__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.
- {lamindb-0.58.0 → lamindb-0.58.1}/PKG-INFO +3 -3
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/changelog.md +8 -0
- lamindb-0.58.1/docs/faq/delete.ipynb +191 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/validator.ipynb +55 -10
- lamindb-0.58.1/docs/faq/visibility.ipynb +205 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq.md +2 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/storage/add-replace-stage.ipynb +3 -3
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/storage/upload.ipynb +4 -4
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/tutorial.ipynb +6 -2
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/validate.ipynb +16 -10
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/__init__.py +1 -1
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_dataset.py +43 -6
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_file.py +51 -13
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_filter.py +12 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_query_set.py +2 -4
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_registry.py +20 -7
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_save.py +5 -3
- {lamindb-0.58.0 → lamindb-0.58.1}/pyproject.toml +2 -2
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/changelog.md +6 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/__main__.py +2 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_init_instance.py +4 -2
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_load_instance.py +59 -4
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_notebook.py +3 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_hub_core.py +64 -23
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_hub_crud.py +15 -2
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_hub_utils.py +1 -1
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/noxfile.py +6 -2
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/hub-local/test_all.py +12 -2
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-staging/test_init_instance.py +1 -2
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-staging/test_load_instance.py +22 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/test_vault.py +48 -47
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/CHANGELOG.md +2 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
- lamindb-0.58.1/sub/lnschema-core/lnschema_core/migrations/0026_dataset_visibility_file_visibility.py +22 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/models.py +46 -12
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/types.py +7 -1
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_cache.py +3 -3
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_dataset.py +20 -18
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_feature.py +1 -1
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_feature_manager.py +4 -4
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_file.py +13 -13
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_label_manager.py +2 -2
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_registry.py +6 -6
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_save.py +1 -1
- lamindb-0.58.1/tests/test_visibility.py +35 -0
- lamindb-0.58.0/sub/lnschema-bionty/.github/workflows/build.yml +0 -51
- lamindb-0.58.0/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -25
- lamindb-0.58.0/sub/lnschema-bionty/.gitignore +0 -119
- lamindb-0.58.0/sub/lnschema-bionty/.pre-commit-config.yaml +0 -65
- lamindb-0.58.0/sub/lnschema-bionty/README.md +0 -5
- lamindb-0.58.0/sub/lnschema-bionty/docs/changelog.md +0 -173
- lamindb-0.58.0/sub/lnschema-bionty/docs/index.md +0 -11
- lamindb-0.58.0/sub/lnschema-bionty/docs/reference.md +0 -5
- lamindb-0.58.0/sub/lnschema-bionty/lamin-project.yaml +0 -5
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/__init__.py +0 -120
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -121
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/dev/__init__.py +0 -10
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/dev/_settings.py +0 -62
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -71
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +0 -766
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py +0 -549
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +0 -46
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +0 -85
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +0 -151
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +0 -137
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -60
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +0 -67
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +0 -82
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +0 -17
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +0 -17
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +0 -93
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +0 -17
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -43
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +0 -163
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +0 -123
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +0 -53
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +0 -64
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +0 -132
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +0 -77
- lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/models.py +0 -1268
- lamindb-0.58.0/sub/lnschema-bionty/noxfile.py +0 -20
- lamindb-0.58.0/sub/lnschema-bionty/pyproject.toml +0 -46
- lamindb-0.58.0/sub/lnschema-bionty/tests/test_integrity.py +0 -13
- lamindb-0.58.0/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -2
- lamindb-0.58.0/sub/lnschema-core/LICENSE +0 -201
- lamindb-0.58.0/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/.github/workflows/build.yml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/.gitignore +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/.gitmodules +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/.pre-commit-config.yaml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/LICENSE +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/README.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/bio-registries.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/bionty.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/data.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/acid.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/idempotency.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/import-schema.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/notebooks.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/setup.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/test_notebooks.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/features-lamindb.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/features-laminhub.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/guide.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/index.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/installation.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/introduction.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/lamin-utils.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/lamindb.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/lnschema-bionty.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/meta.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/nbproject.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/query-search.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/readfcs.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/reference.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/schemas.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/setup.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/signup-login.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/storage/test-files/iris.data +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/storage/test_notebooks.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/storage.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/test_notebooks.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/transfer.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/docs/tutorial2.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_delete.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_feature.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_feature_set.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_from_values.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_parents.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_query_manager.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_run.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_storage.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_transform.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_ulabel.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_utils.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_validate.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/_view.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/__init__.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/_data.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/_feature_manager.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/_label_manager.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/_priors.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/_run_context.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/_settings.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/datasets/__init__.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/datasets/_core.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/datasets/_fake.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/exceptions.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/fields.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/hashing.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/storage/__init__.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/storage/_anndata_sizes.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/storage/_backed_access.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/storage/_zarr.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/storage/file.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/storage/object.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/types.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/dev/versioning.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/setup/__init__.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/lamindb/setup/dev/__init__.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/noxfile.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/README.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/notebooks.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-only/test-cache-management.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-only/test-empty-init.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-only/test-import-schema.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-only/test-insufficient-user-info.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-only/test-load-lock.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-only/test-sqlite-sync.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-only/test_notebooks2.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-staging/01-init-instance.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-staging/02-load-instance.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-staging/03-set-storage.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-staging/04-test-bionty.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-staging/test-multi-session.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/prod-staging/test_notebooks.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_check_instance_setup.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_docstrings.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_export.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_info.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_init_vault.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_set.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_settings.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/__init__.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_deprecated.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_docs.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_hub_client.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_instance.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_load.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_save.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_storage.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_store.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_user.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/_setup_bionty_sources.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/cloud_sqlite_locker.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/django.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/lamindb_setup/dev/upath.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/notebooks/conftest.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/notebooks/test-notebooks/no-title.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/notebooks/test-notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/notebooks/test-notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/notebooks/test-notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/notebooks/test.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-only/conftest.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-only/test_cli.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-only/test_django.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-only/test_switch_and_fallback_env.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-staging/test_delete_instance.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-staging/test_login.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-staging/test_migrate.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/prod-staging/test_set_storage.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lamindb-setup/tests/test_load_persistent_instance.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/.github/workflows/build.yml +0 -0
- {lamindb-0.58.0/sub/lnschema-bionty → lamindb-0.58.1/sub/lnschema-core}/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/.gitignore +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
- {lamindb-0.58.0/sub/lnschema-bionty → lamindb-0.58.1/sub/lnschema-core}/LICENSE +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/README.md +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/ids.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -0
- {lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty → lamindb-0.58.1/sub/lnschema-core/lnschema_core}/migrations/__init__.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/lnschema_core/users.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/noxfile.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/pyproject.toml +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/sub/lnschema-core/tests/test_integrity.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/conftest.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_data.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_db.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_delete.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_feature_set.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_from_values.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_hashing.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_manager.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_parents.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_queryset.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_run.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_run_context.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_settings.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_storage.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_transfer.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_transform.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_ulabel.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_validate.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_versioning.py +0 -0
- {lamindb-0.58.0 → lamindb-0.58.1}/tests/test_view.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lamindb
|
3
|
-
Version: 0.58.
|
3
|
+
Version: 0.58.1
|
4
4
|
Summary: A data framework for biology.
|
5
5
|
Author-email: Lamin Labs <open-source@lamin.ai>
|
6
6
|
Requires-Python: >=3.8
|
@@ -8,8 +8,8 @@ Description-Content-Type: text/markdown
|
|
8
8
|
Classifier: Programming Language :: Python :: 3.8
|
9
9
|
Classifier: Programming Language :: Python :: 3.9
|
10
10
|
Classifier: Programming Language :: Python :: 3.10
|
11
|
-
Requires-Dist: lnschema_core==0.
|
12
|
-
Requires-Dist: lamindb_setup==0.
|
11
|
+
Requires-Dist: lnschema_core==0.53.0
|
12
|
+
Requires-Dist: lamindb_setup==0.56.3
|
13
13
|
Requires-Dist: lamin_utils==0.11.5
|
14
14
|
Requires-Dist: rapidfuzz
|
15
15
|
Requires-Dist: pyarrow
|
@@ -7,6 +7,14 @@
|
|
7
7
|
|
8
8
|
## 0.58
|
9
9
|
|
10
|
+
### 0.58.1 {small}`2023-10-26`
|
11
|
+
|
12
|
+
- 🔒️ Re-enable read-only access for public instances [PR1257](https://github.com/laminlabs/lamindb/pull/1257) [@falexwolf](https://github.com/falexwolf)
|
13
|
+
- ✨ Introduce `visibility` to `File` and `Dataset` [PR1254](https://github.com/laminlabs/lamindb/pull/1254) [@sunnyosun](https://github.com/sunnyosun)
|
14
|
+
- 🔒️ Enable to pass DB URLs during load [PR1256](https://github.com/laminlabs/lamindb/pull/1256) [@falexwolf](https://github.com/falexwolf)
|
15
|
+
- ✨ Enable passing filter expressions to lookup and search [PR1255](https://github.com/laminlabs/lamindb/pull/1255) [@sunnyosun](https://github.com/sunnyosun)
|
16
|
+
- ♻️ Use `file.uid` instead of `file.id` in `dataset.load()` [PR1250](https://github.com/laminlabs/lamindb/pull/1250) [@falexwolf](https://github.com/falexwolf)
|
17
|
+
|
10
18
|
### 0.58.0 {small}`2023-10-24`
|
11
19
|
|
12
20
|
- ⚡️ Speed up dataset creation in presence of millions of feature links [PR1248](https://github.com/laminlabs/lamindb/pull/1248) [@falexwolf](https://github.com/falexwolf)
|
@@ -0,0 +1,191 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "markdown",
|
5
|
+
"metadata": {},
|
6
|
+
"source": [
|
7
|
+
"# How to delete records?\n",
|
8
|
+
"\n",
|
9
|
+
"Registry records can be deleted with `record.delete()`, which will **permanently remove** them from your database.\n",
|
10
|
+
"\n",
|
11
|
+
"When it comes to **records of `File` and `Dataset`**, they are **\"moved into trash\"** when you first call `record.delete()`.\n",
|
12
|
+
"- Trashed records are invisible in the UI and excluded from the query results, see [visibility faq](/faq/visibility).\n",
|
13
|
+
"- If a record is already in the trash or `permanent=True` is passed, calling `record.delete()` triggers permanent delete.\n",
|
14
|
+
"- During permanent deletion of a record, its file in storage is also deleted unless it has a semantic `key`."
|
15
|
+
]
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"cell_type": "markdown",
|
19
|
+
"metadata": {},
|
20
|
+
"source": [
|
21
|
+
"## Setup"
|
22
|
+
]
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"cell_type": "code",
|
26
|
+
"execution_count": null,
|
27
|
+
"metadata": {},
|
28
|
+
"outputs": [],
|
29
|
+
"source": [
|
30
|
+
"!lamin init --storage test-delete"
|
31
|
+
]
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"cell_type": "code",
|
35
|
+
"execution_count": null,
|
36
|
+
"metadata": {},
|
37
|
+
"outputs": [],
|
38
|
+
"source": [
|
39
|
+
"import lamindb as ln\n",
|
40
|
+
"import pandas as pd"
|
41
|
+
]
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"cell_type": "code",
|
45
|
+
"execution_count": null,
|
46
|
+
"metadata": {},
|
47
|
+
"outputs": [],
|
48
|
+
"source": [
|
49
|
+
"file = ln.File(pd.DataFrame({\"a\": [1, 2], \"b\": [3, 4]}), description=\"mydf\")\n",
|
50
|
+
"file.save()"
|
51
|
+
]
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"cell_type": "code",
|
55
|
+
"execution_count": null,
|
56
|
+
"metadata": {},
|
57
|
+
"outputs": [],
|
58
|
+
"source": [
|
59
|
+
"ln.File.filter().df()"
|
60
|
+
]
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"cell_type": "markdown",
|
64
|
+
"metadata": {},
|
65
|
+
"source": [
|
66
|
+
"## Trash a file"
|
67
|
+
]
|
68
|
+
},
|
69
|
+
{
|
70
|
+
"cell_type": "code",
|
71
|
+
"execution_count": null,
|
72
|
+
"metadata": {},
|
73
|
+
"outputs": [],
|
74
|
+
"source": [
|
75
|
+
"file.delete()"
|
76
|
+
]
|
77
|
+
},
|
78
|
+
{
|
79
|
+
"cell_type": "markdown",
|
80
|
+
"metadata": {},
|
81
|
+
"source": [
|
82
|
+
"No longer visible:"
|
83
|
+
]
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"cell_type": "code",
|
87
|
+
"execution_count": null,
|
88
|
+
"metadata": {},
|
89
|
+
"outputs": [],
|
90
|
+
"source": [
|
91
|
+
"ln.File.filter().df()"
|
92
|
+
]
|
93
|
+
},
|
94
|
+
{
|
95
|
+
"cell_type": "markdown",
|
96
|
+
"metadata": {},
|
97
|
+
"source": [
|
98
|
+
"But the file still exists in the database, you can find it by not filtering for visibility:"
|
99
|
+
]
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"cell_type": "code",
|
103
|
+
"execution_count": null,
|
104
|
+
"metadata": {},
|
105
|
+
"outputs": [],
|
106
|
+
"source": [
|
107
|
+
"ln.File.filter(visibility=None).df()"
|
108
|
+
]
|
109
|
+
},
|
110
|
+
{
|
111
|
+
"cell_type": "markdown",
|
112
|
+
"metadata": {},
|
113
|
+
"source": [
|
114
|
+
"You can restore a file from trash:"
|
115
|
+
]
|
116
|
+
},
|
117
|
+
{
|
118
|
+
"cell_type": "code",
|
119
|
+
"execution_count": null,
|
120
|
+
"metadata": {},
|
121
|
+
"outputs": [],
|
122
|
+
"source": [
|
123
|
+
"file.restore()"
|
124
|
+
]
|
125
|
+
},
|
126
|
+
{
|
127
|
+
"cell_type": "code",
|
128
|
+
"execution_count": null,
|
129
|
+
"metadata": {},
|
130
|
+
"outputs": [],
|
131
|
+
"source": [
|
132
|
+
"ln.File.filter().df()"
|
133
|
+
]
|
134
|
+
},
|
135
|
+
{
|
136
|
+
"cell_type": "markdown",
|
137
|
+
"metadata": {},
|
138
|
+
"source": [
|
139
|
+
"## Permanent delete\n",
|
140
|
+
"\n",
|
141
|
+
"Calling `file.delete` on a trashed file triggers a permanent delete dialog. You can pass `permanent=True` to auto-confirm the deletion."
|
142
|
+
]
|
143
|
+
},
|
144
|
+
{
|
145
|
+
"cell_type": "code",
|
146
|
+
"execution_count": null,
|
147
|
+
"metadata": {},
|
148
|
+
"outputs": [],
|
149
|
+
"source": [
|
150
|
+
"file.delete(permanent=True)"
|
151
|
+
]
|
152
|
+
},
|
153
|
+
{
|
154
|
+
"cell_type": "markdown",
|
155
|
+
"metadata": {},
|
156
|
+
"source": [
|
157
|
+
"Now its gone in the database:"
|
158
|
+
]
|
159
|
+
},
|
160
|
+
{
|
161
|
+
"cell_type": "code",
|
162
|
+
"execution_count": null,
|
163
|
+
"metadata": {},
|
164
|
+
"outputs": [],
|
165
|
+
"source": [
|
166
|
+
"ln.File.filter(visibility=None).df()"
|
167
|
+
]
|
168
|
+
}
|
169
|
+
],
|
170
|
+
"metadata": {
|
171
|
+
"kernelspec": {
|
172
|
+
"display_name": "py39",
|
173
|
+
"language": "python",
|
174
|
+
"name": "python3"
|
175
|
+
},
|
176
|
+
"language_info": {
|
177
|
+
"codemirror_mode": {
|
178
|
+
"name": "ipython",
|
179
|
+
"version": 3
|
180
|
+
},
|
181
|
+
"file_extension": ".py",
|
182
|
+
"mimetype": "text/x-python",
|
183
|
+
"name": "python",
|
184
|
+
"nbconvert_exporter": "python",
|
185
|
+
"pygments_lexer": "ipython3",
|
186
|
+
"version": "3.9.16"
|
187
|
+
}
|
188
|
+
},
|
189
|
+
"nbformat": 4,
|
190
|
+
"nbformat_minor": 2
|
191
|
+
}
|
@@ -4,7 +4,23 @@
|
|
4
4
|
"cell_type": "markdown",
|
5
5
|
"metadata": {},
|
6
6
|
"source": [
|
7
|
-
"#
|
7
|
+
"# How do I create custom validators?"
|
8
|
+
]
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"cell_type": "markdown",
|
12
|
+
"metadata": {},
|
13
|
+
"source": [
|
14
|
+
"Here, we will extend the basic [validation guide](/validate) to enforce more constraints with dictionary-like validators.\n",
|
15
|
+
"\n",
|
16
|
+
"This is similar to what is enforced by the CZ CELLxGENE data portal, see [here](https://github.com/chanzuckerberg/single-cell-curation)."
|
17
|
+
]
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"cell_type": "markdown",
|
21
|
+
"metadata": {},
|
22
|
+
"source": [
|
23
|
+
"## Setup"
|
8
24
|
]
|
9
25
|
},
|
10
26
|
{
|
@@ -26,9 +42,17 @@
|
|
26
42
|
"import lnschema_bionty as lb\n",
|
27
43
|
"from lamin_utils import logger\n",
|
28
44
|
"\n",
|
45
|
+
"ln.settings.verbosity = \"success\"\n",
|
29
46
|
"lb.settings.organism = \"human\""
|
30
47
|
]
|
31
48
|
},
|
49
|
+
{
|
50
|
+
"cell_type": "markdown",
|
51
|
+
"metadata": {},
|
52
|
+
"source": [
|
53
|
+
"## Access data"
|
54
|
+
]
|
55
|
+
},
|
32
56
|
{
|
33
57
|
"cell_type": "markdown",
|
34
58
|
"metadata": {},
|
@@ -46,6 +70,13 @@
|
|
46
70
|
"adata"
|
47
71
|
]
|
48
72
|
},
|
73
|
+
{
|
74
|
+
"cell_type": "markdown",
|
75
|
+
"metadata": {},
|
76
|
+
"source": [
|
77
|
+
"## Define validation criteria"
|
78
|
+
]
|
79
|
+
},
|
49
80
|
{
|
50
81
|
"cell_type": "markdown",
|
51
82
|
"metadata": {},
|
@@ -70,6 +101,13 @@
|
|
70
101
|
"}"
|
71
102
|
]
|
72
103
|
},
|
104
|
+
{
|
105
|
+
"cell_type": "markdown",
|
106
|
+
"metadata": {},
|
107
|
+
"source": [
|
108
|
+
"## Run validation"
|
109
|
+
]
|
110
|
+
},
|
73
111
|
{
|
74
112
|
"cell_type": "markdown",
|
75
113
|
"metadata": {},
|
@@ -87,22 +125,22 @@
|
|
87
125
|
"\n",
|
88
126
|
"for slot, slot_validators in validators.items():\n",
|
89
127
|
" for name, validator in slot_validators.items():\n",
|
90
|
-
" # registry model\n",
|
91
|
-
"
|
128
|
+
" # access registry (a Django model)\n",
|
129
|
+
" registry = validator.field.model\n",
|
92
130
|
"\n",
|
93
131
|
" # validate index\n",
|
94
132
|
" if name == \"index\":\n",
|
95
133
|
" logger.print(f\"validating {slot}.{name}:\")\n",
|
96
|
-
" index = adata
|
97
|
-
" validated =
|
134
|
+
" index = getattr(adata, slot).index\n",
|
135
|
+
" validated = registry.validate(index, validator)\n",
|
98
136
|
" if validated.sum() == len(index):\n",
|
99
|
-
" logger.
|
137
|
+
" logger.success(\"index matches\")\n",
|
100
138
|
"\n",
|
101
139
|
" # validate columns\n",
|
102
140
|
" else:\n",
|
103
141
|
" logger.print(f\"\\nvalidating {slot}.{name}:\")\n",
|
104
142
|
" # check if the column name exist\n",
|
105
|
-
" if name not in adata
|
143
|
+
" if name not in getattr(adata, slot).columns:\n",
|
106
144
|
" logger.warning(f\"{slot}.{name} field is missing\")\n",
|
107
145
|
" else:\n",
|
108
146
|
" # check if a feature is registered for the column\n",
|
@@ -110,10 +148,17 @@
|
|
110
148
|
" logger.warning(f\"feature '{name}' is not registered\")\n",
|
111
149
|
" # validate categorical labels in a column\n",
|
112
150
|
" else:\n",
|
113
|
-
" labels = adata
|
114
|
-
" validated =
|
151
|
+
" labels = getattr(adata, slot)[name]\n",
|
152
|
+
" validated = registry.validate(labels, validator)\n",
|
115
153
|
" if validated.sum() == len(labels):\n",
|
116
|
-
" logger.
|
154
|
+
" logger.success(\"labels match\")"
|
155
|
+
]
|
156
|
+
},
|
157
|
+
{
|
158
|
+
"cell_type": "markdown",
|
159
|
+
"metadata": {},
|
160
|
+
"source": [
|
161
|
+
"Delete test instance:"
|
117
162
|
]
|
118
163
|
},
|
119
164
|
{
|
@@ -0,0 +1,205 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "markdown",
|
5
|
+
"metadata": {},
|
6
|
+
"source": [
|
7
|
+
"# When do visibility of files and datasets change?\n",
|
8
|
+
"\n",
|
9
|
+
"Files and datasets in LaminDB have the following 3 levels if visibility:\n",
|
10
|
+
"- 0: \"default\", visible in the UI by default, returned from the query results\n",
|
11
|
+
"- 1: \"hidden\", excluded from the query results, notebook files (generated by `lamin save`) are default to be hidden\n",
|
12
|
+
"- 2: \"trash\", excluded from the query results, set with `.delete()`"
|
13
|
+
]
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"cell_type": "markdown",
|
17
|
+
"metadata": {},
|
18
|
+
"source": [
|
19
|
+
"## Setup"
|
20
|
+
]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"cell_type": "code",
|
24
|
+
"execution_count": null,
|
25
|
+
"metadata": {},
|
26
|
+
"outputs": [],
|
27
|
+
"source": [
|
28
|
+
"!lamin init --storage test-visibility"
|
29
|
+
]
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"cell_type": "code",
|
33
|
+
"execution_count": null,
|
34
|
+
"metadata": {},
|
35
|
+
"outputs": [],
|
36
|
+
"source": [
|
37
|
+
"import lamindb as ln\n",
|
38
|
+
"import pandas as pd"
|
39
|
+
]
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"cell_type": "code",
|
43
|
+
"execution_count": null,
|
44
|
+
"metadata": {},
|
45
|
+
"outputs": [],
|
46
|
+
"source": [
|
47
|
+
"file = ln.File(pd.DataFrame({\"a\": [1, 2], \"b\": [3, 4]}), description=\"mydf\")\n",
|
48
|
+
"file.save()"
|
49
|
+
]
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"cell_type": "markdown",
|
53
|
+
"metadata": {},
|
54
|
+
"source": [
|
55
|
+
"New file has default visibility 0:"
|
56
|
+
]
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"cell_type": "code",
|
60
|
+
"execution_count": null,
|
61
|
+
"metadata": {},
|
62
|
+
"outputs": [],
|
63
|
+
"source": [
|
64
|
+
"assert file.visibility == 0"
|
65
|
+
]
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"cell_type": "markdown",
|
69
|
+
"metadata": {},
|
70
|
+
"source": [
|
71
|
+
"When you delete a file, its visibility is set to 2 (\"trash\"):"
|
72
|
+
]
|
73
|
+
},
|
74
|
+
{
|
75
|
+
"cell_type": "code",
|
76
|
+
"execution_count": null,
|
77
|
+
"metadata": {},
|
78
|
+
"outputs": [],
|
79
|
+
"source": [
|
80
|
+
"file.delete()"
|
81
|
+
]
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"cell_type": "code",
|
85
|
+
"execution_count": null,
|
86
|
+
"metadata": {},
|
87
|
+
"outputs": [],
|
88
|
+
"source": [
|
89
|
+
"assert file.visibility == 2"
|
90
|
+
]
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"cell_type": "markdown",
|
94
|
+
"metadata": {},
|
95
|
+
"source": [
|
96
|
+
"Files in trash won't be returned from default queries:"
|
97
|
+
]
|
98
|
+
},
|
99
|
+
{
|
100
|
+
"cell_type": "code",
|
101
|
+
"execution_count": null,
|
102
|
+
"metadata": {},
|
103
|
+
"outputs": [],
|
104
|
+
"source": [
|
105
|
+
"ln.File.filter(description=\"mydf\").all()"
|
106
|
+
]
|
107
|
+
},
|
108
|
+
{
|
109
|
+
"cell_type": "markdown",
|
110
|
+
"metadata": {},
|
111
|
+
"source": [
|
112
|
+
"Unless you specify `visibility=None` to see all hidden and trashed files:"
|
113
|
+
]
|
114
|
+
},
|
115
|
+
{
|
116
|
+
"cell_type": "code",
|
117
|
+
"execution_count": null,
|
118
|
+
"metadata": {},
|
119
|
+
"outputs": [],
|
120
|
+
"source": [
|
121
|
+
"ln.File.filter(description=\"mydf\", visibility=None).all()"
|
122
|
+
]
|
123
|
+
},
|
124
|
+
{
|
125
|
+
"cell_type": "markdown",
|
126
|
+
"metadata": {},
|
127
|
+
"source": [
|
128
|
+
"You can restore a file from trash:"
|
129
|
+
]
|
130
|
+
},
|
131
|
+
{
|
132
|
+
"cell_type": "code",
|
133
|
+
"execution_count": null,
|
134
|
+
"metadata": {},
|
135
|
+
"outputs": [],
|
136
|
+
"source": [
|
137
|
+
"file.restore()"
|
138
|
+
]
|
139
|
+
},
|
140
|
+
{
|
141
|
+
"cell_type": "code",
|
142
|
+
"execution_count": null,
|
143
|
+
"metadata": {},
|
144
|
+
"outputs": [],
|
145
|
+
"source": [
|
146
|
+
"assert file.visibility == 0"
|
147
|
+
]
|
148
|
+
},
|
149
|
+
{
|
150
|
+
"cell_type": "code",
|
151
|
+
"execution_count": null,
|
152
|
+
"metadata": {},
|
153
|
+
"outputs": [],
|
154
|
+
"source": [
|
155
|
+
"ln.File.filter(description=\"mydf\").all()"
|
156
|
+
]
|
157
|
+
},
|
158
|
+
{
|
159
|
+
"cell_type": "markdown",
|
160
|
+
"metadata": {},
|
161
|
+
"source": [
|
162
|
+
"Delete test file and instance:"
|
163
|
+
]
|
164
|
+
},
|
165
|
+
{
|
166
|
+
"cell_type": "code",
|
167
|
+
"execution_count": null,
|
168
|
+
"metadata": {},
|
169
|
+
"outputs": [],
|
170
|
+
"source": [
|
171
|
+
"file.delete(permanent=True)"
|
172
|
+
]
|
173
|
+
},
|
174
|
+
{
|
175
|
+
"cell_type": "code",
|
176
|
+
"execution_count": null,
|
177
|
+
"metadata": {},
|
178
|
+
"outputs": [],
|
179
|
+
"source": [
|
180
|
+
"!lamin delete --force test-visibility"
|
181
|
+
]
|
182
|
+
}
|
183
|
+
],
|
184
|
+
"metadata": {
|
185
|
+
"kernelspec": {
|
186
|
+
"display_name": "py39",
|
187
|
+
"language": "python",
|
188
|
+
"name": "python3"
|
189
|
+
},
|
190
|
+
"language_info": {
|
191
|
+
"codemirror_mode": {
|
192
|
+
"name": "ipython",
|
193
|
+
"version": 3
|
194
|
+
},
|
195
|
+
"file_extension": ".py",
|
196
|
+
"mimetype": "text/x-python",
|
197
|
+
"name": "python",
|
198
|
+
"nbconvert_exporter": "python",
|
199
|
+
"pygments_lexer": "ipython3",
|
200
|
+
"version": "3.9.16"
|
201
|
+
}
|
202
|
+
},
|
203
|
+
"nbformat": 4,
|
204
|
+
"nbformat_minor": 2
|
205
|
+
}
|
@@ -244,7 +244,7 @@
|
|
244
244
|
"metadata": {},
|
245
245
|
"outputs": [],
|
246
246
|
"source": [
|
247
|
-
"file.delete(
|
247
|
+
"file.delete(permanent=True)"
|
248
248
|
]
|
249
249
|
},
|
250
250
|
{
|
@@ -435,7 +435,7 @@
|
|
435
435
|
"metadata": {},
|
436
436
|
"outputs": [],
|
437
437
|
"source": [
|
438
|
-
"file.delete(storage=True)"
|
438
|
+
"file.delete(permanent=True, storage=True)"
|
439
439
|
]
|
440
440
|
},
|
441
441
|
{
|
@@ -616,7 +616,7 @@
|
|
616
616
|
"metadata": {},
|
617
617
|
"outputs": [],
|
618
618
|
"source": [
|
619
|
-
"file.delete(storage=True)"
|
619
|
+
"file.delete(permanent=True, storage=True)"
|
620
620
|
]
|
621
621
|
},
|
622
622
|
{
|
@@ -140,7 +140,7 @@
|
|
140
140
|
"metadata": {},
|
141
141
|
"outputs": [],
|
142
142
|
"source": [
|
143
|
-
"pbmc68k_h5ad.delete(storage=True)"
|
143
|
+
"pbmc68k_h5ad.delete(permanent=True, storage=True)"
|
144
144
|
]
|
145
145
|
},
|
146
146
|
{
|
@@ -162,7 +162,7 @@
|
|
162
162
|
"# Runs too long, should be tested elsewhere\n",
|
163
163
|
"# pbmc68k_zarr = ln.File(pbmc68k, key=\"test-upload/pbmc68k.zarr\", format=\"zarr\")\n",
|
164
164
|
"# ln.save(pbmc68k_zarr)\n",
|
165
|
-
"# pbmc68k_zarr.delete(storage=True)"
|
165
|
+
"# pbmc68k_zarr.delete(permanent=True, storage=True)"
|
166
166
|
]
|
167
167
|
},
|
168
168
|
{
|
@@ -210,7 +210,7 @@
|
|
210
210
|
"metadata": {},
|
211
211
|
"outputs": [],
|
212
212
|
"source": [
|
213
|
-
"pbmc68k_h5ad.delete(storage=True)"
|
213
|
+
"pbmc68k_h5ad.delete(permanent=True, storage=True)"
|
214
214
|
]
|
215
215
|
},
|
216
216
|
{
|
@@ -232,7 +232,7 @@
|
|
232
232
|
"# Runs too long, should be tested elsewhere\n",
|
233
233
|
"# pbmc68k_zarr = ln.File(pbmc68k, name=\"pbmc68k.zarr\", format=\"zarr\")\n",
|
234
234
|
"# ln.save(pbmc68k_zarr)\n",
|
235
|
-
"# pbmc68k_zarr.delete(storage=True)"
|
235
|
+
"# pbmc68k_zarr.delete(permanent=True, storage=True)"
|
236
236
|
]
|
237
237
|
},
|
238
238
|
{
|
@@ -820,14 +820,18 @@
|
|
820
820
|
"cell_type": "markdown",
|
821
821
|
"metadata": {},
|
822
822
|
"source": [
|
823
|
-
"
|
823
|
+
"```\n",
|
824
|
+
"lamin save <notebook_path> # e.g., tutorial.ipynb\n",
|
825
|
+
"```"
|
824
826
|
]
|
825
827
|
},
|
826
828
|
{
|
827
829
|
"cell_type": "markdown",
|
828
830
|
"metadata": {},
|
829
831
|
"source": [
|
830
|
-
"This will enable you to query the report and source code via `transform.latest_report` and `transform.source_file` and see it in the hub, e.g., [here](https://lamin.ai/laminlabs/lamindata/record/core/Transform?id=NJvdsWWbJlZSz8)
|
832
|
+
"This will enable you to query the report and source code via `transform.latest_report` and `transform.source_file` and see it in the hub, e.g., [here](https://lamin.ai/laminlabs/lamindata/record/core/Transform?id=NJvdsWWbJlZSz8).\n",
|
833
|
+
"\n",
|
834
|
+
"<img src=\"https://lamin-site-assets.s3.amazonaws.com/.lamindb/RGXj5wcAf7EAc6J8aBoM.png\" width=\"700px\">"
|
831
835
|
]
|
832
836
|
},
|
833
837
|
{
|