lamindb 1.11a1__tar.gz → 1.11.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lamindb-1.11a1 → lamindb-1.11.1}/.gitignore +2 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/.gitmodules +0 -3
- {lamindb-1.11a1 → lamindb-1.11.1}/.pre-commit-config.yaml +2 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/PKG-INFO +12 -17
- {lamindb-1.11a1 → lamindb-1.11.1}/README.md +2 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/api.md +1 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/curate.ipynb +88 -13
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/acid.ipynb +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/idempotency.ipynb +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/keep-artifacts-local.ipynb +2 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/setup.ipynb +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/track-run-inputs.ipynb +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/includes/installation.md +1 -4
- lamindb-1.11.1/docs/scripts/curate_anndata_uns.py +9 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/curate_dataframe_attrs.py +2 -9
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/curate_mudata.py +14 -2
- lamindb-1.11.1/docs/scripts/define_schema_anndata_uns.py +10 -0
- lamindb-1.11.1/docs/scripts/define_schema_df_metadata.py +9 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/track.ipynb +2 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/transfer.ipynb +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/__init__.py +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/_finish.py +3 -3
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/_context.py +4 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/curators/core.py +13 -5
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/errors.py +6 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/cellxgene/_cellxgene.py +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/croissant/__init__.py +20 -4
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/datasets/_core.py +8 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/datasets/mini_immuno.py +0 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/fixtures/sheets.py +8 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/integrations/_croissant.py +34 -11
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0121_recorduser.py +7 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/__init__.py +1 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/_feature_manager.py +78 -18
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/artifact.py +71 -65
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/artifact_set.py +12 -3
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/query_set.py +146 -58
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/record.py +5 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/run.py +2 -27
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/save.py +6 -8
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/sqlrecord.py +47 -33
- {lamindb-1.11a1 → lamindb-1.11.1}/noxfile.py +10 -11
- {lamindb-1.11a1 → lamindb-1.11.1}/pyproject.toml +14 -19
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_artifact.py +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_can_curate.py +8 -8
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_collection.py +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_data.py +3 -3
- lamindb-1.11.1/tests/core/test_delete.py +18 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_describe_and_df_calls.py +5 -5
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_feature.py +3 -3
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_feature_label_manager.py +26 -26
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_from_values.py +2 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_has_parents.py +2 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_models.py +3 -3
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_queryset.py +22 -3
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_save.py +1 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_schema.py +9 -9
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_search.py +2 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_versioning.py +29 -7
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/curators/test_cat_managers.py +39 -39
- lamindb-1.11.1/tests/curators/test_curate_from_croissant.py +78 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/curators/test_curators_examples.py +76 -98
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/curators/test_curators_general.py +16 -16
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/curators/test_curators_multivalue.py +2 -2
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/curators/test_cxg_curator.py +5 -5
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/curators/test_records.py +5 -4
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/permissions/scripts/setup_access.py +5 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/permissions/test_permissions.py +47 -1
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/storage/test_streaming.py +8 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/storage/test_transfer.py +8 -4
- lamindb-1.11a1/tests/core/test_delete.py +0 -9
- lamindb-1.11a1/tests/curators/test_curate_from_croissant.py +0 -45
- {lamindb-1.11a1 → lamindb-1.11.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/.github/ISSUE_TEMPLATE/usage_question.yml +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/.github/workflows/build.yml +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/CONTRIBUTING.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/LICENSE +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/arrays.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/bio-registries.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/bionty.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/changelog.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/clinicore.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/curate-any.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/delete.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/import-modules.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/pydantic-pandera.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/search.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/symbol-mapping.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/test_notebooks.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/validate-fields.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq/visibility.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/faq.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/guide.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/index.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/lamindb.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/query-search.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/registries.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/curate_anndata_flexible.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/curate_dataframe_external_features.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/curate_dataframe_flexible.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/curate_dataframe_minimal_errors.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/curate_soma_experiment.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/curate_spatialdata.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/define_mini_immuno_features_labels.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/define_mini_immuno_schema_flexible.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/define_schema_anndata_ensembl_gene_ids_and_valid_features_in_obs.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/define_schema_spatialdata.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/define_valid_features.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/run_track_and_finish.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/run_track_with_params.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/run_workflow.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/save_mini_immuno_datasets.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/scripts/synced_with_git.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/add-replace-cache.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/test-files/iris.data +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/test_notebooks.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/upload.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage/vitessce.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/storage.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/test_notebooks.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/docs/wetlab.md +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/_tracked.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/_view.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/base/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/base/dtypes.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/base/fields.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/base/ids.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/base/types.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/base/uids.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/base/users.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/_compat.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/_settings.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/_sync_git.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/_track_environment.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/exceptions.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/loaders.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/_anndata_accessor.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/_backed_access.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/_polars_lazy_df.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/_pyarrow_dataset.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/_spatialdata_accessor.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/_tiledbsoma.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/objects.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/storage/paths.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/subsettings/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/subsettings/_annotation_settings.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/subsettings/_creation_settings.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/core/types.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/curators/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/curators/_legacy.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/cellxgene/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/cellxgene/cellxgene_schema_versions.csv +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/croissant/mini_immuno.anndata.zarr_metadata.json +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/datasets/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/datasets/_fake.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/datasets/_small.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/fixtures/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/schemas/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/schemas/_anndata.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/examples/schemas/_simple.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/integrations/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/integrations/_vitessce.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0069_squashed.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0070_lamindbv1_migrate_data.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0071_lamindbv1_migrate_schema.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0072_remove_user__branch_code_remove_user_aux_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0073_merge_ourprojects.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0074_lamindbv1_part4.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0075_lamindbv1_part5.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0076_lamindbv1_part6.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0077_lamindbv1_part6b.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0078_lamindbv1_part6c.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0079_alter_rundata_value_json_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0080_polish_lamindbv1.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0081_revert_textfield_collection.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0082_alter_feature_dtype.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0083_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0084_alter_schemafeature_feature_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0085_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0086_various.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0087_rename__schemas_m2m_artifact_feature_sets_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0088_schema_components.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0089_subsequent_runs.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0090_runproject_project_runs.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0091_alter_featurevalue_options_alter_space_options_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0092_alter_artifactfeaturevalue_artifact_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0093_alter_schemacomponent_unique_together.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0094_writeloglock_writelogmigrationstate_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0095_remove_rundata_flextable.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0096_remove_artifact__param_values_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0097_remove_schemaparam_param_remove_paramvalue_param_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0098_alter_feature_type_alter_project_type_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0099_alter_writelog_seqno.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0100_branch_alter_artifact__branch_code_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0101_alter_artifact_hash_alter_feature_name_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0102_remove_writelog_branch_code_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0103_remove_writelog_migration_state_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0104_alter_branch_uid.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0105_record_unique_name.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0106_transfer_data_migration.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0107_add_schema_to_record.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0108_remove_record_sheet_remove_sheetproject_sheet_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0109_record_input_of_runs_alter_record_run_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0110_rename_values_artifacts_record_linked_artifacts.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0111_remove_record__sort_order.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0112_alter_recordartifact_feature_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0113_lower_case_branch_and_space_names.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0114_alter_run__status_code.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0115_alter_space_uid.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0116_remove_artifact_unique_artifact_storage_key_hash_and_more.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0117_fix_artifact_storage_hash_unique_constraints.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0118_alter_recordproject_value_projectrecord.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0119_rename_records_project_linked_in_records.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0119_squashed.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/0120_add_record_fk_constraint.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/migrations/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/_describe.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/_django.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/_from_values.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/_is_versioned.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/_label_manager.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/_relations.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/can_curate.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/collection.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/feature.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/has_parents.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/project.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/query_manager.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/schema.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/storage.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/transform.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/models/ulabel.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/py.typed +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/setup/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/setup/_switch.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/setup/errors/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/lamindb/setup/types/__init__.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/conftest.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/_dataset_fixtures.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/conftest.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/notebooks/basic-r-notebook.Rmd.cleaned.html +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/notebooks/basic-r-notebook.Rmd.html +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/notebooks/no-title.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/scripts/duplicate4/script-to-test-versioning.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/scripts/duplicate5/script-to-test-versioning.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/scripts/script-to-test-filename-change.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/scripts/script-to-test-versioning.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_artifact_folders.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_db.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_dtype.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_integrity.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_load.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_manager.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_notebooks.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_run.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_settings.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_sqlrecord.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_storage.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_track.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_tracked.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_transform.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_ulabel.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_view.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/core/test_visibility.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/curators/conftest.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/curators/test_dataframe_curators_accounting_example.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/permissions/conftest.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/permissions/jwt_utils.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/permissions/scripts/check_lamin_dev.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/permissions/scripts/clean_lamin_dev.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/permissions/scripts/setup_instance.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/storage/conftest.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/storage/test_artifact_storage.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/storage/test_artifact_zarr.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/storage/test_cache.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/storage/test_connect_reconnect.py +0 -0
- {lamindb-1.11a1 → lamindb-1.11.1}/tests/storage/test_storage_lifecycle.py +0 -0
@@ -10,9 +10,6 @@
|
|
10
10
|
[submodule "sub/wetlab"]
|
11
11
|
path = sub/wetlab
|
12
12
|
url = https://github.com/laminlabs/wetlab
|
13
|
-
[submodule "sub/clinicore"]
|
14
|
-
path = sub/clinicore
|
15
|
-
url = https://github.com/laminlabs/clinicore
|
16
13
|
[submodule "sub/cellxgene-lamin"]
|
17
14
|
path = sub/cellxgene-lamin
|
18
15
|
url = https://github.com/laminlabs/cellxgene-lamin.git
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: lamindb
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.11.1
|
4
4
|
Summary: A data framework for biology.
|
5
5
|
Author-email: Lamin Labs <open-source@lamin.ai>
|
6
6
|
Requires-Python: >=3.10,<3.14
|
@@ -10,8 +10,14 @@ Classifier: Programming Language :: Python :: 3.11
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.12
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
12
12
|
Requires-Dist: lamin_utils==0.15.0
|
13
|
-
Requires-Dist: lamin_cli==1.7.
|
14
|
-
Requires-Dist: lamindb_setup[aws]==1.10.
|
13
|
+
Requires-Dist: lamin_cli==1.7.1
|
14
|
+
Requires-Dist: lamindb_setup[aws]==1.10.1
|
15
|
+
Requires-Dist: bionty>=1.7a1
|
16
|
+
Requires-Dist: wetlab>=1.5a1
|
17
|
+
Requires-Dist: nbproject==0.11.1
|
18
|
+
Requires-Dist: jupytext
|
19
|
+
Requires-Dist: nbconvert>=7.2.1
|
20
|
+
Requires-Dist: mistune!=3.1.0
|
15
21
|
Requires-Dist: pyyaml
|
16
22
|
Requires-Dist: pyarrow
|
17
23
|
Requires-Dist: pandera>=0.24.0
|
@@ -23,8 +29,6 @@ Requires-Dist: anndata>=0.8.0,<=0.12.1
|
|
23
29
|
Requires-Dist: fsspec
|
24
30
|
Requires-Dist: graphviz
|
25
31
|
Requires-Dist: psycopg2-binary
|
26
|
-
Requires-Dist: bionty>=1.6.1rc1 ; extra == "bionty"
|
27
|
-
Requires-Dist: clinicore>=1.2.1 ; extra == "clinicore"
|
28
32
|
Requires-Dist: tomlkit ; extra == "dev"
|
29
33
|
Requires-Dist: line_profiler ; extra == "dev"
|
30
34
|
Requires-Dist: pre-commit ; extra == "dev"
|
@@ -32,28 +36,19 @@ Requires-Dist: nox ; extra == "dev"
|
|
32
36
|
Requires-Dist: laminci>=0.3 ; extra == "dev"
|
33
37
|
Requires-Dist: pytest>=6.0 ; extra == "dev"
|
34
38
|
Requires-Dist: coverage ; extra == "dev"
|
35
|
-
Requires-Dist: pytest-cov ; extra == "dev"
|
39
|
+
Requires-Dist: pytest-cov<7.0.0 ; extra == "dev"
|
36
40
|
Requires-Dist: mudata ; extra == "dev"
|
37
41
|
Requires-Dist: nbproject_test>=0.6.0 ; extra == "dev"
|
38
42
|
Requires-Dist: faker-biology ; extra == "dev"
|
39
43
|
Requires-Dist: pronto ; extra == "dev"
|
40
44
|
Requires-Dist: readfcs>=2.0.1 ; extra == "fcs"
|
41
45
|
Requires-Dist: lamindb_setup[gcp] ; extra == "gcp"
|
42
|
-
Requires-Dist: nbproject==0.11.1 ; extra == "jupyter"
|
43
|
-
Requires-Dist: jupytext ; extra == "jupyter"
|
44
|
-
Requires-Dist: nbconvert>=7.2.1 ; extra == "jupyter"
|
45
|
-
Requires-Dist: mistune!=3.1.0 ; extra == "jupyter"
|
46
|
-
Requires-Dist: wetlab>=1.3.1 ; extra == "wetlab"
|
47
46
|
Requires-Dist: numcodecs<0.16.0 ; extra == "zarr"
|
48
47
|
Requires-Dist: zarr>=2.16.0,<3.0.0a0 ; extra == "zarr"
|
49
48
|
Project-URL: Home, https://github.com/laminlabs/lamindb
|
50
|
-
Provides-Extra: bionty
|
51
|
-
Provides-Extra: clinicore
|
52
49
|
Provides-Extra: dev
|
53
50
|
Provides-Extra: fcs
|
54
51
|
Provides-Extra: gcp
|
55
|
-
Provides-Extra: jupyter
|
56
|
-
Provides-Extra: wetlab
|
57
52
|
Provides-Extra: zarr
|
58
53
|
|
59
54
|
[](https://github.com/laminlabs/lamindb)
|
@@ -77,7 +72,7 @@ It lets you track data transformations, validate & annotate datasets, and query
|
|
77
72
|
Install the `lamindb` Python package:
|
78
73
|
|
79
74
|
```shell
|
80
|
-
pip install
|
75
|
+
pip install lamindb
|
81
76
|
```
|
82
77
|
|
83
78
|
Create a LaminDB instance:
|
@@ -134,7 +129,7 @@ Conversely, you can query artifacts by the script that created them.
|
|
134
129
|
ln.Artifact.get(transform__key="create-fasta.py") # query artifact by transform key
|
135
130
|
```
|
136
131
|
|
137
|
-
Data lineage is just one type of metadata to help analysis and model training through queries, validation, and annotation. Here is a more [comprehensive example](https://lamin.ai/laminlabs/lamindata/artifact/
|
132
|
+
Data lineage is just one type of metadata to help analysis and model training through queries, validation, and annotation. Here is a more [comprehensive example](https://lamin.ai/laminlabs/lamindata/artifact/9K1dteZ6Qx0EXK8g).
|
138
133
|
|
139
134
|
<img src="https://lamin-site-assets.s3.amazonaws.com/.lamindb/6sofuDVvTANB0f480001.png" width="850">
|
140
135
|
|
@@ -19,7 +19,7 @@ It lets you track data transformations, validate & annotate datasets, and query
|
|
19
19
|
Install the `lamindb` Python package:
|
20
20
|
|
21
21
|
```shell
|
22
|
-
pip install
|
22
|
+
pip install lamindb
|
23
23
|
```
|
24
24
|
|
25
25
|
Create a LaminDB instance:
|
@@ -76,7 +76,7 @@ Conversely, you can query artifacts by the script that created them.
|
|
76
76
|
ln.Artifact.get(transform__key="create-fasta.py") # query artifact by transform key
|
77
77
|
```
|
78
78
|
|
79
|
-
Data lineage is just one type of metadata to help analysis and model training through queries, validation, and annotation. Here is a more [comprehensive example](https://lamin.ai/laminlabs/lamindata/artifact/
|
79
|
+
Data lineage is just one type of metadata to help analysis and model training through queries, validation, and annotation. Here is a more [comprehensive example](https://lamin.ai/laminlabs/lamindata/artifact/9K1dteZ6Qx0EXK8g).
|
80
80
|
|
81
81
|
<img src="https://lamin-site-assets.s3.amazonaws.com/.lamindb/6sofuDVvTANB0f480001.png" width="850">
|
82
82
|
|
@@ -955,13 +955,88 @@
|
|
955
955
|
"id": "73",
|
956
956
|
"metadata": {},
|
957
957
|
"source": [
|
958
|
-
"##
|
958
|
+
"## Unstructured dictionaries"
|
959
959
|
]
|
960
960
|
},
|
961
961
|
{
|
962
962
|
"cell_type": "markdown",
|
963
963
|
"id": "74",
|
964
964
|
"metadata": {},
|
965
|
+
"source": [
|
966
|
+
"Most datastructures support unstructured metadata stored as dictionaries:\n",
|
967
|
+
"\n",
|
968
|
+
"- Pandas DataFrames: `.attrs`\n",
|
969
|
+
"- AnnData: `.uns`\n",
|
970
|
+
"- MuData: `.uns` and `modality:uns`\n",
|
971
|
+
"- SpatialData: `.attrs`\n",
|
972
|
+
"\n",
|
973
|
+
"Here, we exemplary show how to curate such metadata for AnnData:"
|
974
|
+
]
|
975
|
+
},
|
976
|
+
{
|
977
|
+
"cell_type": "markdown",
|
978
|
+
"id": "75",
|
979
|
+
"metadata": {},
|
980
|
+
"source": [
|
981
|
+
"```{eval-rst}\n",
|
982
|
+
".. literalinclude:: scripts/define_schema_anndata_uns.py\n",
|
983
|
+
" :language: python\n",
|
984
|
+
" :caption: define_schema_anndata_uns.py\n",
|
985
|
+
"```"
|
986
|
+
]
|
987
|
+
},
|
988
|
+
{
|
989
|
+
"cell_type": "code",
|
990
|
+
"execution_count": null,
|
991
|
+
"id": "76",
|
992
|
+
"metadata": {
|
993
|
+
"tags": [
|
994
|
+
"hide-output"
|
995
|
+
]
|
996
|
+
},
|
997
|
+
"outputs": [],
|
998
|
+
"source": [
|
999
|
+
"!python scripts/define_schema_anndata_uns.py"
|
1000
|
+
]
|
1001
|
+
},
|
1002
|
+
{
|
1003
|
+
"cell_type": "markdown",
|
1004
|
+
"id": "77",
|
1005
|
+
"metadata": {},
|
1006
|
+
"source": [
|
1007
|
+
"```{eval-rst}\n",
|
1008
|
+
".. literalinclude:: scripts/curate_anndata_uns.py\n",
|
1009
|
+
" :language: python\n",
|
1010
|
+
" :caption: curate_anndata_uns.py\n",
|
1011
|
+
"```"
|
1012
|
+
]
|
1013
|
+
},
|
1014
|
+
{
|
1015
|
+
"cell_type": "code",
|
1016
|
+
"execution_count": null,
|
1017
|
+
"id": "78",
|
1018
|
+
"metadata": {
|
1019
|
+
"tags": [
|
1020
|
+
"hide-output"
|
1021
|
+
]
|
1022
|
+
},
|
1023
|
+
"outputs": [],
|
1024
|
+
"source": [
|
1025
|
+
"!python scripts/curate_anndata_uns.py"
|
1026
|
+
]
|
1027
|
+
},
|
1028
|
+
{
|
1029
|
+
"cell_type": "markdown",
|
1030
|
+
"id": "79",
|
1031
|
+
"metadata": {},
|
1032
|
+
"source": [
|
1033
|
+
"## MuData"
|
1034
|
+
]
|
1035
|
+
},
|
1036
|
+
{
|
1037
|
+
"cell_type": "markdown",
|
1038
|
+
"id": "80",
|
1039
|
+
"metadata": {},
|
965
1040
|
"source": [
|
966
1041
|
"```{eval-rst}\n",
|
967
1042
|
".. literalinclude:: scripts/curate_mudata.py\n",
|
@@ -973,7 +1048,7 @@
|
|
973
1048
|
{
|
974
1049
|
"cell_type": "code",
|
975
1050
|
"execution_count": null,
|
976
|
-
"id": "
|
1051
|
+
"id": "81",
|
977
1052
|
"metadata": {
|
978
1053
|
"tags": [
|
979
1054
|
"hide-output"
|
@@ -986,7 +1061,7 @@
|
|
986
1061
|
},
|
987
1062
|
{
|
988
1063
|
"cell_type": "markdown",
|
989
|
-
"id": "
|
1064
|
+
"id": "82",
|
990
1065
|
"metadata": {},
|
991
1066
|
"source": [
|
992
1067
|
"## SpatialData"
|
@@ -994,7 +1069,7 @@
|
|
994
1069
|
},
|
995
1070
|
{
|
996
1071
|
"cell_type": "markdown",
|
997
|
-
"id": "
|
1072
|
+
"id": "83",
|
998
1073
|
"metadata": {},
|
999
1074
|
"source": [
|
1000
1075
|
"```{eval-rst}\n",
|
@@ -1007,7 +1082,7 @@
|
|
1007
1082
|
{
|
1008
1083
|
"cell_type": "code",
|
1009
1084
|
"execution_count": null,
|
1010
|
-
"id": "
|
1085
|
+
"id": "84",
|
1011
1086
|
"metadata": {
|
1012
1087
|
"tags": [
|
1013
1088
|
"hide-output"
|
@@ -1020,7 +1095,7 @@
|
|
1020
1095
|
},
|
1021
1096
|
{
|
1022
1097
|
"cell_type": "markdown",
|
1023
|
-
"id": "
|
1098
|
+
"id": "85",
|
1024
1099
|
"metadata": {},
|
1025
1100
|
"source": [
|
1026
1101
|
"```{eval-rst}\n",
|
@@ -1033,7 +1108,7 @@
|
|
1033
1108
|
{
|
1034
1109
|
"cell_type": "code",
|
1035
1110
|
"execution_count": null,
|
1036
|
-
"id": "
|
1111
|
+
"id": "86",
|
1037
1112
|
"metadata": {
|
1038
1113
|
"tags": [
|
1039
1114
|
"hide-output"
|
@@ -1046,7 +1121,7 @@
|
|
1046
1121
|
},
|
1047
1122
|
{
|
1048
1123
|
"cell_type": "markdown",
|
1049
|
-
"id": "
|
1124
|
+
"id": "87",
|
1050
1125
|
"metadata": {},
|
1051
1126
|
"source": [
|
1052
1127
|
"## TiledbsomaExperiment"
|
@@ -1054,7 +1129,7 @@
|
|
1054
1129
|
},
|
1055
1130
|
{
|
1056
1131
|
"cell_type": "markdown",
|
1057
|
-
"id": "
|
1132
|
+
"id": "88",
|
1058
1133
|
"metadata": {},
|
1059
1134
|
"source": [
|
1060
1135
|
"```{eval-rst}\n",
|
@@ -1067,7 +1142,7 @@
|
|
1067
1142
|
{
|
1068
1143
|
"cell_type": "code",
|
1069
1144
|
"execution_count": null,
|
1070
|
-
"id": "
|
1145
|
+
"id": "89",
|
1071
1146
|
"metadata": {
|
1072
1147
|
"tags": [
|
1073
1148
|
"hide-output"
|
@@ -1080,7 +1155,7 @@
|
|
1080
1155
|
},
|
1081
1156
|
{
|
1082
1157
|
"cell_type": "markdown",
|
1083
|
-
"id": "
|
1158
|
+
"id": "90",
|
1084
1159
|
"metadata": {},
|
1085
1160
|
"source": [
|
1086
1161
|
"## Other data structures"
|
@@ -1088,7 +1163,7 @@
|
|
1088
1163
|
},
|
1089
1164
|
{
|
1090
1165
|
"cell_type": "markdown",
|
1091
|
-
"id": "
|
1166
|
+
"id": "91",
|
1092
1167
|
"metadata": {},
|
1093
1168
|
"source": [
|
1094
1169
|
"If you have other data structures, read: {doc}`/faq/curate-any`."
|
@@ -1097,7 +1172,7 @@
|
|
1097
1172
|
{
|
1098
1173
|
"cell_type": "code",
|
1099
1174
|
"execution_count": null,
|
1100
|
-
"id": "
|
1175
|
+
"id": "92",
|
1101
1176
|
"metadata": {
|
1102
1177
|
"tags": [
|
1103
1178
|
"hide-cell"
|
@@ -7,15 +7,12 @@ pip install lamindb
|
|
7
7
|
You can configure the installation using `extras`, e.g.,
|
8
8
|
|
9
9
|
```shell
|
10
|
-
pip install 'lamindb[
|
10
|
+
pip install 'lamindb[gcp]'
|
11
11
|
```
|
12
12
|
|
13
13
|
Supported `extras` are:
|
14
14
|
|
15
15
|
```yaml
|
16
|
-
# commonly used
|
17
|
-
jupyter # parse Jupyter notebook metadata
|
18
|
-
bionty # basic biological ontologies
|
19
16
|
# cloud backends (AWS is assumed)
|
20
17
|
gcp # Google Cloud (gcfs, etc.)
|
21
18
|
# biological artifact formats
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import lamindb as ln
|
2
|
+
|
3
|
+
ln.core.datasets.mini_immuno.define_features_labels()
|
4
|
+
adata = ln.core.datasets.mini_immuno.get_dataset1(otype="AnnData")
|
5
|
+
schema = ln.Schema.get(name="Study metadata schema")
|
6
|
+
artifact = ln.Artifact.from_anndata(
|
7
|
+
adata, schema=schema, key="examples/mini_immuno_uns.h5ad"
|
8
|
+
)
|
9
|
+
artifact.describe()
|
@@ -1,20 +1,13 @@
|
|
1
1
|
import lamindb as ln
|
2
2
|
|
3
|
-
|
4
|
-
df.attrs = {"temperature": 21.6, "experiment_id": "EXP001"}
|
3
|
+
from .define_schema_df_metadata import study_metadata_schema
|
5
4
|
|
6
|
-
|
7
|
-
features=[
|
8
|
-
ln.Feature(name="temperature", dtype=float).save(),
|
9
|
-
ln.Feature(name="experiment_id", dtype=str).save(),
|
10
|
-
],
|
11
|
-
).save()
|
5
|
+
df = ln.examples.datasets.mini_immuno.get_dataset1(otype="DataFrame")
|
12
6
|
schema = ln.Schema(
|
13
7
|
features=[ln.Feature(name="perturbation", dtype="str").save()],
|
14
8
|
slots={"attrs": study_metadata_schema},
|
15
9
|
otype="DataFrame",
|
16
10
|
).save()
|
17
|
-
|
18
11
|
curator = ln.curators.DataFrameCurator(df, schema=schema)
|
19
12
|
curator.validate()
|
20
13
|
artifact = curator.save_artifact(key="examples/df_with_attrs.parquet")
|
@@ -1,6 +1,17 @@
|
|
1
1
|
import lamindb as ln
|
2
2
|
import bionty as bt
|
3
3
|
|
4
|
+
from docs.scripts.define_schema_df_metadata import study_metadata_schema
|
5
|
+
|
6
|
+
# define labels
|
7
|
+
perturbation = ln.ULabel(name="Perturbation", is_type=True).save()
|
8
|
+
ln.ULabel(name="Perturbed", type=perturbation).save()
|
9
|
+
ln.ULabel(name="NT", type=perturbation).save()
|
10
|
+
|
11
|
+
replicate = ln.ULabel(name="Replicate", is_type=True).save()
|
12
|
+
ln.ULabel(name="rep1", type=replicate).save()
|
13
|
+
ln.ULabel(name="rep2", type=replicate).save()
|
14
|
+
ln.ULabel(name="rep3", type=replicate).save()
|
4
15
|
|
5
16
|
# define the global obs schema
|
6
17
|
obs_schema = ln.Schema(
|
@@ -25,7 +36,7 @@ obs_schema_rna = ln.Schema(
|
|
25
36
|
obs_schema_hto = ln.Schema(
|
26
37
|
name="mudata_papalexi21_subset_hto_obs_schema",
|
27
38
|
features=[
|
28
|
-
ln.Feature(name="nCount_HTO", dtype=
|
39
|
+
ln.Feature(name="nCount_HTO", dtype=float).save(),
|
29
40
|
ln.Feature(name="nFeature_HTO", dtype=int).save(),
|
30
41
|
ln.Feature(name="technique", dtype=bt.ExperimentalFactor).save(),
|
31
42
|
],
|
@@ -47,11 +58,12 @@ mudata_schema = ln.Schema(
|
|
47
58
|
"rna:obs": obs_schema_rna,
|
48
59
|
"hto:obs": obs_schema_hto,
|
49
60
|
"rna:var": var_schema_rna,
|
61
|
+
"uns:study_metadata": study_metadata_schema,
|
50
62
|
},
|
51
63
|
).save()
|
52
64
|
|
53
65
|
# curate a MuData
|
54
|
-
mdata = ln.core.datasets.mudata_papalexi21_subset()
|
66
|
+
mdata = ln.core.datasets.mudata_papalexi21_subset(with_uns=True)
|
55
67
|
bt.settings.organism = "human" # set the organism to map gene symbols
|
56
68
|
curator = ln.curators.MuDataCurator(mdata, mudata_schema)
|
57
69
|
artifact = curator.save_artifact(key="examples/mudata_papalexi21_subset.h5mu")
|
@@ -19,7 +19,7 @@
|
|
19
19
|
},
|
20
20
|
"outputs": [],
|
21
21
|
"source": [
|
22
|
-
"# pip install
|
22
|
+
"# pip install lamindb\n",
|
23
23
|
"!lamin init --storage ./test-track"
|
24
24
|
]
|
25
25
|
},
|
@@ -883,7 +883,7 @@
|
|
883
883
|
],
|
884
884
|
"metadata": {
|
885
885
|
"kernelspec": {
|
886
|
-
"display_name": "
|
886
|
+
"display_name": "py312",
|
887
887
|
"language": "python",
|
888
888
|
"name": "python3"
|
889
889
|
},
|
@@ -173,7 +173,7 @@ def notebook_to_script( # type: ignore
|
|
173
173
|
if script_path is None:
|
174
174
|
return py_content
|
175
175
|
else:
|
176
|
-
script_path.write_text(py_content)
|
176
|
+
script_path.write_text(py_content, encoding="utf-8")
|
177
177
|
|
178
178
|
|
179
179
|
def clean_r_notebook_html(file_path: Path) -> tuple[str | None, Path]:
|
@@ -202,7 +202,7 @@ def clean_r_notebook_html(file_path: Path) -> tuple[str | None, Path]:
|
|
202
202
|
) # RStudio might insert a newline
|
203
203
|
cleaned_content = cleaned_content.replace(orig_error_message, "")
|
204
204
|
cleaned_path = file_path.parent / (f"{file_path.stem}.cleaned{file_path.suffix}")
|
205
|
-
cleaned_path.write_text(cleaned_content)
|
205
|
+
cleaned_path.write_text(cleaned_content, encoding="utf-8")
|
206
206
|
return title_text, cleaned_path
|
207
207
|
|
208
208
|
|
@@ -474,7 +474,7 @@ def save_context_core(
|
|
474
474
|
# this can happen in interactively executed notebooks with a pro-active version bump in case it turns out that the user didn't make a change to the notebook
|
475
475
|
run.transform = transform
|
476
476
|
run.save()
|
477
|
-
ln.Transform.get(transform_id_prior_to_save).delete()
|
477
|
+
ln.Transform.get(transform_id_prior_to_save).delete(permanent=True)
|
478
478
|
|
479
479
|
# finalize
|
480
480
|
if finished_at and not from_cli and run is not None:
|
@@ -600,9 +600,11 @@ class Context:
|
|
600
600
|
if pypackages is None:
|
601
601
|
pypackages = True
|
602
602
|
description = None
|
603
|
+
if path.suffix == ".ipynb" and path.stem.startswith("Untitled"):
|
604
|
+
raise RuntimeError(
|
605
|
+
"Your notebook is untitled, please rename it before tracking"
|
606
|
+
)
|
603
607
|
path_str = path.as_posix()
|
604
|
-
if path_str.endswith("Untitled.ipynb"):
|
605
|
-
raise RuntimeError("Please rename your notebook before tracking it")
|
606
608
|
if path_str.startswith("/fileId="):
|
607
609
|
logger.warning("tracking on Google Colab is experimental")
|
608
610
|
path_str = get_notebook_key_colab()
|
@@ -411,7 +411,7 @@ class ComponentCurator(Curator):
|
|
411
411
|
"""Curator for `DataFrame`.
|
412
412
|
|
413
413
|
Provides all key functionality to validate Pandas DataFrames.
|
414
|
-
This class is not user facing unlike :class:`~lamindb.DataFrameCurator` which extends this
|
414
|
+
This class is not user facing unlike :class:`~lamindb.curators.DataFrameCurator` which extends this
|
415
415
|
class with functionality to validate the `attrs` slot.
|
416
416
|
|
417
417
|
Args:
|
@@ -671,7 +671,7 @@ class DataFrameCurator(SlotsCurator):
|
|
671
671
|
|
672
672
|
Examples:
|
673
673
|
|
674
|
-
For a simple example using a flexible schema, see :meth:`~lamindb.Artifact.
|
674
|
+
For a simple example using a flexible schema, see :meth:`~lamindb.Artifact.from_dataframe`.
|
675
675
|
|
676
676
|
Here is an example that enforces a minimal set of columns in the dataframe.
|
677
677
|
|
@@ -688,7 +688,7 @@ class DataFrameCurator(SlotsCurator):
|
|
688
688
|
.. literalinclude:: scripts/define_mini_immuno_features_labels.py
|
689
689
|
:language: python
|
690
690
|
|
691
|
-
|
691
|
+
It is also possible to curate the `attrs` slot.
|
692
692
|
|
693
693
|
.. literalinclude:: scripts/curate_dataframe_attrs.py
|
694
694
|
:language: python
|
@@ -885,12 +885,20 @@ class AnnDataCurator(SlotsCurator):
|
|
885
885
|
dataset: The AnnData-like object to validate & annotate.
|
886
886
|
schema: A :class:`~lamindb.Schema` object that defines the validation constraints.
|
887
887
|
|
888
|
-
|
888
|
+
Examples:
|
889
|
+
|
890
|
+
Curate Ensembl gene IDs and valid features in obs:
|
889
891
|
|
890
892
|
.. literalinclude:: scripts/curate_anndata_flexible.py
|
891
893
|
:language: python
|
892
894
|
:caption: curate_anndata_flexible.py
|
893
895
|
|
896
|
+
Curate `uns` dictionary:
|
897
|
+
|
898
|
+
.. literalinclude:: scripts/curate_anndata_uns.py
|
899
|
+
:language: python
|
900
|
+
:caption: curate_anndata_uns.py
|
901
|
+
|
894
902
|
See Also:
|
895
903
|
:meth:`~lamindb.Artifact.from_anndata`.
|
896
904
|
"""
|
@@ -903,7 +911,7 @@ class AnnDataCurator(SlotsCurator):
|
|
903
911
|
super().__init__(dataset=dataset, schema=schema)
|
904
912
|
if not data_is_scversedatastructure(self._dataset, "AnnData"):
|
905
913
|
raise InvalidArgument("dataset must be AnnData-like.")
|
906
|
-
if schema.otype != "AnnData":
|
914
|
+
if schema.otype and schema.otype != "AnnData":
|
907
915
|
raise InvalidArgument("Schema otype must be 'AnnData'.")
|
908
916
|
|
909
917
|
for slot, slot_schema in schema.slots.items():
|