前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CellphoneDB及可视化

CellphoneDB及可视化

作者头像
生信技能树jimmy
发布2023-02-16 21:14:17
1.3K0
发布2023-02-16 21:14:17
举报
文章被收录于专栏:单细胞天地单细胞天地

CellphoneDB及可视化

CellphoneDB介绍以及结果怎么看可以参考[https://zhuanlan.zhihu.com/p/446055519],这里就不再赘述了,直接开始跑代码。

准备环境

  • 需要为cellphonedb单独准备一个环境

micromamba和conda用法一样,只是速度更快,可以把micromamba换成conda,另外conda一次装十几个包是会报错的。

代码语言:javascript
复制
micromamba create -n cpdb; micromamba activate cpdb
micromamba install -y python=3.7
pip install -U cellphonedb
cellphonedb database download ## V4

  • 单细胞分析环境
代码语言:javascript
复制
micromamba create -n SC; micromamba activate SC
micromamba install -y -c conda-forge ipywidgets pandas numpy seaborn pytables matplotlib ipykernel scanpy python-igraph leidenalg scvi-tools scikit-misc python-annoy pyarrow
micromamba install -y -c bioconda harmonypy
pip install ktplotspy ## 0.1.6
pip install datatable ## 1.0.0

准备输入文件

代码语言:javascript
复制
import numpy as np
import pandas as pd
import scanpy as sc
import datatable as dt

  • Count file

标准化的count数据,行是人基因名,列是细胞名

代码语言:javascript
复制
## adata是之前处理好的数据
X=pd.DataFrame(adata.X.toarray().T,columns=adata.obs_names)
Symbol=dt.Frame({'Symbol':adata.var_names.values})
X = dt.cbind([Symbol,dt.Frame(X)])
X.to_csv('X.csv') ## 使用datatable加速导出

注:其实cellphonedb 3.1.0支持anndata格式的count文件,但是cellphonedb依赖的anndata是0.7版本的,而scanpy导出的anndata是0.8版的,因此会报错...

  • Metadata file

第一列:Cell,细胞名

第二列:cell_type,细胞类型

代码语言:javascript
复制
obs = pd.DataFrame({'Cell':adata.obs.index,'cell_type':adata.obs.CellType})
obs.to_csv('obs.csv',index=False)

运行cellphonedb

代码语言:javascript
复制
X=X.csv
obs=obs.csv
od=.
n_jobs=8

cellphonedb method statistical_analysis \
  --counts-data hgnc_symbol \
  --output-path ${od} \
  --threshold 0.1 \
  --threads ${n_jobs} \
  --iterations 1000 \
  --output-format csv \
  ${obs} \
  ${X}

结果可视化

cellphonedb自带的画图太弱了,直接使用ktplotspy绘图。

ktplotspy包括三个绘图函数:

  • plot_cpdb_heatmap画热图,
  • plot_cpdb画点图,
  • plot_cpdb_chord画弦图。

三个函数的API可以参考[https://ktplotspy.readthedocs.io/en/latest/api.html]

代码语言:javascript
复制
## 导库
import pandas as pd
import scanpy as sc
import datatable as dt
import matplotlib.pyplot as plt
import ktplotspy as kpy

准备输入文件

需要用于cellphonedb的adata文件,以及cellphonedb的输出文件。

代码语言:javascript
复制
## 用于cellphonedb的adata文件
adata = sc.read_h5ad('adata.h5')

## 读取cellphonedb的输出文件
means = pd.read_csv('means.csv')
pvals = pd.read_csv('pvalues.csv')
decon = pd.read_csv('deconvoluted.csv')

热图

代码语言:javascript
复制
kpy.plot_cpdb_heatmap(
        adata=adata,
        pvals=pvals,
        celltype_key="CellType", ## adata.obs中细胞类型那一列列名
        figsize = (5,5),
        title = "Sum of significant interactions"
        ## symmetrical = True ## 显得对称
    );

点图

代码语言:javascript
复制
kpy.plot_cpdb(
        adata=adata,
        cell_type1="B",
        cell_type2=".", ## .表示全部细胞类型
        means=means,
        pvals=pvals,
        celltype_key="CellType",
        genes=["PTPRC", "CD40", "CLEC2D"],
        figsize = (10,5),
        ## return_table = True, ## 返回dataframe,不返回图片
        ## default_style = False, ## squidpy风格
        highlight_size = 2, ## 显著点 外环的红色的大小
        title = "interacting interactions!"
    )

squidpy风格

  • 基因家族

内置的基因家族包括,chemokines, th1, th2, th17, treg, costimulatory, coinhibitory

代码语言:javascript
复制
kpy.plot_cpdb(
        adata=adata,
        cell_type1="B",
        cell_type2="T|Mac",
        means=means,
        pvals=pvals,
        celltype_key="CellType",
        gene_family = "chemokines",
        ## custom_gene_family=dict(familyA=gene_list),自定义基因家族 
        figsize = (5,4)
    )

弦图

可以自定义face和edge的颜色,详细参考:

  • https://ktplotspy.readthedocs.io/en/latest/notebooks/tutorial.html
代码语言:javascript
复制
kpy.plot_cpdb_chord(
        adata=adata,
        cell_type1="B",
        cell_type2=".",
        means=means,
        pvals=pvals,
        deconvoluted=decon,
        celltype_key="CellType",
        genes=["PTPRC", "CD40", "CLEC2D"],
        edge_cmap=plt.cm.coolwarm, ## 弦的颜色
        figsize=(6,6)
    )
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-27,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备环境
  • 准备输入文件
  • 运行cellphonedb
  • 结果可视化
    • 准备输入文件
      • 热图
        • 点图
          • 弦图
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com