cellrank.estimators.CFLARE#
 class cellrank.estimators.CFLARE(object, **kwargs)[source]#
Clustering and filtering of left and right eigenvectors (CFLARE).
This estimator computes initial and terminal states, as well as fate probabilities. It uses the left eigenvectors of the transition matrix to filter to a set of (approximately) recurrent cells and the right eigenvectors to cluster this set of cells into discrete groups. CFLARE exists mostly for legacy reasons, we recommend using the
cellrank.estimators.GPCCA
estimator, which is mathematically more principled. Parameters
object (
Union
[AnnData
,ndarray
,spmatrix
,KernelExpression
]) –Can be one of the following types:
AnnData
 annotated data object.KernelExpression
 kernel expression.str
 key inobsp
where the transition matrix is stored andadata
must be provided in this case.bool
 directionality of the transition matrix that will be used to infer its storage location. IfNone
, the directionality will be determined automatically andadata
must be provided in this case.
kwargs (
Any
) – Keyword arguments for thePrecomputedKernel
.
Attributes table#
Mean and variance of the time until absorption. 

Annotated data object. 

Direction of the 

Eigendecomposition of the 

Fate probabilities. 

Categorical annotation of initial states. 

Probability to be an initial state. 

Underlying kernel expression. 

Potential lineage drivers. 

Estimator parameters. 

Priming degree. 

Shape of the kernel. 

Categorical annotation of terminal states. 

Probability to be a terminal state. 

Transition matrix of the 
Methods table#

Compute the mean time to absorption and optionally its variance. 

Compute eigendecomposition of the 

Compute fate probabilities. 

Compute driver genes per lineage. 

Compute the degree of lineage priming. 

Return a copy of self. 

Prepare self for terminal states prediction. 

Deserialize self from 

Plot fate probabilities. 

Plot lineage drivers. 

Show scatter plot of genecorrelations between two lineages. 

Plot macrostates on an embedding or along pseudotime. 

Plot the top eigenvalues in a real or a complex plane. 

Find approximate recurrent classes of the Markov chain. 

Deserialize self from a file. 

Rename the 

Rename the 

Set the 

Set the 

Serialize self to 

Serialize self to a file using 
Attributes#
absorption_times#
 CFLARE.absorption_times#
Mean and variance of the time until absorption.
Related to conditional mean first passage times. Corresponds to the expectation of the time until absorption, depending on initialization, and the variance.
adata#
 CFLARE.adata#
Annotated data object.
backward#
eigendecomposition#
 CFLARE.eigendecomposition#
Eigendecomposition of the
transition_matrix
.For nonsymmetric real matrices, left and right eigenvectors will in general be different and complex. We compute both left and right eigenvectors.
 Returns
A dictionary with the following keys:
'D'
 the eigenvalues.'eigengap'
 the eigengap.'params'
 parameters used for the computation.'V_l'
 left eigenvectors (optional).'V_r'
 right eigenvectors (optional).'stationary_dist'
 stationary distribution of thetransition_matrix
, if present.
fate_probabilities#
 CFLARE.fate_probabilities#
Fate probabilities.
Informally, given a (finite, discrete) Markov chain with a set of transient states \(T\) and a set of absorbing states \(A\), the absorption probability for cell \(i\) from \(T\) to reach cell \(j\) from \(R\) is the probability that a random walk initialized in \(i\) will reach absorbing state \(j\).
In our context, states correspond to cells, in particular, absorbing states correspond to cells in
terminal_states
.
initial_states#
 CFLARE.initial_states#
Categorical annotation of initial states.
By default, all transient cells will be labeled as NaN.
initial_states_probabilities#
 CFLARE.initial_states_probabilities#
Probability to be an initial state.
kernel#
 CFLARE.kernel#
Underlying kernel expression.
lineage_drivers#
 CFLARE.lineage_drivers#
Potential lineage drivers.
Computes Pearson correlation of each gene with fate probabilities for every terminal state. High Pearson correlation indicates potential lineage drivers. Also computes pvalues and confidence intervals.
 Returns
Dataframe of shape
(n_genes, n_lineages * 5)
containing the following columns, one for each lineage:
params#
 CFLARE.params#
Estimator parameters.
priming_degree#
 CFLARE.priming_degree#
Priming degree.
Given a cell \(i\) and a set of terminal states, this quantifies how committed vs. naive cell \(i\) is, i.e. its degree of pluripotency. Low values correspond to naive cells (high degree of pluripotency), high values correspond to committed cells (low degree of pluripotency).
shape#
 CFLARE.shape#
Shape of the kernel.
terminal_states#
 CFLARE.terminal_states#
Categorical annotation of terminal states.
By default, all transient cells will be labeled as NaN.
terminal_states_probabilities#
 CFLARE.terminal_states_probabilities#
Probability to be a terminal state.
transition_matrix#
Methods#
compute_absorption_times#
 CFLARE.compute_absorption_times(keys=None, calculate_variance=False, solver='gmres', use_petsc=True, n_jobs=None, backend='loky', show_progress_bar=None, tol=1e06, preconditioner=None)#
Compute the mean time to absorption and optionally its variance.
 Parameters
keys (
Optional
[Sequence
[str
]]) – Terminal states for which to compute the fate probabilities. IfNone
, use all states defined interminal_states
.calculate_variance (
bool
) – Whether to calculate the variance.solver (
Union
[str
,Literal
['direct'
,'gmres'
,'lgmres'
,'bicgstab'
,'gcrotmk'
]]) –Solver to use for the linear problem. Options are
'direct'
,'gmres'
,'lgmres'
,'bicgstab'
or'gcrotmk'
whenuse_petsc = False
.Information on the
scipy
iterative solvers can be found inscipy.sparse.linalg
or for thepetsc
solvers here.use_petsc (
bool
) – Whether to use solvers frompetsc4py
orscipy
. Recommended for large problems. If no installation is found, defaults togmres()
.n_jobs (
Optional
[int
]) – Number of parallel jobs to use when using an iterative solver.backend (
Literal
['loky'
,'multiprocessing'
,'threading'
]) – Which backend to use for multiprocessing. SeeParallel
for valid options.show_progress_bar (
Optional
[bool
]) – Whether to show progress bar. Only used whensolver != 'direct'
.tol (
float
) – Convergence tolerance for the iterative solver. The default is fine for most cases, only consider decreasing this for severely illconditioned matrices.preconditioner (
Optional
[str
]) – Preconditioner to use, only available whenuse_petsc = True
. For valid options, see here. We recommend the'ilu'
preconditioner for badly conditioned problems.self (FateProbsProtocol) –
 Return type
 Returns
: Nothing, just updates the following fields:
absorption_times
 Mean and variance of the time until absorption.
compute_eigendecomposition#
 CFLARE.compute_eigendecomposition(k=20, which='LR', alpha=1.0, only_evals=False, ncv=None)#
Compute eigendecomposition of the
transition_matrix
.Uses a sparse implementation, if possible, and only computes the top \(k\) eigenvectors to speed up the computation. Computes both left and right eigenvectors.
 Parameters
k (
int
) – Number of eigenvectors or eigenvalues to compute.which (
Literal
['LR'
,'LM'
]) –How to sort the eigenvalues. Valid option are:
'LR'
 the largest real part.'LM'
 the largest magnitude.
alpha (
float
) – Used to compute the eigengap.alpha
is the weight given to the deviation of an eigenvalue from one.only_evals (
bool
) – Whether to compute only eigenvalues.self (EigenProtocol) –
 Return type
EigenMixin
 Returns
: Self and updates the following fields:
eigendecomposition
 Eigendecomposition of thetransition_matrix
.
compute_fate_probabilities#
 CFLARE.compute_fate_probabilities(keys=None, solver='gmres', use_petsc=True, n_jobs=None, backend='loky', show_progress_bar=True, tol=1e06, preconditioner=None)#
Compute fate probabilities.
For each cell, this computes the probability of being absorbed in any of the
terminal_states
. In particular, this corresponds to the probability that a random walk initialized in transient cell \(i\) will reach any cell from a fixed transient state before reaching a cell from any other transient state. Parameters
keys (
Optional
[Sequence
[str
]]) – Terminal states for which to compute the fate probabilities. IfNone
, use all states defined interminal_states
.solver (
Union
[str
,Literal
['direct'
,'gmres'
,'lgmres'
,'bicgstab'
,'gcrotmk'
]]) –Solver to use for the linear problem. Options are
'direct'
,'gmres'
,'lgmres'
,'bicgstab'
or'gcrotmk'
whenuse_petsc = False
.Information on the
scipy
iterative solvers can be found inscipy.sparse.linalg
or for thepetsc
solvers here.use_petsc (
bool
) – Whether to use solvers frompetsc4py
orscipy
. Recommended for large problems. If no installation is found, defaults togmres()
.n_jobs (
Optional
[int
]) – Number of parallel jobs to use when using an iterative solver.backend (
Literal
['loky'
,'multiprocessing'
,'threading'
]) – Which backend to use for multiprocessing. SeeParallel
for valid options.show_progress_bar (
bool
) – Whether to show progress bar. Only used whensolver != 'direct'
.tol (
float
) – Convergence tolerance for the iterative solver. The default is fine for most cases, only consider decreasing this for severely illconditioned matrices.preconditioner (
Optional
[str
]) – Preconditioner to use, only available whenuse_petsc = True
. For valid options, see here. We recommend the'ilu'
preconditioner for badly conditioned problems.self (FateProbsProtocol) –
 Return type
 Returns
: Nothing, just updates the following fields:
fate_probabilities
 Fate probabilities.
compute_lineage_drivers#
 CFLARE.compute_lineage_drivers(lineages=None, method=TestMethod.FISHER, cluster_key=None, clusters=None, layer=None, use_raw=False, confidence_level=0.95, n_perms=1000, seed=None, **kwargs)#
Compute driver genes per lineage.
Correlates gene expression with lineage probabilities, for a given lineage and set of clusters. Often, it makes sense to restrict this to a set of clusters which are relevant for the specified lineages.
 Parameters
lineages (
Union
[str
,Sequence
,None
]) – Lineage names fromfate_probabilities
. IfNone
, use all lineages.method (
Literal
['fisher'
,'perm_test'
]) –Mode to use when calculating pvalues and confidence intervals. Valid options are:
'fisher'
 Fisher transformation [Fisher, 1921].'perm_test'
 permutation test.
cluster_key (
Optional
[str
]) – Key inobs
to obtain cluster annotations. These are considered forclusters
.clusters (
Union
[str
,Sequence
,None
]) – Restrict the correlations to these clusters.layer (
Optional
[str
]) – Key fromlayers
from which to get the expression. IfNone
or ‘X’, useX
.use_raw (
bool
) – Whether to useraw
to correlate gene expression.confidence_level (
float
) – Confidence level for the confidence interval calculation. Must be in interval \([0, 1]\).n_perms (
int
) – Number of permutations to use whenmethod = 'perm_test'
.seed (
Optional
[int
]) – Random seed whenmethod = 'perm_test'
.show_progress_bar – Whether to show a progress bar. Disabling it may slightly improve performance.
n_jobs – Number of parallel jobs. If 1, use all available cores. If
None
or 1, the execution is sequential.backend – Which backend to use for parallelization. See
Parallel
for valid options.kwargs (
Any
) – Keyword for the correlation test.self (LinDriversProtocol) –
 Return type
 Returns
: Dataframe of shape
(n_genes, n_lineages * 5)
containing the following columns, one for each lineage: Also updates the following field:lineage_drivers
 the samepandas.DataFrame
as described above.
compute_lineage_priming#
 CFLARE.compute_lineage_priming(method='kl_divergence', early_cells=None)#
Compute the degree of lineage priming.
It returns a score in \([0, 1]\) where \(0\) stands for naive and \(1\) stands for committed.
 Parameters
method (
Literal
['kl_divergence'
,'entropy'
]) –The method used to compute the degree of lineage priming. Valid options are:
'kl_divergence'
 as in [Velten et al., 2017], computes KLdivergence between the fate probabilities of a cell and the average fate probabilities. Computation of average fate probabilities can be restricted to a set of userdefinedearly_cells
.'entropy'
 as in [Setty et al., 2019], computes entropy over a cell’s fate probabilities.
early_cells (
Union
[Mapping
[str
,Sequence
[str
]],Sequence
[str
],None
]) – Cell IDs or a mask marking early cells. IfNone
, use all cells. Only used whenmethod = 'kl_divergence'
. If adict
, the key specifies a cluster key inobs
and the values specify cluster labels containing early cells.self (FateProbsProtocol) –
 Return type
 Returns
: Returns the priming degree and updates the following fields:
priming_degree
 Priming degree.
copy#
fit#
 CFLARE.fit(k=20, **kwargs)[source]#
Prepare self for terminal states prediction.
 Parameters
k (
int
) – Number of eigenvectors to compute.kwargs (
Any
) – Keyword arguments forcompute_eigendecomposition()
.
 Return type
 Returns
: Returns self and updates the following fields:
eigendecomposition
 Eigendecomposition of thetransition_matrix
.
from_adata#
plot_fate_probabilities#
 CFLARE.plot_fate_probabilities(states=None, color=None, mode=PlotMode.EMBEDDING, time_key=None, same_plot=True, title=None, cmap='viridis', **kwargs)#
Plot fate probabilities.
 Parameters
states (
Union
[str
,Sequence
[str
],None
]) – Subset of the macrostates to show. IfNone
, plot all macrostates.color (
Optional
[str
]) – Key inobs
oranndata.AnnData.var
used to color the observations.mode (
Literal
['embedding'
,'time'
]) – Whether to plot the probabilities in an embedding or along the pseudotime.time_key (
Optional
[str
]) – Key inobs
where pseudotime is stored. Only used whenmode = 'time'
.title (
Union
[str
,Sequence
[str
],None
]) – Title of the plot.same_plot (
bool
) – Whether to plot the data on the same plot or not. Only use whenmode = 'embedding'
. If True anddiscrete = False
,color
is ignored.cmap (
str
) – Colormap for continuous annotations.self (FateProbsProtocol) –
 Return type
 Returns
: Nothing, just plots the figure. Optionally saves it based on
save
.
plot_lineage_drivers#
 CFLARE.plot_lineage_drivers(lineage, n_genes=8, use_raw=False, ascending=False, ncols=None, title_fmt='{gene} qval={qval:.4e}', figsize=None, dpi=None, save=None, **kwargs)#
Plot lineage drivers.
 Parameters
lineage (
str
) – Lineage for which to plot the driver genes.n_genes (
int
) – Top most correlated genes to plot.ascending (
bool
) – Whether to sort the genes in ascending order.title_fmt (
str
) – Title format. Can include{gene}
,{pval}
,{qval}
or{corr}
, which will be substituted with the actual values.figsize (
Optional
[Tuple
[float
,float
]]) – Size of the figure.save (
Union
[Path
,str
,None
]) – Filename where to save the plot.self (LinDriversProtocol) –
 Return type
 Returns
: Nothing, just plots the figure. Optionally saves it based on
save
.
plot_lineage_drivers_correlation#
 CFLARE.plot_lineage_drivers_correlation(lineage_x, lineage_y, color=None, gene_sets=None, gene_sets_colors=None, use_raw=False, cmap='RdYlBu_r', fontsize=12, adjust_text=False, legend_loc='best', figsize=(4, 4), dpi=None, save=None, show=True, **kwargs)#
Show scatter plot of genecorrelations between two lineages.
Optionally, a
dict
of gene names can be passed to highlight in the plot. Parameters
lineage_x (
str
) – Name of the lineage on the xaxis.lineage_y (
str
) – Name of the lineage on the yaxis.color (
Optional
[str
]) – Key invar
orvarm
, preferring for the former.gene_sets (
Optional
[Dict
[str
,Sequence
[str
]]]) – Gene sets annotations of the form{'gene_set_name': ['gene_1', 'gene_2'], ...}
.gene_sets_colors (
Optional
[Sequence
[str
]]) – List of colors where each entry corresponds to a gene set fromgenes_sets
. If None and keys ingene_sets
correspond to lineage names, use the lineage colors. Otherwise, use default colors.cmap (
str
) – Colormap to use.fontsize (
int
) – Size of the text when plottinggene_sets
.adjust_text (
bool
) – Whether to automatically adjust text in order to reduce overlap.legend_loc (
Optional
[str
]) – Position of the legend. IfNone
, don’t show the legend. Only used whengene_sets != None
.figsize (
Optional
[Tuple
[float
,float
]]) – Size of the figure.save (
Union
[Path
,str
,None
]) – Filename where to save the plot.self (LinDriversProtocol) –
 Return type
 Returns
: If
show = True
, nothing, just plots, otherwise returns the axes object. Optionally saves it based onsave
.
Notes
This plot is based on the following notebook by Maren Büttner.
plot_macrostates#
 CFLARE.plot_macrostates(which, states=None, color=None, discrete=True, mode=PlotMode.EMBEDDING, time_key='latent_time', same_plot=True, title=None, cmap='viridis', **kwargs)#
Plot macrostates on an embedding or along pseudotime.
 Parameters
which (
Literal
['all'
,'initial'
,'terminal'
]) –Which macrostates to plot. Valid options are:
'all'
 plot all macrostates.'initial'
 plot macrostates marked asinitial_states
.'terminal'
 plot macrostates marked asterminal_states
.
states (
Union
[str
,Sequence
[str
],None
]) – Subset of the macrostates to show. IfNone
, plot all macrostates.color (
Optional
[str
]) – Key inobs
orvar
used to color the observations.discrete (
bool
) – Whether to plot the data as continuous or discrete observations. If the data cannot be plotted as continuous observations, it will be plotted as discrete.mode (
Literal
['embedding'
,'time'
]) – Whether to plot the probabilities in an embedding or along the pseudotime.time_key (
str
) – Key inobs
where pseudotime is stored. Only used whenmode = 'time'
.title (
Union
[str
,Sequence
[str
],None
]) – Title of the plot.same_plot (
bool
) – Whether to plot the data on the same plot or not. Only use whenmode = 'embedding'
. If True anddiscrete = False
,color
is ignored.cmap (
str
) – Colormap for continuous annotations.
 Return type
 Returns
: Nothing, just plots the figure. Optionally saves it based on
save
.
plot_spectrum#
 CFLARE.plot_spectrum(n=None, real_only=None, show_eigengap=True, show_all_xticks=True, legend_loc=None, title=None, marker='.', figsize=(5, 5), dpi=100, save=None, **kwargs)#
Plot the top eigenvalues in a real or a complex plane.
 Parameters
n (
Optional
[int
]) – Number of eigenvalues to show. IfNone
, show all that have been computed.real_only (
Optional
[bool
]) – Whether to plot only the real part of the spectrum. IfNone
, plot real spectrum if no complex eigenvalues are present.show_eigengap (
bool
) – Whenreal_only = True
, this determines whether to show the inferred eigengap as a dotted line.show_all_xticks (
bool
) – Whenreal_only = True
, this determines whether to show the indices of all eigenvalues on the xaxis.legend_loc (
Optional
[str
]) – Location parameter for the legend.marker (
str
) – Marker symbol used, valid options can be found inmarkers
.figsize (
Optional
[Tuple
[float
,float
]]) – Size of the figure.dpi (
int
) – Dots per inch.save (
Union
[Path
,str
,None
]) – Filename where to save the plot.
 Return type
 Returns
: Nothing, just plots the figure. Optionally saves it based on
save
.
predict#
 CFLARE.predict(use=None, percentile=98, method='leiden', cluster_key=None, n_clusters_kmeans=None, n_neighbors=20, resolution=0.1, n_matches_min=0, n_neighbors_filtering=15, basis=None, n_comps=5, scale=None)[source]#
Find approximate recurrent classes of the Markov chain.
Filter to obtain recurrent states from left eigenvectors. Cluster to obtain approximate recurrent classes from right eigenvectors.
 Parameters
use (
Union
[int
,Sequence
[int
],None
]) – Which or how many first eigenvectors to use as features for filtering and clustering. IfNone
, use the eigengap statistic.percentile (
Optional
[int
]) – Threshold used for filtering out cells which are most likely transient states. Cells which are in the lowerpercentile
percent of each eigenvector will be removed from the data matrix.method (
Literal
['leiden'
,'kmeans'
]) –Method to be used for clustering. Valid option are:
cluster_key (
Optional
[str
]) – Key inobs
in order to associate names and colors withterminal_states
.n_clusters_kmeans (
Optional
[int
]) – Number of clusters whenmethod = 'kmeans'
. IfNone
, this is set touse + 1
.n_neighbors (
int
) – Number of neighbors in a kNN graph. This is the \(K\) parameter for that, the number of neighbors for each cell. Only used whenmethod = 'leiden'
.resolution (
float
) – Resolution parameter forleiden()
. Should be chosen relatively small.n_matches_min (
int
) – Filters out cells which don’t have at leastn_matches_min
neighbors from the same category. This filters out some cells which are transient but have been misassigned.n_neighbors_filtering (
int
) – Parameter for filtering cells. Cells are filtered out if they don’t have at leastn_matches_min
neighbors among then_neighbors_filtering
nearest cells.basis (
Optional
[str
]) – Key fromobsm
as additional features for clustering. If None, use only the right eigenvectors.n_comps (
int
) – Number of embedding components to be used whenbasis != None
.scale (
Optional
[bool
]) – Scale the values to zscores. IfNone
, scale the values ifbasis != None
.
 Return type
 Returns
: Returns self and just updates the following fields:
terminal_states
 Categorical annotation of terminal states.terminal_states_probabilities
 Probability to be a terminal state.
read#
 static CFLARE.read(fname, adata=None, copy=False)#
Deserialize self from a file.
 Parameters
fname (
Union
[str
,Path
]) – Path from which to read the object.adata (
Optional
[AnnData
]) –AnnData
object to assign to the saved object. Only used when the saved object hasadata
and it was saved without it.copy (
bool
) – Whether to copyadata
before assigning it. Ifadata
is a view, it is always copied.
 Return type
IOMixin
 Returns
: The deserialized object.
rename_initial_states#
 CFLARE.rename_initial_states(old_new)#
Rename the
initial_states
. Parameters
old_new (
Dict
[str
,str
]) – Dictionary that maps old names to unique new names. Return type
 Returns
: Returns self and updates the following fields:
initial_states
 Categorical annotation of initial states.
rename_terminal_states#
 CFLARE.rename_terminal_states(old_new)#
Rename the
terminal_states
. Parameters
old_new (
Dict
[str
,str
]) – Dictionary that maps old names to unique new names. Return type
 Returns
: Returns self and updates the following fields:
terminal_states
 Categorical annotation of terminal states.
set_initial_states#
 CFLARE.set_initial_states(states, cluster_key=None, allow_overlap=False, **kwargs)#
Set the
initial_states
. Parameters
states (
Union
[Series
,Dict
[str
,Sequence
[Any
]]]) –Which states to select. Valid options are:
categorical
Series
where each category corresponds to an individual state. NaN entries denote cells that do not belong to any state, i.e., transient cells.dict
where keys are states and values are lists of cell barcodes corresponding to annotations inobs_names
. If only 1 key is provided, values should correspond to clusters if a categoricalSeries
can be found inobs
.
cluster_key (
Optional
[str
]) – Key inobs
to associate names and colorsinitial_states
. Each state will be given the name and color corresponding to the cluster it mostly overlaps with.allow_overlap (
bool
) – Whether to allow overlapping names between initial and terminal states.kwargs (
Any
) – Additional keyword arguments.
 Return type
 Returns
: Returns self and updates the following fields:
initial_states
 Categorical annotation of initial states.initial_states_probabilities
 Probability to be an initial state.
set_terminal_states#
 CFLARE.set_terminal_states(states, cluster_key=None, allow_overlap=False, **kwargs)#
Set the
terminal_states
. Parameters
states (
Union
[Series
,Dict
[str
,Sequence
[Any
]]]) –States to select. Valid options are:
categorical
Series
where each category corresponds to an individual state. NaN entries denote cells that do not belong to any state, i.e., transient cells.dict
where keys are states and values are lists of cell barcodes corresponding to annotations inobs_names
. If only 1 key is provided, values should correspond to clusters if a categoricalSeries
can be found inobs
.
cluster_key (
Optional
[str
]) – Key inobs
to associate names and colors withterminal_states
. Each state will be given the name and color corresponding to the cluster it mostly overlaps with.allow_overlap (
bool
) – Whether to allow overlapping names between initial and terminal states.kwargs (
Any
) – Additional keyword arguments.
 Return type
 Returns
: Returns self and updates the following fields:
terminal_states
 Categorical annotation of terminal states.terminal_states_probabilities
 Probability to be a terminal state.
to_adata#
 CFLARE.to_adata(keep=('X', 'raw'), *, copy=True)#
Serialize self to
Anndata
. Parameters
keep (
Union
[Literal
['all'
],Sequence
[Literal
['X'
,'raw'
,'layers'
,'obs'
,'var'
,'obsm'
,'varm'
,'obsp'
,'varp'
,'uns'
]]]) –Which attributes to keep from the underlying
adata
. Valid options are:'all'
 keep all attributes specified in the signature.Sequence
 keep only subset of these attributes.dict
 the keys correspond the attribute names and values to a subset of keys which to keep from this attribute. If the values are specified either asTrue
or'all'
, everything from this attribute will be kept.
copy (
Union
[bool
,Sequence
[Literal
['X'
,'raw'
,'layers'
,'obs'
,'var'
,'obsm'
,'varm'
,'obsp'
,'varp'
,'uns'
]]]) – Whether to copy the data. Can be specified on perattribute basis. Useful for attributes that are arraylike.
 Return type
 Returns
: Annotated data object.