Seurat单细胞处理流程之八:pySCENIC转录因子分析-python可视化

# import dependencies
import loompy as lp
import json
import base64
import zlib
import pandas as pd
import scanpy as sc
from pyscenic.plotting import plot_binarization
from pyscenic.export import add_scenic_metadata
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
from pyscenic.rss import regulon_specificity_scores
from pyscenic.plotting import plot_rss
import matplotlib.pyplot as plt
from adjustText import adjust_text
import seaborn as sns
from pyscenic.binarization import binarize
OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.
sc.settings.verbosity = 3 # verbosity: errors (0), warnings (1), info (2), hints (3)
sc.logging.print_versions()
sc.set_figure_params(dpi=300, fontsize=10, dpi_save=600)
-----
anndata     0.8.0
scanpy      1.9.3
-----
PIL                         9.5.0
adjustText                  1.3.0
attr                        22.1.0
backcall                    0.2.0
beta_ufunc                  NA
binom_ufunc                 NA
boltons                     NA
cffi                        1.15.1
cloudpickle                 2.2.1
ctxcore                     0.2.0
cycler                      0.10.0
cython_runtime              NA
cytoolz                     0.12.3
dask                        2022.02.0
dateutil                    2.8.2
debugpy                     1.5.1
decorator                   5.1.1
defusedxml                  0.7.1
entrypoints                 0.4
frozendict                  2.4.5
fsspec                      2023.1.0
h5py                        3.8.0
ipykernel                   6.15.2
ipython_genutils            0.2.0
ipywidgets                  7.6.5
jedi                        0.18.1
jinja2                      3.1.2
joblib                      1.3.2
jupyter_server              1.23.4
kiwisolver                  1.4.5
llvmlite                    0.39.1
loompy                      3.0.7
markupsafe                  2.1.1
matplotlib                  3.5.3
matplotlib_inline           0.1.6
mkl                         2.4.0
mpl_toolkits                NA
natsort                     8.4.0
nbinom_ufunc                NA
networkx                    2.6.3
numba                       0.56.4
numexpr                     2.8.6
numpy                       1.21.5
numpy_groupies              0.9.22
packaging                   22.0
pandas                      1.3.5
parso                       0.8.3
pexpect                     4.8.0
pickleshare                 0.7.5
pkg_resources               NA
prompt_toolkit              3.0.36
psutil                      5.9.0
ptyprocess                  0.7.0
pyarrow                     12.0.1
pycparser                   2.21
pydev_ipython               NA
pydevconsole                NA
pydevd                      2.6.0
pydevd_concurrency_analyser NA
pydevd_file_utils           NA
pydevd_plugins              NA
pydevd_tracing              NA
pygments                    2.11.2
pyparsing                   3.1.4
pyscenic                    0.12.1
pytz                        2022.7
scipy                       1.7.3
seaborn                     0.12.2
session_info                1.0.0
six                         1.16.0
sklearn                     1.0.2
statsmodels                 0.13.5
storemagic                  NA
tblib                       2.0.0
threadpoolctl               3.1.0
tlz                         0.12.3
toolz                       0.12.1
tornado                     6.2
tqdm                        4.66.5
traitlets                   5.7.1
typing_extensions           NA
vscode                      NA
wcwidth                     0.2.5
yaml                        6.0.1
zipp                        NA
zmq                         23.2.0
-----
IPython             7.31.1
jupyter_client      7.4.9
jupyter_core        4.11.2
jupyterlab          3.5.3
notebook            6.5.2
-----
Python 3.7.16 (default, Jan 17 2023, 22:20:44) [GCC 11.2.0]
Linux-5.15.0-130-generic-x86_64-with-debian-bullseye-sid
-----
Session information updated at 2025-04-03 14:20
## 读取pyscenic计算之后的loom文件
sample_SCENIC = 'out_pbmc_SCENIC.loom'
# 提取转录因子AUC评分,这里得到的文件和我们在R里面第一部分提取的文件一样
lf = lp.connect(sample_SCENIC, mode='r+', validate=False )
auc_mtx = pd.DataFrame(lf.ca.RegulonsAUC, index=lf.ca.CellID)
lf.close()
auc_mtx
AHR(+) APEX1(+) ARID3A(+) ARNTL(+) ATF1(+) ATF3(+) ATF4(+) ATF6(+) ATF6B(+) BACH1(+) ... ZNF583(+) ZNF585A(+) ZNF689(+) ZNF714(+) ZNF76(+) ZNF785(+) ZNF814(+) ZNF880(+) ZNF92(+) ZXDB(+)
AAACATACAACCAC-1 0.000000 0.145773 0.010933 0.024619 0.000000 0.045329 0.033024 0.000000 0.000000 0.037362 ... 0.036576 0.000000 0.057726 0.000000 0.139942 0.018278 0.024690 0.080661 0.060841 0.000000
AAACATTGAGCTAC-1 0.000000 0.232264 0.000000 0.005251 0.000000 0.059722 0.052328 0.000000 0.000000 0.024414 ... 0.095150 0.013767 0.000000 0.000000 0.000000 0.000000 0.015579 0.000000 0.047414 0.012222
AAACATTGATCAGC-1 0.032070 0.072886 0.002936 0.013578 0.048001 0.050850 0.047495 0.000000 0.000000 0.014038 ... 0.000000 0.000000 0.000000 0.000000 0.000000 0.049675 0.048014 0.000000 0.005677 0.000000
AAACCGTGCTTCCG-1 0.040233 0.187075 0.096007 0.002996 0.000000 0.126092 0.072065 0.000000 0.000000 0.028959 ... 0.000000 0.054260 0.087464 0.042760 0.000000 0.012895 0.035168 0.000000 0.077797 0.000000
AAACCGTGTATGCG-1 0.000000 0.135083 0.006317 0.016629 0.025718 0.048888 0.030091 0.018542 0.057945 0.043377 ... 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.036534 0.000000 0.000000 0.000000
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
TTTCGAACTCTCAT-1 0.000000 0.140428 0.036787 0.013187 0.000000 0.132603 0.085193 0.000000 0.000000 0.029779 ... 0.010602 0.000000 0.061516 0.103499 0.000000 0.044629 0.029883 0.000000 0.082707 0.017941
TTTCTACTGAGGCA-1 0.024198 0.149417 0.017290 0.015347 0.020512 0.047221 0.056524 0.000000 0.000000 0.006897 ... 0.041744 0.000000 0.105831 0.000000 0.000000 0.000000 0.096939 0.000000 0.038284 0.042835
TTTCTACTTCCTCG-1 0.081050 0.115403 0.007309 0.011081 0.000000 0.064134 0.045110 0.001050 0.000000 0.017235 ... 0.138616 0.000000 0.195044 0.000000 0.000000 0.084212 0.051567 0.050373 0.091300 0.000000
TTTGCATGAGAGGC-1 0.000000 0.000000 0.002045 0.016075 0.000000 0.046311 0.033722 0.011020 0.007653 0.015398 ... 0.116088 0.000000 0.000000 0.000000 0.000000 0.050684 0.045554 0.000000 0.098588 0.000000
TTTGCATGCCTCAC-1 0.000000 0.144801 0.001559 0.012526 0.000000 0.033144 0.042407 0.000175 0.000000 0.029363 ... 0.019746 0.022514 0.000000 0.049320 0.000000 0.076362 0.080357 0.000000 0.026086 0.025903

2638 rows × 272 columns

#Calculate RSS,用于后续的可视化,这里是按照细胞类型
pbmc = sc.read_h5ad("../../scanpy_单细胞流程/pbmc_test/adata_注释后.h5ad")
rss_cellType = regulon_specificity_scores( auc_mtx, pbmc.obs.celltype )
rss_cellType
AHR(+) APEX1(+) ARID3A(+) ARNTL(+) ATF1(+) ATF3(+) ATF4(+) ATF6(+) ATF6B(+) BACH1(+) ... ZNF583(+) ZNF585A(+) ZNF689(+) ZNF714(+) ZNF76(+) ZNF785(+) ZNF814(+) ZNF880(+) ZNF92(+) ZXDB(+)
CD4 T 0.371006 0.494335 0.362952 0.514898 0.320398 0.404762 0.452648 0.331502 0.316784 0.391548 ... 0.328759 0.234516 0.289599 0.339651 0.235871 0.424768 0.417361 0.319822 0.411642 0.387903
B 0.260599 0.297163 0.259716 0.279114 0.239077 0.271071 0.277191 0.256355 0.269571 0.276397 ... 0.353579 0.273430 0.204549 0.261727 0.190374 0.282572 0.280896 0.287629 0.369873 0.247092
FCGR3A+ Monocytes 0.219350 0.240290 0.274068 0.212988 0.224245 0.284827 0.262481 0.194940 0.209400 0.270493 ... 0.226854 0.191498 0.204842 0.221876 0.173565 0.210461 0.259366 0.186186 0.231726 0.197176
NK 0.230367 0.222013 0.207571 0.254317 0.221009 0.226006 0.222470 0.213226 0.262290 0.219938 ... 0.245548 0.205701 0.202699 0.208693 0.242466 0.235943 0.234619 0.202609 0.208136 0.196424
CD8 T 0.249879 0.268242 0.238305 0.289165 0.249358 0.255727 0.263332 0.235437 0.237345 0.246176 ... 0.266994 0.206734 0.218780 0.228390 0.331778 0.276096 0.260976 0.241157 0.306110 0.219693
CD14+ Monocytes 0.289323 0.317279 0.455322 0.295596 0.245026 0.448463 0.406507 0.270345 0.270238 0.452946 ... 0.247070 0.224899 0.261631 0.274461 0.187960 0.260316 0.295780 0.231593 0.303824 0.277495
Dendritic 0.174583 0.192224 0.201737 0.182372 0.177555 0.201129 0.197314 0.172322 0.187669 0.201658 ... 0.183138 0.173830 0.171719 0.191358 0.167445 0.183616 0.186164 0.190682 0.198571 0.179925
Megakaryocytes 0.180727 0.173432 0.183540 0.177623 0.169538 0.176384 0.179265 0.193616 0.180323 0.176580 ... 0.169004 0.167445 0.176624 0.171554 0.172148 0.170093 0.176444 0.167445 0.170680 0.169616

8 rows × 272 columns

import matplotlib.pyplot as plt
from adjustText import adjust_text

celltype = ["B","NK","CD8 T","CD4 T",
            "CD14+ Monocytes","Dendritic","Megakaryocytes","FCGR3A+ Monocytes"]

fig = plt.figure(figsize=(14, 10))  # 图的高低
for c, num in zip(celltype, range(1, len(celltype) + 1)):
    x = rss_cellType.T[c]
    ax = fig.add_subplot(2, 4, num)  # 图的排列
    # 动态设置 top_n,防止超过实际数量
    plot_rss(rss_cellType, c, top_n=min(5, len(rss_cellType.T[c])), max_n=None, ax=ax)
    ax.set_ylim(x.min() - (x.max() - x.min()) * 0.05, x.max() + (x.max() - x.min()) * 0.05)
    
    # 调整字体大小
    for t in ax.texts:
        t.set_fontsize(12)
    ax.set_ylabel('')
    ax.set_xlabel('')

    # 筛选出包含正号 '(+)' 的文本,避免调整非标注文本
    texts_to_adjust = [t for t in ax.texts if '(+)' in t.get_text()]
    if texts_to_adjust:  # 确保有文本才调整
        adjust_text(texts_to_adjust, autoalign='xy', ha='right', va='bottom',
                    arrowprops=dict(arrowstyle='-', color='black'), precision=0.001)

fig.text(0.5, 0.0, 'Regulon', ha='center', va='center', size='x-large')
fig.text(0.00, 0.5, 'Regulon specificity score (RSS)', ha='center', va='center', rotation='vertical', size='x-large')
plt.tight_layout()
plt.rcParams.update({
    'figure.autolayout': True,
    'figure.titlesize': 'large',
    'axes.labelsize': 'medium',
    'axes.titlesize': 'large',
    'xtick.labelsize': 'medium',
    'ytick.labelsize': 'medium'
})
plt.savefig("rank_RSS_top5.pdf", dpi=600, bbox_inches="tight")
plt.show()

python可视化_6_0.png

## tf热图
#对于RSS矩阵,我们也可以像R中的可视化一样,我们做气泡图或者热图
#计算下Z-score
rss_cellType_Z = pd.DataFrame( index=rss_cellType.index )
for col in list(rss_cellType.columns):
    rss_cellType_Z[col] = ( rss_cellType[col] - rss_cellType[col].mean()) / rss_cellType[col].std(ddof=0)
    rss_cellType_Z.sort_index(inplace=True)

rss_cellType_Z


/home/zhaozm/anaconda3/envs/pyscenic/lib/python3.7/site-packages/ipykernel_launcher.py:6: PerformanceWarning: DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead.  To get a de-fragmented frame, use `newframe = frame.copy()`
AHR(+) APEX1(+) ARID3A(+) ARNTL(+) ATF1(+) ATF3(+) ATF4(+) ATF6(+) ATF6B(+) BACH1(+) ... ZNF583(+) ZNF585A(+) ZNF689(+) ZNF714(+) ZNF76(+) ZNF785(+) ZNF814(+) ZNF880(+) ZNF92(+) ZXDB(+)
B 0.230048 0.227674 -0.152153 0.033440 0.189383 -0.139034 -0.059820 0.473134 0.635161 -0.034311 ... 1.683834 1.972466 -0.310758 0.489999 -0.426368 0.362381 0.241358 1.196053 1.169846 0.189518
CD14+ Monocytes 0.715243 0.440301 2.105071 0.197723 0.325112 1.837960 1.357026 0.762349 0.650349 1.938962 ... -0.092537 0.469083 1.198087 0.744527 -0.472468 0.064655 0.453361 0.064656 0.354817 0.644069
CD4 T 2.094955 2.311712 1.039159 2.383599 2.044672 1.350924 1.862568 2.026639 1.711183 1.252724 ... 1.269887 0.766988 1.937369 2.047613 0.442470 2.264576 2.185080 1.846057 1.685269 2.294761
CD8 T 0.048988 -0.078006 -0.399233 0.133622 0.423954 -0.310035 -0.211668 0.040717 -0.099315 -0.372090 ... 0.239752 -0.093630 0.065414 -0.176372 2.273967 0.275742 -0.042372 0.257766 0.383023 -0.220109
Dendritic -1.222861 -0.881488 -0.821212 -0.930829 -1.214203 -0.918519 -0.934991 -1.264052 -1.231476 -0.869669 ... -1.158793 -1.112942 -1.178548 -0.916601 -0.864224 -0.961383 -1.107943 -0.761347 -0.943982 -0.814669
FCGR3A+ Monocytes -0.466699 -0.373446 0.013456 -0.625669 -0.149002 0.014275 -0.220995 -0.796479 -0.736208 -0.100307 ... -0.429706 -0.565603 -0.303010 -0.306586 -0.747367 -0.602279 -0.065309 -0.852139 -0.534859 -0.556764
Megakaryocytes -1.119079 -1.080113 -1.031198 -0.978165 -1.397095 -1.194294 -1.132750 -0.823853 -1.398899 -1.149957 ... -1.394522 -1.310713 -1.048903 -1.312469 -0.774428 -1.142295 -1.246392 -1.230512 -1.288157 -0.968806
NK -0.280595 -0.566634 -0.753889 -0.213721 -0.222820 -0.641276 -0.659369 -0.418454 0.469205 -0.665352 ... -0.117915 -0.125650 -0.359651 -0.570111 0.568417 -0.261397 -0.417783 -0.520535 -0.825955 -0.568001

8 rows × 272 columns

print(rss_cellType_Z.columns)
print(rss_cellType_Z.shape)  # (行数, 列数)
print(len(colors))  # 应该等于 8
Index(['AHR(+)', 'APEX1(+)', 'ARID3A(+)', 'ARNTL(+)', 'ATF1(+)', 'ATF3(+)',
       'ATF4(+)', 'ATF6(+)', 'ATF6B(+)', 'BACH1(+)',
       ...
       'ZNF583(+)', 'ZNF585A(+)', 'ZNF689(+)', 'ZNF714(+)', 'ZNF76(+)',
       'ZNF785(+)', 'ZNF814(+)', 'ZNF880(+)', 'ZNF92(+)', 'ZXDB(+)'],
      dtype='object', length=272)
(8, 272)
7
colors = ["#E69F00","#56B4E9","#009E73","#F0E442","#0072B2","#D55E00","#CC79A7",'#66CC66']#行注释颜色
sns.set(font_scale=1.2)
TF_plot = ['AHR(+)', 'APEX1(+)', 'ARID3A(+)', 'ARNTL(+)', 'ATF1(+)', 'ATF3(+)',
       'ATF4(+)', 'ATF6(+)', 'ATF6B(+)', 'BACH1(+)','ZNF583(+)', 'ZNF585A(+)', 'ZNF689(+)', 'ZNF714(+)', 'ZNF76(+)',
       'ZNF785(+)', 'ZNF814(+)', 'ZNF880(+)', 'ZNF92(+)', 'ZXDB(+)']#选择需要呈现的TF
g = sns.clustermap(rss_cellType_Z[TF_plot], 
                   annot=False,  square=False,  
                   linecolor='black',
                   yticklabels=False, xticklabels=True, 
                   vmin=-2, vmax=2, #颜色范围
                   row_colors=colors,cmap="RdBu_r", figsize=(10,4) )#颜色,图尺寸
g.cax.set_visible(True)#显示legend
g.ax_heatmap.set_ylabel('')
g.ax_heatmap.set_xlabel('')
Text(0.5, -239.86666666666676, '')

python可视化_9_1.png

#做所有细胞的热图
#挑选每个细胞类型中top5的TF,当然了,我们也可以只选择自己感兴趣的TF

topreg = []
for i,c in enumerate(celltype):
    topreg.extend(
        list(rss_cellType.T[c].sort_values(ascending=False)[:5].index)
    )
topreg = list(set(topreg))
auc_mtx_Z = pd.DataFrame( index=auc_mtx.index )
for col in list(auc_mtx.columns):
    auc_mtx_Z[ col ] = ( auc_mtx[col] - auc_mtx[col].mean()) / auc_mtx[col].std(ddof=0)
/home/zhaozm/anaconda3/envs/pyscenic/lib/python3.7/site-packages/ipykernel_launcher.py:3: PerformanceWarning: DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead.  To get a de-fragmented frame, use `newframe = frame.copy()`
  This is separate from the ipykernel package so we can avoid doing imports until
colors = ["#E69F00","#56B4E9","#009E73","#F0E442","#0072B2","#D55E00","#CC79A7",'#66CC66']
colorsd = dict( zip( celltype, colors ))
colormap = [ colorsd[x] for x in pbmc.obs.celltype]
sns.set(font_scale=1.2)
g = sns.clustermap(auc_mtx_Z[topreg], annot=False,  square=False,  linecolor='black',
    yticklabels=False, xticklabels=True, vmin=-2, vmax=6, row_colors=colormap,
    cmap="YlGnBu", figsize=(21,16) )
g.cax.set_visible(True)
g.ax_heatmap.set_ylabel('')
g.ax_heatmap.set_xlabel('')
plt.savefig("TF-heatmap-top5.pdf", dpi=600, bbox_inches = "tight")
/home/zhaozm/anaconda3/envs/pyscenic/lib/python3.7/site-packages/seaborn/matrix.py:560: UserWarning: Clustering large matrix with scipy. Installing `fastcluster` may give better performance.
  warnings.warn(msg)

python可视化_13_1.png

#  可视化3:TF活性聚类图
#将auc添加到单细胞
add_scenic_metadata(pbmc, auc_mtx)
AnnData object with n_obs × n_vars = 2638 × 1838
    obs: 'n_genes', 'n_genes_by_counts', 'total_counts', 'total_counts_mt', 'pct_counts_mt', 'leiden', 'celltype', 'Regulon(AHR(+))', 'Regulon(APEX1(+))', 'Regulon(ARID3A(+))', 'Regulon(ARNTL(+))', 'Regulon(ATF1(+))', 'Regulon(ATF3(+))', 'Regulon(ATF4(+))', 'Regulon(ATF6(+))', 'Regulon(ATF6B(+))', 'Regulon(BACH1(+))', 'Regulon(BACH2(+))', 'Regulon(BATF(+))', 'Regulon(BATF3(+))', 'Regulon(BCL11A(+))', 'Regulon(BCL11B(+))', 'Regulon(BCL3(+))', 'Regulon(BCL6(+))', 'Regulon(BCLAF1(+))', 'Regulon(BDP1(+))', 'Regulon(BHLHE40(+))', 'Regulon(BRCA1(+))', 'Regulon(BRF1(+))', 'Regulon(BRF2(+))', 'Regulon(CEBPA(+))', 'Regulon(CEBPB(+))', 'Regulon(CEBPD(+))', 'Regulon(CEBPE(+))', 'Regulon(CEBPG(+))', 'Regulon(CENPB(+))', 'Regulon(CIC(+))', 'Regulon(CLOCK(+))', 'Regulon(CREB3(+))', 'Regulon(CREB3L2(+))', 'Regulon(CREB3L4(+))', 'Regulon(CREB5(+))', 'Regulon(CREBZF(+))', 'Regulon(CUX1(+))', 'Regulon(E2F3(+))', 'Regulon(E2F6(+))', 'Regulon(E4F1(+))', 'Regulon(EBF1(+))', 'Regulon(EGR2(+))', 'Regulon(ELF1(+))', 'Regulon(ELF2(+))', 'Regulon(ELF4(+))', 'Regulon(ELK1(+))', 'Regulon(ELK3(+))', 'Regulon(ELK4(+))', 'Regulon(EOMES(+))', 'Regulon(EP300(+))', 'Regulon(ERF(+))', 'Regulon(ESRRA(+))', 'Regulon(ETS1(+))', 'Regulon(ETS2(+))', 'Regulon(ETV2(+))', 'Regulon(ETV3(+))', 'Regulon(ETV5(+))', 'Regulon(ETV6(+))', 'Regulon(ETV7(+))', 'Regulon(EZH2(+))', 'Regulon(FLI1(+))', 'Regulon(FOS(+))', 'Regulon(FOSB(+))', 'Regulon(FOSL1(+))', 'Regulon(FOSL2(+))', 'Regulon(FOXD2(+))', 'Regulon(FOXJ3(+))', 'Regulon(FOXM1(+))', 'Regulon(FOXN2(+))', 'Regulon(FOXO3(+))', 'Regulon(FOXO4(+))', 'Regulon(FOXP1(+))', 'Regulon(FOXP4(+))', 'Regulon(GABPA(+))', 'Regulon(GABPB1(+))', 'Regulon(GATA2(+))', 'Regulon(GATA3(+))', 'Regulon(GMEB2(+))', 'Regulon(GTF2IRD1(+))', 'Regulon(GTF3C2(+))', 'Regulon(HBP1(+))', 'Regulon(HCFC1(+))', 'Regulon(HINFP(+))', 'Regulon(HMGB1(+))', 'Regulon(HMGN3(+))', 'Regulon(HOXA10(+))', 'Regulon(HOXA9(+))', 'Regulon(HSF2(+))', 'Regulon(HSF4(+))', 'Regulon(IRF1(+))', 'Regulon(IRF3(+))', 'Regulon(IRF4(+))', 'Regulon(IRF5(+))', 'Regulon(IRF7(+))', 'Regulon(IRF8(+))', 'Regulon(IRF9(+))', 'Regulon(JDP2(+))', 'Regulon(JUN(+))', 'Regulon(JUNB(+))', 'Regulon(JUND(+))', 'Regulon(KDM4B(+))', 'Regulon(KDM5B(+))', 'Regulon(KLF10(+))', 'Regulon(KLF2(+))', 'Regulon(KLF3(+))', 'Regulon(KLF4(+))', 'Regulon(KLF6(+))', 'Regulon(LEF1(+))', 'Regulon(MAF(+))', 'Regulon(MAFB(+))', 'Regulon(MAFF(+))', 'Regulon(MAFG(+))', 'Regulon(MAX(+))', 'Regulon(MECP2(+))', 'Regulon(MEF2A(+))', 'Regulon(MEF2D(+))', 'Regulon(MEOX1(+))', 'Regulon(MGA(+))', 'Regulon(MITF(+))', 'Regulon(MLX(+))', 'Regulon(MSC(+))', 'Regulon(MXD3(+))', 'Regulon(MXI1(+))', 'Regulon(MYB(+))', 'Regulon(MYBL1(+))', 'Regulon(MYBL2(+))', 'Regulon(MYC(+))', 'Regulon(MYEF2(+))', 'Regulon(MZF1(+))', 'Regulon(NEUROD2(+))', 'Regulon(NFE2(+))', 'Regulon(NFE2L1(+))', 'Regulon(NFE2L3(+))', 'Regulon(NFIC(+))', 'Regulon(NFIL3(+))', 'Regulon(NFKB2(+))', 'Regulon(NFYA(+))', 'Regulon(NFYB(+))', 'Regulon(NPAS2(+))', 'Regulon(NPDC1(+))', 'Regulon(NR1D1(+))', 'Regulon(NR1H2(+))', 'Regulon(NR1H3(+))', 'Regulon(NR2C1(+))', 'Regulon(NR2C2(+))', 'Regulon(NR2F6(+))', 'Regulon(NR3C1(+))', 'Regulon(NUAK1(+))', 'Regulon(OLIG1(+))', 'Regulon(PAX5(+))', 'Regulon(PAX8(+))', 'Regulon(PBX3(+))', 'Regulon(PHF8(+))', 'Regulon(PKNOX1(+))', 'Regulon(PML(+))', 'Regulon(POLE3(+))', 'Regulon(POLR2A(+))', 'Regulon(POLR3A(+))', 'Regulon(POU2AF1(+))', 'Regulon(POU2F1(+))', 'Regulon(POU6F1(+))', 'Regulon(PPARA(+))', 'Regulon(PPARD(+))', 'Regulon(PSMD12(+))', 'Regulon(RAD21(+))', 'Regulon(RARA(+))', 'Regulon(RARG(+))', 'Regulon(RBBP5(+))', 'Regulon(RCOR1(+))', 'Regulon(RELA(+))', 'Regulon(RELB(+))', 'Regulon(REST(+))', 'Regulon(RFX1(+))', 'Regulon(RFX2(+))', 'Regulon(RFX3(+))', 'Regulon(RFX5(+))', 'Regulon(RFX7(+))', 'Regulon(RFXAP(+))', 'Regulon(RORC(+))', 'Regulon(RREB1(+))', 'Regulon(RUNX1(+))', 'Regulon(RUNX2(+))', 'Regulon(RUNX3(+))', 'Regulon(RXRA(+))', 'Regulon(RXRB(+))', 'Regulon(SAP30(+))', 'Regulon(SETDB1(+))', 'Regulon(SMAD1(+))', 'Regulon(SMARCA4(+))', 'Regulon(SMARCB1(+))', 'Regulon(SNAI1(+))', 'Regulon(SOX12(+))', 'Regulon(SOX13(+))', 'Regulon(SOX7(+))', 'Regulon(SP1(+))', 'Regulon(SP2(+))', 'Regulon(SP4(+))', 'Regulon(SPI1(+))', 'Regulon(SPIB(+))', 'Regulon(SREBF1(+))', 'Regulon(SREBF2(+))', 'Regulon(SRF(+))', 'Regulon(STAT1(+))', 'Regulon(STAT2(+))', 'Regulon(STAT3(+))', 'Regulon(STAT5A(+))', 'Regulon(TAF1(+))', 'Regulon(TAF7(+))', 'Regulon(TAL1(+))', 'Regulon(TBP(+))', 'Regulon(TBX19(+))', 'Regulon(TBX21(+))', 'Regulon(TCF12(+))', 'Regulon(TCF3(+))', 'Regulon(TCF4(+))', 'Regulon(TCF7L2(+))', 'Regulon(TERF2(+))', 'Regulon(TFAP4(+))', 'Regulon(TFEB(+))', 'Regulon(TGIF2(+))', 'Regulon(THAP11(+))', 'Regulon(TP53(+))', 'Regulon(TRIM28(+))', 'Regulon(USF1(+))', 'Regulon(USF2(+))', 'Regulon(VDR(+))', 'Regulon(XBP1(+))', 'Regulon(XRCC4(+))', 'Regulon(YY2(+))', 'Regulon(ZBTB14(+))', 'Regulon(ZBTB3(+))', 'Regulon(ZBTB33(+))', 'Regulon(ZBTB6(+))', 'Regulon(ZBTB7A(+))', 'Regulon(ZEB1(+))', 'Regulon(ZFP1(+))', 'Regulon(ZFX(+))', 'Regulon(ZFY(+))', 'Regulon(ZMIZ1(+))', 'Regulon(ZNF121(+))', 'Regulon(ZNF133(+))', 'Regulon(ZNF143(+))', 'Regulon(ZNF169(+))', 'Regulon(ZNF200(+))', 'Regulon(ZNF224(+))', 'Regulon(ZNF234(+))', 'Regulon(ZNF248(+))', 'Regulon(ZNF274(+))', 'Regulon(ZNF282(+))', 'Regulon(ZNF286A(+))', 'Regulon(ZNF317(+))', 'Regulon(ZNF329(+))', 'Regulon(ZNF337(+))', 'Regulon(ZNF383(+))', 'Regulon(ZNF43(+))', 'Regulon(ZNF442(+))', 'Regulon(ZNF496(+))', 'Regulon(ZNF503(+))', 'Regulon(ZNF549(+))', 'Regulon(ZNF567(+))', 'Regulon(ZNF568(+))', 'Regulon(ZNF569(+))', 'Regulon(ZNF583(+))', 'Regulon(ZNF585A(+))', 'Regulon(ZNF689(+))', 'Regulon(ZNF714(+))', 'Regulon(ZNF76(+))', 'Regulon(ZNF785(+))', 'Regulon(ZNF814(+))', 'Regulon(ZNF880(+))', 'Regulon(ZNF92(+))', 'Regulon(ZXDB(+))'
    var: 'gene_ids', 'n_cells', 'mt', 'n_cells_by_counts', 'mean_counts', 'pct_dropout_by_counts', 'total_counts', 'ribo', 'hb', 'highly_variable', 'means', 'dispersions', 'dispersions_norm', 'mean', 'std'
    uns: 'celltype_colors', 'hvg', 'leiden', 'leiden_colors', 'leiden_sizes', 'log1p', 'neighbors', 'paga', 'pca', 'rank_genes_groups', 'umap', 'aucell'
    obsm: 'X_pca', 'X_umap', 'X_aucell'
    varm: 'PCs'
    obsp: 'connectivities', 'distances'
#选择需要呈现的转录因子进行展示
sc.set_figure_params(frameon=False, dpi=150, fontsize=8)
sc.pl.umap(pbmc, color=['Regulon(NPDC1(+))',
                            'Regulon(LEF1(+))',
                            'Regulon(GATA2(+))',
                            'Regulon(SOX12(+))','celltype'], ncols=4, cmap = "RdPu")
/home/zhaozm/anaconda3/envs/pyscenic/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.
  fig.canvas.print_figure(bytes_io, **kw)

python可视化_15_1.png

from matplotlib import cm, colors
from typing import Mapping, Sequence
from matplotlib.pyplot import rc_context

sc.set_figure_params(scanpy=True, fontsize=15)

with rc_context({'figure.figsize': (12.5, 12.5)}):
    sc.pl.umap(pbmc, color='celltype', 
               add_outline=True, outline_width= [0.15,0.01], 
               legend_loc='on data',legend_fontsize=8, legend_fontoutline=1,
               frameon=False,title='UMAP',size = 150)

python可视化_16_0.png

with rc_context({'figure.figsize': (7.5, 7.5)}):
    sc.pl.umap(pbmc, color= ['Regulon(LEF1(+))', 'celltype'], 
               add_outline=True, outline_width= [0.01,0.01], 
               frameon=False,legend_fontweight='light',
               cmap = "RdPu", size = 70, vmax= 0.3)
/home/zhaozm/anaconda3/envs/pyscenic/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.
  fig.canvas.print_figure(bytes_io, **kw)

python可视化_17_1.png