import os
import sys
import numpy as np
import pandas as pd
import scanpy as sc
import pickle
#Plotting
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
#utils
import ipynbname
from datetime import datetime
# SeaCell
import SEACells
#import custom functions
sys.path.append('../')
import functions as fn
findfont: Font family ['Raleway'] not found. Falling back to DejaVu Sans. findfont: Font family ['Lato'] not found. Falling back to DejaVu Sans.
# Some plotting aesthetics
%matplotlib inline
sns.set_style('ticks')
matplotlib.rcParams['figure.figsize'] = [3.5, 3.5]
matplotlib.rcParams['figure.dpi'] = 100
print("Scanpy version: ", sc.__version__)
print("Pandas version: ", pd.__version__)
print("SEACell version: ", SEACells.__version__)
Scanpy version: 1.9.3 Pandas version: 2.0.0 SEACell version: 0.3.3
sc.settings.verbosity = 3
sc.settings.set_figure_params(dpi=80)
input_file = '../../../../DataDir/ExternalData/SingleCellData/Wang_IITrimester_adataMetacells.h5ad'
print(datetime.now())
2026-03-20 14:00:08.127359
adata = sc.read(input_file)
adata
AnnData object with n_obs × n_vars = 860 × 20266
obs: 'cell_label', 'cell_label_purity', 'agg_sample_id', 'Aggregated_brain_region', 'Auth_Group'
var: 'highly_variable', 'means', 'dispersions', 'dispersions_norm', 'highly_variable_nbatches', 'highly_variable_intersection'
uns: 'Aggregated_brain_region_colors', 'agg_sample_id_colors', 'cell_label_colors', 'hvg', 'log1p', 'neighbors', 'pca', 'umap'
obsm: 'X_pca', 'X_umap'
varm: 'PCs'
layers: 'counts', 'lognorm', 'raw'
obsp: 'connectivities', 'distances'
sc.pl.umap(adata, color=['cell_label'], s=150)
/usr/local/lib/python3.8/dist-packages/scanpy/plotting/_tools/scatterplots.py:392: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored cax = scatter(
signatures = '../../../../DataDir/ExternalData/Receptors/EndocrineKeyGenes.txt'
sig = pd.read_csv(signatures, sep="\t", keep_default_na=False)
genes = sig["GeneName"].values.tolist()
fn.CustomUmap(adata, genes, embedding="X_umap", s=150)
Missing: {'CYP19A1', 'DIO3'}
adata.obs
| cell_label | cell_label_purity | agg_sample_id | Aggregated_brain_region | Auth_Group | |
|---|---|---|---|---|---|
| SEACell-710 | ExN | 1.000000 | ARKFrozen-43-PFC | PreFrontalCortex | Second_trimester |
| SEACell-206 | ExN | 1.000000 | ARKFrozen-43-PFC | PreFrontalCortex | Second_trimester |
| SEACell-763 | RadialGlia | 1.000000 | ARKFrozen-45-CTX | Neocortex | Second_trimester |
| SEACell-237 | InN | 0.972973 | ARKFrozen-41-PFC-2 | PreFrontalCortex | Second_trimester |
| SEACell-392 | ExN | 1.000000 | ARKFrozen-18-PFC | PreFrontalCortex | Second_trimester |
| ... | ... | ... | ... | ... | ... |
| SEACell-746 | OPC | 0.954545 | ARKFrozen-43-PFC | PreFrontalCortex | Second_trimester |
| SEACell-766 | InN | 0.892857 | ARKFrozen-43-PFC | PreFrontalCortex | Second_trimester |
| SEACell-511 | ExN | 0.750000 | ARKFrozen-43-PFC | PreFrontalCortex | Second_trimester |
| SEACell-148 | CajalRetzius | 0.956522 | ARKFrozen-43-PFC | PreFrontalCortex | Second_trimester |
| SEACell-277 | ExN | 0.833333 | ARKFrozen-43-PFC | PreFrontalCortex | Second_trimester |
860 rows × 5 columns
outdir = "../../../../FigPaper/"
os.makedirs(outdir, exist_ok=True)
sc.settings.figdir = outdir
gene_dict = sig.groupby("Signature")["GeneName"].apply(list).to_dict()
gene_dict_filtered = {
sig_name: [g for g in genes if g in adata.var_names]
for sig_name, genes in gene_dict.items()
}
gene_dict_filtered = {k: v for k, v in gene_dict_filtered.items() if v}
if gene_dict_filtered:
sc.pl.dotplot(
adata,
gene_dict_filtered,
groupby='cell_label',
save="dotplot_WangII.png"
)
else:
print("None of the specified genes are found.")
/usr/local/lib/python3.8/dist-packages/scanpy/plotting/_dotplot.py:749: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap', 'norm' will be ignored dot_ax.scatter(x, y, **kwds)
WARNING: saving figure to file ../../../../FigPaper/dotplot_dotplot_WangII.png
print(datetime.now())
2026-03-20 14:00:17.692185
nb_fname = ipynbname.name()
nb_fname
'SEACellsWang-GeneExploration_SecondTrimester'
%%bash -s "$nb_fname"
jupyter nbconvert "$1".ipynb --to="python"
jupyter nbconvert "$1".ipynb --to="html"
[NbConvertApp] Converting notebook SEACellsWang-GeneExploration_SecondTrimester.ipynb to python [NbConvertApp] Writing 2367 bytes to SEACellsWang-GeneExploration_SecondTrimester.py [NbConvertApp] Converting notebook SEACellsWang-GeneExploration_SecondTrimester.ipynb to html [NbConvertApp] Writing 6161700 bytes to SEACellsWang-GeneExploration_SecondTrimester.html