lamindb 0.71.3__tar.gz → 0.72.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.
Files changed (431) hide show
  1. {lamindb-0.71.3 → lamindb-0.72.1}/.github/workflows/build.yml +2 -2
  2. {lamindb-0.71.3 → lamindb-0.72.1}/.gitmodules +3 -0
  3. {lamindb-0.71.3 → lamindb-0.72.1}/PKG-INFO +4 -4
  4. {lamindb-0.71.3 → lamindb-0.72.1}/docs/annotate-for-developers.ipynb +1 -1
  5. {lamindb-0.71.3 → lamindb-0.72.1}/docs/changelog.md +26 -0
  6. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/idempotency.ipynb +4 -4
  7. {lamindb-0.71.3 → lamindb-0.72.1}/docs/introduction.ipynb +62 -14
  8. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/prepare-transfer-local-to-cloud.ipynb +4 -4
  9. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/transfer-local-to-cloud.ipynb +5 -3
  10. {lamindb-0.71.3 → lamindb-0.72.1}/docs/tutorial.ipynb +6 -4
  11. {lamindb-0.71.3 → lamindb-0.72.1}/docs/tutorial2.ipynb +81 -64
  12. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/__init__.py +2 -2
  13. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_annotate.py +6 -10
  14. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_artifact.py +6 -2
  15. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_collection.py +4 -4
  16. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_feature.py +53 -45
  17. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_feature_set.py +37 -74
  18. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_from_values.py +0 -3
  19. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_query_manager.py +6 -1
  20. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_registry.py +8 -6
  21. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_run.py +0 -2
  22. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/__init__.py +4 -0
  23. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_data.py +30 -27
  24. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_feature_manager.py +96 -24
  25. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_label_manager.py +13 -10
  26. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_run_context.py +24 -1
  27. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/datasets/_core.py +10 -18
  28. lamindb-0.72.1/lamindb/core/schema.py +53 -0
  29. {lamindb-0.71.3 → lamindb-0.72.1}/noxfile.py +2 -2
  30. {lamindb-0.71.3 → lamindb-0.72.1}/pyproject.toml +3 -3
  31. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/bionty/__init__.py +1 -1
  32. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/pyproject.toml +1 -1
  33. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/changelog.md +5 -0
  34. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +1 -1
  35. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
  36. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_delete.py +4 -3
  37. lamindb-0.72.1/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +151 -0
  38. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +16 -10
  39. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +22 -6
  40. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +8 -1
  41. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/upath.py +4 -68
  42. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/.gitignore +1 -0
  43. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/docs/changelog.md +8 -0
  44. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lnschema_bionty/__init__.py +1 -1
  45. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py → lamindb-0.72.1/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +324 -335
  46. lamindb-0.72.1/sub/lnschema-bionty/lnschema_bionty/migrations/0024_remove_cellline_collections_and_more.py +64 -0
  47. lamindb-0.72.1/sub/lnschema-bionty/lnschema_bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +851 -0
  48. lamindb-0.72.1/sub/lnschema-bionty/lnschema_bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +520 -0
  49. lamindb-0.72.1/sub/lnschema-bionty/lnschema_bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +388 -0
  50. lamindb-0.72.1/sub/lnschema-bionty/lnschema_bionty/migrations/0028_artifactcellline_created_at_and_more.py +703 -0
  51. lamindb-0.72.1/sub/lnschema-bionty/lnschema_bionty/migrations/0028_squashed.py +2137 -0
  52. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lnschema_bionty/models.py +335 -285
  53. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/pyproject.toml +2 -2
  54. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/CHANGELOG.md +7 -0
  55. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
  56. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py → lamindb-0.72.1/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +263 -33
  57. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +1 -3
  58. lamindb-0.72.1/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +178 -0
  59. lamindb-0.72.1/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +33 -0
  60. lamindb-0.72.1/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +58 -0
  61. lamindb-0.72.1/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +191 -0
  62. lamindb-0.72.1/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +71 -0
  63. lamindb-0.72.1/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +419 -0
  64. lamindb-0.72.1/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +1302 -0
  65. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/models.py +353 -189
  66. lamindb-0.72.1/sub/wetlab/.github/workflows/build.yml +67 -0
  67. lamindb-0.72.1/sub/wetlab/.github/workflows/deploy-instance-apis.yml +19 -0
  68. lamindb-0.72.1/sub/wetlab/.github/workflows/latest-changes.jinja2 +2 -0
  69. lamindb-0.72.1/sub/wetlab/.github/workflows/latest-changes.yml +25 -0
  70. lamindb-0.72.1/sub/wetlab/.gitignore +118 -0
  71. lamindb-0.72.1/sub/wetlab/.pre-commit-config.yaml +65 -0
  72. lamindb-0.72.1/sub/wetlab/README.md +3 -0
  73. lamindb-0.72.1/sub/wetlab/docs/changelog.md +51 -0
  74. lamindb-0.72.1/sub/wetlab/docs/guide/01-get-started.ipynb +99 -0
  75. lamindb-0.72.1/sub/wetlab/docs/guide/index.md +9 -0
  76. lamindb-0.72.1/sub/wetlab/docs/index.md +12 -0
  77. lamindb-0.72.1/sub/wetlab/docs/reference.md +5 -0
  78. lamindb-0.72.1/sub/wetlab/noxfile.py +25 -0
  79. lamindb-0.72.1/sub/wetlab/pyproject.toml +37 -0
  80. lamindb-0.72.1/sub/wetlab/tests/test_integrity.py +13 -0
  81. lamindb-0.72.1/sub/wetlab/tests/test_notebooks.py +14 -0
  82. lamindb-0.72.1/sub/wetlab/wetlab/__init__.py +45 -0
  83. lamindb-0.72.1/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +321 -0
  84. lamindb-0.72.1/sub/wetlab/wetlab/migrations/0018_squashed.py +346 -0
  85. lamindb-0.72.1/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +36 -0
  86. lamindb-0.72.1/sub/wetlab/wetlab/migrations/__init__.py +0 -0
  87. lamindb-0.72.1/sub/wetlab/wetlab/models.py +226 -0
  88. {lamindb-0.71.3 → lamindb-0.72.1}/tests/conftest.py +1 -0
  89. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_annotate.py +14 -0
  90. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_can_validate.py +1 -0
  91. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_collection.py +18 -18
  92. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_feature.py +20 -18
  93. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_feature_manager.py +78 -48
  94. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_feature_set.py +20 -18
  95. lamindb-0.72.1/tests/test_label_manager.py +53 -0
  96. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_queryset.py +2 -1
  97. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_run_context.py +15 -2
  98. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_transfer.py +6 -7
  99. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +0 -838
  100. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +0 -48
  101. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +0 -87
  102. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +0 -153
  103. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +0 -151
  104. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -60
  105. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +0 -73
  106. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +0 -90
  107. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +0 -19
  108. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +0 -19
  109. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +0 -123
  110. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +0 -19
  111. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -43
  112. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +0 -179
  113. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +0 -143
  114. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +0 -55
  115. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +0 -70
  116. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +0 -142
  117. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +0 -85
  118. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0020_alter_organism_bionty_source.py +0 -23
  119. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0021_rename_files_cellline_artifacts_and_more.py +0 -78
  120. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0022_rename_datasets_cellline_collections_and_more.py +0 -77
  121. lamindb-0.71.3/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -138
  122. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -445
  123. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +0 -19
  124. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +0 -26
  125. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +0 -74
  126. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +0 -26
  127. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -118
  128. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +0 -35
  129. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +0 -26
  130. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +0 -131
  131. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +0 -88
  132. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +0 -150
  133. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -244
  134. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -117
  135. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -17
  136. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +0 -30
  137. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -160
  138. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -33
  139. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -65
  140. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +0 -47
  141. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -62
  142. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +0 -33
  143. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +0 -331
  144. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +0 -51
  145. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +0 -84
  146. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -16
  147. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0026_dataset_visibility_file_visibility.py +0 -22
  148. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0027_file_key_is_virtual.py +0 -18
  149. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0028_alter_dataset_visibility_alter_file_visibility.py +0 -30
  150. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0029_remove_feature_modality_remove_featureset_modality_and_more.py +0 -23
  151. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0030_alter_dataset_visibility_alter_file_visibility.py +0 -72
  152. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0031_rename_file_to_artifact.py +0 -172
  153. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0032_remove_dataset_storage.py +0 -16
  154. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0033_alter_artifact_unique_together_artifact_n_objects_and_more.py +0 -26
  155. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0034_run_environment.py +0 -27
  156. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0035_remove_artifact_initial_version_and_more.py +0 -31
  157. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0036_storage_description.py +0 -19
  158. lamindb-0.71.3/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -34
  159. lamindb-0.71.3/tests/test_label_manager.py +0 -48
  160. {lamindb-0.71.3 → lamindb-0.72.1}/.github/workflows/latest-changes.jinja2 +0 -0
  161. {lamindb-0.71.3 → lamindb-0.72.1}/.github/workflows/latest-changes.yml +0 -0
  162. {lamindb-0.71.3 → lamindb-0.72.1}/.gitignore +0 -0
  163. {lamindb-0.71.3 → lamindb-0.72.1}/.pre-commit-config.yaml +0 -0
  164. {lamindb-0.71.3 → lamindb-0.72.1}/LICENSE +0 -0
  165. {lamindb-0.71.3 → lamindb-0.72.1}/README.md +0 -0
  166. {lamindb-0.71.3 → lamindb-0.72.1}/docs/annotate.ipynb +0 -0
  167. {lamindb-0.71.3 → lamindb-0.72.1}/docs/bio-registries.ipynb +0 -0
  168. {lamindb-0.71.3 → lamindb-0.72.1}/docs/bionty-base.md +0 -0
  169. {lamindb-0.71.3 → lamindb-0.72.1}/docs/bionty.md +0 -0
  170. {lamindb-0.71.3 → lamindb-0.72.1}/docs/can-validate.ipynb +0 -0
  171. {lamindb-0.71.3 → lamindb-0.72.1}/docs/data.ipynb +0 -0
  172. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/acid.ipynb +0 -0
  173. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/delete.ipynb +0 -0
  174. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/import-schema.ipynb +0 -0
  175. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/keep-artifacts-local.ipynb +0 -0
  176. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/key.ipynb +0 -0
  177. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/reference-field.ipynb +0 -0
  178. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/setup.ipynb +0 -0
  179. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/test_notebooks.py +0 -0
  180. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/track-run-inputs.ipynb +0 -0
  181. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq/visibility.ipynb +0 -0
  182. {lamindb-0.71.3 → lamindb-0.72.1}/docs/faq.md +0 -0
  183. {lamindb-0.71.3 → lamindb-0.72.1}/docs/features-lamindb.md +0 -0
  184. {lamindb-0.71.3 → lamindb-0.72.1}/docs/features-laminhub.md +0 -0
  185. {lamindb-0.71.3 → lamindb-0.72.1}/docs/guide.md +0 -0
  186. {lamindb-0.71.3 → lamindb-0.72.1}/docs/index.md +0 -0
  187. {lamindb-0.71.3 → lamindb-0.72.1}/docs/installation.md +0 -0
  188. {lamindb-0.71.3 → lamindb-0.72.1}/docs/lamin-utils.md +0 -0
  189. {lamindb-0.71.3 → lamindb-0.72.1}/docs/lamindb.md +0 -0
  190. {lamindb-0.71.3 → lamindb-0.72.1}/docs/meta.ipynb +0 -0
  191. {lamindb-0.71.3 → lamindb-0.72.1}/docs/nbproject.md +0 -0
  192. {lamindb-0.71.3 → lamindb-0.72.1}/docs/query-search.md +0 -0
  193. {lamindb-0.71.3 → lamindb-0.72.1}/docs/readfcs.md +0 -0
  194. {lamindb-0.71.3 → lamindb-0.72.1}/docs/reference.md +0 -0
  195. {lamindb-0.71.3 → lamindb-0.72.1}/docs/schemas.ipynb +0 -0
  196. {lamindb-0.71.3 → lamindb-0.72.1}/docs/setup.ipynb +0 -0
  197. {lamindb-0.71.3 → lamindb-0.72.1}/docs/signup-login.md +0 -0
  198. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/add-replace-stage.ipynb +0 -0
  199. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/anndata-accessor.ipynb +0 -0
  200. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/test-files/iris.csv +0 -0
  201. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/test-files/iris.data +0 -0
  202. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/test-files/new_iris.csv +0 -0
  203. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/test_notebooks.py +0 -0
  204. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/upload.ipynb +0 -0
  205. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage/vitessce.ipynb +0 -0
  206. {lamindb-0.71.3 → lamindb-0.72.1}/docs/storage.md +0 -0
  207. {lamindb-0.71.3 → lamindb-0.72.1}/docs/test_notebooks.py +0 -0
  208. {lamindb-0.71.3 → lamindb-0.72.1}/docs/track.ipynb +0 -0
  209. {lamindb-0.71.3 → lamindb-0.72.1}/docs/transfer.ipynb +0 -0
  210. {lamindb-0.71.3 → lamindb-0.72.1}/docs/wetlab.md +0 -0
  211. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_can_validate.py +0 -0
  212. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_filter.py +0 -0
  213. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_finish.py +0 -0
  214. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_is_versioned.py +0 -0
  215. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_parents.py +0 -0
  216. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_query_set.py +0 -0
  217. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_save.py +0 -0
  218. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_storage.py +0 -0
  219. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_transform.py +0 -0
  220. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_ulabel.py +0 -0
  221. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_utils.py +0 -0
  222. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/_view.py +0 -0
  223. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_mapped_collection.py +0 -0
  224. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_settings.py +0 -0
  225. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_sync_git.py +0 -0
  226. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_track_environment.py +0 -0
  227. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/_transform_settings.py +0 -0
  228. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/datasets/__init__.py +0 -0
  229. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/datasets/_fake.py +0 -0
  230. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/exceptions.py +0 -0
  231. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/fields.py +0 -0
  232. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/storage/__init__.py +0 -0
  233. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/storage/_anndata_sizes.py +0 -0
  234. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/storage/_backed_access.py +0 -0
  235. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/storage/_valid_suffixes.py +0 -0
  236. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/storage/_zarr.py +0 -0
  237. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/storage/objects.py +0 -0
  238. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/storage/paths.py +0 -0
  239. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/types.py +0 -0
  240. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/core/versioning.py +0 -0
  241. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/integrations/__init__.py +0 -0
  242. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/integrations/_vitessce.py +0 -0
  243. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/setup/__init__.py +0 -0
  244. {lamindb-0.71.3 → lamindb-0.72.1}/lamindb/setup/core/__init__.py +0 -0
  245. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/.github/workflows/build.yml +0 -0
  246. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
  247. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
  248. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/.gitignore +0 -0
  249. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/.pre-commit-config.yaml +0 -0
  250. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/LICENSE +0 -0
  251. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/README.md +0 -0
  252. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/bionty/core/__init__.py +0 -0
  253. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/docs/changelog.md +0 -0
  254. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/docs/index.md +0 -0
  255. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/docs/reference.md +0 -0
  256. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/lamin-project.yaml +0 -0
  257. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/noxfile.py +0 -0
  258. {lamindb-0.71.3 → lamindb-0.72.1}/sub/bionty/tests/test_notebooks.py +0 -0
  259. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/.gitignore +0 -0
  260. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  261. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/README.md +0 -0
  262. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/lamin_cli/__init__.py +0 -0
  263. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
  264. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
  265. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/lamin_cli/_get.py +0 -0
  266. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  267. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/lamin_cli/_save.py +0 -0
  268. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/pyproject.toml +0 -0
  269. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/conftest.py +0 -0
  270. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  271. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  272. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  273. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  274. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
  275. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
  276. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/test_cli.py +0 -0
  277. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/test_get.py +0 -0
  278. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/test_migrate.py +0 -0
  279. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/test_multi_process.py +0 -0
  280. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/test_save_files.py +0 -0
  281. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/test_save_notebooks.py +0 -0
  282. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
  283. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  284. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
  285. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
  286. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/.gitignore +0 -0
  287. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  288. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/LICENSE +0 -0
  289. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/README.md +0 -0
  290. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  291. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  292. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  293. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  294. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  295. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  296. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
  297. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  298. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  299. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  300. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  301. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  302. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  303. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  304. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  305. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  306. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  307. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/index.md +0 -0
  308. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/notebooks.md +0 -0
  309. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/docs/reference.md +0 -0
  310. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  311. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  312. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  313. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  314. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
  315. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  316. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  317. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  318. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
  319. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  320. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  321. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  322. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
  323. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  324. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  325. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  326. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  327. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  328. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  329. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  330. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  331. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  332. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  333. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  334. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  335. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  336. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  337. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  338. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  339. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  340. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  341. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  342. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  343. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/noxfile.py +0 -0
  344. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/pyproject.toml +0 -0
  345. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
  346. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  347. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  348. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  349. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  350. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  351. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  352. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  353. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  354. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
  355. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  356. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  357. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  358. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  359. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  360. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  361. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  362. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  363. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
  364. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
  365. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
  366. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
  367. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/LICENSE +0 -0
  368. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/README.md +0 -0
  369. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/docs/index.md +0 -0
  370. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/docs/reference.md +0 -0
  371. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lamin-project.yaml +0 -0
  372. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
  373. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +0 -0
  374. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +0 -0
  375. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +0 -0
  376. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
  377. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
  378. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/noxfile.py +0 -0
  379. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
  380. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  381. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
  382. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
  383. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/.gitignore +0 -0
  384. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  385. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/LICENSE +0 -0
  386. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/README.md +0 -0
  387. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  388. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
  389. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
  390. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
  391. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
  392. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
  393. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
  394. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
  395. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
  396. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  397. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  398. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/types.py +0 -0
  399. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/lnschema_core/users.py +0 -0
  400. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/noxfile.py +0 -0
  401. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/pyproject.toml +0 -0
  402. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/tests/test_integrity.py +0 -0
  403. {lamindb-0.71.3 → lamindb-0.72.1}/sub/lnschema-core/tests/test_types.py +0 -0
  404. {lamindb-0.71.3 → lamindb-0.72.1}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
  405. {lamindb-0.71.3 → lamindb-0.72.1}/tests/notebooks/no-title.ipynb +0 -0
  406. {lamindb-0.71.3 → lamindb-0.72.1}/tests/notebooks/not-initialized.ipynb +0 -0
  407. {lamindb-0.71.3 → lamindb-0.72.1}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
  408. {lamindb-0.71.3 → lamindb-0.72.1}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
  409. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_artifact.py +2 -2
  410. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_artifact_folders.py +0 -0
  411. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_cache.py +0 -0
  412. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_data.py +0 -0
  413. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_db.py +0 -0
  414. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_delete.py +0 -0
  415. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_from_values.py +0 -0
  416. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_load.py +0 -0
  417. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_manager.py +0 -0
  418. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_notebooks.py +0 -0
  419. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_parents.py +0 -0
  420. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_registry.py +0 -0
  421. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_run.py +0 -0
  422. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_save.py +0 -0
  423. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_search.py +0 -0
  424. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_settings.py +0 -0
  425. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_storage.py +0 -0
  426. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_transform.py +0 -0
  427. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_uid.py +0 -0
  428. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_ulabel.py +0 -0
  429. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_versioning.py +0 -0
  430. {lamindb-0.71.3 → lamindb-0.72.1}/tests/test_view.py +0 -0
  431. {lamindb-0.71.3 → lamindb-0.72.1}/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' && matrix.group == 'faq' || matrix.group == 'unit' }}
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' && matrix.group == 'faq' || matrix.group == 'unit' }}
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
@@ -13,3 +13,6 @@
13
13
  [submodule "sub/bionty"]
14
14
  path = sub/bionty
15
15
  url = https://github.com/laminlabs/bionty
16
+ [submodule "sub/wetlab"]
17
+ path = sub/wetlab
18
+ url = https://github.com/laminlabs/wetlab
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.71.3
3
+ Version: 0.72.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
@@ -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.66.5
13
- Requires-Dist: lamindb_setup==0.71.4
12
+ Requires-Dist: lnschema_core==0.67.1
13
+ Requires-Dist: lamindb_setup==0.72.2
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.42.11 ; extra == "bionty"
28
+ Requires-Dist: bionty==0.43.1 ; 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, type=\"category\") for name in external_meta.keys()\n",
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"
@@ -1,5 +1,6 @@
1
1
  # Changelog
2
2
 
3
+
3
4
  :::{note}
4
5
 
5
6
  If using LaminHub, please use the latest version of lamindb.
@@ -12,6 +13,31 @@ LaminDB implements "migration-based versioning". When upgrading your LaminDB ins
12
13
  .. role:: small
13
14
  ```
14
15
 
16
+ ## 0.72
17
+
18
+ ### 0.72.1 {small}`2024-05-19`
19
+
20
+ - ⬆️ Update bionty [PR](https://github.com/laminlabs/lamindb/pull/1671) [@sunnyosun](https://github.com/sunnyosun)
21
+ - 🐛 Deal with migration errors when keep-artifacts-local is true [PR](https://github.com/laminlabs/lamindb-setup/pull/767) [@falexwolf](https://github.com/falexwolf)
22
+
23
+ ### 0.72.0 {small}`2024-05-19`
24
+
25
+ - ✨ 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)
26
+ - ✨ Extended data lineage tracking [PR](https://github.com/laminlabs/lamindb/pull/1667) [@falexwolf](https://github.com/falexwolf)
27
+ - 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
28
+ - Code is simpler through inheritance from two new base classes: `TracksRun` and `TracksUpdates`
29
+ - ♻️ 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)
30
+ - ✨ Support non-categorical metadata [PR](https://github.com/laminlabs/lnschema-core/pull/379) [@falexwolf](https://github.com/falexwolf)
31
+ - Track non-categorical features: `int`, `float`, `bool`, `datetime`, lists & dictionaries stored in a `FeatureValue` registry
32
+ - 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`
33
+ - 🏗️ Refactor link models [PR](https://github.com/laminlabs/lamindb/pull/1666) [PR](https://github.com/laminlabs/lamindb/pull/1661) [@falexwolf](https://github.com/falexwolf)
34
+ - All annotation-related links are now stratified by `Feature`: what held for `ULabel` now also holds `CellType` and all other `Bionty` registries
35
+ - Indicate whether semantic keys were used during validation to enable warnings upon renames
36
+ - Protect artifact annotations rather than cascade delete them
37
+ - More consistent naming of link models, e.g., `ulabels.artifact_links` instead of `ulabels.artifactulabel_set`
38
+ - Dropped linking `Bionty` entities directly against `Collection`
39
+ - Pruned & squashed migrations for faster instance creation
40
+
15
41
  ## 0.71
16
42
 
17
43
  ### 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 2\")"
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 3\")"
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 3\")"
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.replicating_runs.first() == artifact2.run"
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 input and output data of your code ({class}`~lamindb.Transform`)."
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
- "# auto-generated identifiers for your notebook or script\n",
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 code\n",
107
+ "# track the execution of your notebook or script\n",
102
108
  "ln.track()"
103
109
  ]
104
110
  },
@@ -141,12 +147,46 @@
141
147
  "artifact.describe()\n",
142
148
  "\n",
143
149
  "# save data & metadata in one operation\n",
144
- "artifact.save()\n",
145
- "\n",
146
- "# view data lineage\n",
147
- "artifact.view_lineage()\n",
148
- "\n",
149
- "# load an artifact\n",
150
+ "artifact.save()"
151
+ ]
152
+ },
153
+ {
154
+ "cell_type": "markdown",
155
+ "metadata": {},
156
+ "source": [
157
+ "View data lineage:"
158
+ ]
159
+ },
160
+ {
161
+ "cell_type": "code",
162
+ "execution_count": null,
163
+ "metadata": {
164
+ "tags": [
165
+ "hide-output"
166
+ ]
167
+ },
168
+ "outputs": [],
169
+ "source": [
170
+ "artifact.view_lineage()"
171
+ ]
172
+ },
173
+ {
174
+ "cell_type": "markdown",
175
+ "metadata": {},
176
+ "source": [
177
+ "Load an artifact:"
178
+ ]
179
+ },
180
+ {
181
+ "cell_type": "code",
182
+ "execution_count": null,
183
+ "metadata": {
184
+ "tags": [
185
+ "hide-output"
186
+ ]
187
+ },
188
+ "outputs": [],
189
+ "source": [
150
190
  "artifact.load()"
151
191
  ]
152
192
  },
@@ -844,9 +884,12 @@
844
884
  "\n",
845
885
  "<img src=\"https://lamin-site-assets.s3.amazonaws.com/.lamindb/BunYmHkyFLITlM5MYQci.svg\" width=\"350px\" style=\"background: transparent\" align=\"right\">\n",
846
886
  "\n",
847
- "The complexity of modern R&D data often blocks realizing the scientific progress it promises.\n",
887
+ "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",
888
+ "\n",
889
+ "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
890
  "\n",
849
- "See this [blog post](https://lamin.ai/blog/problems).\n",
891
+ "- provenance: data sources, data transformations, models, users\n",
892
+ "- domain knowledge & experimental metadata: the features & labels derived from domain entities\n",
850
893
  "\n",
851
894
  "### Assumptions\n",
852
895
  "\n",
@@ -893,6 +936,11 @@
893
936
  "\n",
894
937
  "LaminDB was influenced by many other projects, see {doc}`docs:influences`."
895
938
  ]
939
+ },
940
+ {
941
+ "cell_type": "markdown",
942
+ "metadata": {},
943
+ "source": []
896
944
  }
897
945
  ],
898
946
  "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 ln1\n",
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.add(features, slot=\"var\")\n",
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 = ln1.ExperimentType(name=\"experiment-type-test-transfer-to-cloud\")\n",
58
+ "experiment_type = wl.ExperimentType(name=\"experiment-type-test-transfer-to-cloud\")\n",
59
59
  "experiment_type.save()\n",
60
- "experiment = ln1.Experiment(name=\"experiment-test-transfer-to-cloud\")\n",
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().delete()\n",
35
- " artifact.experiments.all().delete()\n",
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.organism.get().name == \"human\"\n",
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
- "ln.settings.transform.stem_uid = \"NJvdsWWbJlZS\"\n",
138
- "ln.settings.transform.version = \"0\"\n",
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
  "![](https://img.shields.io/badge/tutorial2/2-lightgrey)\n",
8
- "[![](https://img.shields.io/badge/Source%20on%20GitHub-orange)](https://github.com/laminlabs/lamindb/blob/main/docs/tutorial1.ipynb)\n",
8
+ "[![](https://img.shields.io/badge/Source%20on%20GitHub-orange)](https://github.com/laminlabs/lamindb/blob/main/docs/tutorial2.ipynb)\n",
9
9
  "[![](https://img.shields.io/badge/Source%20%26%20report%20on%20LaminHub-mediumseagreen)](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 the previous tutorial ({doc}`/tutorial`), we learned about about how to leverage basic metadata for artifacts to access data (query, search, cache & load).\n",
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
- "Here, we walk through annotating & validating data with features & labels to improve:\n",
26
- "\n",
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 want to a high-level flow for validating and annotating features and labels, see {doc}`annotate`.\n",
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
- ":::{dropdown} What was LaminDB's most basic inspiration?\n",
49
- "\n",
50
- "The pydata family of data objects is at the heart of most data science, ML & comp bio workflows: `DataFrame`, `AnnData`, `pytorch.DataLoader`, `zarr.Array`, `pyarrow.Table`, `xarray.Collection`, ...\n",
51
- "\n",
52
- "We couldn’t find a tool to link these objects to context so that they could be analyzed in context:\n",
53
- "\n",
54
- "- data sources, data transformations, models, users & pipelines that performed transformations (provenance)\n",
55
- "- the domain entities in which data is generated and modeled (features & labels)\n",
56
- "\n",
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
- "import lamindb as ln\n",
67
- "import pandas as pd\n",
68
- "\n",
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. organism) and labels represent measured values (e.g. iris setosa, iris versicolor, iris virginica).\n",
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. A label is a simple category. Categorical variables draw their values from a set of categories."
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 organism of the Iris plant: `setosa`, `versicolor` & `virginica`. Let's create 3 labels with {class}`~lamindb.ULabel`."
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
- "organisms = [ln.ULabel(name=name) for name in [\"setosa\", \"versicolor\", \"virginica\"]]\n",
115
- "ln.save(organisms)"
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 organism labels:"
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
- "is_organism = ln.ULabel(name=\"is_organism\").save()\n",
156
- "is_organism.children.set(organisms)\n",
157
- "is_organism.view_parents(with_children=True)"
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 organism label and the study:"
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=\"iris_organism_name\", type=\"category\").save()\n",
227
- "ln.Feature(name=\"study_name\", type=\"category\").save()\n",
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
- " organism_labels = ln.ULabel.from_values(df[\"1\"].unique())\n",
344
- " artifact.labels.add(organism_labels, feature=features.iris_organism_name)"
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 organism & study labels:"
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
- "all_organism_labels = ln.ULabel.filter(parents__name=\"is_organism\").all()\n",
422
- "collection.labels.add(all_organism_labels, feature=features.iris_organism_name)"
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.add(new_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 organism labels:"
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
- "organism_labels = ln.ULabel.filter(parents__name=\"is_organism\").all()\n",
682
- "artifact.labels.add(organism_labels, feature=features.iris_organism_name)"
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.71.3"
44
+ __version__ = "0.72.1"
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