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/Castaldi_metacells_new.h5ad'
print(datetime.now())
2026-04-27 15:06:43.372723
adata = sc.read(input_file)
adata
AnnData object with n_obs × n_vars = 249 × 33538
obs: 'leidenAnnotated', 'leidenAnnotated_purity'
var: 'highly_variable', 'means', 'dispersions', 'dispersions_norm'
uns: 'hvg', 'leidenAnnotated_colors', 'log1p', 'neighbors', 'pca', 'umap'
obsm: 'X_pca', 'X_umap'
varm: 'PCs'
layers: 'counts', 'lognorm', 'raw'
obsp: 'connectivities', 'distances'
sc.pl.umap(adata, color=['leidenAnnotated'], 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)
sc.settings.figdir = "../../../../FigPaper/"
sc.set_figure_params(dpi_save=600)
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='leidenAnnotated',
save="CastaldiAll_highres.png"
)
else:
print("None of the specified genes are found.")
WARNING: saving figure to file ../../../../FigPaper/dotplot_CastaldiAll_highres.png
/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)
print(datetime.now())
2026-04-27 15:06:52.718998