纳速健身

 找回密码
 注册

扫一扫,访问微社区

查看: 10|回复: 0

[Python] [python生物信息学]Python从零开始第五章生物信息学之二、热图及火山图

[复制链接]
发表于 2021-1-10 11:41:28 | 显示全部楼层 |阅读模式
[python生物信息学]Python从零开始第五章生物信息学之二、热图及火山图

通过上一篇的过程,我们得到了该数据集的差异分析的两个关键参数,
1.差异倍数(foldchange)
2.(差异的P值)
在这一篇中,我们目的是得到满足差异倍数和差异P值得基因,以及同时进行可视化(包括差异分析常见的火山图和热图)。

绘制火山图
(1)第一步制作差异分析结果数据框
  1. myarray = np.asarray(pvalue)

  2. result = pd.DataFrame({'pvalue':myarray,'FoldChange':fold})



  3. result['log(pvalue)'] = -np.log10(result['pvalue'])
复制代码

(2)第二步制作火山图的准备工作
在这里选定的差异基因标准是I差异倍数的绝对值大于1,II差异分析的P值小于0.05

  1. # In[*]
  2. result['sig'] = 'normal'

  3. result['size']  =np.abs(result['FoldChange'])/10

  4. result.loc[(result.FoldChange> 1 )&(result.pvalue < 0.05),'sig'] = 'up'
  5. result.loc[(result.FoldChange< -1 )&(result.pvalue < 0.05),'sig'] = 'down'
复制代码

(3)第三步绘制火山图
  1. # In[*]
  2. ax = sns.scatterplot(x="FoldChange", y="log(pvalue)",
  3.                       hue='sig',
  4.                       hue_order = ('down','normal','up'),
  5.                       palette=("#377EB8","grey","#E41A1C"),
  6.                       data=result)
  7. ax.set_ylabel('-log(pvalue)',fontweight='bold')
  8. ax.set_xlabel('FoldChange',fontweight='bold')
复制代码


筛选差异基因
  1. # In[*]
  2. fold_cutoff = 1
  3. pvalue_cutoff = 0.05

  4. filtered_ids = []
  5. for i in range(0, number_of_genes):
  6.     if (abs(fold[i]) >= fold_cutoff) and (pvalue[i] <= pvalue_cutoff):
  7.         filtered_ids.append(i)
  8.         
  9. filtered = data2.ix[filtered_ids,:]
  10. print("Number of DE genes: ")
  11. print(len(filtered.index))

  12. filtered.head()
复制代码

Out[29]:
             WT.GSM130365      ...       KO.GSM130370
100012_at        8.997462      ...          10.026524
100035_at        3.666768      ...           4.807360
100064_f_at     12.212800      ...          10.758890
100065_r_at      9.326879      ...           7.992656
100073_at        9.340741      ...           8.080552


21.webp.jpg

绘制热图

热图(heatmap)是生物学文章里(尤其是RNA-seq相关论文)经常出现的图片。热图的用途一般有两个。以RNA-seq为例,热图可以:1)直观呈现多样本多个基因的全局表达量变化;2)呈现多样本或多基因表达量的聚类关系。热图一般使用颜色(例如红绿的深浅)来展示多个样本多个基因的表达量高低,既直观又美观。同时可以对样本聚类或者对基因聚类。

  1. sns.clustermap(filtered, cmap='RdYlGn_r', standard_scale = 0)
复制代码


如图所示:
(1)每一行为一个基因,每一列为一个sample。
(2)绿色代表相对低表达,红色代表相对高表达。
(3)相对接近的样本或者基因会聚类在一起,比如探针名为101695_at的基因在GSM130370相对高表达,而在GSM130366低表达。

22.webp.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表