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.
Files changed (431) hide show
  1. {lamindb-0.71.3 → lamindb-0.72.0}/.github/workflows/build.yml +2 -2
  2. {lamindb-0.71.3 → lamindb-0.72.0}/.gitmodules +3 -0
  3. {lamindb-0.71.3 → lamindb-0.72.0}/PKG-INFO +4 -4
  4. {lamindb-0.71.3 → lamindb-0.72.0}/docs/annotate-for-developers.ipynb +1 -1
  5. {lamindb-0.71.3 → lamindb-0.72.0}/docs/changelog.md +20 -0
  6. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/idempotency.ipynb +4 -4
  7. {lamindb-0.71.3 → lamindb-0.72.0}/docs/introduction.ipynb +22 -8
  8. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/prepare-transfer-local-to-cloud.ipynb +4 -4
  9. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/transfer-local-to-cloud.ipynb +5 -3
  10. {lamindb-0.71.3 → lamindb-0.72.0}/docs/tutorial.ipynb +6 -4
  11. {lamindb-0.71.3 → lamindb-0.72.0}/docs/tutorial2.ipynb +81 -64
  12. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/__init__.py +2 -2
  13. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_annotate.py +6 -10
  14. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_artifact.py +6 -2
  15. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_collection.py +4 -4
  16. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_feature.py +53 -45
  17. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_feature_set.py +37 -74
  18. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_from_values.py +0 -3
  19. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_query_manager.py +6 -1
  20. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_registry.py +8 -6
  21. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_run.py +0 -2
  22. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/__init__.py +4 -0
  23. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_data.py +30 -27
  24. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_feature_manager.py +96 -24
  25. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_label_manager.py +13 -10
  26. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_run_context.py +24 -1
  27. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/datasets/_core.py +10 -18
  28. lamindb-0.72.0/lamindb/core/schema.py +53 -0
  29. {lamindb-0.71.3 → lamindb-0.72.0}/noxfile.py +2 -2
  30. {lamindb-0.71.3 → lamindb-0.72.0}/pyproject.toml +3 -3
  31. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/bionty/__init__.py +1 -1
  32. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/pyproject.toml +1 -1
  33. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/changelog.md +3 -0
  34. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +1 -1
  35. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
  36. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_delete.py +4 -3
  37. lamindb-0.72.0/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +144 -0
  38. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +16 -10
  39. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +13 -5
  40. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +8 -1
  41. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/upath.py +4 -68
  42. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.gitignore +1 -0
  43. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/docs/changelog.md +8 -0
  44. {lamindb-0.71.3 → lamindb-0.72.0}/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.0/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +324 -335
  46. lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0024_remove_cellline_collections_and_more.py +64 -0
  47. lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +851 -0
  48. lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +520 -0
  49. lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +388 -0
  50. lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0028_artifactcellline_created_at_and_more.py +703 -0
  51. lamindb-0.72.0/sub/lnschema-bionty/lnschema_bionty/migrations/0028_squashed.py +2137 -0
  52. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/models.py +335 -285
  53. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/pyproject.toml +1 -1
  54. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/CHANGELOG.md +7 -0
  55. {lamindb-0.71.3 → lamindb-0.72.0}/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.0/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +263 -33
  57. {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
  58. lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +178 -0
  59. lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +33 -0
  60. lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +58 -0
  61. lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +191 -0
  62. lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +71 -0
  63. lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +419 -0
  64. lamindb-0.72.0/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +1302 -0
  65. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/models.py +353 -189
  66. lamindb-0.72.0/sub/wetlab/.github/workflows/build.yml +67 -0
  67. lamindb-0.72.0/sub/wetlab/.github/workflows/deploy-instance-apis.yml +19 -0
  68. lamindb-0.72.0/sub/wetlab/.github/workflows/latest-changes.jinja2 +2 -0
  69. lamindb-0.72.0/sub/wetlab/.github/workflows/latest-changes.yml +25 -0
  70. lamindb-0.72.0/sub/wetlab/.gitignore +118 -0
  71. lamindb-0.72.0/sub/wetlab/.pre-commit-config.yaml +65 -0
  72. lamindb-0.72.0/sub/wetlab/README.md +3 -0
  73. lamindb-0.72.0/sub/wetlab/docs/changelog.md +51 -0
  74. lamindb-0.72.0/sub/wetlab/docs/guide/01-get-started.ipynb +99 -0
  75. lamindb-0.72.0/sub/wetlab/docs/guide/index.md +9 -0
  76. lamindb-0.72.0/sub/wetlab/docs/index.md +12 -0
  77. lamindb-0.72.0/sub/wetlab/docs/reference.md +5 -0
  78. lamindb-0.72.0/sub/wetlab/noxfile.py +25 -0
  79. lamindb-0.72.0/sub/wetlab/pyproject.toml +37 -0
  80. lamindb-0.72.0/sub/wetlab/tests/test_integrity.py +13 -0
  81. lamindb-0.72.0/sub/wetlab/tests/test_notebooks.py +14 -0
  82. lamindb-0.72.0/sub/wetlab/wetlab/__init__.py +45 -0
  83. lamindb-0.72.0/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +321 -0
  84. lamindb-0.72.0/sub/wetlab/wetlab/migrations/0018_squashed.py +346 -0
  85. lamindb-0.72.0/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +36 -0
  86. lamindb-0.72.0/sub/wetlab/wetlab/migrations/__init__.py +0 -0
  87. lamindb-0.72.0/sub/wetlab/wetlab/models.py +226 -0
  88. {lamindb-0.71.3 → lamindb-0.72.0}/tests/conftest.py +1 -0
  89. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_annotate.py +14 -0
  90. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_can_validate.py +1 -0
  91. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_collection.py +18 -18
  92. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_feature.py +20 -18
  93. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_feature_manager.py +78 -48
  94. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_feature_set.py +20 -18
  95. lamindb-0.72.0/tests/test_label_manager.py +53 -0
  96. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_queryset.py +2 -1
  97. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_run_context.py +15 -2
  98. {lamindb-0.71.3 → lamindb-0.72.0}/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.0}/.github/workflows/latest-changes.jinja2 +0 -0
  161. {lamindb-0.71.3 → lamindb-0.72.0}/.github/workflows/latest-changes.yml +0 -0
  162. {lamindb-0.71.3 → lamindb-0.72.0}/.gitignore +0 -0
  163. {lamindb-0.71.3 → lamindb-0.72.0}/.pre-commit-config.yaml +0 -0
  164. {lamindb-0.71.3 → lamindb-0.72.0}/LICENSE +0 -0
  165. {lamindb-0.71.3 → lamindb-0.72.0}/README.md +0 -0
  166. {lamindb-0.71.3 → lamindb-0.72.0}/docs/annotate.ipynb +0 -0
  167. {lamindb-0.71.3 → lamindb-0.72.0}/docs/bio-registries.ipynb +0 -0
  168. {lamindb-0.71.3 → lamindb-0.72.0}/docs/bionty-base.md +0 -0
  169. {lamindb-0.71.3 → lamindb-0.72.0}/docs/bionty.md +0 -0
  170. {lamindb-0.71.3 → lamindb-0.72.0}/docs/can-validate.ipynb +0 -0
  171. {lamindb-0.71.3 → lamindb-0.72.0}/docs/data.ipynb +0 -0
  172. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/acid.ipynb +0 -0
  173. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/delete.ipynb +0 -0
  174. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/import-schema.ipynb +0 -0
  175. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/keep-artifacts-local.ipynb +0 -0
  176. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/key.ipynb +0 -0
  177. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/reference-field.ipynb +0 -0
  178. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/setup.ipynb +0 -0
  179. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/test_notebooks.py +0 -0
  180. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/track-run-inputs.ipynb +0 -0
  181. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq/visibility.ipynb +0 -0
  182. {lamindb-0.71.3 → lamindb-0.72.0}/docs/faq.md +0 -0
  183. {lamindb-0.71.3 → lamindb-0.72.0}/docs/features-lamindb.md +0 -0
  184. {lamindb-0.71.3 → lamindb-0.72.0}/docs/features-laminhub.md +0 -0
  185. {lamindb-0.71.3 → lamindb-0.72.0}/docs/guide.md +0 -0
  186. {lamindb-0.71.3 → lamindb-0.72.0}/docs/index.md +0 -0
  187. {lamindb-0.71.3 → lamindb-0.72.0}/docs/installation.md +0 -0
  188. {lamindb-0.71.3 → lamindb-0.72.0}/docs/lamin-utils.md +0 -0
  189. {lamindb-0.71.3 → lamindb-0.72.0}/docs/lamindb.md +0 -0
  190. {lamindb-0.71.3 → lamindb-0.72.0}/docs/meta.ipynb +0 -0
  191. {lamindb-0.71.3 → lamindb-0.72.0}/docs/nbproject.md +0 -0
  192. {lamindb-0.71.3 → lamindb-0.72.0}/docs/query-search.md +0 -0
  193. {lamindb-0.71.3 → lamindb-0.72.0}/docs/readfcs.md +0 -0
  194. {lamindb-0.71.3 → lamindb-0.72.0}/docs/reference.md +0 -0
  195. {lamindb-0.71.3 → lamindb-0.72.0}/docs/schemas.ipynb +0 -0
  196. {lamindb-0.71.3 → lamindb-0.72.0}/docs/setup.ipynb +0 -0
  197. {lamindb-0.71.3 → lamindb-0.72.0}/docs/signup-login.md +0 -0
  198. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/add-replace-stage.ipynb +0 -0
  199. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/anndata-accessor.ipynb +0 -0
  200. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/test-files/iris.csv +0 -0
  201. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/test-files/iris.data +0 -0
  202. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/test-files/new_iris.csv +0 -0
  203. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/test_notebooks.py +0 -0
  204. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/upload.ipynb +0 -0
  205. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage/vitessce.ipynb +0 -0
  206. {lamindb-0.71.3 → lamindb-0.72.0}/docs/storage.md +0 -0
  207. {lamindb-0.71.3 → lamindb-0.72.0}/docs/test_notebooks.py +0 -0
  208. {lamindb-0.71.3 → lamindb-0.72.0}/docs/track.ipynb +0 -0
  209. {lamindb-0.71.3 → lamindb-0.72.0}/docs/transfer.ipynb +0 -0
  210. {lamindb-0.71.3 → lamindb-0.72.0}/docs/wetlab.md +0 -0
  211. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_can_validate.py +0 -0
  212. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_filter.py +0 -0
  213. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_finish.py +0 -0
  214. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_is_versioned.py +0 -0
  215. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_parents.py +0 -0
  216. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_query_set.py +0 -0
  217. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_save.py +0 -0
  218. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_storage.py +0 -0
  219. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_transform.py +0 -0
  220. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_ulabel.py +0 -0
  221. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_utils.py +0 -0
  222. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/_view.py +0 -0
  223. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_mapped_collection.py +0 -0
  224. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_settings.py +0 -0
  225. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_sync_git.py +0 -0
  226. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_track_environment.py +0 -0
  227. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/_transform_settings.py +0 -0
  228. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/datasets/__init__.py +0 -0
  229. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/datasets/_fake.py +0 -0
  230. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/exceptions.py +0 -0
  231. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/fields.py +0 -0
  232. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/__init__.py +0 -0
  233. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/_anndata_sizes.py +0 -0
  234. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/_backed_access.py +0 -0
  235. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/_valid_suffixes.py +0 -0
  236. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/_zarr.py +0 -0
  237. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/objects.py +0 -0
  238. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/storage/paths.py +0 -0
  239. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/types.py +0 -0
  240. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/core/versioning.py +0 -0
  241. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/integrations/__init__.py +0 -0
  242. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/integrations/_vitessce.py +0 -0
  243. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/setup/__init__.py +0 -0
  244. {lamindb-0.71.3 → lamindb-0.72.0}/lamindb/setup/core/__init__.py +0 -0
  245. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.github/workflows/build.yml +0 -0
  246. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
  247. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
  248. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.gitignore +0 -0
  249. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/.pre-commit-config.yaml +0 -0
  250. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/LICENSE +0 -0
  251. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/README.md +0 -0
  252. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/bionty/core/__init__.py +0 -0
  253. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/docs/changelog.md +0 -0
  254. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/docs/index.md +0 -0
  255. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/docs/reference.md +0 -0
  256. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/lamin-project.yaml +0 -0
  257. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/noxfile.py +0 -0
  258. {lamindb-0.71.3 → lamindb-0.72.0}/sub/bionty/tests/test_notebooks.py +0 -0
  259. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/.gitignore +0 -0
  260. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  261. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/README.md +0 -0
  262. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/__init__.py +0 -0
  263. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
  264. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
  265. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/_get.py +0 -0
  266. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  267. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/lamin_cli/_save.py +0 -0
  268. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/pyproject.toml +0 -0
  269. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/conftest.py +0 -0
  270. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  271. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  272. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  273. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  274. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
  275. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
  276. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_cli.py +0 -0
  277. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_get.py +0 -0
  278. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_migrate.py +0 -0
  279. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_multi_process.py +0 -0
  280. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_save_files.py +0 -0
  281. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_save_notebooks.py +0 -0
  282. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
  283. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  284. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
  285. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
  286. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.gitignore +0 -0
  287. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  288. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/LICENSE +0 -0
  289. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/README.md +0 -0
  290. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  291. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  292. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  293. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  294. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  295. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  296. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
  297. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  298. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  299. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  300. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  301. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  302. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  303. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  304. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  305. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  306. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  307. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/index.md +0 -0
  308. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/notebooks.md +0 -0
  309. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/docs/reference.md +0 -0
  310. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  311. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  312. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  313. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  314. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
  315. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  316. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  317. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  318. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
  319. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  320. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  321. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  322. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
  323. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  324. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  325. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  326. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  327. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  328. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  329. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  330. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  331. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  332. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  333. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  334. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  335. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  336. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  337. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  338. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  339. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  340. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  341. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  342. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  343. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/noxfile.py +0 -0
  344. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/pyproject.toml +0 -0
  345. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
  346. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  347. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  348. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  349. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  350. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  351. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  352. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  353. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  354. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
  355. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  356. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  357. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  358. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  359. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  360. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  361. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  362. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  363. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
  364. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
  365. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
  366. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
  367. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/LICENSE +0 -0
  368. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/README.md +0 -0
  369. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/docs/index.md +0 -0
  370. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/docs/reference.md +0 -0
  371. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lamin-project.yaml +0 -0
  372. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
  373. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +0 -0
  374. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +0 -0
  375. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +0 -0
  376. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
  377. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
  378. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/noxfile.py +0 -0
  379. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
  380. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  381. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
  382. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
  383. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.gitignore +0 -0
  384. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  385. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/LICENSE +0 -0
  386. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/README.md +0 -0
  387. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  388. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
  389. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
  390. {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
  391. {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
  392. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
  393. {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
  394. {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
  395. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
  396. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  397. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  398. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/types.py +0 -0
  399. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/lnschema_core/users.py +0 -0
  400. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/noxfile.py +0 -0
  401. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/pyproject.toml +0 -0
  402. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/tests/test_integrity.py +0 -0
  403. {lamindb-0.71.3 → lamindb-0.72.0}/sub/lnschema-core/tests/test_types.py +0 -0
  404. {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
  405. {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/no-title.ipynb +0 -0
  406. {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/not-initialized.ipynb +0 -0
  407. {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
  408. {lamindb-0.71.3 → lamindb-0.72.0}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
  409. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_artifact.py +2 -2
  410. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_artifact_folders.py +0 -0
  411. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_cache.py +0 -0
  412. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_data.py +0 -0
  413. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_db.py +0 -0
  414. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_delete.py +0 -0
  415. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_from_values.py +0 -0
  416. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_load.py +0 -0
  417. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_manager.py +0 -0
  418. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_notebooks.py +0 -0
  419. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_parents.py +0 -0
  420. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_registry.py +0 -0
  421. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_run.py +0 -0
  422. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_save.py +0 -0
  423. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_search.py +0 -0
  424. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_settings.py +0 -0
  425. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_storage.py +0 -0
  426. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_transform.py +0 -0
  427. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_uid.py +0 -0
  428. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_ulabel.py +0 -0
  429. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_versioning.py +0 -0
  430. {lamindb-0.71.3 → lamindb-0.72.0}/tests/test_view.py +0 -0
  431. {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' && 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.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.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.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.42.11 ; extra == "bionty"
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, 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"
@@ -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 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
  },
@@ -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
- "See this [blog post](https://lamin.ai/blog/problems).\n",
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 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.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
- type="number",
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
- type: str | None = None,
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
- type: The type of the feature.
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["type"] = "category" if type is None else type
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
- n_workers = len(psutil.Process().cpu_affinity())
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.replicated_output_artifacts.add(artifact)
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