peach.tl.tradeoff_patterns#
- peach.tl.tradeoff_patterns(adata, *, data_obsm_key='pathway_scores', obs_key='archetypes', tradeoffs='pairs', test_method='mannwhitneyu', fdr_method='benjamini_hochberg', fdr_scope='global', min_cells=10, min_effect_size=0.1, verbose=True, **kwargs)[source]#
Identify mutual exclusivity and tradeoff patterns.
Finds features showing opposing patterns between archetypes, indicating biological tradeoffs or mutually exclusive states.
- Parameters:
adata (AnnData) – Annotated data object with archetypal assignments.
data_obsm_key (str, default: "pathway_scores") – Key in adata.obsm for scores.
obs_key (str, default: "archetypes") – Column in adata.obs with archetypal assignments.
tradeoffs ({'pairs', 'patterns'}, default: 'pairs') –
Type of tradeoff analysis:
'pairs': Binary pairwise (A high, B low)'patterns': Complex multi-archetype (AB high, CD low)
test_method (str, default: "mannwhitneyu") – Statistical test method.
fdr_method (str, default: "benjamini_hochberg") – FDR correction method.
fdr_scope ({'global', 'per_archetype', 'none'}, default: 'global') – Scope of FDR correction.
min_cells (int, default: 10) – Minimum cells per group.
min_effect_size (float, default: 0.1) – Minimum effect size for tradeoffs.
verbose (bool, default: True) – Print progress.
**kwargs –
Additional parameters:
max_pattern_sizeint, default: 2Maximum archetypes per group for complex patterns.
exclude_archetype_0bool, default: TrueExclude archetype_0 from tradeoff patterns.
specific_patternsList[str], optionalTest only specific patterns (e.g., [‘2v3’, ‘1v45’]).
- Returns:
Results with tradeoff patterns:
pattern_code: Visual pattern codehigh_archetypes,low_archetypes: Groupsmean_high,mean_low: Group meanslog_fold_change: Effect sizepattern_complexity: Number of archetypes involved
- Return type:
pd.DataFrame
Examples
>>> # Find pairwise tradeoffs >>> pairs = pc.tl.tradeoff_patterns(adata, tradeoffs="pairs") >>> # Find complex patterns >>> patterns = pc.tl.tradeoff_patterns(adata, tradeoffs="patterns", max_pattern_size=3) >>> # Test specific hypothesis >>> specific = pc.tl.tradeoff_patterns(adata, specific_patterns=["2v3", "1v4"])
See also
peach.tl.archetype_exclusive_patternsExclusive pattern analysis
peach._core.types.PatternAssociationResultResult row structure