lamindb 0.71.3__tar.gz → 0.72.0__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.71.3 → lamindb-0.72.0}/.github/workflows/build.yml +2 -2
- {lamindb-0.71.3 → lamindb-0.72.0}/.gitmodules +3 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/PKG-INFO +4 -4
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/annotate-for-developers.ipynb +1 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/changelog.md +20 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/idempotency.ipynb +4 -4
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/introduction.ipynb +22 -8
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/prepare-transfer-local-to-cloud.ipynb +4 -4
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/transfer-local-to-cloud.ipynb +5 -3
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/tutorial.ipynb +6 -4
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/tutorial2.ipynb +81 -64
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/__init__.py +2 -2
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_annotate.py +6 -10
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_artifact.py +6 -2
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_collection.py +4 -4
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_feature.py +53 -45
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_feature_set.py +37 -74
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_from_values.py +0 -3
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_query_manager.py +6 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_registry.py +8 -6
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_run.py +0 -2
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/__init__.py +4 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_data.py +30 -27
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_feature_manager.py +96 -24
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_label_manager.py +13 -10
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_run_context.py +24 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/datasets/_core.py +10 -18
- lamindb-0.72.0/lamindb/core/schema.py +53 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/noxfile.py +2 -2
- {lamindb-0.71.3 → lamindb-0.72.0}/pyproject.toml +3 -3
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/bionty/__init__.py +1 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/pyproject.toml +1 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/changelog.md +3 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +1 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_delete.py +4 -3
- lamindb-0.72.0/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +144 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +16 -10
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +13 -5
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +8 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/upath.py +4 -68
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.gitignore +1 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/docs/changelog.md +8 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/__init__.py +1 -1
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py → lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +324 -335
- lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0024_remove_cellline_collections_and_more.py +64 -0
- lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +851 -0
- lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +520 -0
- lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +388 -0
- lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0028_artifactcellline_created_at_and_more.py +703 -0
- lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0028_squashed.py +2137 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/models.py +335 -285
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/pyproject.toml +1 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/CHANGELOG.md +7 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py → lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +263 -33
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +1 -3
- lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +178 -0
- lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +33 -0
- lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +58 -0
- lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +191 -0
- lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +71 -0
- lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +419 -0
- lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +1302 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/models.py +353 -189
- lamindb-0.72.0/sub/wetlab/.github/workflows/build.yml +67 -0
- lamindb-0.72.0/sub/wetlab/.github/workflows/deploy-instance-apis.yml +19 -0
- lamindb-0.72.0/sub/wetlab/.github/workflows/latest-changes.jinja2 +2 -0
- lamindb-0.72.0/sub/wetlab/.github/workflows/latest-changes.yml +25 -0
- lamindb-0.72.0/sub/wetlab/.gitignore +118 -0
- lamindb-0.72.0/sub/wetlab/.pre-commit-config.yaml +65 -0
- lamindb-0.72.0/sub/wetlab/README.md +3 -0
- lamindb-0.72.0/sub/wetlab/docs/changelog.md +51 -0
- lamindb-0.72.0/sub/wetlab/docs/guide/01-get-started.ipynb +99 -0
- lamindb-0.72.0/sub/wetlab/docs/guide/index.md +9 -0
- lamindb-0.72.0/sub/wetlab/docs/index.md +12 -0
- lamindb-0.72.0/sub/wetlab/docs/reference.md +5 -0
- lamindb-0.72.0/sub/wetlab/noxfile.py +25 -0
- lamindb-0.72.0/sub/wetlab/pyproject.toml +37 -0
- lamindb-0.72.0/sub/wetlab/tests/test_integrity.py +13 -0
- lamindb-0.72.0/sub/wetlab/tests/test_notebooks.py +14 -0
- lamindb-0.72.0/sub/wetlab/wetlab/__init__.py +45 -0
- lamindb-0.72.0/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +321 -0
- lamindb-0.72.0/sub/wetlab/wetlab/migrations/0018_squashed.py +346 -0
- lamindb-0.72.0/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +36 -0
- lamindb-0.72.0/sub/wetlab/wetlab/migrations/__init__.py +0 -0
- lamindb-0.72.0/sub/wetlab/wetlab/models.py +226 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/conftest.py +1 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_annotate.py +14 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_can_validate.py +1 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_collection.py +18 -18
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_feature.py +20 -18
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_feature_manager.py +78 -48
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_feature_set.py +20 -18
- lamindb-0.72.0/tests/test_label_manager.py +53 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_queryset.py +2 -1
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_run_context.py +15 -2
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_transfer.py +6 -7
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +0 -838
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +0 -48
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +0 -87
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +0 -153
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +0 -151
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -60
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +0 -73
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +0 -90
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +0 -19
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +0 -19
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +0 -123
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +0 -19
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -43
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +0 -179
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +0 -143
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +0 -55
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +0 -70
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +0 -142
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +0 -85
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0020_alter_organism_bionty_source.py +0 -23
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0021_rename_files_cellline_artifacts_and_more.py +0 -78
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0022_rename_datasets_cellline_collections_and_more.py +0 -77
- lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -138
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -445
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +0 -19
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +0 -26
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +0 -74
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +0 -26
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -118
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +0 -35
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +0 -26
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +0 -131
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +0 -88
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +0 -150
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -244
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -117
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -17
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +0 -30
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -160
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -33
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -65
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +0 -47
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -62
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +0 -33
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +0 -331
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +0 -51
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +0 -84
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -16
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0026_dataset_visibility_file_visibility.py +0 -22
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0027_file_key_is_virtual.py +0 -18
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0028_alter_dataset_visibility_alter_file_visibility.py +0 -30
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0029_remove_feature_modality_remove_featureset_modality_and_more.py +0 -23
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0030_alter_dataset_visibility_alter_file_visibility.py +0 -72
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0031_rename_file_to_artifact.py +0 -172
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0032_remove_dataset_storage.py +0 -16
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0033_alter_artifact_unique_together_artifact_n_objects_and_more.py +0 -26
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0034_run_environment.py +0 -27
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0035_remove_artifact_initial_version_and_more.py +0 -31
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0036_storage_description.py +0 -19
- lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -34
- lamindb-0.71.3/tests/test_label_manager.py +0 -48
- {lamindb-0.71.3 → lamindb-0.72.0}/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/.gitignore +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/.pre-commit-config.yaml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/LICENSE +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/README.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/annotate.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/bio-registries.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/bionty-base.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/bionty.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/can-validate.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/data.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/acid.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/delete.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/import-schema.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/keep-artifacts-local.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/key.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/setup.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/test_notebooks.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/visibility.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/features-lamindb.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/features-laminhub.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/guide.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/index.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/installation.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/lamin-utils.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/lamindb.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/meta.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/nbproject.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/query-search.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/readfcs.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/reference.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/schemas.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/setup.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/signup-login.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/add-replace-stage.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/test-files/iris.data +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/test_notebooks.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/upload.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/vitessce.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/test_notebooks.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/track.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/transfer.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/docs/wetlab.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_can_validate.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_filter.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_finish.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_is_versioned.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_parents.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_query_set.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_save.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_storage.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_transform.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_ulabel.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_utils.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_view.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_settings.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_sync_git.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_track_environment.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_transform_settings.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/datasets/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/datasets/_fake.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/exceptions.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/fields.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/_anndata_sizes.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/_backed_access.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/objects.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/paths.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/types.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/versioning.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/integrations/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/integrations/_vitessce.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/setup/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.gitignore +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/LICENSE +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/README.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/bionty/core/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/docs/changelog.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/docs/index.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/docs/reference.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/lamin-project.yaml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/noxfile.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/tests/test_notebooks.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/.gitignore +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/README.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/_get.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/_save.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/conftest.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_cli.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_get.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_migrate.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_multi_process.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_save_files.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_save_notebooks.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/README.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/notebooks.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/noxfile.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/LICENSE +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/README.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/docs/index.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/docs/reference.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lamin-project.yaml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/noxfile.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.github/workflows/build.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.gitignore +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/LICENSE +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/README.md +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/ids.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/types.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/users.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/noxfile.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/pyproject.toml +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/tests/test_integrity.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/tests/test_types.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/no-title.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_artifact.py +2 -2
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_artifact_folders.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_cache.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_data.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_db.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_delete.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_from_values.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_load.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_manager.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_notebooks.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_parents.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_registry.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_run.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_save.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_search.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_settings.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_storage.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_transform.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_uid.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_ulabel.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_versioning.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_view.py +0 -0
- {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_visibility.py +0 -0
@@ -50,10 +50,10 @@ jobs:
|
|
50
50
|
path: ~/postgres.tar
|
51
51
|
key: cache-postgres-0
|
52
52
|
- name: cache postgres miss
|
53
|
-
if: ${{ steps.cache-postgres.outputs.cache-hit != 'true'
|
53
|
+
if: ${{ steps.cache-postgres.outputs.cache-hit != 'true' }}
|
54
54
|
run: docker pull postgres:latest && docker image save postgres:latest --output ~/postgres.tar
|
55
55
|
- name: cache postgres use
|
56
|
-
if: ${{ steps.cache-postgres.outputs.cache-hit == 'true'
|
56
|
+
if: ${{ steps.cache-postgres.outputs.cache-hit == 'true' }}
|
57
57
|
run: docker image load --input ~/postgres.tar
|
58
58
|
- run: pip install -U laminci
|
59
59
|
- name: install postgres
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lamindb
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.72.0
|
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,8 +9,8 @@ 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.
|
13
|
-
Requires-Dist: lamindb_setup==0.
|
12
|
+
Requires-Dist: lnschema_core==0.67.1
|
13
|
+
Requires-Dist: lamindb_setup==0.72.1
|
14
14
|
Requires-Dist: lamin_utils==0.13.2
|
15
15
|
Requires-Dist: lamin_cli==0.13.2
|
16
16
|
Requires-Dist: rapidfuzz
|
@@ -25,7 +25,7 @@ Requires-Dist: graphviz
|
|
25
25
|
Requires-Dist: psycopg2-binary
|
26
26
|
Requires-Dist: psutil
|
27
27
|
Requires-Dist: lamindb_setup[aws] ; extra == "aws"
|
28
|
-
Requires-Dist: bionty==0.
|
28
|
+
Requires-Dist: bionty==0.43.0 ; extra == "bionty"
|
29
29
|
Requires-Dist: pandas<2 ; extra == "dev"
|
30
30
|
Requires-Dist: pre-commit ; extra == "dev"
|
31
31
|
Requires-Dist: nox ; extra == "dev"
|
@@ -259,7 +259,7 @@
|
|
259
259
|
"source": [
|
260
260
|
"# external metadata features\n",
|
261
261
|
"external_meta_features = [\n",
|
262
|
-
" ln.Feature(name=name,
|
262
|
+
" ln.Feature(name=name, dtype=\"cat\") for name in external_meta.keys()\n",
|
263
263
|
"]\n",
|
264
264
|
"ln.save(external_meta_features)\n",
|
265
265
|
"external_meta_features"
|
@@ -12,6 +12,26 @@ LaminDB implements "migration-based versioning". When upgrading your LaminDB ins
|
|
12
12
|
.. role:: small
|
13
13
|
```
|
14
14
|
|
15
|
+
## 0.72
|
16
|
+
|
17
|
+
### 0.72.0 {small}`2024-05-19`
|
18
|
+
|
19
|
+
- ✨ Extend managed access for AWS S3 to arbitrary paths [PR](https://github.com/laminlabs/lamindb/pull/1668) [@Koncopd](https://github.com/Koncopd) [@fredericenard](https://github.com/fredericenard)
|
20
|
+
- ✨ Extended data lineage tracking [PR](https://github.com/laminlabs/lamindb/pull/1667) [@falexwolf](https://github.com/falexwolf)
|
21
|
+
- Now store all _creating_ runs and all _updating_ runs for any entity, not just for `Artifact` & `Collection`, e.g., runs can now have `CellType` record outputs
|
22
|
+
- Code is simpler through inheritance from two new base classes: `TracksRun` and `TracksUpdates`
|
23
|
+
- ♻️ Briefer and richer syntax for denoting feature types, renamed `Feature.type` to `Feature.dtype`, e.g., for categorical features, a valid type can be: `cat[ULabel|bionty.Drug]` [PR](https://github.com/laminlabs/lamindb/pull/1663) [@falexwolf](https://github.com/falexwolf)
|
24
|
+
- ✨ Support non-categorical metadata [PR](https://github.com/laminlabs/lnschema-core/pull/379) [@falexwolf](https://github.com/falexwolf)
|
25
|
+
- Track non-categorical features: `int`, `float`, `bool`, `datetime`, lists & dictionaries stored in a `FeatureValue` registry
|
26
|
+
- Track arbitrary typed parameters for runs through a `Param` registry analogous to the `Feature` registry: this replaces the hard-to-validate, hard-to-migrate, and hard-to-query `json` field of `Run`
|
27
|
+
- 🏗️ Refactor link models [PR](https://github.com/laminlabs/lamindb/pull/1666) [PR](https://github.com/laminlabs/lamindb/pull/1661) [@falexwolf](https://github.com/falexwolf)
|
28
|
+
- All annotation-related links are now stratified by `Feature`: what held for `ULabel` now also holds `CellType` and all other `Bionty` registries
|
29
|
+
- Indicate whether semantic keys were used during validation to enable warnings upon renames
|
30
|
+
- Protect artifact annotations rather than cascade delete them
|
31
|
+
- More consistent naming of link models, e.g., `ulabels.artifact_links` instead of `ulabels.artifactulabel_set`
|
32
|
+
- Dropped linking `Bionty` entities directly against `Collection`
|
33
|
+
- Pruned & squashed migrations for faster instance creation
|
34
|
+
|
15
35
|
## 0.71
|
16
36
|
|
17
37
|
### 0.71.3 {small}`2024-05-14`
|
@@ -130,7 +130,7 @@
|
|
130
130
|
"metadata": {},
|
131
131
|
"outputs": [],
|
132
132
|
"source": [
|
133
|
-
"label = ln.ULabel(name=\"My project
|
133
|
+
"label = ln.ULabel(name=\"My project 1a\")"
|
134
134
|
]
|
135
135
|
},
|
136
136
|
{
|
@@ -197,7 +197,7 @@
|
|
197
197
|
"metadata": {},
|
198
198
|
"outputs": [],
|
199
199
|
"source": [
|
200
|
-
"label = ln.ULabel(name=\"My project
|
200
|
+
"label = ln.ULabel(name=\"My project 1b\")"
|
201
201
|
]
|
202
202
|
},
|
203
203
|
{
|
@@ -226,7 +226,7 @@
|
|
226
226
|
"metadata": {},
|
227
227
|
"outputs": [],
|
228
228
|
"source": [
|
229
|
-
"label = ln.ULabel(name=\"My project
|
229
|
+
"label = ln.ULabel(name=\"My project 1c\")"
|
230
230
|
]
|
231
231
|
},
|
232
232
|
{
|
@@ -401,7 +401,7 @@
|
|
401
401
|
"artifact3 = ln.Artifact(filepath, description=\"My fcs artifact\")\n",
|
402
402
|
"assert artifact3.id == artifact2.id\n",
|
403
403
|
"assert artifact3.run != artifact2.run\n",
|
404
|
-
"assert artifact3.
|
404
|
+
"assert artifact3.previous_runs.first() == artifact2.run"
|
405
405
|
]
|
406
406
|
},
|
407
407
|
{
|
@@ -66,7 +66,11 @@
|
|
66
66
|
{
|
67
67
|
"cell_type": "code",
|
68
68
|
"execution_count": null,
|
69
|
-
"metadata": {
|
69
|
+
"metadata": {
|
70
|
+
"tags": [
|
71
|
+
"hide-output"
|
72
|
+
]
|
73
|
+
},
|
70
74
|
"outputs": [],
|
71
75
|
"source": [
|
72
76
|
"# store artifacts in a local directory `./lamin-intro`\n",
|
@@ -79,7 +83,9 @@
|
|
79
83
|
"source": [
|
80
84
|
"### Track\n",
|
81
85
|
"\n",
|
82
|
-
"Run {meth}`~lamindb.track` to track the
|
86
|
+
"Run {meth}`~lamindb.track` to track the inputs and outputs of your code ({class}`~lamindb.Transform`).\n",
|
87
|
+
"\n",
|
88
|
+
"When you first run `ln.track()`, it creates a `stem_uid` & `version` to unambiguously identify your notebook or script."
|
83
89
|
]
|
84
90
|
},
|
85
91
|
{
|
@@ -94,11 +100,11 @@
|
|
94
100
|
"source": [
|
95
101
|
"import lamindb as ln\n",
|
96
102
|
"\n",
|
97
|
-
"#
|
98
|
-
"ln.settings.transform.stem_uid = \"FPnfDtJz8qbE\"\n",
|
99
|
-
"ln.settings.transform.version = \"1\"\n",
|
103
|
+
"# copy-pasted identifiers for your notebook or script\n",
|
104
|
+
"ln.settings.transform.stem_uid = \"FPnfDtJz8qbE\" # <-- auto-generated by running ln.track()\n",
|
105
|
+
"ln.settings.transform.version = \"1\" # <-- auto-generated by running ln.track()\n",
|
100
106
|
"\n",
|
101
|
-
"# track the execution of your
|
107
|
+
"# track the execution of your notebook or script\n",
|
102
108
|
"ln.track()"
|
103
109
|
]
|
104
110
|
},
|
@@ -844,9 +850,12 @@
|
|
844
850
|
"\n",
|
845
851
|
"<img src=\"https://lamin-site-assets.s3.amazonaws.com/.lamindb/BunYmHkyFLITlM5MYQci.svg\" width=\"350px\" style=\"background: transparent\" align=\"right\">\n",
|
846
852
|
"\n",
|
847
|
-
"The complexity of modern R&D data often blocks realizing the scientific progress it promises.\n",
|
853
|
+
"The complexity of modern R&D data often blocks realizing the scientific progress it promises: see this [blog post](https://lamin.ai/blog/problems).\n",
|
854
|
+
"\n",
|
855
|
+
"More basically: The pydata family of objects is at the heart of most data science, ML & comp bio workflows: `DataFrame`, `AnnData`, `pytorch.DataLoader`, `zarr.Array`, `pyarrow.Table`, `xarray.Collection`, etc. We couldn’t find a tool to link these objects to context so that they could be analyzed in context:\n",
|
848
856
|
"\n",
|
849
|
-
"
|
857
|
+
"- provenance: data sources, data transformations, models, users\n",
|
858
|
+
"- domain knowledge & experimental metadata: the features & labels derived from domain entities\n",
|
850
859
|
"\n",
|
851
860
|
"### Assumptions\n",
|
852
861
|
"\n",
|
@@ -893,6 +902,11 @@
|
|
893
902
|
"\n",
|
894
903
|
"LaminDB was influenced by many other projects, see {doc}`docs:influences`."
|
895
904
|
]
|
905
|
+
},
|
906
|
+
{
|
907
|
+
"cell_type": "markdown",
|
908
|
+
"metadata": {},
|
909
|
+
"source": []
|
896
910
|
}
|
897
911
|
],
|
898
912
|
"metadata": {
|
@@ -24,7 +24,7 @@
|
|
24
24
|
"source": [
|
25
25
|
"import lamindb as ln\n",
|
26
26
|
"import bionty as bt\n",
|
27
|
-
"import wetlab as
|
27
|
+
"import wetlab as wl\n",
|
28
28
|
"import pandas as pd"
|
29
29
|
]
|
30
30
|
},
|
@@ -49,15 +49,15 @@
|
|
49
49
|
"\n",
|
50
50
|
"features = bt.CellMarker.from_values([\"PD1\", \"CD21\"], field=bt.CellMarker.name, organism=\"human\")\n",
|
51
51
|
"ln.save(features)\n",
|
52
|
-
"artifact.features.
|
52
|
+
"artifact.features.add_feature_set(ln.FeatureSet(features), slot=\"var\")\n",
|
53
53
|
"\n",
|
54
54
|
"organism = bt.Organism.from_public(name=\"human\")\n",
|
55
55
|
"organism.save()\n",
|
56
56
|
"artifact.labels.add(organism)\n",
|
57
57
|
"\n",
|
58
|
-
"experiment_type =
|
58
|
+
"experiment_type = wl.ExperimentType(name=\"experiment-type-test-transfer-to-cloud\")\n",
|
59
59
|
"experiment_type.save()\n",
|
60
|
-
"experiment =
|
60
|
+
"experiment = wl.Experiment(name=\"experiment-test-transfer-to-cloud\")\n",
|
61
61
|
"experiment.experiment_type = experiment_type\n",
|
62
62
|
"experiment.save()\n",
|
63
63
|
"\n",
|
@@ -31,12 +31,14 @@
|
|
31
31
|
"outputs": [],
|
32
32
|
"source": [
|
33
33
|
"def cleanup(artifact: ln.Artifact):\n",
|
34
|
-
" artifact.feature_sets.all()
|
35
|
-
" artifact.experiments.all()
|
34
|
+
" features_sets = artifact.feature_sets.all()\n",
|
35
|
+
" experiments = artifact.experiments.all()\n",
|
36
36
|
" try:\n",
|
37
37
|
" artifact.delete(permanent=True)\n",
|
38
38
|
" except Exception:\n",
|
39
39
|
" pass\n",
|
40
|
+
" features_sets.delete()\n",
|
41
|
+
" experiments.delete()\n",
|
40
42
|
"\n",
|
41
43
|
"artifacts = ln.Artifact.filter(description='test-transfer-to-cloud').all()\n",
|
42
44
|
"for artifact in artifacts:\n",
|
@@ -78,7 +80,7 @@
|
|
78
80
|
"outputs": [],
|
79
81
|
"source": [
|
80
82
|
"assert artifact._state.db == \"default\"\n",
|
81
|
-
"assert artifact.
|
83
|
+
"assert artifact.organisms.get().name == \"human\"\n",
|
82
84
|
"assert artifact.experiments.get().name == \"experiment-test-transfer-to-cloud\"\n",
|
83
85
|
"assert artifact.features[\"var\"].count() == 2"
|
84
86
|
]
|
@@ -134,8 +134,11 @@
|
|
134
134
|
},
|
135
135
|
"outputs": [],
|
136
136
|
"source": [
|
137
|
-
"
|
138
|
-
"ln.settings.transform.
|
137
|
+
"# copy-pasted identifiers for your notebook or script\n",
|
138
|
+
"ln.settings.transform.stem_uid = \"NJvdsWWbJlZS\" # <-- auto-generated by running ln.track()\n",
|
139
|
+
"ln.settings.transform.version = \"0\" # <-- auto-generated by running ln.track()\n",
|
140
|
+
"\n",
|
141
|
+
"# track the execution of your notebook or script\n",
|
139
142
|
"ln.track()"
|
140
143
|
]
|
141
144
|
},
|
@@ -533,8 +536,7 @@
|
|
533
536
|
},
|
534
537
|
"outputs": [],
|
535
538
|
"source": [
|
536
|
-
"study0_data = ln.Artifact(f\"s3://lamindb-dev-datasets/iris_studies/study0_raw_images\")\n",
|
537
|
-
"study0_data.save()\n",
|
539
|
+
"study0_data = ln.Artifact(f\"s3://lamindb-dev-datasets/iris_studies/study0_raw_images\").save()\n",
|
538
540
|
"ln.Artifact.df()"
|
539
541
|
]
|
540
542
|
},
|
@@ -5,7 +5,7 @@
|
|
5
5
|
"metadata": {},
|
6
6
|
"source": [
|
7
7
|
"\n",
|
8
|
-
"[](https://github.com/laminlabs/lamindb/blob/main/docs/
|
8
|
+
"[](https://github.com/laminlabs/lamindb/blob/main/docs/tutorial2.ipynb)\n",
|
9
9
|
"[](https://lamin.ai/laminlabs/lamindata/transform/dMtrt8YMSdl6z8)"
|
10
10
|
]
|
11
11
|
},
|
@@ -20,12 +20,10 @@
|
|
20
20
|
"cell_type": "markdown",
|
21
21
|
"metadata": {},
|
22
22
|
"source": [
|
23
|
-
"In
|
23
|
+
"In {doc}`/tutorial`, we learned about provenance and data access. Here, we walk through validating & annotating datasets with features & labels to improve:\n",
|
24
24
|
"\n",
|
25
|
-
"
|
26
|
-
"
|
27
|
-
"1. Finding data: Which collections measured expression of cell marker `CD14`? Which characterized cell line `K562`? Which collections have a test & train split? Etc.\n",
|
28
|
-
"2. Using data: Are there typos in feature names? Are there typos in sampled labels? Are units of features consistent? Etc."
|
25
|
+
"1. Findability: Which collections measured expression of cell marker `CD14`? Which characterized cell line `K562`? Which collections have a test & train split? Etc.\n",
|
26
|
+
"2. Usability: Are there typos in feature names? Are there typos in sampled labels? Are types and units of features consistent? Etc."
|
29
27
|
]
|
30
28
|
},
|
31
29
|
{
|
@@ -34,27 +32,68 @@
|
|
34
32
|
"source": [
|
35
33
|
":::{hint}\n",
|
36
34
|
"\n",
|
37
|
-
"This is a low-level tutorial aimed at a basic understanding of features and labels.\n",
|
35
|
+
"This is a low-level tutorial aimed at a basic understanding of registering features and labels for annotation & validation.\n",
|
38
36
|
"\n",
|
39
|
-
"If you
|
37
|
+
"If you're just looking to readily validate and annotate a dataset with features and labels, see this guide: {doc}`annotate`.\n",
|
40
38
|
"\n",
|
41
39
|
":::"
|
42
40
|
]
|
43
41
|
},
|
42
|
+
{
|
43
|
+
"cell_type": "code",
|
44
|
+
"execution_count": null,
|
45
|
+
"metadata": {
|
46
|
+
"tags": [
|
47
|
+
"hide-output"
|
48
|
+
]
|
49
|
+
},
|
50
|
+
"outputs": [],
|
51
|
+
"source": [
|
52
|
+
"import lamindb as ln\n",
|
53
|
+
"import pandas as pd\n",
|
54
|
+
"\n",
|
55
|
+
"ln.settings.verbosity = \"hint\""
|
56
|
+
]
|
57
|
+
},
|
44
58
|
{
|
45
59
|
"cell_type": "markdown",
|
46
60
|
"metadata": {},
|
47
61
|
"source": [
|
48
|
-
"
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
"-
|
56
|
-
|
57
|
-
|
62
|
+
"## Re-cap"
|
63
|
+
]
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"cell_type": "markdown",
|
67
|
+
"metadata": {},
|
68
|
+
"source": [
|
69
|
+
"Let's briefly re-cap what we learned in {doc}`/introduction`. We started with simple labeling:"
|
70
|
+
]
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"cell_type": "code",
|
74
|
+
"execution_count": null,
|
75
|
+
"metadata": {
|
76
|
+
"tags": [
|
77
|
+
"hide-output"
|
78
|
+
]
|
79
|
+
},
|
80
|
+
"outputs": [],
|
81
|
+
"source": [
|
82
|
+
"# create a label\n",
|
83
|
+
"study0 = ln.ULabel(name=\"Study 0: initial plant gathering\", description=\"My initial study\").save()\n",
|
84
|
+
"# query an artifact from the previous tutorial\n",
|
85
|
+
"artifact = ln.Artifact.filter(key=\"iris_studies/study0_raw_images\").one()\n",
|
86
|
+
"# label the artifact\n",
|
87
|
+
"artifact.labels.add(study0)\n",
|
88
|
+
"# look at artifact metadata\n",
|
89
|
+
"artifact.describe()"
|
90
|
+
]
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"cell_type": "markdown",
|
94
|
+
"metadata": {},
|
95
|
+
"source": [
|
96
|
+
"In general, it's good practice to associate labels with features so that we can later feed them into learning algorithms with a defined dimension:"
|
58
97
|
]
|
59
98
|
},
|
60
99
|
{
|
@@ -63,10 +102,9 @@
|
|
63
102
|
"metadata": {},
|
64
103
|
"outputs": [],
|
65
104
|
"source": [
|
66
|
-
"
|
67
|
-
"
|
68
|
-
"
|
69
|
-
"ln.settings.verbosity = \"hint\""
|
105
|
+
"feature = ln.Feature(name=\"study_name\", dtype=\"cat\").save()\n",
|
106
|
+
"artifact.labels.add(study0, feature)\n",
|
107
|
+
"artifact.describe()"
|
70
108
|
]
|
71
109
|
},
|
72
110
|
{
|
@@ -82,9 +120,9 @@
|
|
82
120
|
"source": [
|
83
121
|
"Features and labels are the primary ways of registering domain-knowledge related metadata in LaminDB.\n",
|
84
122
|
"\n",
|
85
|
-
"Features represent measurement dimensions (e.g.
|
123
|
+
"Features represent measurement dimensions (e.g. `\"species\"`) and labels represent measured values (e.g. `\"iris setosa\"`, `\"iris versicolor\"`, `\"iris virginica\"`).\n",
|
86
124
|
"\n",
|
87
|
-
"In statistics, you'd say a feature is a categorical or numerical variable
|
125
|
+
"In statistics, you'd say a feature is a categorical or numerical variable while a label is a simple category. Categorical variables draw their values from a set of categories."
|
88
126
|
]
|
89
127
|
},
|
90
128
|
{
|
@@ -98,7 +136,7 @@
|
|
98
136
|
"cell_type": "markdown",
|
99
137
|
"metadata": {},
|
100
138
|
"source": [
|
101
|
-
"We study 3
|
139
|
+
"We study 3 species of the Iris plant: `setosa`, `versicolor` & `virginica`. Let's create 3 labels with {class}`~lamindb.ULabel`."
|
102
140
|
]
|
103
141
|
},
|
104
142
|
{
|
@@ -111,8 +149,8 @@
|
|
111
149
|
},
|
112
150
|
"outputs": [],
|
113
151
|
"source": [
|
114
|
-
"
|
115
|
-
"ln.save(
|
152
|
+
"speciess = [ln.ULabel(name=name) for name in [\"setosa\", \"versicolor\", \"virginica\"]]\n",
|
153
|
+
"ln.save(speciess)"
|
116
154
|
]
|
117
155
|
},
|
118
156
|
{
|
@@ -139,7 +177,7 @@
|
|
139
177
|
"cell_type": "markdown",
|
140
178
|
"metadata": {},
|
141
179
|
"source": [
|
142
|
-
"Anticipating that we'll have many different labels when working with more data, we'd like to express that all 3 labels are
|
180
|
+
"Anticipating that we'll have many different labels when working with more data, we'd like to express that all 3 labels are species labels:"
|
143
181
|
]
|
144
182
|
},
|
145
183
|
{
|
@@ -152,16 +190,9 @@
|
|
152
190
|
},
|
153
191
|
"outputs": [],
|
154
192
|
"source": [
|
155
|
-
"
|
156
|
-
"
|
157
|
-
"
|
158
|
-
]
|
159
|
-
},
|
160
|
-
{
|
161
|
-
"cell_type": "markdown",
|
162
|
-
"metadata": {},
|
163
|
-
"source": [
|
164
|
-
"In addition to organism, we want like to track the studies that produced the data:"
|
193
|
+
"is_species = ln.ULabel(name=\"is_species\").save()\n",
|
194
|
+
"is_species.children.set(speciess)\n",
|
195
|
+
"is_species.view_parents(with_children=True)"
|
165
196
|
]
|
166
197
|
},
|
167
198
|
{
|
@@ -181,20 +212,6 @@
|
|
181
212
|
"is_study.view_parents(with_children=True)"
|
182
213
|
]
|
183
214
|
},
|
184
|
-
{
|
185
|
-
"cell_type": "markdown",
|
186
|
-
"metadata": {},
|
187
|
-
"source": [
|
188
|
-
":::{dropdown} Why label a dataset by study?\n",
|
189
|
-
"\n",
|
190
|
-
"We can then\n",
|
191
|
-
"\n",
|
192
|
-
"1. query all artifacts link to this experiment\n",
|
193
|
-
"2. model it as a confounder when we'll analyze similar data from a follow-up experiment, and concatenate data using the label as a feature in a data matrix\n",
|
194
|
-
"\n",
|
195
|
-
":::"
|
196
|
-
]
|
197
|
-
},
|
198
215
|
{
|
199
216
|
"cell_type": "markdown",
|
200
217
|
"metadata": {},
|
@@ -210,7 +227,7 @@
|
|
210
227
|
"\n",
|
211
228
|
"When we integrate datasets, feature names will label columns that store data.\n",
|
212
229
|
"\n",
|
213
|
-
"Let's create and save two {class}`~lamindb.Feature` records to identify measurements of the iris
|
230
|
+
"Let's create and save two {class}`~lamindb.Feature` records to identify measurements of the iris species label and the study:"
|
214
231
|
]
|
215
232
|
},
|
216
233
|
{
|
@@ -223,8 +240,8 @@
|
|
223
240
|
},
|
224
241
|
"outputs": [],
|
225
242
|
"source": [
|
226
|
-
"ln.Feature(name=\"
|
227
|
-
"
|
243
|
+
"ln.Feature(name=\"iris_species_name\", dtype=\"cat\").save()\n",
|
244
|
+
"\n",
|
228
245
|
"# create a lookup object so that we can access features with auto-complete\n",
|
229
246
|
"features = ln.Feature.lookup()"
|
230
247
|
]
|
@@ -340,8 +357,8 @@
|
|
340
357
|
"for artifact, study in zip(study_artifacts, study_labels):\n",
|
341
358
|
" artifact.labels.add(study, feature=features.study_name)\n",
|
342
359
|
" df = pd.read_csv(artifact.path / \"meta.csv\", index_col=0)\n",
|
343
|
-
"
|
344
|
-
" artifact.labels.add(
|
360
|
+
" species_labels = ln.ULabel.from_values(df[\"1\"].unique())\n",
|
361
|
+
" artifact.labels.add(species_labels, feature=features.iris_species_name)"
|
345
362
|
]
|
346
363
|
},
|
347
364
|
{
|
@@ -355,7 +372,7 @@
|
|
355
372
|
"cell_type": "markdown",
|
356
373
|
"metadata": {},
|
357
374
|
"source": [
|
358
|
-
"Using the new annotations, you can now query image artifacts by
|
375
|
+
"Using the new annotations, you can now query image artifacts by species & study labels:"
|
359
376
|
]
|
360
377
|
},
|
361
378
|
{
|
@@ -418,8 +435,8 @@
|
|
418
435
|
"source": [
|
419
436
|
"collection = ln.Collection.filter(name__startswith=\"Iris collection\", version=\"1\").one()\n",
|
420
437
|
"collection.labels.add(ulabels.study0, feature=features.study_name)\n",
|
421
|
-
"
|
422
|
-
"collection.labels.add(
|
438
|
+
"all_species_labels = ln.ULabel.filter(parents__name=\"is_species\").all()\n",
|
439
|
+
"collection.labels.add(all_species_labels, feature=features.iris_species_name)"
|
423
440
|
]
|
424
441
|
},
|
425
442
|
{
|
@@ -597,7 +614,7 @@
|
|
597
614
|
},
|
598
615
|
"outputs": [],
|
599
616
|
"source": [
|
600
|
-
"artifact.features.
|
617
|
+
"artifact.features.add_feature_set(ln.FeatureSet(new_features), slot=\"columns\")"
|
601
618
|
]
|
602
619
|
},
|
603
620
|
{
|
@@ -665,7 +682,7 @@
|
|
665
682
|
"cell_type": "markdown",
|
666
683
|
"metadata": {},
|
667
684
|
"source": [
|
668
|
-
"There is one categorical feature, let's add the
|
685
|
+
"There is one categorical feature, let's add the species labels:"
|
669
686
|
]
|
670
687
|
},
|
671
688
|
{
|
@@ -678,8 +695,8 @@
|
|
678
695
|
},
|
679
696
|
"outputs": [],
|
680
697
|
"source": [
|
681
|
-
"
|
682
|
-
"artifact.labels.add(
|
698
|
+
"species_labels = ln.ULabel.filter(parents__name=\"is_species\").all()\n",
|
699
|
+
"artifact.labels.add(species_labels, feature=features.iris_species_name)"
|
683
700
|
]
|
684
701
|
},
|
685
702
|
{
|
@@ -41,7 +41,7 @@ Modules & settings:
|
|
41
41
|
"""
|
42
42
|
|
43
43
|
# denote a release candidate for 0.1.0 with 0.1rc1, 0.1a1, 0.1b1, etc.
|
44
|
-
__version__ = "0.
|
44
|
+
__version__ = "0.72.0"
|
45
45
|
|
46
46
|
import os as _os
|
47
47
|
|
@@ -72,6 +72,7 @@ if _check_instance_setup(from_lamindb=True):
|
|
72
72
|
User,
|
73
73
|
)
|
74
74
|
|
75
|
+
from . import core # isort: split
|
75
76
|
from . import (
|
76
77
|
_annotate,
|
77
78
|
_artifact,
|
@@ -86,7 +87,6 @@ if _check_instance_setup(from_lamindb=True):
|
|
86
87
|
_storage,
|
87
88
|
_transform,
|
88
89
|
_ulabel,
|
89
|
-
core,
|
90
90
|
)
|
91
91
|
|
92
92
|
dev = core # backward compat
|
@@ -9,18 +9,14 @@ from lamin_utils import colors, logger
|
|
9
9
|
from lamindb_setup.core._docs import doc_args
|
10
10
|
from lnschema_core import Artifact, Collection, Feature, Registry, Run, ULabel
|
11
11
|
|
12
|
+
from .core.exceptions import ValidationError
|
13
|
+
|
12
14
|
if TYPE_CHECKING:
|
13
15
|
from lamindb_setup.core.types import UPathStr
|
14
16
|
from lnschema_core.types import FieldAttr
|
15
17
|
from mudata import MuData
|
16
18
|
|
17
19
|
|
18
|
-
class ValidationError(ValueError):
|
19
|
-
"""Validation error."""
|
20
|
-
|
21
|
-
pass
|
22
|
-
|
23
|
-
|
24
20
|
class AnnotateLookup:
|
25
21
|
"""Lookup categories from the reference instance."""
|
26
22
|
|
@@ -566,7 +562,7 @@ class MuDataAnnotator:
|
|
566
562
|
save_function="add_new_from_var_index",
|
567
563
|
using=self._using,
|
568
564
|
validated_only=validated_only,
|
569
|
-
|
565
|
+
dtype="number",
|
570
566
|
**kwargs,
|
571
567
|
)
|
572
568
|
|
@@ -1034,7 +1030,7 @@ def update_registry(
|
|
1034
1030
|
validated_only: bool = True,
|
1035
1031
|
df: pd.DataFrame | None = None,
|
1036
1032
|
organism: str | None = None,
|
1037
|
-
|
1033
|
+
dtype: str | None = None,
|
1038
1034
|
**kwargs,
|
1039
1035
|
) -> None:
|
1040
1036
|
"""Save features or labels records in the default instance from the using instance.
|
@@ -1048,7 +1044,7 @@ def update_registry(
|
|
1048
1044
|
validated_only: If True, only save validated labels.
|
1049
1045
|
df: A DataFrame to save labels from.
|
1050
1046
|
organism: The organism name.
|
1051
|
-
|
1047
|
+
dtype: The type of the feature.
|
1052
1048
|
kwargs: Additional keyword arguments to pass to the registry model to create new records.
|
1053
1049
|
"""
|
1054
1050
|
from lamindb._save import save as ln_save
|
@@ -1102,7 +1098,7 @@ def update_registry(
|
|
1102
1098
|
for value in labels_saved["without reference"]:
|
1103
1099
|
filter_kwargs[field.field.name] = value
|
1104
1100
|
if registry == Feature:
|
1105
|
-
filter_kwargs["
|
1101
|
+
filter_kwargs["dtype"] = "cat" if dtype is None else dtype
|
1106
1102
|
non_validated_records.append(registry(**filter_kwargs, **kwargs))
|
1107
1103
|
ln_save(non_validated_records)
|
1108
1104
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import os
|
3
4
|
import shutil
|
4
5
|
from concurrent.futures import ThreadPoolExecutor
|
5
6
|
from pathlib import Path, PurePath, PurePosixPath
|
@@ -212,7 +213,10 @@ def get_stat_or_artifact(
|
|
212
213
|
file_size = file.stat().st_size
|
213
214
|
return hash_file(file, file_size)[0], file_size
|
214
215
|
|
215
|
-
|
216
|
+
try:
|
217
|
+
n_workers = len(psutil.Process().cpu_affinity())
|
218
|
+
except AttributeError:
|
219
|
+
n_workers = psutil.cpu_count()
|
216
220
|
if n_workers > 1:
|
217
221
|
with ThreadPoolExecutor(n_workers) as pool:
|
218
222
|
hashes_sizes = pool.map(hash_size, files)
|
@@ -345,7 +349,7 @@ def get_artifact_kwargs_from_data(
|
|
345
349
|
# save the information that this artifact was previously
|
346
350
|
# produced by another run
|
347
351
|
if artifact.run is not None:
|
348
|
-
artifact.run.
|
352
|
+
artifact.run.output_artifacts_with_later_updates.add(artifact)
|
349
353
|
# update the run of the artifact with the latest run
|
350
354
|
stat_or_artifact.run = run
|
351
355
|
stat_or_artifact.transform = run.transform
|