Jupyter Notebook

Multi-modalΒΆ

Here, we’ll showcase how to curate and register ECCITE-seq data from Papalexi21 in the form of MuData objects.

ECCITE-seq is designed to enable interrogation of single-cell transcriptomes together with surface protein markers in the context of CRISPR screens.

MuData objects build on top of AnnData objects to store multimodal data.

!lamin init --storage ./test-multimodal --schema bionty
Hide code cell output
πŸ’‘ connected lamindb: testuser1/test-multimodal
import lamindb as ln
import bionty as bt
πŸ’‘ connected lamindb: testuser1/test-multimodal
mdata = ln.core.datasets.mudata_papalexi21_subset()
mdata
MuData object with n_obs Γ— n_vars = 200 Γ— 300
  obs:	'perturbation', 'replicate'
  var:	'name'
  4 modalities
    rna:	200 x 173
      obs:	'nCount_RNA', 'nFeature_RNA', 'percent.mito'
      var:	'name'
    adt:	200 x 4
      obs:	'nCount_ADT', 'nFeature_ADT'
      var:	'name'
    hto:	200 x 12
      obs:	'nCount_HTO', 'nFeature_HTO', 'technique'
      var:	'name'
    gdo:	200 x 111
      obs:	'nCount_GDO'
      var:	'name'

Validate annotationsΒΆ

annotate = ln.Annotate.from_mudata(
    mdata,
    var_index={
        "rna": bt.Gene.symbol, # gene expression
        "adt": bt.CellMarker.name, # antibody derived tags reflecting surface proteins
        "hto": ln.Feature.name, # cell hashing
        "gdo": ln.Feature.name, # guide RNAs
    },
    categoricals={
        "perturbation": ln.ULabel.name,  # shared categorical
        "replicate": ln.ULabel.name, # shared categorical
        "hto:technique": bt.ExperimentalFactor.name # note this is a modality specific categorical
    },
    organism="human",
)
Hide code cell output
βœ… added 2 records with Feature.name for columns: ['perturbation', 'replicate']
❗ 45 non-validated categories are not saved in Feature.name: ['gdo:nCount_GDO', 'gdo:percent.mito', 'hto:replicate', 'adt:G2M.Score', 'gdo:perturbation', 'hto:Phase', 'rna:nCount_RNA', 'gdo:G2M.Score', 'hto:percent.mito', 'adt:S.Score', 'gdo:Phase', 'adt:nCount_ADT', 'hto:technique', 'hto:nFeature_HTO', 'adt:nFeature_ADT', 'adt:MULTI_ID', 'adt:percent.mito', 'hto:S.Score', 'gdo:replicate', 'adt:HTO_classification', 'hto:MULTI_ID', 'rna:nFeature_RNA', 'hto:gene_target', 'hto:G2M.Score', 'hto:nCount_HTO', 'gdo:orig.ident', 'rna:percent.mito', 'gdo:guide_ID', 'hto:perturbation', 'gdo:MULTI_ID', 'hto:guide_ID', 'gdo:HTO_classification', 'gdo:gene_target', 'adt:gene_target', 'adt:replicate', 'adt:NT', 'gdo:S.Score', 'adt:guide_ID', 'adt:orig.ident', 'hto:orig.ident', 'hto:NT', 'hto:HTO_classification', 'adt:Phase', 'gdo:NT', 'adt:perturbation']!
      β†’ to lookup categories, use lookup().columns
      β†’ to save, run add_new_from_columns
βœ… added 1 record with Feature.name for columns: ['technique']
❗ 2 non-validated categories are not saved in Feature.name: ['nCount_HTO', 'nFeature_HTO']!
      β†’ to lookup categories, use lookup().columns
      β†’ to save, run add_new_from_columns
❗ 2 non-validated categories are not saved in Feature.name: ['nFeature_ADT', 'nCount_ADT']!
      β†’ to lookup categories, use lookup().columns
      β†’ to save, run add_new_from_columns
❗ 1 non-validated categories are not saved in Feature.name: ['nCount_GDO']!
      β†’ to lookup categories, use lookup().columns
      β†’ to save, run add_new_from_columns
❗ 3 non-validated categories are not saved in Feature.name: ['nCount_RNA', 'nFeature_RNA', 'percent.mito']!
      β†’ to lookup categories, use lookup().columns
      β†’ to save, run add_new_from_columns
βœ… added 100 records from public with Gene.symbol for var_index: ['SH2D6', 'MEF2C-AS2', 'ARHGAP26-AS1', 'GABRA1', 'H4C12', 'HLA-DQB1-AS1', 'HLA-DQB1-AS1', 'HLA-DQB1-AS1', 'HLA-DQB1-AS1', 'HLA-DQB1-AS1', 'HLA-DQB1-AS1', 'HLA-DQB1-AS1', 'SPACA1', 'VNN1', 'CTAGE15', 'CTAGE15', 'PFKFB1', 'TRPC5', 'RBPMS-AS1', 'CA8', 'CSMD3', 'ZNF483', 'AK8', 'TMEM72-AS1', 'ARAP1-AS2', 'CRYAB', 'DNAI7', 'HOXC-AS2', 'LRRIQ1', 'TUBA3C', 'MYO16', 'FSD2', 'CERS3', 'CDH8', 'CLEC18C', 'CTRB2', 'CTRB2', 'LGALS9C', 'LGALS9C', 'CRYBA1', 'RPRML', 'COL5A3', 'HPN', 'NPHS1', 'MIA', 'TULP2', 'NUCB1-AS1', 'LARGE1', 'AP4B1-AS1', 'NBPF15', 'CCDC185', 'IBA57-DT', 'ANKRD53', 'LRP1B', 'ASIC4', 'MST1R', 'THPO', 'NWD2', 'FTMT', 'PCDHB11', 'PCDHB11', 'TIMD4', 'PACSIN1', 'TRDN', 'XG', 'LINC02912', 'DPYSL4', 'RPS6KB2-AS1', 'C11orf87', 'DUOX1', 'AIPL1', 'TBC1D3G', 'TBC1D3G', 'EFCAB3', 'RIPOR3', 'TUBB1', 'ADORA2A', 'PLA2G2A', 'MKNK1-AS1', 'ITLN1', 'RNU6ATAC35P', 'OR1C1', 'PLGLB2', 'LXN', 'UTS2B', 'ADCY2', 'PCDHGA7', 'PXDNL', 'TCF24', 'SLC46A2', 'AMBP', 'TPH2', 'LINC02914', 'TEKT5', 'SMCR5', 'GRAPL', 'MIR451B', 'L3MBTL4', 'MYO18B', 'TMPRSS3']
❗ 84 non-validated categories are not saved in Gene.symbol: ['RP5-827C21.6', 'XX-CR54.1', 'RP11-379B18.5', 'RP11-778D9.12', 'RP11-703G6.1', 'AC005150.1', 'RP11-717H13.1', 'CTC-498J12.1', 'RP11-524H19.2', 'AC006042.7', 'AC002066.1', 'AC073934.6', 'RP11-268G12.1', 'U52111.14', 'RP11-235C23.5', 'RP11-12J10.3', 'RP11-324E6.9', 'RP11-187A9.3', 'RP11-365N19.2', 'RP11-346D14.1', 'RP11-265N6.2', 'CTD-3065B20.2', 'RP11-304L19.11', 'AC026471.6', 'AC091132.1', 'RP11-138C9.1', 'RP11-75C10.9', 'RP11-835E18.5', 'RP11-760N9.1', 'RP11-17J14.2', 'CTD-3193O13.8', 'AC004019.13', 'RP11-465N4.4', 'RP11-434D9.1', 'RP11-325L7.1', 'RP11-134K13.4', 'RP5-855F16.1', 'RP3-327A19.5', 'RP11-546K22.3', 'RP11-473O4.4', 'RP13-582O9.7', 'RP11-12D24.10', 'RP11-120C12.3', 'RP11-80H5.7', 'RP11-496I9.1', 'AP000442.4', 'RP11-867G23.3', 'RP11-113K21.4', 'RP11-745O10.2', 'RP11-335O4.3', 'RP11-408E5.4', 'AE000662.93', 'AL132989.1', 'RP11-973N13.4', 'RP11-982M15.2', 'RP11-32B5.7', 'RP1-1J6.2', 'RP3-337O18.9', 'AC011558.5', 'CTA-373H7.7', 'RP11-415J8.5', 'AC092687.5', 'RP11-532F6.4', 'RP11-146I2.1', 'RP11-624M8.1', 'RP11-219B4.7', 'RP11-9M16.2', 'RP11-247A12.8', 'RP11-536K7.5', 'RP11-186N15.3', 'RP11-152H18.3', 'CTD-3012A18.1', 'CTD-2562J17.2', 'RP11-136I14.5', 'RP11-110I1.14', 'RP11-2H8.2', 'RP11-307N16.6', 'RP11-3D4.2', 'RP11-231C14.4', 'CTB-134F13.1', 'RP11-403P17.5', 'RP11-214C8.2', 'CTB-31O20.9', 'AC092295.4']!
      β†’ to lookup categories, use lookup().var_index
      β†’ to save, run add_new_from_var_index
βœ… added 4 records from public with CellMarker.name for var_index: ['CD86', 'PDL1', 'PDL2', 'CD366']
❗ 12 non-validated categories are not saved in Feature.name: ['rep1-tx', 'rep1-ctrl', 'rep2-tx', 'rep2-ctrl', 'PDL1g1-tx', 'PDL1g1-ctrl', 'PDL1g2-tx', 'PDL1g2-ctrl', 'rep3-tx', 'rep3-ctrl', 'rep4-tx', 'rep4-ctrl']!
      β†’ to lookup categories, use lookup().var_index
      β†’ to save, run add_new_from_var_index
❗ 111 non-validated categories are not saved in Feature.name: ['eGFPg1', 'CUL3g1', 'CUL3g2', 'CUL3g3', 'CMTM6g1', 'CMTM6g2', 'CMTM6g3', 'NTg1', 'NTg2', 'NTg3', 'NTg4', 'NTg5', 'NTg7', 'PDL1g1', 'PDL1g2', 'PDL1g3', 'ATF2g1', 'ATF2g2', 'ATF2g3', 'ATF2g4', 'BRD4g1', 'BRD4g2', 'BRD4g3', 'BRD4g4', 'CAV1g1', 'CAV1g2', 'CAV1g3', 'CAV1g4', 'CD86g1', 'CD86g2', 'CD86g3', 'CD86g4', 'ETV7g1', 'ETV7g2', 'ETV7g3', 'ETV7g4', 'IFNGR1g1', 'IFNGR1g2', 'IFNGR1g3', 'IFNGR1g4', 'IFNGR2g1', 'IFNGR2g2', 'IFNGR2g3', 'IFNGR2g4', 'IRF1g1', 'IRF1g2', 'IRF1g3', 'IRF1g4', 'IRF7g1', 'IRF7g2', 'IRF7g3', 'IRF7g4', 'JAK2g1', 'JAK2g2', 'JAK2g3', 'JAK2g4', 'MARCH8g1', 'MARCH8g2', 'MARCH8g3', 'MARCH8g4', 'MYCg1', 'MYCg2', 'MYCg3', 'MYCg4', 'NFKBIAg1', 'NFKBIAg2', 'NFKBIAg3', 'NFKBIAg4', 'PDCD1LG2g1', 'PDCD1LG2g2', 'PDCD1LG2g3', 'PDCD1LG2g4', 'POU2F2g1', 'POU2F2g2', 'POU2F2g3', 'POU2F2g4', 'SMAD4g1', 'SMAD4g2', 'SMAD4g3', 'SMAD4g4', 'SPI1g1', 'SPI1g2', 'SPI1g3', 'SPI1g4', 'STAT1g1', 'STAT1g2', 'STAT1g3', 'STAT1g4', 'STAT2g1', 'STAT2g2', 'STAT2g3', 'STAT2g4', 'STAT3g1', 'STAT3g2', 'STAT3g3', 'STAT3g4', 'STAT5Ag1', 'STAT5Ag2', 'STAT5Ag3', 'STAT5Ag4', 'TNFRSF14g1', 'TNFRSF14g2', 'TNFRSF14g3', 'TNFRSF14g4', 'UBE2L6g1', 'UBE2L6g2', 'UBE2L6g3', 'UBE2L6g4', 'NTg8', 'NTg9', 'NTg10']!
      β†’ to lookup categories, use lookup().var_index
      β†’ to save, run add_new_from_var_index
# add new gene symbols from the ['rna'].var.index
annotate.add_new_from_var_index("rna")

# add new categories from the hto and gdo var.index
annotate.add_new_from_var_index("hto")
annotate.add_new_from_var_index("gdo")

# optional: register additional columns we'd like to annotate
annotate.add_new_from_columns(modality="rna")
annotate.add_new_from_columns(modality="adt")
annotate.add_new_from_columns(modality="hto")
annotate.add_new_from_columns(modality="gdo")
Hide code cell output
βœ… added 84 records with Gene.symbol for var_index: ['RP5-827C21.6', 'XX-CR54.1', 'RP11-379B18.5', 'RP11-778D9.12', 'RP11-703G6.1', 'AC005150.1', 'RP11-717H13.1', 'CTC-498J12.1', 'RP11-524H19.2', 'AC006042.7', 'AC002066.1', 'AC073934.6', 'RP11-268G12.1', 'U52111.14', 'RP11-235C23.5', 'RP11-12J10.3', 'RP11-324E6.9', 'RP11-187A9.3', 'RP11-365N19.2', 'RP11-346D14.1', 'RP11-265N6.2', 'CTD-3065B20.2', 'RP11-304L19.11', 'AC026471.6', 'AC091132.1', 'RP11-138C9.1', 'RP11-75C10.9', 'RP11-835E18.5', 'RP11-760N9.1', 'RP11-17J14.2', 'CTD-3193O13.8', 'AC004019.13', 'RP11-465N4.4', 'RP11-434D9.1', 'RP11-325L7.1', 'RP11-134K13.4', 'RP5-855F16.1', 'RP3-327A19.5', 'RP11-546K22.3', 'RP11-473O4.4', 'RP13-582O9.7', 'RP11-12D24.10', 'RP11-120C12.3', 'RP11-80H5.7', 'RP11-496I9.1', 'AP000442.4', 'RP11-867G23.3', 'RP11-113K21.4', 'RP11-745O10.2', 'RP11-335O4.3', 'RP11-408E5.4', 'AE000662.93', 'AL132989.1', 'RP11-973N13.4', 'RP11-982M15.2', 'RP11-32B5.7', 'RP1-1J6.2', 'RP3-337O18.9', 'AC011558.5', 'CTA-373H7.7', 'RP11-415J8.5', 'AC092687.5', 'RP11-532F6.4', 'RP11-146I2.1', 'RP11-624M8.1', 'RP11-219B4.7', 'RP11-9M16.2', 'RP11-247A12.8', 'RP11-536K7.5', 'RP11-186N15.3', 'RP11-152H18.3', 'CTD-3012A18.1', 'CTD-2562J17.2', 'RP11-136I14.5', 'RP11-110I1.14', 'RP11-2H8.2', 'RP11-307N16.6', 'RP11-3D4.2', 'RP11-231C14.4', 'CTB-134F13.1', 'RP11-403P17.5', 'RP11-214C8.2', 'CTB-31O20.9', 'AC092295.4']
βœ… added 12 records with Feature.name for var_index: ['rep1-tx', 'rep1-ctrl', 'rep2-tx', 'rep2-ctrl', 'PDL1g1-tx', 'PDL1g1-ctrl', 'PDL1g2-tx', 'PDL1g2-ctrl', 'rep3-tx', 'rep3-ctrl', 'rep4-tx', 'rep4-ctrl']
βœ… added 111 records with Feature.name for var_index: ['eGFPg1', 'CUL3g1', 'CUL3g2', 'CUL3g3', 'CMTM6g1', 'CMTM6g2', 'CMTM6g3', 'NTg1', 'NTg2', 'NTg3', 'NTg4', 'NTg5', 'NTg7', 'PDL1g1', 'PDL1g2', 'PDL1g3', 'ATF2g1', 'ATF2g2', 'ATF2g3', 'ATF2g4', 'BRD4g1', 'BRD4g2', 'BRD4g3', 'BRD4g4', 'CAV1g1', 'CAV1g2', 'CAV1g3', 'CAV1g4', 'CD86g1', 'CD86g2', 'CD86g3', 'CD86g4', 'ETV7g1', 'ETV7g2', 'ETV7g3', 'ETV7g4', 'IFNGR1g1', 'IFNGR1g2', 'IFNGR1g3', 'IFNGR1g4', 'IFNGR2g1', 'IFNGR2g2', 'IFNGR2g3', 'IFNGR2g4', 'IRF1g1', 'IRF1g2', 'IRF1g3', 'IRF1g4', 'IRF7g1', 'IRF7g2', 'IRF7g3', 'IRF7g4', 'JAK2g1', 'JAK2g2', 'JAK2g3', 'JAK2g4', 'MARCH8g1', 'MARCH8g2', 'MARCH8g3', 'MARCH8g4', 'MYCg1', 'MYCg2', 'MYCg3', 'MYCg4', 'NFKBIAg1', 'NFKBIAg2', 'NFKBIAg3', 'NFKBIAg4', 'PDCD1LG2g1', 'PDCD1LG2g2', 'PDCD1LG2g3', 'PDCD1LG2g4', 'POU2F2g1', 'POU2F2g2', 'POU2F2g3', 'POU2F2g4', 'SMAD4g1', 'SMAD4g2', 'SMAD4g3', 'SMAD4g4', 'SPI1g1', 'SPI1g2', 'SPI1g3', 'SPI1g4', 'STAT1g1', 'STAT1g2', 'STAT1g3', 'STAT1g4', 'STAT2g1', 'STAT2g2', 'STAT2g3', 'STAT2g4', 'STAT3g1', 'STAT3g2', 'STAT3g3', 'STAT3g4', 'STAT5Ag1', 'STAT5Ag2', 'STAT5Ag3', 'STAT5Ag4', 'TNFRSF14g1', 'TNFRSF14g2', 'TNFRSF14g3', 'TNFRSF14g4', 'UBE2L6g1', 'UBE2L6g2', 'UBE2L6g3', 'UBE2L6g4', 'NTg8', 'NTg9', 'NTg10']
βœ… added 3 records with Feature.name for rna obs columns: ['nCount_RNA', 'nFeature_RNA', 'percent.mito']
βœ… added 2 records with Feature.name for adt obs columns: ['nCount_ADT', 'nFeature_ADT']
βœ… added 2 records with Feature.name for hto obs columns: ['nCount_HTO', 'nFeature_HTO']
βœ… added 1 record with Feature.name for gdo obs columns: ['nCount_GDO']
annotate.validate()
Hide code cell output
βœ… rna_var_index is validated against Gene.symbol
βœ… adt_var_index is validated against CellMarker.name
βœ… hto_var_index is validated against Feature.name
βœ… gdo_var_index is validated against Feature.name
πŸ’‘ mapping perturbation on ULabel.name
❗    2 terms are not validated: 'Perturbed', 'NT'
      β†’ save terms via .add_new_from('perturbation')
πŸ’‘ mapping replicate on ULabel.name
❗    3 terms are not validated: 'rep3', 'rep1', 'rep2'
      β†’ save terms via .add_new_from('replicate')
πŸ’‘ mapping technique on ExperimentalFactor.name
❗    found 1 terms validated terms: ['cell hashing']
      β†’ save terms via .add_validated_from('technique')
βœ… technique is validated against ExperimentalFactor.name
False
# add validated and new categories
annotate.add_new_from("perturbation")
annotate.add_new_from("replicate")
annotate.add_validated_from("technique", modality="hto")
Hide code cell output
βœ… added 2 records with ULabel.name for perturbation: ['Perturbed', 'NT']
βœ… added 3 records with ULabel.name for replicate: ['rep3', 'rep1', 'rep2']
βœ… added 1 record from public with ExperimentalFactor.name for technique: ['cell hashing']
annotate.validate()
Hide code cell output
βœ… rna_var_index is validated against Gene.symbol
βœ… adt_var_index is validated against CellMarker.name
βœ… hto_var_index is validated against Feature.name
βœ… gdo_var_index is validated against Feature.name
βœ… perturbation is validated against ULabel.name
βœ… replicate is validated against ULabel.name
βœ… technique is validated against ExperimentalFactor.name
True

Register annotated artifactΒΆ

artifact = annotate.save_artifact(description="Sub-sampled MuData from Papalexi21")
Hide code cell output
❗ no run & transform get linked, consider calling ln.track()
πŸ’‘ path content will be copied to default storage upon `save()` with key `None` ('.lamindb/OWRtLDbuYFW807ZfjW9g.h5mu')
βœ… storing artifact 'OWRtLDbuYFW807ZfjW9g' at '/home/runner/work/lamin-usecases/lamin-usecases/docs/test-multimodal/.lamindb/OWRtLDbuYFW807ZfjW9g.h5mu'
πŸ’‘ you can auto-track these data as a run input by calling `ln.track()`
βœ… loaded 2 Feature records matching name: 'perturbation', 'replicate'
❗ did not create Feature records for 45 non-validated names: 'adt:G2M.Score', 'adt:HTO_classification', 'adt:MULTI_ID', 'adt:NT', 'adt:Phase', 'adt:S.Score', 'adt:gene_target', 'adt:guide_ID', 'adt:nCount_ADT', 'adt:nFeature_ADT', 'adt:orig.ident', 'adt:percent.mito', 'adt:perturbation', 'adt:replicate', 'gdo:G2M.Score', 'gdo:HTO_classification', 'gdo:MULTI_ID', 'gdo:NT', 'gdo:Phase', 'gdo:S.Score'
πŸ’‘ parsing feature names of X stored in slot 'var'
βœ…    161 terms (93.10%) are validated for symbol
❗    12 terms (6.90%) are not validated for symbol: CTC-467M3.1, HIST1H4K, CASC1, LARGE, NBPF16, C1orf65, IBA57-AS1, KIAA1239, TMEM75, AP003419.16, FAM65C, C14orf177
βœ…    linked: FeatureSet(uid='jVesJn3ZFkNSIBllnnt2', n=172, dtype='float', registry='bionty.Gene', hash='y1Qo897t3gp9S3it4dz6', created_by_id=1)
πŸ’‘ parsing feature names of slot 'obs'
βœ…    3 terms (100.00%) are validated for name
βœ…    linked: FeatureSet(uid='7wljZ0ScirlJ40AIiMz4', n=3, registry='Feature', hash='Mzl-5p3i27ItLMBkWl8W', created_by_id=1)
πŸ’‘ parsing feature names of X stored in slot 'var'
βœ…    4 terms (100.00%) are validated for name
βœ…    linked: FeatureSet(uid='oUJYbp9XSzrvhUkw87JW', n=4, dtype='float', registry='bionty.CellMarker', hash='o8EDT805HnP0Fmk4uZ9e', created_by_id=1)
πŸ’‘ parsing feature names of slot 'obs'
βœ…    2 terms (100.00%) are validated for name
βœ…    linked: FeatureSet(uid='yLmQd3oJo6TypW3x8eAX', n=2, registry='Feature', hash='Fme2Evwr67VhkTbV2Txm', created_by_id=1)
πŸ’‘ parsing feature names of X stored in slot 'var'
βœ…    12 terms (100.00%) are validated for name
βœ…    linked: FeatureSet(uid='a7CSuHdeiZ00xoCgE4BQ', n=12, dtype='float', registry='Feature', hash='FuYYiXDXRxnzrmoaRpyN', created_by_id=1)
πŸ’‘ parsing feature names of slot 'obs'
βœ…    3 terms (100.00%) are validated for name
βœ…    linked: FeatureSet(uid='hpjG4ox4e361Xi9yeTEs', n=3, registry='Feature', hash='uPszSvgrRNH2QE16Trz8', created_by_id=1)
πŸ’‘ parsing feature names of X stored in slot 'var'
βœ…    111 terms (100.00%) are validated for name
βœ…    linked: FeatureSet(uid='nUeJhZbgyLHRnpVc865F', n=111, dtype='float', registry='Feature', hash='A1dD_kbMsamL2Nr2bla8', created_by_id=1)
πŸ’‘ parsing feature names of slot 'obs'
βœ…    1 term (100.00%) is validated for name
βœ…    linked: FeatureSet(uid='hWhXR30ShgnpGomrNukK', n=1, registry='Feature', hash='NfMtDyceYkmsUFj-dCla', created_by_id=1)
βœ… saved 9 feature sets for slots: 'obs','['rna'].var','['rna'].obs','['adt'].var','['adt'].obs','['hto'].var','['hto'].obs','['gdo'].var','['gdo'].obs'
βœ… linked feature 'perturbation' to registry 'ULabel'
βœ… linked feature 'replicate' to registry 'ULabel'
βœ… linked feature 'technique' to registry 'bionty.ExperimentalFactor'
artifact.describe()
Artifact(updated_at=2024-05-20 08:36:55 UTC, uid='OWRtLDbuYFW807ZfjW9g', suffix='.h5mu', accessor='MuData', description='Sub-sampled MuData from Papalexi21', size=545560, hash='252nP4Nu-pLH37ZgQQ_tOw', hash_type='md5', n_observations=200, visibility=1, key_is_virtual=True)

Provenance:
  πŸ“Ž created_by: User(uid='DzTjkKse', handle='testuser1', name='Test User1')
  πŸ“Ž storage: uid='h1z7pBXH5VEl', root='/home/runner/work/lamin-usecases/lamin-usecases/docs/test-multimodal', type='local', instance_uid='666lWiEzyXvj')
Features:
  obs: FeatureSet(uid='Cp5LKeURcCWe6zpAAAsj', n=2, registry='Feature')
    πŸ”— perturbation (2, cat[ULabel]): 'Perturbed', 'NT'
    πŸ”— replicate (2, cat[ULabel]): 'rep3', 'rep1', 'rep2'
  ['rna'].var: FeatureSet(uid='jVesJn3ZFkNSIBllnnt2', n=172, dtype='float', registry='bionty.Gene')
    'SH2D6', 'ARHGAP26-AS1', 'GABRA1', 'HLA-DQB1-AS1', 'SPACA1', 'VNN1', 'CTAGE15', 'PFKFB1', 'TRPC5', 'RBPMS-AS1', 'CA8', 'CSMD3', 'ZNF483', 'AK8', 'TMEM72-AS1', 'ARAP1-AS2', 'CRYAB', 'HOXC-AS2', 'LRRIQ1', 'TUBA3C'
  ['rna'].obs: FeatureSet(uid='7wljZ0ScirlJ40AIiMz4', n=3, registry='Feature')
    nFeature_RNA (int)
    percent.mito (float)
    nCount_RNA (int)
  ['adt'].var: FeatureSet(uid='oUJYbp9XSzrvhUkw87JW', n=4, dtype='float', registry='bionty.CellMarker')
    'CD86', 'PDL1', 'PDL2', 'CD366'
  ['adt'].obs: FeatureSet(uid='yLmQd3oJo6TypW3x8eAX', n=2, registry='Feature')
    nCount_ADT (float)
    nFeature_ADT (int)
  ['hto'].var: FeatureSet(uid='a7CSuHdeiZ00xoCgE4BQ', n=12, dtype='float', registry='Feature')
    rep1-tx (number)
    rep1-ctrl (number)
    rep2-tx (number)
    rep2-ctrl (number)
    PDL1g1-tx (number)
    PDL1g1-ctrl (number)
    PDL1g2-tx (number)
    PDL1g2-ctrl (number)
    rep3-tx (number)
    rep3-ctrl (number)
    rep4-tx (number)
    rep4-ctrl (number)
  ['hto'].obs: FeatureSet(uid='hpjG4ox4e361Xi9yeTEs', n=3, registry='Feature')
    πŸ”— technique (3, cat[bionty.ExperimentalFactor]): 'cell hashing'
    nCount_HTO (float)
    nFeature_HTO (int)
  ['gdo'].var: FeatureSet(uid='nUeJhZbgyLHRnpVc865F', n=111, dtype='float', registry='Feature')
    eGFPg1 (number)
    CUL3g1 (number)
    CUL3g2 (number)
    CUL3g3 (number)
    CMTM6g1 (number)
    CMTM6g2 (number)
    CMTM6g3 (number)
    NTg1 (number)
    NTg2 (number)
    NTg3 (number)
    NTg4 (number)
    NTg5 (number)
    NTg7 (number)
    PDL1g1 (number)
    PDL1g2 (number)
    PDL1g3 (number)
    ATF2g1 (number)
    ATF2g2 (number)
    ATF2g3 (number)
    ATF2g4 (number)
    BRD4g1 (number)
    BRD4g2 (number)
    BRD4g3 (number)
    BRD4g4 (number)
    CAV1g1 (number)
    CAV1g2 (number)
    CAV1g3 (number)
    CAV1g4 (number)
    CD86g1 (number)
    CD86g2 (number)
    CD86g3 (number)
    CD86g4 (number)
    ETV7g1 (number)
    ETV7g2 (number)
    ETV7g3 (number)
    ETV7g4 (number)
    IFNGR1g1 (number)
    IFNGR1g2 (number)
    IFNGR1g3 (number)
    IFNGR1g4 (number)
    IFNGR2g1 (number)
    IFNGR2g2 (number)
    IFNGR2g3 (number)
    IFNGR2g4 (number)
    IRF1g1 (number)
    IRF1g2 (number)
    IRF1g3 (number)
    IRF1g4 (number)
    IRF7g1 (number)
    IRF7g2 (number)
    IRF7g3 (number)
    IRF7g4 (number)
    JAK2g1 (number)
    JAK2g2 (number)
    JAK2g3 (number)
    JAK2g4 (number)
    MARCH8g1 (number)
    MARCH8g2 (number)
    MARCH8g3 (number)
    MARCH8g4 (number)
    MYCg1 (number)
    MYCg2 (number)
    MYCg3 (number)
    MYCg4 (number)
    NFKBIAg1 (number)
    NFKBIAg2 (number)
    NFKBIAg3 (number)
    NFKBIAg4 (number)
    PDCD1LG2g1 (number)
    PDCD1LG2g2 (number)
    PDCD1LG2g3 (number)
    PDCD1LG2g4 (number)
    POU2F2g1 (number)
    POU2F2g2 (number)
    POU2F2g3 (number)
    POU2F2g4 (number)
    SMAD4g1 (number)
    SMAD4g2 (number)
    SMAD4g3 (number)
    SMAD4g4 (number)
    SPI1g1 (number)
    SPI1g2 (number)
    SPI1g3 (number)
    SPI1g4 (number)
    STAT1g1 (number)
    STAT1g2 (number)
    STAT1g3 (number)
    STAT1g4 (number)
    STAT2g1 (number)
    STAT2g2 (number)
    STAT2g3 (number)
    STAT2g4 (number)
    STAT3g1 (number)
    STAT3g2 (number)
    STAT3g3 (number)
    STAT3g4 (number)
    STAT5Ag1 (number)
    STAT5Ag2 (number)
    STAT5Ag3 (number)
    STAT5Ag4 (number)
    TNFRSF14g1 (number)
    TNFRSF14g2 (number)
    TNFRSF14g3 (number)
    TNFRSF14g4 (number)
    UBE2L6g1 (number)
    UBE2L6g2 (number)
    UBE2L6g3 (number)
    UBE2L6g4 (number)
    NTg8 (number)
    NTg9 (number)
    NTg10 (number)
  ['gdo'].obs: FeatureSet(uid='hWhXR30ShgnpGomrNukK', n=1, registry='Feature')
    nCount_GDO (float)
Labels:
  πŸ“Ž experimental_factors (1, bionty.ExperimentalFactor): 'cell hashing'
  πŸ“Ž ulabels (5, ULabel): 'Perturbed', 'NT', 'rep3', 'rep1', 'rep2'
# clean up test instance
!rm -r test-multimodal
!lamin delete --force test-multimodal
Hide code cell output
πŸ’‘ deleting instance testuser1/test-multimodal