热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

语言绘制基因表达热图_绘制火山图amp;热图

在上一篇文章中,我们已经对基因进行了差异分析,接下来我们根据结果中的FDR值和FC值筛选出上调基因和下调基因(上调基因:基因转录成mRNA
在上一篇文章中,我们已经对基因进行了差异分析,接下来我们根据结果中的FDR值和FC值筛选出上调基因和下调基因(上调基因:基因转录成mRNA时受到正向调控,促进表达;下调基因:转录成mRNA时受到抑制,表达量减少),并绘制成火山图与热图。

所用工具:R语言;

所需要包:ggplot2、pheatmap。

第一部分:火山图

首先,加载所需的包并导入数据:

library(ggplot2)diff_stat

ce3b2d0e1622a11ef1581a8a50192a45.png

其次&#xff0c;筛选上调趋势数据和下调趋势数据&#xff0c;对于Fold Change值和p值阈值的选择&#xff0c;还需在实际的分析中视情况而定&#xff0c;本文以|log2FC| ≥2以及FDR p-value <0.05作为差异OTUs的判断依据&#xff1a;

diff_stat[which(diff_stat$FDR <0.05 & diff_stat$logFC >&#61; 2),&#39;diff&#39;] diff_stat[which(diff_stat$FDR <0.05 & diff_stat$logFC <&#61; -2),&#39;diff&#39;] diff_stat[!(diff_stat$diff %in% c(&#39;up&#39;, &#39;dowm&#39;)),&#39;diff&#39;]

最后&#xff0c;我们根据判断依据&#xff0c;将OTUs划分为“富集”(up)、“下降”(down)以及“无差异”(no)三种水平。然后&#xff0c;在作图时根据预先划分的OTUs差异水平对点分别着色。火山图实质上就是一种散点图&#xff0c;ggplot2作为一个非常好用的作图R包&#xff0c;我们直接用ggplot2进行绘制&#xff1a;

p1 geom_point(aes(color &#61; diff), size &#61; 0.5) &#43; scale_colour_manual(limits &#61; c(&#39;up&#39;, &#39;dowm&#39;, &#39;no&#39;), values &#61; c(&#39;blue&#39;, &#39;red&#39;, &#39;gray40&#39;), labels &#61; c(&#39;Enriched OTUs&#39;, &#39;Depleted OTUs&#39;, &#39;No diff OTUs&#39;)) &#43; labs(x &#61; &#39;log2 Fold Change&#39;, y &#61; &#39;-log10 FDR p-value&#39;)

f505abe92ac116c6c9f21d9a9aefbd91.png

我们可以对图进行美化&#xff0c;修改背景颜色、添加分界线、调整标签位置&#xff1a;

p1 theme(panel.grid.major &#61; element_line(color &#61; &#39;gray&#39;, size &#61; 0.2), panel.background &#61; element_rect(color &#61; &#39;black&#39;, fill &#61; &#39;transparent&#39;)) &#43; geom_vline(xintercept &#61; c(-2, 2), color &#61; &#39;gray&#39;, linetype &#61; 2, size &#61; 0.5) &#43; geom_hline(yintercept &#61; -log10(0.05), color &#61; &#39;gray&#39;, linetype &#61; 2, size &#61; 0.5) &#43; theme(legend.title &#61; element_blank(), legend.key &#61; element_rect(fill &#61; &#39;transparent&#39;), legend.background &#61; element_rect(fill &#61; &#39;transparent&#39;), legend.position &#61; c(0.2, 0.9))

52a91776c7381057402bd284ffd6b037.png

知识笔记&#xff1a;

差异分析是一个典型的多重假设检验过程&#xff0c;对于多重假设检验&#xff0c;单次检验中差异显著基因的假阳性率(p-value较小)可能会较大&#xff0c;而q-value和FDR值较常见的BH校正方法得到的FDR值而言&#xff0c;改进了其对假阳性估计的保守性。

即q-value相比于p-value更加严格&#xff0c;当差异基因结果较少时&#xff0c;可以退而求其次看p-value。Fold ChangeFold Change表示实验组比上对照组的差异表达倍数&#xff0c;一般表达相差2倍以上是有意义的&#xff0c;放宽要求1.5倍或者1.2倍也可以接受。

第二部分&#xff1a;热图

首先&#xff0c;加载所需的包并导入数据&#xff1a;

library(pheatmap)sign.gene

其次&#xff0c;筛选数据&#xff1a;

sign.gene.FDR sign.gene.fc 2sign.gene.all sign.gene.real

如果样本中存在缺失值(例如&#xff1a;NA)&#xff0c;我们可以用na.omit()进行删除&#xff1a;

sign.gene.real

最后&#xff0c;绘制热图&#xff0c;并用基因标签代替基因ID作为热图的行标签&#xff1a;

pheatmap(log2(sign.gene.real[,3:85]&#43;1), labels_row &#61; sign.gene$Symbol)

a261d6bf7137e94b3eb8c6cccc5ecce5.png

也可以根据各自的需求进行美化&#xff1a;

pheatmap(log2(sign.gene.real[,3:85]&#43;1), labels_row &#61; sign.gene$Symbol, main&#61;"Heatmap", color &#61; colorRampPalette(c("blue","white","red"))(256))

ede5fc718d7bf9a4e281641d19dc2127.png

说明&#xff1a;

color参数中的256是指色阶值&#xff0c;也可以理解为色阶分辨率&#xff0c;数值越大&#xff0c;热图上颜色越丰富&#xff0c;一般设置为256。

知识笔记&#xff1a;

热图又称为聚类图&#xff0c;可以衡量样本或基因之间表达的相似性。

如本文所示的热图中&#xff0c;横坐标代表样本聚类&#xff0c;一列代表一个样本&#xff0c;聚类基于样本间基因表达的相似性&#xff0c;样本间基因表达越接近&#xff0c;靠的越近&#xff0c;以此类推。

纵坐标代表基因聚类&#xff0c;一行代表一个基因&#xff0c;聚类基于基因在样本中表达的相似性&#xff0c;基因在样本中表达越接近&#xff0c;靠的越近&#xff0c;以此类推。

色阶代表基因表达丰度&#xff0c;越红代表上调得越明显&#xff0c;越蓝代表下调得越明显。

总结

从热图上可以看出&#xff0c;所筛选出的差异基因并没有很好的区分出突变组和未突变组&#xff0c;所以在基因的筛选上&#xff0c;或者差异分析模型的选择上&#xff0c;需进行进一步的调整。

参考文章&#xff1a;

https://blog.csdn.net/u012325865/article/details/87344725

http://blog.sciencenet.cn/blog-3406804-1188483.html

https://www.jianshu.com/p/f9040ca31f46

相关链接&#xff1a;

TCGA数据库的利用(一)—数据下载&#xff01;

TCGA数据库的利用(二)—— 数据处理&#xff01;

TCGA数据库的利用(三)——基因注释&#xff01;

运用limma对基因进行差异分析


本文所用数据、代码均已上传至百度云&#xff0c;关注公众号回复“火山图&热图”即可获得


1d32a6cbc96dac3b845bcd7cab80b23b.png




推荐阅读
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了Python字典视图对象的示例和用法。通过对示例代码的解释,展示了字典视图对象的基本操作和特点。字典视图对象可以通过迭代或转换为列表来获取字典的键或值。同时,字典视图对象也是动态的,可以反映字典的变化。通过学习字典视图对象的用法,可以更好地理解和处理字典数据。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Tkinter Frame容器grid布局并使用Scrollbar滚动原理
    本文介绍了如何使用Tkinter实现Frame容器的grid布局,并通过Scrollbar实现滚动效果。通过将Canvas作为父容器,使用滚动Canvas来滚动Frame,实现了在Frame中添加多个按钮,并通过Scrollbar进行滚动。同时,还介绍了更新Frame大小和绑定滚动按钮的方法,以及配置Scrollbar的相关参数。 ... [详细]
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
  • TerraformVersionTerraformv0.9.11AffectedResource(s)Pleas ... [详细]
  • Highcharts翻译系列之二十:曲线图例子(二)
    Highcharts翻译系列之二十:曲线图例子(二)代码 ... [详细]
author-avatar
书友37715123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有