Neuronal Cell Painting

Neuronal Cell Painting#

neuropainting() serves cpg0038-tegtmeyer-neuropainting, iPSC-derived neurons and astrocytes imaged at 20x and 63x. It is the example with no perturbation reagent: the design factor is genotype and donor, a control-versus-deletion contrast over patient and isogenic lines, rather than a compound or a guide. The object is well-level.

Use it if your own experiment has no perturbation reagent and the contrast is a design factor (genotype, donor, cell type), so you group with an explicit groupby= rather than by a perturbation column. No tutorial is built on it.

import mantispy as mt
adata = mt.ds.neuropainting()
adata
AnnData object with n_obs × n_vars = 1691 × 204
    obs: 'Metadata_plate_map_name', 'Metadata_Plate', 'Metadata_Well', 'Metadata_Site_Count', 'Metadata_Object_Count', 'Metadata_CellCount', 'Metadata_SiteCount'
    var: 'object', 'feature_group', 'feature', 'channel', 'scale', 'angle', 'gray_levels', 'radial_bin', 'params', 'is_feature'
    uns: 'mantispy'
    layers: None (.X)

No Metadata_Perturbation#

Because the contrast is genotype and donor, and those columns are spelled differently on each plate, the per-plate column intersect keeps none of them, so no Metadata_Perturbation is set. Group with an explicit groupby= on the column an analysis needs. One plate barcode appears in more than one batch, so the observations are not indexed by plate and well either.

sorted(c for c in adata.obs.columns if c.startswith("Metadata_"))
['Metadata_CellCount',
 'Metadata_Object_Count',
 'Metadata_Plate',
 'Metadata_SiteCount',
 'Metadata_Site_Count',
 'Metadata_Well',
 'Metadata_plate_map_name']

Cells per well by plate#

The plates differ in magnification and cell type, so cells per well spreads widely between them.

mt.pl.cell_counts(adata, groupby="Metadata_Plate")