Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
pl.subplots_adjust(wspace=0.7, hspace=0.5)
for i, gene in enumerate(var_names[:4]):
if t_max is not False:
mi = dm.m[i]
P[i] *= np.array([1 / mi, 1 / mi, 1 / mi, mi, 1])[:, None]
ax = axes[i] if n_rows > 1 else axes
for j, pij in enumerate(P[i]):
ax[j].plot(pij)
ax[len(P[i])].plot(L[i])
if i == 0:
pars_names = ["alpha", "beta", "gamma", "t_", "scaling", "loss"]
for j, name in enumerate(pars_names):
ax[j].set_title(name, fontsize=fontsize)
if return_model:
logg.info("\noutputs model fit of gene:", dm.gene)
return dm if return_model else adata if copy else None
def remove_duplicate_cells(adata):
if "X_pca" not in adata.obsm.keys():
pca(adata)
idx_duplicates = get_duplicate_cells(adata)
if len(idx_duplicates) > 0:
mask = np.ones(adata.n_obs, bool)
mask[idx_duplicates] = 0
logg.info("Removed", len(idx_duplicates), "duplicate cells.")
adata._inplace_subset_obs(mask)
neighbors(adata)
layers = [layer for layer in {"spliced", "unspliced"} if layer in adata.layers]
if any([not_yet_normalized(adata.layers[layer]) for layer in layers]):
normalize_per_cell(adata)
if n_neighbors is not None and n_neighbors > get_n_neighs(adata):
if use_rep is None:
use_rep = "X_pca"
neighbors(
adata, n_neighbors=n_neighbors, use_rep=use_rep, n_pcs=n_pcs, method=method
)
verify_neighbors(adata)
if "spliced" not in adata.layers.keys() or "unspliced" not in adata.layers.keys():
logg.warn("Skipping moments, because un/spliced counts were not found.")
else:
logg.info(f"computing moments based on {mode}", r=True)
connectivities = get_connectivities(
adata, mode, n_neighbors=n_neighbors, recurse_neighbors=False
)
adata.layers["Ms"] = (
csr_matrix.dot(connectivities, csr_matrix(adata.layers["spliced"]))
.astype(np.float32)
.A
)
adata.layers["Mu"] = (
csr_matrix.dot(connectivities, csr_matrix(adata.layers["unspliced"]))
.astype(np.float32)
.A
)
# if renormalize: normalize_per_cell(adata, layers={'Ms', 'Mu'}, enforce=True)
adata.varm[f"{add_key}_pvals_kinetics"] = np.rec.fromarrays(
pvals.T, dtype=[(f"{rn}", "float32") for rn in groups]
).T
adata.uns["recover_dynamics"]["fit_diff_kinetics"] = groupby
logg.info(" finished", time=True, end=" " if settings.verbosity > 2 else "\n")
logg.hint(
"added \n"
f" '{add_key}_diff_kinetics', "
f"clusters displaying differential kinetics (adata.var)\n"
f" '{add_key}_pval_kinetics', "
f"p-values of differential kinetics (adata.var)"
)
if return_model:
logg.info("\noutputs model fit of gene:", dm.gene)
return dm if return_model else adata if copy else None
Number of highly-variable genes to keep.
log : `bool`, optional (default: `True`)
Use the logarithm of the mean to variance ratio.
copy : `bool`, optional (default: `False`)
If an :class:`~anndata.AnnData` is passed, determines whether a copy
is returned.
Returns
-------
If an AnnData `adata` is passed, returns or updates `adata` depending on \
`copy`. It filters the `adata` and adds the annotations
"""
adata = data.copy() if copy else data
set_initial_size(adata)
if n_top_genes is not None and adata.n_vars < n_top_genes:
logg.info(
"Skip filtering by dispersion since number "
"of variables are less than `n_top_genes`"
)
else:
if flavor == "svr":
mu = adata.X.mean(0).A1 if issparse(adata.X) else adata.X.mean(0)
sigma = (
np.sqrt(adata.X.multiply(adata.X).mean(0).A1 - mu ** 2)
if issparse(adata.X)
else adata.X.std(0)
)
log_mu = np.log2(mu)
log_cv = np.log2(sigma / mu)
from sklearn.svm import SVR
Number of neighbors to restrict transitions to.
self_transitions: `bool` (default: `False`)
Whether to include self-transitions.
copy: `bool` (default: `False`)
Return a copy instead of writing to `adata`.
Returns
-------
Returns or updates `adata` with the attributes
cell_origin: `.obs`
most likely cell origin for each individual cell
cell_origin_confidence: `.obs`
confidence of coming from assigned origin
"""
adata = data.copy() if copy else data
logg.info("computing cell fates", r=True)
n_neighbors = 10 if n_neighbors is None else n_neighbors
_adata = adata.copy()
vgraph = VelocityGraph(
_adata, n_neighbors=n_neighbors, approx=True, n_recurse_neighbors=1
)
vgraph.compute_cosines()
_adata.uns["velocity_graph"] = vgraph.graph
_adata.uns["velocity_graph_neg"] = vgraph.graph_neg
T = transition_matrix(_adata, self_transitions=self_transitions, backward=True)
I = np.eye(_adata.n_obs)
fate = np.linalg.inv(I - T)
if issparse(T):
fate = fate.A
cell_fates = np.array(_adata.obs[groupby][fate.argmax(1)])
else nonzeros * (Xs + Xu)
)
gene_subset = np.ones(adata.n_vars, dtype=bool)
if _min_counts is not None or _max_counts is not None:
gene_subset &= filter(X, min_counts=_min_counts, max_counts=_max_counts)[0]
if _min_cells is not None or _max_cells is not None:
gene_subset &= filter(X, min_cells=_min_cells, max_cells=_max_cells)[0]
adata._inplace_subset_var(gene_subset)
s = np.sum(~gene_subset)
if s > 0:
logg.info(f"Filtered out {s} genes that are detected", end=" ")
if _min_cells is not None or _min_counts is not None:
logg.info(
f"in less than {_min_cells} cells ({layer})."
if _min_counts is None
else f"{_min_counts} counts ({layer}).",
no_indent=True,
)
if max_cells is not None or max_counts is not None:
logg.info(
f"in more than {_max_cells} cells ({layer})."
if _max_counts is None
else f"{_max_counts} counts ({layer}).",
no_indent=True,
)
return adata if copy else None