Exploration of hormonal receptor genes in Wang et al. developing human neocortex dataset - Metacell calculation by SeaCells (only second trimester)¶

Reference paper

1. Environment¶

1.1 Modules¶

In [1]:
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.
In [2]:
# Some plotting aesthetics
%matplotlib inline

sns.set_style('ticks')
matplotlib.rcParams['figure.figsize'] = [3.5, 3.5]
matplotlib.rcParams['figure.dpi'] = 100
In [3]:
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

1.2 Settings¶

In [4]:
sc.settings.verbosity = 3
sc.settings.set_figure_params(dpi=80)

1.3 Files and parameters¶

In [5]:
input_file = '../../../../DataDir/ExternalData/SingleCellData/Wang_IITrimester_adataMetacells.h5ad'

1.4 Start computations¶

In [6]:
print(datetime.now())
2026-03-20 14:00:08.127359

2. Data Load¶

2.1 Read adata metacells file¶

In [7]:
adata = sc.read(input_file)
adata
Out[7]:
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'
In [8]:
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(

3. Exploration of hormonal receptor gene signature expression¶

In [9]:
signatures = '../../../../DataDir/ExternalData/Receptors/EndocrineKeyGenes.txt'
sig = pd.read_csv(signatures, sep="\t", keep_default_na=False)  
genes = sig["GeneName"].values.tolist()
In [10]:
fn.CustomUmap(adata, genes, embedding="X_umap", s=150)
Missing: {'CYP19A1', 'DIO3'}
In [11]:
adata.obs
Out[11]:
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

In [12]:
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

4 Save in other formats¶

In [13]:
print(datetime.now())
2026-03-20 14:00:17.692185
In [14]:
nb_fname = ipynbname.name()
nb_fname
Out[14]:
'SEACellsWang-GeneExploration_SecondTrimester'
In [15]:
%%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
In [ ]: