brainbeacon.pipeline.perturbation.apply_gene_perturbation#
- brainbeacon.pipeline.perturbation.apply_gene_perturbation(adata, gene_list, mode='knockout', value=None, multiplier=2, target_obs_names=None, filter_by=None)#
Apply gene perturbation (knockout or overexpress) to selected cells in an AnnData.
- Parameters:
adata (AnnData) – Input AnnData.
gene_list (list[str]) – Genes to perturb. Prefer Ensembl IDs in
adata.var_names. If a gene is not found andadata.var['gene_symbol']exists, it will be mapped from gene symbol to a unique Ensembl ID.mode ({"knockout", "overexpress"}, default "knockout") – Perturbation mode.
"knockout"sets expression to 0;"overexpress"sets expression to eithervalueormax(gene)*multiplier.value (float or None, default None) – Fixed value for
mode="overexpress". If provided, overridesmultiplier.multiplier (float or None, default 2) – Used for
mode="overexpress"whenvalueis None.target_obs_names (list[str] or None, default None) – Cells to perturb by
adata.obs_names. Takes precedence overfilter_by.filter_by (dict[str, str] or None, default None) – Select cells by matching
adata.obsfields (AND logic), e.g.{"slice": "A", "cell_type": "B"}.
- Returns:
- -perturbed_adata (
AnnData) A copy of
adatawith modified.X.- -perturbed_cells (
Index) The
obs_namesof perturbed cells.
- -perturbed_adata (
- Raises:
ValueError – If no cells are selected, a gene cannot be found/mapped, or overexpression has neither
valuenormultiplier.