群体结构图形三剑客——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|详解八大基本绘图要素后,就可以根据自己的需 ...
随机推荐
- Centos6安装Gitlab
安装参考 https://about.gitlab.com/downloads/ 可以从清华的镜像下载安装包, 注意区分自己用的是哪个发行版 https://mirror.tuna.tsinghua. ...
- 【C#】【Thread】SpinWait
System.Threading.SpinWait 是一个轻量同步类型,可以在低级别方案中使用它来避免内核事件所需的高开销的上下文切换和内核转换. 在多核计算机上,当预计资源不会保留很长一段时间时,如 ...
- iTextSharp生成pdf的一个简单例子
效果图: 参考:http://www.cnblogs.com/CareySon/archive/2011/11/09/2243496.html http://www.cnblogs.com/julyl ...
- bzoj4498: 魔法的碰撞
首先,如果排列确定,那么就可以组合学解决了,不过排列数很多,显然不能枚举. 我们发现如果区间不能重叠的话,总长度减去所有区间长度就是能用的多余格子数. 然而相邻区间可以重叠较小区间一半的长度,因此这些 ...
- Webpack--自学笔记
原文--http://webpack.github.io/docs/tutorials/getting-started/ 什么是webpack? webpack是一个模块打包器.webpack把模块( ...
- ubuntu 下简单录音
找了半天录音工具,甚至都在尝试用 pyAudio 自己写了,结果发现,原来有现成命令行工具用! 就是 sox 工具包.这个工具包有 4 个工具:sox, play, rec, soxi.rec 和 p ...
- Zabbix监控mysql主从复制状态
原理 mysql slave show slave status\G 在输出信息中查看I/O线程和SQL线程的状态值(YES为正常,NO为错误) Slave_IO_Running: Yes Slave ...
- 使用Maven Assembly plugin将依赖打包进jar
一个Eclipse的工程,在pom中配置了若干依赖,需要将pom中所有的依赖全部打包进一个jar包中,可以选择的方案有maven-assembly-plugin和fatjar.以前采用fatjar进行 ...
- Java 内存管理
java 内存管理机制 JAVA 内存管理总结 java 是如何管理内存的 Java 的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字 new 为 ...
- 【原】理解javascript中的this
最近的文章基本都是总结javascript基础内容的,因为我觉得这些东西很重要.而且很多时候你觉得你理解了,其实并没有你自认为的那么理解.十月份没怎么写文章,因为国庆出去玩的比较久,心变野了,现在是时 ...