{ "cells": [ { "cell_type": "markdown", "id": "0", "metadata": {}, "source": [ "# Violin" ] }, { "cell_type": "code", "execution_count": null, "id": "1", "metadata": {}, "outputs": [], "source": [ "import holoviews as hv\n", "\n", "from hv_anndata.interface import register\n", "\n", "register()\n", "\n", "hv.extension(\"bokeh\")" ] }, { "cell_type": "code", "execution_count": null, "id": "2", "metadata": {}, "outputs": [], "source": [ "import anndata as ad\n", "import pooch\n", "import scanpy as sc" ] }, { "cell_type": "code", "execution_count": null, "id": "3", "metadata": {}, "outputs": [], "source": [ "EXAMPLE_DATA = pooch.create(\n", " path=pooch.os_cache(\"scverse_tutorials\"),\n", " base_url=\"doi:10.6084/m9.figshare.22716739.v1/\",\n", ")\n", "EXAMPLE_DATA.load_registry_from_doi()" ] }, { "cell_type": "code", "execution_count": null, "id": "4", "metadata": {}, "outputs": [], "source": [ "samples = {\n", " \"s1d1\": \"s1d1_filtered_feature_bc_matrix.h5\",\n", " \"s1d3\": \"s1d3_filtered_feature_bc_matrix.h5\",\n", "}\n", "adatas = {}\n", "\n", "for sample_id, filename in samples.items():\n", " path = EXAMPLE_DATA.fetch(filename)\n", " sample_adata = sc.read_10x_h5(path)\n", " sample_adata.var_names_make_unique()\n", " adatas[sample_id] = sample_adata\n", "\n", "adata = ad.concat(adatas, label=\"sample\")\n", "adata.obs_names_make_unique()\n", "print(adata.obs[\"sample\"].value_counts())\n", "adata" ] }, { "cell_type": "code", "execution_count": null, "id": "5", "metadata": {}, "outputs": [], "source": [ "adata.var[\"mt\"] = adata.var_names.str.startswith(\"MT-\")\n", "adata.var[\"ribo\"] = adata.var_names.str.startswith((\"RPS\", \"RPL\"))\n", "adata.var[\"hb\"] = adata.var_names.str.contains(\"^HB[^(P)]\")\n", "\n", "sc.pp.calculate_qc_metrics(\n", " adata, qc_vars=[\"mt\", \"ribo\", \"hb\"], inplace=True, log1p=True\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "6", "metadata": {}, "outputs": [], "source": [ "sc.pl.violin(\n", " adata,\n", " [\"n_genes_by_counts\", \"total_counts\", \"pct_counts_mt\"],\n", " jitter=0.4,\n", " multi_panel=True,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "7", "metadata": {}, "outputs": [], "source": [ "violins = [\n", " hv.Violin(adata, vdims=i).opts(\n", " ylabel=\"Value\",\n", " title=i.split(\".\")[-1], # drop the 'obs.'\n", " show_grid=True,\n", " ylim=(0, None),\n", " )\n", " for i in [\"obs.n_genes_by_counts\", \"obs.total_counts\", \"obs.pct_counts_mt\"]\n", "]\n", "hv.Layout(violins).opts(axiswise=True)" ] }, { "cell_type": "code", "execution_count": null, "id": "8", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "hv-anndata", "language": "python", "name": "hv-anndata" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.7" } }, "nbformat": 4, "nbformat_minor": 5 }