ViolinΒΆ

import holoviews as hv

from hv_anndata.interface import register

register()

hv.extension("bokeh")
β“˜
import anndata as ad
import pooch
import scanpy as sc
EXAMPLE_DATA = pooch.create(
    path=pooch.os_cache("scverse_tutorials"),
    base_url="doi:10.6084/m9.figshare.22716739.v1/",
)
EXAMPLE_DATA.load_registry_from_doi()
samples = {
    "s1d1": "s1d1_filtered_feature_bc_matrix.h5",
    "s1d3": "s1d3_filtered_feature_bc_matrix.h5",
}
adatas = {}

for sample_id, filename in samples.items():
    path = EXAMPLE_DATA.fetch(filename)
    sample_adata = sc.read_10x_h5(path)
    sample_adata.var_names_make_unique()
    adatas[sample_id] = sample_adata

adata = ad.concat(adatas, label="sample")
adata.obs_names_make_unique()
print(adata.obs["sample"].value_counts())
adata
Downloading file 's1d1_filtered_feature_bc_matrix.h5' from 'doi:10.6084/m9.figshare.22716739.v1/s1d1_filtered_feature_bc_matrix.h5' to '/home/docs/.cache/scverse_tutorials'.
/home/docs/.local/share/hatch/env/virtual/hv-anndata/aBPdo1TA/docs/lib/python3.13/site-packages/anndata/_core/anndata.py:1776: UserWarning: Variable names are not unique. To make them unique, call `.var_names_make_unique`.
  utils.warn_names_duplicates("var")
/home/docs/.local/share/hatch/env/virtual/hv-anndata/aBPdo1TA/docs/lib/python3.13/site-packages/anndata/_core/anndata.py:1776: UserWarning: Variable names are not unique. To make them unique, call `.var_names_make_unique`.
  utils.warn_names_duplicates("var")
Downloading file 's1d3_filtered_feature_bc_matrix.h5' from 'doi:10.6084/m9.figshare.22716739.v1/s1d3_filtered_feature_bc_matrix.h5' to '/home/docs/.cache/scverse_tutorials'.
sample
s1d1    8785
s1d3    8340
Name: count, dtype: int64
/home/docs/.local/share/hatch/env/virtual/hv-anndata/aBPdo1TA/docs/lib/python3.13/site-packages/anndata/_core/anndata.py:1776: UserWarning: Variable names are not unique. To make them unique, call `.var_names_make_unique`.
  utils.warn_names_duplicates("var")
/home/docs/.local/share/hatch/env/virtual/hv-anndata/aBPdo1TA/docs/lib/python3.13/site-packages/anndata/_core/anndata.py:1776: UserWarning: Variable names are not unique. To make them unique, call `.var_names_make_unique`.
  utils.warn_names_duplicates("var")
/home/docs/.local/share/hatch/env/virtual/hv-anndata/aBPdo1TA/docs/lib/python3.13/site-packages/anndata/_core/anndata.py:1774: UserWarning: Observation names are not unique. To make them unique, call `.obs_names_make_unique`.
  utils.warn_names_duplicates("obs")
AnnData object with n_obs Γ— n_vars = 17125 Γ— 36601
    obs: 'sample'
adata.var["mt"] = adata.var_names.str.startswith("MT-")
adata.var["ribo"] = adata.var_names.str.startswith(("RPS", "RPL"))
adata.var["hb"] = adata.var_names.str.contains("^HB[^(P)]")

sc.pp.calculate_qc_metrics(
    adata, qc_vars=["mt", "ribo", "hb"], inplace=True, log1p=True
)
sc.pl.violin(
    adata,
    ["n_genes_by_counts", "total_counts", "pct_counts_mt"],
    jitter=0.4,
    multi_panel=True,
)
../_images/1e1332f625e6ec096e7ad71123253127318e27cf668182872377f98b5f2f89fa.png
violins = [
    hv.Violin(adata, vdims=i).opts(
        ylabel="Value",
        title=i.split(".")[-1],  # drop the 'obs.'
        show_grid=True,
        ylim=(0, None),
    )
    for i in ["obs.n_genes_by_counts", "obs.total_counts", "obs.pct_counts_mt"]
]
hv.Layout(violins).opts(axiswise=True)