mantispy.ds.rohban

Contents

mantispy.ds.rohban#

mantispy.ds.rohban(plates=None, cache_dir=None, *, aggregated=False, feature_selected=False)[source]#

An ORF overexpression screen, with the genes and cell counts that BBBC021 lacks.

cpg0017-rohban-pathways: U2OS cells, one ORF construct overexpressed per well, roughly ten replicate wells per construct over five plates.

The base and its variants are pre-built by scripts/build_staged_datasets.py from the five raw plate tables and rehosted on scverse-exampledata (each under 7 MB), so the loader fetches a single h5ad rather than reassembling the base on every call. The two flags select the variant, which the variants build from per-plate mad_robustize normalization against the untreated wells:

  • both False: the raw wells with every feature, 1,918 wells by 3,616 features.

  • feature_selected=True: the well-level block after pycytominer-default feature selection, 1,918 wells by 751 features.

  • aggregated=True: one modz consensus (Spearman, min_replicates=2) per Metadata_Gene over the screened wells (untreated and transfection controls dropped), 190 genes by 3,616 features.

  • aggregated=True, feature_selected=True: that same gene consensus on the feature-selected block, 190 genes by 751 features.

Parameters:
  • plates (Sequence[str] | None (default: None)) – Plate barcodes to load, all five when omitted. Only applies to the base; the hosted base is fetched once and subset to these plates in memory.

  • cache_dir (str | Path | None (default: None)) – Where to keep the download. Defaults to mantispy.settings.cache_dir.

  • aggregated (bool (default: False)) – Return the gene-level modz consensus instead of the raw wells.

  • feature_selected (bool (default: False)) – Return the feature-selected block instead of all features.

Return type:

AnnData

Returns:

The raw wells by features at well resolution when both flags are False, else the staged variant selected by the two flags, read with mantispy.io.read().

The base object carries:

Metadata_Perturbation: the ORF construct (Metadata_broad_sample, ~323 of them), the unit the screen varied and what replicate wells share. Several constructs can overexpress the same gene, so this is finer than the gene; the paper’s active set is construct-level. The control ORFs read as their Metadata_pert_name (Luciferase_CTRL, LacZ_CTRL, eGFP_CTRL) and the untreated EMPTY wells as "untreated".

Metadata_Perturbation_Type: "orf" for the overexpression constructs and controls, "untreated" for the EMPTY wells.

Metadata_Gene (the overexpressed gene, 194 of them, so tl.pathway_coherence and tl.enrich_hits group by it), Metadata_Construct (the broad_sample, missing on the controls and EMPTY wells) and Metadata_Allele (the human-readable pert_name, which separates allele variants).

Metadata_Control, Metadata_CellCount, Metadata_SiteCount and the screen’s own Metadata_gene_name, Metadata_GeneID and Metadata_ASSAY_WELL_ROLE.

Raises:
  • KeyError – A plate is not one of the five.

  • ValueError – aggregated or feature_selected is not a bool, or plates is given for a variant.

Notes

Metadata_Control marks the wells transfected with a control ORF (Luciferase, LacZ and eGFP), the reference for normalization. The untreated wells (Metadata_gene_name == "EMPTY") were never transfected and are not flagged; they carry Metadata_Perturbation == "untreated", so drop them if a gene-level analysis should not see them. Regroup replicates to the gene with groupby="Metadata_Gene" or tl.consensus(by="Metadata_Gene"); the gene is never smeared into the perturbation id.

References

Rohban et al. [2017].