通过上一篇的过程,我们得到了该数据集的差异分析的两个关键参数,1.差异倍数(foldchange)以及2.(差异的P值)。在这一篇中,我们目的是得到满足差异倍数和差异P值得基因,以及同时进行可视化(包括差异分析常见的火山图和热图)。
绘制火山图
(1)第一步制作差异分析结果数据框
myarray = np.asarray(pvalue) result = pd.DataFrame({'pvalue':myarray,'FoldChange':fold}) result['log(pvalue)'] = -np.log10(result['pvalue'])
(2)第二步制作火山图的准备工作
在这里选定的差异基因标准是I差异倍数的绝对值大于1,II差异分析的P值小于0.05
# In[*]result['sig'] = 'normal'result['size'] =np.abs(result['FoldChange'])/10 result.loc[(result.FoldChange> 1 )&(result.pvalue < 0.05),'sig'] = 'up'result.loc[(result.FoldChange< -1 )&(result.pvalue < 0.05),'sig'] = 'down'
(3)第三步绘制火山图
# In[*] ax = sns.scatterplot(x="FoldChange", 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')
筛选差异基因
# In[*]fold_cutoff = 1pvalue_cutoff = 0.05filtered_ids = []for i in range(0, number_of_genes): if (abs(fold[i]) >= fold_cutoff) and (pvalue[i] <= pvalue_cutoff): filtered_ids.append(i) filtered = data2.ix[filtered_ids,:] print("Number of DE genes: ") print(len(filtered.index)) filtered.head() Out[29]: WT.GSM130365 ... KO.GSM130370100012_at 8.997462 ... 10.026524100035_at 3.666768 ... 4.807360100064_f_at 12.212800 ... 10.758890100065_r_at 9.326879 ... 7.992656100073_at 9.340741 ... 8.080552
绘制热图
热图(heatmap)是生物学文章里(尤其是RNA-seq相关论文)经常出现的图片。热图的用途一般有两个。以RNA-seq为例,热图可以:1)直观呈现多样本多个基因的全局表达量变化;2)呈现多样本或多基因表达量的聚类关系。热图一般使用颜色(例如红绿的深浅)来展示多个样本多个基因的表达量高低,既直观又美观。同时可以对样本聚类或者对基因聚类。
sns.clustermap(filtered, cmap='RdYlGn_r', standard_scale = 0)
如图所示:
(1)每一行为一个基因,每一列为一个sample。
(2)绿色代表相对低表达,红色代表相对高表达。
(3)相对接近的样本或者基因会聚类在一起,比如探针名为101695_at的基因在GSM130370相对高表达,而在GSM130366低表达。
作者:夜神moon
链接:https://www.jianshu.com/p/3d810f41e76d
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦