群体结构图形三剑客——PCA图
重测序便宜了,群体的测序和分析也多了起来。群体结构分析,是重测序最常见的分析内容。群体结构分析应用十分广泛,首先其本身是群体进化关系分析里面最基础的分析内容,其次在进行GWAS分析的时候,本身也需要使用PCA或structure分析的结果作为协变量,来校正群体结构对关联分析带来的假阳性。
我们之所以冠以 “群体结构三剑客”的称呼,那是因为这三张图(或者说三项分析)几乎总是在一篇文章中一起出现。虽然这三张图常常一起出现,但它们能够解释的生物学问题,以及绘制的方法都是有所不同的,所以我们还是一一来解释。
2.1 PCA图(主成分分析)
颜值:☆ ☆
实用性:☆ ☆ ☆ ☆
PCA图形的解读
PCA分析是一项朴实无华的分析内容,但它应用十分广泛,的确能够帮助我们解决某些生物问题。说起朴实无华,是因为它的结果不花哨且及其容易看懂,仅仅是一张散点图而已。
比如,下图来自熊猫重测序的文章[1],作者使用主成分1(principal component1)和主成分2作为X轴和Y轴绘制散点图,每个点代表1个样本。在这样的PCA图中,如果两个样本距离越远,则说明两个样本遗传背景差异越大。理想情况下,遗传背景相似的个体会在图中聚类在一起。
例如,这张图中涉及的熊猫个体分别来自3个不同的熊猫自然保护区。PCA分析的结果也将这些个体分为了3个亚群,和熊猫来源的地域信息完全一致。
图1 PCA分析将来自三个区的大熊猫准确区分开
但是如果你不仅仅满足于把图形基本信息读懂的话,你还是需要对PCA这一方法有初步的了解。PCA是一种线性代数中的数据处理方法,而这个方法的数学过程比较抽象,在这里有限的篇幅里不便展开讨论,感兴趣的同学可以自己百度查询。PCA分析应用的情境是:在某些情况下,我们数据实在过于复杂。
例如:对一个群体进行重测序,得到的SNP位点数是百万级别的。如果我们直接使用百万级别的SNP信息作为指标对个体进行区分,就会显得信息过于庞大而无法把握重点。PCA分析过程就是从这百万级别的信息中提取关键的信息,以便我们使用更少的变量(指标)就可以对样本进行有效区分。这些被提取出的信息,按照其效应从大到小排列,我们称之为主成分1(principal component1)、主成分2、主成分3… …
在实际文章中,我们不仅仅只使用PC1和PC2来对样本群体进行区分。从数学上理解,PCA分析的过程就是从大量数据指标中提取关键信息的过程。但PC1或PC2对总体信息的解释程度总是有限的。我们将之称为PCn对总体方差解释的百分比。一般重测序的PCA分析结果中,PC1对总体信息的解释比例在3~10%之间。所以,我们也需要关注一下其他主成分的分类效果。
例如在家蚕重测序文章中,分别使用主成分1和2绘图(左图)以及主成分3与主成分4绘图(右图)。两个聚类结果呈现了不同的意义。在PC1和PC2的聚类图中,将野生蚕和家蚕区分开了两个群体。而在PC3和PC4的聚类中,则分离出了两个来自江南地区高产丝量的品种。
所以,从生物学层面理解,PCA分析的过程就是信息浓缩的过程,会从原始的各个SNP位点信息中提取相似的信息,浓缩为新的变量PC1、PC2、PC3…. 输出。所以不同的主成分可能会(记住,仅仅是可能)对应不同的生物学意义,产生不同的聚类分类效果。
图2蚕群体利用不同主成分的聚类结果比较
在其他实际案例中的使用
PCA分析只是一种非常单纯的数学方法,具体有什么样的生物学意义还是需要具体问题具体分析。PCA分析在实际案例中应用主要包括:
1.检测离群样本
例如,在上图(右)中,两个高产的品种就属于离群样本。如果你材料已知都是来源同一品种的个体,这种离群样本可能就意味着在采样或测序过程中,出现了样本混淆。如果这些材料后续用于GWAS分析,个别样本出现离群则考虑要把这些离群样本剔除。当然,如果大量样本离群或出现群体分层(例如,上图的左图,明显分层为两个亚群体),则需要将PCA或structure分析的结果作为后续关联分析的协变量,校正它们对关联分析的影响。
2.推断亚群间的进化关系
例如下图这篇葡萄群体研究的文章[3],研究的葡萄品种来源三个地域。绿色的西部葡萄和红色的东部葡萄区分比较明显,而蓝色的中部葡萄夹杂在东、西两个亚群间,和两个亚群有大量重叠。作者从中推断,东、西两个地域的葡萄都有传播到中部地区,并伴随大量杂交,导致中部地区的品种系谱比较混杂,并没有形成自己独立的亚群。其实本人作为小白鼠也做过基因型检测,PCA结果最后被归类到江南地区人群。当然我对结果一点也不意外,因为我是如假包换的大胡建人。
<ignore_js_op>
图3 葡萄亚群体的基因混杂现象
PCA分析和绘制的方法
PCA分析只是一种统计方法,我们可以使用一些群体统计软件计算出群体中PC1~pCn的数值,然后绘制散点图就可以了(绘制散点图其实利用excel就可以完成。当然,使用R语言绘图的话,会更加美观一些)。
在群体分析软件上,我们推荐GCTA软件中的PCA模块来完成分析(http://cnsgenomics.com/software/gcta/pca.html)。这个软件有window版本,但和本地blast类似(我们之前分享过)只能在Dos界面下的命令行模式运行。当然还包括比较老牌的PCA分析软件EIGENSOFT(http://www.hsph.harvard.edu/alkes-price/software/),但这个软件只有linux版本。总之,在生物信息领域,软件大都不太友好,这也是这个行业的现状。
当然,PCA分析不仅仅用在重测序的领域,在RNA-seq、16s meta rDNA 测序也被大量使用,只是将上文提到的SNP信息替换为表达丰度了而已。如果你对RNA-seq,16s meta 测序的PCA分析感到头疼,其实可以直接使用我们基迪奥新开发的免费在线分析云工具(www.omicshare.com/tools/)。
被各种生物信息软件虐过的生物狗们一起团结起来,英特纳雄耐尔就一定要实现… … 感觉有点跑题,重新喊一次口号:欢迎被各种生物信息软件虐过的生物狗们多给我们反馈修改意见,OS tools 的用户友好程度一定会持续提高的。
参考文献:
【1】Zhao S, et al. (2013)Whole-genome sequencing of giant pandas provides insights into demographichistory and local adaptation. Nature genetics45(1):67-71.
【2】Xia Q, Guo Y, Zhang Z, et al.Complete resequencing of 40 genomes reveals domestication events and genes insilkworm (Bombyx)[J]. Science, 2009, 326(5951): 433-436.
【3】Myles S, Boyko A R, Owens C L, et al. Genetic structure and domesticationhistory of the grape[J]. Proceedings of the National Academy of Sciences, 2011,108(9): 3530-3535.
转自:
群体结构图形三剑客——PCA图
http://www.omicshare.com/forum/thread-816-1-180.html
(出处: OmicShare Forum)
群体结构图形三剑客——PCA图的更多相关文章
- Matplotlib基本图形之折线图
Matplotlib基本图形之折线图折线图特点 折线图是用折线将各数据连起来组成的图形常用来观察数据随时间变化的趋势例如:股票价格,温度变化,等等 示例代码: import os import tim ...
- VS2010 使用TeeChart画图控件 - 之二 - 绘制图形(折线图,柱状图)
1.前期准备 详细可见VS2010 使用TeeChart画图控件 - 之中的一个 控件和类的导入 1. 1 加入TeeChart控件,给控件加入变量m_TeeChart 加入TeeChart控件,右击 ...
- PCA图
R语言PCA 1.关键点 综述:主成分分析 因子分析 典型相关分析,三种方法的共同点主要是用来对数据降维处理的从数据中提取某些公共部分,然后对这些公共部分进行分析和处理. #主成分分析 是将多指标化为 ...
- java图形界面之图形化按钮
要将按钮图形化,只需创建一个ImageIcon对象,将图形路径赋予ImageIcon对象,然后将该对象传递给按钮即可. 此处涉及eclipse中图形的路径设置,包括(项目路径下.非项目路径下.相对路径 ...
- VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)
1.前期准备 具体可见VS2010 使用TeeChart绘图控件 - 之一 控件和类的导入 1. 1 添加TeeChart控件,给控件添加变量m_TeeChart 添加TeeChart控件,右击控件, ...
- eclipse 安装图形插件(图形化编程)
打开eclipse 查看什么版本 ,我的是Oxygen help --> install newsoftware 打开地址 http://www.eclipse.org/windowbuilde ...
- EasyMvc入门教程-图形控件说明(21)线形图+柱状图+饼形图
本章将介绍一些基本但常用的图形:线型图,柱状图和饼形图. 以上三种图形对于的数据都是键值对数组,请参考第一个例子: @{ var data = new List<LineItem>(); ...
- R & ggplot2 & Excel绘图(直方图/经验分布图/QQ图/茎叶图/箱线图)实例
持续更新~ 散点图 条形图 文氏图 饼图 盒型图 频率直方图 热图 PCA图 3D图 火山图 分面图 分面制作小多组图 地图 练习数据: year count china Ame jap '12 2. ...
- ggplot2 |legend参数设置,图形精雕细琢
本文首发于微信公众号“生信补给站”,https://mp.weixin.qq.com/s/A5nqo6qnlt_5kF3_GIrjIA 学习了ggplot2|详解八大基本绘图要素后,就可以根据自己的需 ...
随机推荐
- C#.NET 大型企业信息化系统集成快速开发平台 4.1 版本 - 如何才能成为全国知名软件组件
往往我们看到一个好用的工具.就能知道制作这个工具有多少不容易,使用好这个工具也有多少不容易? 通用快速开发框架同样也是经过多年的完善改进才到了今天的稳定成熟度,知名程度,为什么能成为全国有名的软件组件 ...
- mysql: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '= 的解决
昨天把mysql里所有table的varchar字段的字符集,批量换成了utf8mb4/utf8mb4_unicode_ci ,以便能保存一些emoji火星文 , 结果有一个sql语句执行时,报错如下 ...
- iOS 关于字体根据不同屏幕尺寸等比适配的问题(zz)
http://www.jianshu.com/p/5815e81abb52 背景 去年的六月份开始了一个新的项目,此项目支持的设备从4S开始一直到6+,也就是说屏幕的尺寸最小的320x480 最大的1 ...
- 种子填充算法描述及C++代码实现
项目需要看了种子填充算法,改进了算法主要去除面积小的部分.种子填充算法分为两种,简单的和基于扫描线的方法,简单的算法如下描述(笔者针对的是二值图像): (1)从上到下,从左到有,依次扫描每个像素: ( ...
- Spark环境搭建遇到的问题
1.始终找不到Hive表的问题 原因:官方编译后的Spark1.2.0+hadoop2.4与hadoop2.4.1不匹配 解决方法有两个: a.将Hadoop2.4.1替换为2.4.0版本 b.重新编 ...
- System.Diagnostics.Process 启动进程资源或调用外部的命令的使用
经常看到一些程序在保存为一个txt,或者excel的文件的时候,保存完毕立即打开, 启动程序或打开文件的代码 System.Diagnostics.Process.Start(System.IO.Pa ...
- linux-ntpdate同步更新时间
Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步 安 ...
- Don’t Use Accessor Methods in Initializer Methods and dealloc 【初始化和dealloc方法中不要调用属性的存取方法,而要直接调用 _实例变量】
1.问题: 在dealloc方法中使用[self.xxx release]和[xxx release]的区别? 用Xcode的Analyze分析我的Project,会列出一堆如下的提示:Inco ...
- 【BZOJ-3747】Kinoman 线段树
3747: [POI2015]Kinoman Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 715 Solved: 294[Submit][Stat ...
- bzoj2064[和谐社会模拟赛]分裂
题意:给定一个初始集合和目标集合,有两种操作:1.合并集合中的两个元素,新元素为两个元素之和 2.分裂集合中的一个元素,得到的两个新元素之和等于原先的元素.要求用最小步数使初始集合变为目标集合,求最小 ...