mantispy.tl.map#
- mantispy.tl.map(adata, pos_sameby=None, pos_diffby=(), neg_sameby=(), neg_diffby=(), mode=None, annotation_key=None, reference='negcon', use_rep=None, null_size=10000, threshold=0.05, seed=0, distance='cosine', key_added='map', copy=False)[source]#
Mean average precision per group, with a permutation null.
- Parameters:
adata (
AnnData) – Profiles to score, normally well-level.pos_sameby (
Sequence[str] |None(default:None)) –obscolumns a positive pair must share, in copairs’ terms. Pass the four pair arguments ormode, not both.pos_diffby (
Sequence[str] (default:())) –obscolumns in which a positive pair must differ.neg_sameby (
Sequence[str] (default:())) –obscolumns a negative pair must share.neg_diffby (
Sequence[str] (default:())) –obscolumns in which a negative pair must differ.mode (
str|None(default:None)) –A preset for the pair definitions, one of the following.
"activity"Is this perturbation distinguishable from the negative controls it was plated with? Its replicates are retrieved against the control profiles on the query’s own plate only. This is the phenotypic activity of Kalinin et al. [2025]. Needs
referenceandMetadata_Plate; queries on a plate without controls are left out, with a warning."consistency"Do perturbations sharing an annotation look more alike than those that do not? This is the phenotypic consistency of Kalinin et al. [2025]. Needs
annotation_key(a mechanism, target or gene column) and is meant for consensus profiles of perturbations already known to be active."replicability"Do a perturbation’s replicates retrieve each other against the other perturbations on the query’s plate? This is the
mAP-nonrepof Arevalo et al. [2024], which leaves the controls out;reference=Nonekeeps them in."cross_plate"Do a perturbation’s replicates on other plates retrieve each other against all other profiles? A replicate counts only if it is on a different plate, which separates reproducible biology from plate effects.
annotation_key (
str|None(default:None)) – Theobscolumnmode="consistency"groups by.reference (
str|None(default:'negcon')) – Which rows are the negative controls, whichmode="activity"retrieves against andmode="replicability"leaves out:"negcon", the name of a booleanobscolumn, orNonefor none.use_rep (
str|None(default:None)) – Scoreobsm[use_rep]instead ofX.null_size (
int(default:10000)) – Size of the permutation null. No p-value falls below1 / (null_size + 1), so the correction over many groups needs a large one, and a warning says when it is too small to call a group on its own.threshold (
float(default:0.05)) – Significance threshold passed to copairs.seed (
int(default:0)) – Seed for the permutation null.distance (
str(default:'cosine')) – Distance copairs ranks by.key_added (
str(default:'map')) – Where to store results.copy (
bool(default:False)) – Return a modified copy instead of mutating in place.
- Return type:
- Returns:
None, or the modified copy. Writes the per-group table touns["mantispy"][key_added]and joinsobs[key_added]andobs[key_added + "_qvalue"]back onto the rows.- Raises:
ImportError – copairs is not installed, which it is not by default because it needs Python < 3.13.
ValueError –
modewas passed together with explicit pair arguments or neither was passed,modeis not one ofMODES,mode="consistency"came withoutannotation_key,mode="activity"found no controls, no profile has a negative pair to be ranked against, or the profiles hold missing values, which cannot be ranked.KeyError –
obsis missing a column the pair definitions orreferencename.