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
Show 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",
)
Show code cell output
โ 3 non-validated categories are not saved in Feature.name: ['nCount_RNA', 'percent.mito', 'nFeature_RNA']!
โ to lookup categories, use lookup().columns
โ to save, run add_new_from_columns
โ 2 non-validated categories are not saved in Feature.name: ['nCount_ADT', 'nFeature_ADT']!
โ 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: ['nFeature_HTO', 'nCount_HTO']!
โ 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
โ
added 2 records with Feature.name for columns: ['perturbation', 'replicate']
โ 45 non-validated categories are not saved in Feature.name: ['hto:MULTI_ID', 'adt:Phase', 'gdo:replicate', 'adt:gene_target', 'hto:replicate', 'gdo:nCount_GDO', 'adt:perturbation', 'gdo:gene_target', 'gdo:guide_ID', 'adt:replicate', 'gdo:G2M.Score', 'gdo:perturbation', 'hto:nCount_HTO', 'hto:perturbation', 'hto:orig.ident', 'hto:NT', 'gdo:Phase', 'adt:nFeature_ADT', 'adt:MULTI_ID', 'adt:S.Score', 'hto:G2M.Score', 'rna:nFeature_RNA', 'hto:Phase', 'hto:percent.mito', 'gdo:percent.mito', 'gdo:orig.ident', 'hto:gene_target', 'adt:nCount_ADT', 'hto:guide_ID', 'hto:nFeature_HTO', 'adt:G2M.Score', 'rna:nCount_RNA', 'adt:percent.mito', 'gdo:NT', 'adt:orig.ident', 'hto:HTO_classification', 'gdo:MULTI_ID', 'gdo:HTO_classification', 'adt:guide_ID', 'hto:technique', 'adt:NT', 'rna:percent.mito', 'hto:S.Score', 'gdo:S.Score', 'adt:HTO_classification']!
โ 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")
Show 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()
Show 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: 'rep2', 'rep1', 'rep3'
โ 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")
Show 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()
Show 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")
Show 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/t2AePx9aUlPiAXnU4wxh.h5mu')
โ
storing artifact 't2AePx9aUlPiAXnU4wxh' at '/home/runner/work/lamin-usecases/lamin-usecases/docs/test-multimodal/.lamindb/t2AePx9aUlPiAXnU4wxh.h5mu'
๐ก you can auto-track these data as a run input by calling `ln.track()`
โ
loaded 2 Feature records matching name: 'replicate', 'perturbation'
โ did not create Feature records for 45 non-validated names: 'hto:MULTI_ID', 'adt:Phase', 'gdo:replicate', 'adt:gene_target', 'hto:replicate', 'gdo:nCount_GDO', 'adt:perturbation', 'gdo:gene_target', 'gdo:guide_ID', 'adt:replicate', 'gdo:G2M.Score', 'gdo:perturbation', 'hto:nCount_HTO', 'hto:perturbation', 'hto:orig.ident', 'hto:NT', 'gdo:Phase', 'adt:nFeature_ADT', 'adt:MULTI_ID', 'adt: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='OMYJhYjDaVu97kXZgulO', n=172, type='number', 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='FAevMFYoyh9Y87Zm0sAB', n=3, registry='core.Feature', hash='mzNiC5IkqsGKTGmsT6wl', created_by_id=1)
๐ก parsing feature names of X stored in slot 'var'
โ
4 terms (100.00%) are validated for name
โ
linked: FeatureSet(uid='lB4gQZ3DUeZj9Im4EYFh', n=4, type='number', 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='RBC4YB1k24SCTOjyPiX1', n=2, registry='core.Feature', hash='LSfu0N023dMhRjB4keSP', created_by_id=1)
๐ก parsing feature names of X stored in slot 'var'
โ
12 terms (100.00%) are validated for name
โ
linked: FeatureSet(uid='bo2xcxsgAZpi36JN61uz', n=12, type='number', registry='core.Feature', hash='SROIyKNI05elHP65-vNa', created_by_id=1)
๐ก parsing feature names of slot 'obs'
โ
3 terms (100.00%) are validated for name
โ
linked: FeatureSet(uid='6uoPoNlpdKk7zy4JC8XZ', n=3, registry='core.Feature', hash='MEoV7ycIazwP-Wm9UmbD', created_by_id=1)
๐ก parsing feature names of X stored in slot 'var'
โ
111 terms (100.00%) are validated for name
โ
linked: FeatureSet(uid='97Nz7y4tjZMMkXc9lJ5e', n=111, type='number', registry='core.Feature', hash='CL-akNqD0ANVgw749ttm', created_by_id=1)
๐ก parsing feature names of slot 'obs'
โ
1 term (100.00%) is validated for name
โ
linked: FeatureSet(uid='9u7xhuAfEKSUsPJhw3Rc', n=1, registry='core.Feature', hash='PWJ9sfU_n-n7x8OzKUX5', 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 'core.ULabel'
โ
linked feature 'replicate' to registry 'core.ULabel'
โ
linked feature 'technique' to registry 'bionty.ExperimentalFactor'
artifact.describe()
Artifact(uid='t2AePx9aUlPiAXnU4wxh', 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, updated_at=2024-04-24 12:52:57 UTC)
Provenance:
๐ storage: Storage(uid='GEhzbhOu', root='/home/runner/work/lamin-usecases/lamin-usecases/docs/test-multimodal', type='local')
๐ created_by: User(uid='DzTjkKse', handle='testuser1', name='Test User1')
Features:
obs: FeatureSet(uid='N3ZkEHwPChq1km7Bq3Gn', n=2, registry='core.Feature')
๐ perturbation (2, core.ULabel): 'Perturbed', 'NT'
๐ replicate (3, core.ULabel): 'rep2', 'rep1', 'rep3'
['rna'].var: FeatureSet(uid='OMYJhYjDaVu97kXZgulO', n=172, type='number', registry='bionty.Gene')
'ZNF483', 'UTS2B', 'SPACA1', 'TRDN', 'RP11-346D14.1', 'FSD2', 'PCDHGA7', 'RP11-307N16.6', 'RP11-403P17.5', 'TULP2', 'PFKFB1', 'RP11-835E18.5', 'SH2D6', 'RP5-827C21.6', 'RP11-120C12.3', 'TBC1D3G', 'RP11-268G12.1', 'RP11-3D4.2', 'AP000442.4', 'AC092295.4', ...
['rna'].obs: FeatureSet(uid='FAevMFYoyh9Y87Zm0sAB', n=3, registry='core.Feature')
nFeature_RNA (number)
percent.mito (number)
nCount_RNA (number)
['adt'].var: FeatureSet(uid='lB4gQZ3DUeZj9Im4EYFh', n=4, type='number', registry='bionty.CellMarker')
'PDL1', 'PDL2', 'CD86', 'CD366'
['adt'].obs: FeatureSet(uid='RBC4YB1k24SCTOjyPiX1', n=2, registry='core.Feature')
nCount_ADT (number)
nFeature_ADT (number)
['hto'].var: FeatureSet(uid='bo2xcxsgAZpi36JN61uz', n=12, type='number', registry='core.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='6uoPoNlpdKk7zy4JC8XZ', n=3, registry='core.Feature')
๐ technique (1, bionty.ExperimentalFactor): 'cell hashing'
nCount_HTO (number)
nFeature_HTO (number)
['gdo'].var: FeatureSet(uid='97Nz7y4tjZMMkXc9lJ5e', n=111, type='number', registry='core.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='9u7xhuAfEKSUsPJhw3Rc', n=1, registry='core.Feature')
nCount_GDO (number)
Labels:
๐ experimental_factors (1, bionty.ExperimentalFactor): 'cell hashing'
๐ ulabels (5, core.ULabel): 'rep1', 'Perturbed', 'rep2', 'rep3', 'NT'
# clean up test instance
!lamin delete --force test-multimodal
!rm -r test-multimodal
Show code cell output
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.10.14/x64/bin/lamin", line 8, in <module>
sys.exit(main())
File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/rich_click/rich_command.py", line 126, in main
rv = self.invoke(ctx)
File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/lamin_cli/__main__.py", line 103, in delete
return delete(instance, force=force)
File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/lamindb_setup/_delete.py", line 130, in delete
n_objects = check_storage_is_empty(
File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/lamindb_setup/core/upath.py", line 720, in check_storage_is_empty
raise InstanceNotEmpty(message)
lamindb_setup.core.upath.InstanceNotEmpty: Storage location contains 3 objects (2 ignored) - delete them prior to deleting the instance
['/home/runner/work/lamin-usecases/lamin-usecases/docs/test-multimodal/.lamindb/_is_initialized', '/home/runner/work/lamin-usecases/lamin-usecases/docs/test-multimodal/.lamindb/t2AePx9aUlPiAXnU4wxh.h5mu', '/home/runner/work/lamin-usecases/lamin-usecases/docs/test-multimodal/14a7ca772b2c5e0699238c82362c1c42.lndb']