Visualizing pre-processing results

%load_ext autoreload
%autoreload 2
import holoviews as hv

from hv_anndata import A, register
from hv_anndata import scanpy as hv_sc
from hv_anndata.plotting import utils as hv_sc_utils

register()

hv.extension("bokeh")
import scanpy as sc
adata = sc.datasets.pbmc68k_reduced()
adata.layers["counts"] = adata.raw.X
del adata.raw
adata
AnnData object with n_obs × n_vars = 700 × 765
    obs: 'bulk_labels', 'n_genes', 'percent_mito', 'n_counts', 'S_score', 'G2M_score', 'phase', 'louvain'
    var: 'n_counts', 'means', 'dispersions', 'dispersions_norm', 'highly_variable'
    uns: 'bulk_labels_colors', 'louvain', 'louvain_colors', 'neighbors', 'pca', 'rank_genes_groups'
    obsm: 'X_pca', 'X_umap'
    varm: 'PCs'
    obsp: 'connectivities', 'distances'
    layers: None (.X), 'counts'

scanpy.pl.highest_expr_genes()

tool to get the data:

hv.HeatMap(
    hv_sc_utils.highest_expr_genes(adata), [A.obs.index, A.var.index], A.X[:, :]
).opts(responsive=True, height=400, xrotation=30)
/home/docs/checkouts/readthedocs.org/user_builds/hv-anndata/checkouts/latest/src/hv_anndata/plotting/utils.py:55: UserWarning: Some cells have zero counts
  norm_expr = sc.pp.normalize_total(

plotting function using above data

hv_sc.highest_expr_genes(adata, layer="counts")
/home/docs/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/numba/cpython/hashing.py:477: UserWarning: FNV hashing is not implemented in Numba. See PEP 456 https://www.python.org/dev/peps/pep-0456/ for rationale over not using FNV. Numba will continue to work, but hashes for built in types will be computed using siphash24. This will permit e.g. dictionaries to continue to behave as expected, however anything relying on the value of the hash opposed to hash as a derived property is likely to not work as expected.
  warnings.warn(msg)

scanpy.pl.highly_variable_genes()

sc.pp.highly_variable_genes(adata)
# sc.pl.highly_variable_genes(adata)
hv_sc.highly_variable_genes(adata)

scanpy.pl.scrublet_score_distribution()

TODO:

  • batches

missing:

  • where are the y ticks on the y axis?

adata_sim = sc.pp.scrublet_simulate_doublets(adata)
sc.pp.scrublet(adata, adata_sim)
# sc.pl.scrublet_score_distribution(adata)
hv_sc.scrublet_score_distribution(adata)