5.1 导读

后续高级分析不乏有之前画图方式,所有可视化画图均和数据以及参数有关系。高级分析分为以下几种:

  • 细胞互作分析
  • 差异基因分析
  • GO/KEGG 注释
  • 细胞轨迹(伪时间序列)

    5.2 细胞互作分析

    细胞互作分析 常用的cellphone DB 但是这个库没有API 可以直接调用,不过在GitHub上有人引用了cellphone DB 数据库做成了API可以在jupyter里面直接写代码跑数据。

  1. import squidpy as sq # 该包是专门做空间转录组数据的
  2. res = sq.gr.ligrec(
  3. adata_all,
  4. n_perms=1000,
  5. cluster_key="cell_type",
  6. copy=True,
  7. use_raw=False,
  8. transmitter_params={"categories": "ligand"},
  9. receiver_params={"categories": "receptor"},
  10. interactions_params={'resources': 'CellPhoneDB'}
  11. )

引用受体和配体库,CellPhoneDBcluster_key参数为选择互作的类型,如果有特殊需求可以进行筛选数据进行分析。比如B细胞和别的细胞互作,可进行筛选数据进行分析。

image.png

  1. sq.pl.ligrec(res, source_groups=['B_cells',"T_cells"],target_groups=['endothelial_cells',"epithelial_cells","fibroblasts"] ,alpha=0.0005,swap_axes=True,figsize=(30,5))

image.png

5.3 差异基因分析

差异基因分析 可以选择数据进行分析,本案例选择T 样本中B细胞和 N样本中的B细胞进行差异分析。

  • 筛选数据

    1. adata_B = adata_all[adata_all.obs["cell_type"].isin(["B_cells"])]
    2. ## adata_B 仅有B细胞在里面
    3. sc.tl.rank_genes_groups(adata_B, groupby='sample', reference="N",
    4. method='wilcoxon', n_genes =None, pts = True,key_added="rank_gene_B" )
    5. ## 用N做对照进行样本之间分析差异基因 数据存入`rank_gene_B`中

    image.png

  • 提取差异基因进行查看

    1. dedf = sc.get.rank_genes_groups_df(adata_B,group=None, pval_cutoff =0.05, log2fc_min=None)
    2. dedf

    image.png

  • 火山图可视化 ```python dedf[‘log(pvalue)’] = -np.log10(dedf[‘pvals’])

dedf[‘sig’] = ‘normal’

dedf[‘size’] =np.abs(dedf[‘logfoldchanges’])/10

dedf.loc[(dedf.logfoldchanges> 1 )&(dedf.pvals < 0.05),’sig’] = ‘up’ dedf.loc[(dedf.logfoldchanges< -1 )&(dedf.pvals < 0.05),’sig’] = ‘down’ ax = sns.scatterplot(x=”logfoldchanges”, y=”log(pvalue)”, hue=’sig’, hue_order = (‘down’,’normal’,’up’), palette=(“#377EB8”,”grey”,”#E41A1C”), data=result) ax.set_ylabel(‘-log(pvalue)’,fontweight=’bold’) ax.set_xlabel(‘FoldChange’,fontweight=’bold’)

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2605407/1638262033368-2f8b75d5-2222-4ea9-8e71-0913c8c670f9.png#align=left&display=inline&height=450&id=ufbd1c2b8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=600&originWidth=636&size=89985&status=done&style=none&width=477)
  2. <a name="tlV4n"></a>
  3. #### 5.4 GO/KEGG 注释
  4. > 利用上述的差异基因进行GO/KEGG 注释
  5. ```python
  6. import gseapy as gp
  7. names = gp.get_library_name() # default: Human
  8. names[:10]
  1. gene_list = list(dedf['names']) # 获取上述差异基因列表
  2. enr = gp.enrichr(gene_list=gene_list,
  3. gene_sets=['GO_Molecular_Function_2021',"GO_Cellular_Component_2021","GO_Biological_Process_2021"],
  4. organism='Human',
  5. description='test_name',
  6. outdir='test/enrichr_kegg',
  7. no_plot=True,
  8. cutoff=0.05 # test dataset, use lower value from range(0,1)
  9. )
  10. enr.results.head(10)

image.png

  • 可视化GO
    1. ax = barplot(enr.res2d,cutoff=0.05,title='GO',top_term=20,figsize=(16,16))
    image.png
    1. ax = dotplot(enr.res2d,cutoff=0.05,title='GO',top_term=20,figsize=(6,6))
    image.png

    KEGG 同样的流程,如果觉得图不好看 可以用结果数据自行画图。

细胞轨迹分析

细胞轨迹 两种方法。一种是scanpy 自带分析。一种**stream**

  • fa计算轨迹图 ```python sc.tl.draw_graph(adata_all) sc.pl.draw_graph(adata_all, color=’cell_type’, legend_loc=’on data’)
  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2605407/1638264061809-67c80875-2508-4b62-818e-907524f0d41a.png#align=left&display=inline&height=592&id=ue990ce37&margin=%5Bobject%20Object%5D&name=image.png&originHeight=592&originWidth=569&size=70085&status=done&style=none&width=569)
  2. - paga 计算轨迹图
  3. ```python
  4. sc.tl.paga(adata_all, groups='cell_type')
  5. sc.settings.set_figure_params(dpi=150, facecolor='white',
  6. dpi_save =100)
  7. sc.pl.paga(adata_all, color=['cell_type'],fontsize=5)

image.png

  • **stream** 运用

    https://github.com/pinellolab/STREAM 对系统gcc有要求 stream 有自己导入数据格式,目前还没找到和scanpy互通的API以后专门为STREAM写文档。 有兴趣的可以自己研究一下。

image.png