实际上写完了这个全网最好的差异分析代码:免费的数据分析付费的成品代码 我就可以收工了,但是永远不能低估粉丝的疑惑数量,任何一个细节都会被拿出来剖析。

比如代码里面我挑选了top1000的sd基因绘制热图,然后就可以分辨出来自己处理的数据集里面的样本分组是否合理啦。其实这个热图差不多等价于PCA分析的图,被我称为表达矩阵下游分析标准3图!详见:你确定你的差异基因找对了吗? ,就是下面的3张图:

  • 左边的热图,说明我们实验的两个分组,normal和npc的很多基因表达量是有明显差异的
  • 中间的PCA图,说明我们的normal和npc两个分组非常明显的差异
  • 右边的层次聚类也是如此,说明我们的normal和npc两个分组非常明显的差异

PS:如果你的转录组实验分析报告没有这三张图,就把我们生信技能树的这篇教程甩在他脸上,让他瞧瞧,学习下转录组数据分析。

为什么挑选top1000的sd基因绘制热图

我这个热图是为了说明本分组是否合理,就是看样本的距离,这个时候你如果需要理解距离,那么你需要学习非常多细节知识。不仅仅是一个函数那么简单:

  • r 语言中使用 dist ( x, method = “ euclidean ”, diag = FALSE, upper = FALSE, p = 2 ) 来计算距离。其中x是样本矩阵或者数据框。method 表示计算哪种距离。method 的取值有:
  • euclidean 欧几里德距离,就是平方再开方。
  • maximum 切比雪夫距离
  • manhattan 绝对值距离
  • canberra Lance 距离
  • minkowski 明科夫斯基距离,使用时要指定p值
  • binary 定性变量距离.
  • r 语言中使用 hclust (d, method = “complete”, members=NULL) 来进行层次聚类。其中 d 为距离矩阵。method 表示类的合并方法,有:
  • single 最短距离法
  • complete 最长距离法
  • median 中间距离法
  • mcquitty 相似法
  • average 类平均法
  • centroid 重心法
  • ward 离差平方和法
  • r 语言中主要使用 kmeans(x, centers, iter.max = 10, nstart = 1,algorithm =c(“Hartigan-Wong”, “Lloyd”,”Forgy”, “MacQueen”))来进行聚类。
  • centers 是初始类的个数或者初始类的中心
  • iter.max 是最大迭代次数
  • nstart 是当 centers 是数字的时候,随机集合的个数
  • algorithm 是算法,默认是第一个。

也就是说,看起来非常简单的3张图,背后是几十年的统计学知识的基础建设。

当然了,也不要气馁哦,反正你只需要会看图就好!再次强调:你确定你的差异基因找对了吗? 里面的3张图:

  • 左边的热图,说明我们实验的两个分组,normal和npc的很多基因表达量是有明显差异的
  • 中间的PCA图,说明我们的normal和npc两个分组非常明显的差异
  • 右边的层次聚类也是如此,说明我们的normal和npc两个分组非常明显的差异

为什么选择top1000的sd基因绘制热图其实就是个人爱好,你可以探索top500,1000,2000,5000是否有区别。

比较不同的top基因聚类的差异

同样的是一个表达矩阵和分组,如下:

> dat[1:4,1:4] GSM312896 GSM312897 GSM312898 GSM312899
ZZZ3    8.286337  8.427789  9.315658  8.601464
ZZEF1   8.097163  8.419503  8.843223  8.963619
ZYX     8.187251  7.919804  8.082291  7.094361
ZYG11B  8.718149  8.195136  8.478548  9.054829
> dim(dat)
[1] 18938    41
> table(group_list)
group_list
normal    npc 10     31

然后检查不同top基因集的层次聚类情况

library(pheatmap)
cg=names(tail(sort(apply(dat,1,sd)),1000))
p1=pheatmap(dat[cg,])
cg=names(tail(sort(apply(dat,1,sd)),500))
p2=pheatmap(dat[cg,])
cg=names(tail(sort(apply(dat,1,sd)),2000))
p3=pheatmap(dat[cg,])
cg=names(tail(sort(apply(dat,1,sd)),5000))
p4=pheatmap(dat[cg,])
tmp=data.frame(top1000=cutree(p1$tree_col,2),top500=cutree(p2$tree_col,2),top2000=cutree(p3$tree_col,2),top5000= cutree(p4$tree_col,2),group_list=group_list)

这个时候,你会发现,好像不一样,我修改层次聚类的类别数量

tmp=data.frame(top1000=cutree(p1$tree_col,4),top500=cutree(p2$tree_col,4),top2000=cutree(p3$tree_col,4),top5000= cutree(p4$tree_col,4),group_list=group_list)

然后你会发现,不管是top多少个基因,如果分成4类,那么1,2类都是normal,3,4类都是NPC,所以效果都挺好的。

其实基础知识点都在生信技能树了

  • 生信技能树的2019年终总结 这里面记录着我博士期间抽空做的一点教程分享事业
  • 2020学习主旋律,B站74小时免费教学视频为你领路 这里面记录着我为生物信息学教学行业做的一点贡献

差异表达基因热图怎么看_为什么我代码里面选择top1000的sd基因绘制热图呢相关推荐

  1. sip 时序图_时序图怎么看_教你如何看懂时序图 - 什么是时序图_时序图怎么看_教你如何看懂时序图...

    时序图怎么看_教你如何看懂时序图 操作时序永远使用是任何一片IC芯片的最主要的内容.一个芯片的所有使用细节都会在它的官方器件手册上包含.所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上 ...

  2. 差异表达基因热图怎么看_差异基因热图绘制:heatmap.2

    在RNA-seq数据分析中,差异表达基因分析是一项基本的技能,其中热图又是一种特别常见的用来展示差异表达基因分析结果的方式,今天分享一个非常好用的绘制热图的R函数:heatmap.2.该函数来自gpl ...

  3. 差异表达基因热图怎么看_四个基因的能量代谢模型构建与验证,轻松发4分sci!...

    今天分享一篇2019年6月发表于J Cell Physiol(IF:4.522)的文章,标题是Identification of a four‐gene metabolic signature pre ...

  4. java 分时图_软件设计模式(观察者模式)——模拟股票价格变动并绘制分时图和K线图...

    一.观察者模式简介: 首先看百度百科上对观察者模式的简介:观察者模式(Observer)完美的将观察者和被观察的对象分离开.举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数 ...

  5. 轮播图高度自适应_【2020顶会NIPS】用于交通预测的自适应图卷积循环网络

    就idea来说,这篇文章整体感觉亮点只有参数分解一处,其他的自适应网络结构,之前已经有文章研究,如果在计算方面有需求,或者是网络节点较多的应用可以参考这篇文章. Adaptive Graph Conv ...

  6. 差异表达基因热图怎么看_多变的热图1(新手专用)

    热图(heatmap)用不同的颜色和颜色的深浅来直观的展示数据之间的差异.在测序类的文章里,几乎必有一幅热图用来展示差异表达基因.很多工具都可以完成热图的制作,今天这篇文章主要介绍利用R语言的 phe ...

  7. 差异表达基因热图怎么看_画图专题 | 热图函数pheatmap()

    画图专题 | 热图函数pheatamp() 百迈客医学 2018-10-31 先看一眼这个函数的参数,这么多,而且最后还有省略号.那么我们应该怎么合理使用这些参数让你的热图看起来更加高大上呢? phe ...

  8. 差异表达基因热图怎么看_热图的解读及边界聚类的意义

    热图(heatmap)是分子生物学文章里(尤其是microarray, RNA-seq相关论文)经常出现的图片.但热图一般有哪些用途,具体涉及哪些不同的参数画法,需要清楚了解. 1. 关于热图的用途 ...

  9. 差异表达基因热图怎么看_【生信】憨憨版分析转录组基因表达差异(二)

    [简单热图] # 调用下载的pheatmap包.library(pheatmap)#设置当前工作目录,setwd("目标路径")即保存待测文件的目录,使R能够调用.setwd(&q ...

最新文章

  1. 【原创视频教程】学生信息管理系统1--登陆
  2. POJ 2075 Tangled in Cables
  3. 3.7 为什么需要非线性激活函数-深度学习-Stanford吴恩达教授
  4. 从0到70%:Chrome上位揭秘!
  5. Xilium.CefGlue的入门
  6. 临时文件_Go语言学习基础-文件路径、目录、临时文件和目录
  7. ffmpeg转换格式
  8. php编译成jphp,php编译脚本安装
  9. 计算机等级考试二级要学PS,关于计算机等级考试题库你所不知道的那些一级PS操作题...
  10. 三菱melsec-a系列plc的指令与编程_三菱Q系列PLC定时器、计数器结构化编程基础
  11. 浅谈C#的垃圾回收-关于GC、析构函数、Dispose、and Finalize asp.net GC之析构函数详解...
  12. pionner软件操作笔记
  13. 「计算机网络」五层因特网协议栈的简要介绍和分组名称
  14. 3线spi屏幕驱动方式
  15. 線上 Android/Linux Kernel Source Code瀏覽 - Android/Linux Source Code Cross Reference
  16. Mysql底层数据结构学习总结
  17. 总算有人讲明白了什么是特性阻抗什么是阻抗匹配
  18. 显示器怎么看服务器内容,电脑显示器知识扫盲 教你怎么看显示器参数
  19. 向下兼容性格什么意思_恭喜你,被向下兼容了|有启发
  20. JavaWeb 图书管理系统(数据库综合实验)

热门文章

  1. 将dicom的ct值归一到(0,255)
  2. windows下python自带的pip安装速度过慢解决方案
  3. 小程序云开发实现微信支付,不需要搭建服务器
  4. 平面空间的元素和部分3d空间的元素
  5. spring security基于数据库的安全认证 配置
  6. 国密SM3加密算法工具类(非对称)
  7. JDK1.8新特性 Optional判空详解,简化判空操作
  8. 计算机二级office试题27答案,计算机二级office试卷27.doc
  9. JAVA -- stateless4j StateMachine 使用浅析(一)
  10. 写给Java 工程师们一封信