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, so the loader fetches a single h5ad rather than reassembling the base on every call. The two flags select the variant. Every variant is built from the raw wells without normalization, which is left to the analysis:

  • 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 574 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 574 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].