Skip to contents

This vignette provides a more detailed introduction to the concepts and features of {laminr}. We’ll start with a brief overview of key concepts and then walk through the basic steps to connect to a LaminDB instance and work with its core components.

Key Concepts in LaminDB

Before diving into the practical usage of {laminr}, it’s helpful to understand some core concepts in LaminDB. For a more detailed explanation, refer to the Architecture vignette (vignette("architecture", package = "laminr")).

  • Instance: A LaminDB instance is a self-contained environment for storing and managing data and metadata. Think of it like a database or a project directory. Each instance has its own schema, storage location, and metadata database.
  • Module: A module is a collection of related registries that provide specific functionality. For example, the core module contains essential registries for general data management, while the bionty module provides registries for biological entities like genes and proteins.
  • Registry: A registry is a centralized collection of related records, similar to a table in a database. Each registry holds a specific type of metadata, such as information about artifacts, transforms, or features.
  • Record: A record is a single entry within a registry, analogous to a row in a database table. Each record represents a specific entity and combines multiple fields of information.
  • Field: A field is a single piece of information within a record, like a column in a database table. For example, an artifact record might have fields for its name, description, and creation date.

Initial setup

Now, let’s set up your environment to use {laminr}.

Python setup

  1. Install the lamindb Python package.
pip install 'lamindb[aws]>=0.77.2'
  1. Connect to a LaminDB instance:
lamin connect laminlabs/cellxgene

R setup

  1. Install the {laminr} package.
  1. (Optional) Install suggested dependencies.
install.packages("laminr", dependencies = TRUE)

This includes packages like {anndata} for working with AnnData objects and {s3} for interacting with S3 storage.

Connecting to LaminDB from R

Connect to the laminlabs/cellxgene instance from your R session:

library(laminr)

db <- connect("laminlabs/cellxgene")
#> ! schema module 'ourprojects' is not installed → no access to its labels & registries (resolve via `pip install ourprojects`)
#> ! schema module 'wetlab' is not installed → no access to its labels & registries (resolve via `pip install wetlab`)
#> ! schema module 'bionty' is not installed → no access to its labels & registries (resolve via `pip install bionty`)
#>  connected lamindb: laminlabs/lamindata

The db object now represents your connection to the LaminDB instance. You can explore the available registries (like Artifact, Collection, Feature, etc.) by simply printing the db object:

db
#> cellxgene
#>   Core registries
#>     $Run
#>     $User
#>     $Param
#>     $ULabel
#>     $Feature
#>     $Storage
#>     $Artifact
#>     $Transform
#>     $Collection
#>     $FeatureSet
#>     $ParamValue
#>     $FeatureValue
#>   Additional modules
#>     bionty
#>     ourprojects

These registries correspond to Python classes in LaminDB.

To access registries within specific modules, use the $ operator. For example, to access the bionty module:

db$bionty
#> bionty
#>   Registries
#>     $Gene
#>     $Source
#>     $Tissue
#>     $Disease
#>     $Pathway
#>     $Protein
#>     $CellLine
#>     $CellType
#>     $Organism
#>     $Ethnicity
#>     $Phenotype
#>     $CellMarker
#>     $DevelopmentalStage
#>     $ExperimentalFactor

The bionty and other registries also have corresponding Python classes.

Working with registries

Let’s use the Artifact registry as an example. This registry stores datasets, models, and other data entities.

To see the available functions for the Artifact registry, print the registry object:

db$Artifact
#> Artifact
#>   Simple fields
#>     id: AutoField
#>     key: CharField
#>     uid: CharField
#>     hash: CharField
#>     size: BigIntegerField
#>     type: CharField
#>     suffix: CharField
#>     version: CharField
#>     is_latest: BooleanField
#>     n_objects: BigIntegerField
#>     created_at: DateTimeField
#>     updated_at: DateTimeField
#>     visibility: SmallIntegerField
#>     description: CharField
#>     n_observations: BigIntegerField
#>   Relational fields
#>     run: Run (many-to-one)
#>     storage: Storage (many-to-one)
#>     ulabels: ULabel (many-to-many)
#>     transform: Transform (many-to-one)
#>     created_by: User (many-to-one)
#>     collections: Collection (many-to-many)
#>     feature_sets: FeatureSet (many-to-many)
#>     input_of_runs: Run (many-to-many)
#>   Bionty fields
#>     genes: bionty$Gene (many-to-many)
#>     tissues: bionty$Tissue (many-to-many)
#>     diseases: bionty$Disease (many-to-many)
#>     pathways: bionty$Pathway (many-to-many)
#>     proteins: bionty$Protein (many-to-many)
#>     organisms: bionty$Organism (many-to-many)
#>     cell_lines: bionty$CellLine (many-to-many)
#>     cell_types: bionty$CellType (many-to-many)
#>     phenotypes: bionty$Phenotype (many-to-many)
#>     ethnicities: bionty$Ethnicity (many-to-many)
#>     cell_markers: bionty$CellMarker (many-to-many)
#>     developmental_stages: bionty$DevelopmentalStage (many-to-many)
#>     experimental_factors: bionty$ExperimentalFactor (many-to-many)
#>   Ourprojects fields
#>     projects: ourprojects$Project (many-to-many)
#>     references: ourprojects$Reference (many-to-many)

You can also get a data frame summarising the records associated with a registry.

db$Artifact$df(limit = 5)
#>   suffix    version                       updated_at n_observations   id
#> 1        2023-12-15 2024-09-17T13:00:13.714256+00:00       68683222 2846
#> 2        2024-07-01 2024-09-17T13:01:23.739635+00:00      115556140 3665
#> 3   .txt       <NA> 2024-11-25T12:20:22.807106+00:00             NA 3672
#> 4  .html       <NA> 2024-11-25T12:20:35.499512+00:00             NA 3673
#> 5   .txt       <NA> 2024-12-06T16:02:47.813755+00:00             NA 3684
#>   X_accessor visibility X_key_is_virtual n_objects         size
#> 1 tiledbsoma          1            FALSE       290 635848093433
#> 2 tiledbsoma          1            FALSE       330 870700998221
#> 3       <NA>          0             TRUE        NA         9043
#> 4       <NA>          0             TRUE        NA       647365
#> 5       <NA>          0             TRUE        NA        44038
#>                           key                  uid                   hash
#> 1 cell-census/2023-12-15/soma FYMewVq5twKMDXVy0000 Mfyw8VuqftX5REITfQH_yg
#> 2 cell-census/2024-07-01/soma FYMewVq5twKMDXVy0001 bzrXBPNvitSVKvb3GG38_w
#> 3                        <NA> 5rnsIP61m6O2Rkt00000 WBwnXEQjGKfD3_LVRPS7PQ
#> 4                        <NA> n1EkazEYk7wZjdUB0000 dQGbiqShQnkLuxP54_2puw
#> 5                        <NA> gRUJR3wRz6sBh8FK0000 2maVLyT92J-34OS5ZLpJiQ
#>      type is_latest                        description X_hash_type
#> 1 dataset     FALSE                  Census 2023-12-15       md5-d
#> 2 dataset      TRUE                  Census 2024-07-01       md5-d
#> 3    <NA>      TRUE                   requirements.txt         md5
#> 4    <NA>      TRUE Report of run CPOQGmldHAqwAlLaPjia         md5
#> 5    <NA>      TRUE                   requirements.txt         md5
#>                         created_at
#> 1 2024-07-12T12:12:16.091881+00:00
#> 2 2024-07-16T12:52:01.424629+00:00
#> 3 2024-11-25T12:20:22.806751+00:00
#> 4 2024-11-25T12:20:35.499384+00:00
#> 5 2024-12-06T16:02:47.813741+00:00

Working with records

You can fetch a specific record from a registry using its ID or UID. For instance, to get the artifact with UID MkRm3eUKPwfnAyZMWD9v:

artifact <- db$Artifact$get("MkRm3eUKPwfnAyZMWD9v")

This artifact contains an AnnData object with myeloid cell data. You can view its metadata:

artifact
#> Artifact(uid='MkRm3eUKPwfnAyZMWD9v', description='blood and bone marrow from a healthy young donor', key='cell-census/2024-07-01/h5ads/d3566d6a-a455-4a15-980f-45eb29114cab.h5ad', id=3503, run_id=27, hash='O3n8I7vL1hBPcYdrSWKxfA', size=9961974, type='dataset', suffix='.h5ad', storage_id=2, version='2024-07-01', _accessor='AnnData', is_latest=TRUE, transform_id=22, _hash_type='md5-n', created_at='2024-07-12T12:34:10.072963+00:00', created_by_id=1, updated_at='2024-07-12T12:40:47.785686+00:00', visibility=1, n_observations=15502, _key_is_virtual=FALSE)

For artifact records, you can get more detailed information:

artifact$describe()
#> Artifact(uid='MkRm3eUKPwfnAyZMWD9v', description='blood and bone marrow from a healthy young donor', key='cell-census/2024-07-01/h5ads/d3566d6a-a455-4a15-980f-45eb29114cab.h5ad', id=3503, run_id=27, hash='O3n8I7vL1hBPcYdrSWKxfA', size=9961974, type='dataset', suffix='.h5ad', storage_id=2, version='2024-07-01', _accessor='AnnData', is_latest=TRUE, transform_id=22, _hash_type='md5-n', created_at='2024-07-12T12:34:10.072963+00:00', created_by_id=1, updated_at='2024-07-12T12:40:47.785686+00:00', visibility=1, n_observations=15502, _key_is_virtual=FALSE)
#>   Provenance
#>     $storage = 's3://cellxgene-data-public'
#>     $transform = 'Census release 2024-07-01 (LTS)'
#>     $run = '2024-07-16T12:49:41.81955+00:00'
#>     $created_by = 'sunnyosun'

Access specific fields of the record using the $ operator:

artifact$id
#> [1] 3503
artifact$uid
#> [1] "MkRm3eUKPwfnAyZMWD9v"
artifact$key
#> [1] "cell-census/2024-07-01/h5ads/d3566d6a-a455-4a15-980f-45eb29114cab.h5ad"

Some fields of a record contain links to related information.

artifact$storage
#> Storage(uid='oIYGbD74', root='s3://cellxgene-data-public', id=2, type='s3', region='us-west-2', created_at='2023-09-19T13:17:56.273068+00:00', created_by_id=1, updated_at='2023-10-16T15:04:08.998203+00:00')
artifact$developmental_stages
#> RelatedRecords(field_name='developmental_stages', relation_type='many-to-many', related_to='MkRm3eUKPwfnAyZMWD9v')

When those that are one-to-many or many-to-many relationship, a summary of the related information can be retrieved as a data frame.

artifact$developmental_stages$df()
#>    id      uid abbr                    name synonyms
#> 1 341 4BUoLKl0   NA 41-year-old human stage       NA
#>                         created_at                       updated_at
#> 1 2023-11-28T23:05:31.448233+00:00 2023-11-28T23:05:31.448237+00:00
#>                                                        description
#> 1 Adult Stage That Refers To An Adult Who Is Over 41 And Under 42.
#>      ontology_id
#> 1 HsapDv:0000135

Finally, for artifact records only, you can download the associated data:

artifact$cache() # Cache the data locally
#> ... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  0.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  0.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  0.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  1.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  1.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  2.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  3.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  3.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  4.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  5.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  5.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  6.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  6.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  7.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  8.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  8.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  9.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad:  9.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 10.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 11.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 11.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 12.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 13.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 13.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 14.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 15.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 15.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 16.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 16.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 17.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 18.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 18.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 19.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 20.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 20.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 21.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 22.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 22.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 23.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 24.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 24.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 25.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 26.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 26.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 27.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 28.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 28.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 29.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 30.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 30.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 31.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 32.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 32.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 33.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 33.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 34.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 35.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 35.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 36.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 37.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 37.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 38.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 39.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 39.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 40.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 41.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 41.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 42.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 43.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 43.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 44.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 45.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 45.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 46.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 47.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 47.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 48.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 49.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 49.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 50.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 51.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 51.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 52.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 53.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 53.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 54.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 55.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 55.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 56.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 57.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 57.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 58.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 58.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 59.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 60.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 60.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 61.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 62.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 62.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 63.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 64.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 64.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 65.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 66.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 66.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 67.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 68.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 68.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 69.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 70.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 70.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 71.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 72.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 72.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 73.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 74.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 74.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 75.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 76.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 76.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 77.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 78.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 78.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 79.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 80.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 80.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 81.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 82.0%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 82.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 83.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 83.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 84.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 85.3%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 85.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 86.6%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 87.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 87.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 88.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 89.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 89.9%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 90.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 91.2%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 91.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 92.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 93.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 93.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 94.5%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 95.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 95.8%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 96.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 97.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 97.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 98.4%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 99.1%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 99.7%... synchronizing d3566d6a-a455-4a15-980f-45eb29114cab.h5ad: 100.0%
#> ! run input wasn't tracked, call `ln.track()` and re-run
#> [1] "/home/runner/.cache/lamindb/cellxgene-data-public/cell-census/2024-07-01/h5ads/d3566d6a-a455-4a15-980f-45eb29114cab.h5ad"
artifact$load() # Load the data into memory
#> ! run input wasn't tracked, call `ln.track()` and re-run
#> AnnData object with n_obs × n_vars = 15502 × 460
#>     obs: 'Cluster_ID', 'Sample', 'Cell_label', 'is_primary_data', 'organism_ontology_term_id', 'self_reported_ethnicity_ontology_term_id', 'assay_ontology_term_id', 'tissue_ontology_term_id', 'Genotype', 'development_stage_ontology_term_id', 'sex_ontology_term_id', 'disease_ontology_term_id', 'donor_id', 'cell_type_ontology_term_id', 'suspension_type', 'tissue_type', 'cell_type', 'assay', 'disease', 'organism', 'sex', 'tissue', 'self_reported_ethnicity', 'development_stage', 'observation_joinid'
#>     var: 'name', 'feature_is_filtered', 'Unnamed: 0', 'feature_name', 'feature_reference', 'feature_biotype', 'feature_length'
#>     uns: 'cell_type_ontology_term_id_colors', 'citation', 'default_embedding', 'schema_reference', 'schema_version', 'title'
#>     obsm: 'X_projected', 'X_projectedmean'