最近看了不少统计基因组方面的资料,以为懂了,其实懵逼。实在是因为统计学基础太菜,似懂非懂,似是而非。记录下自己的理解,求轻喷。

1.GWAS模型

GWAS是表型和基因型之间的相关性分析,然而这个相关性用什么统计方法?

GWAS模型的发展:

1.1卡方检验

实际比例是否符合预期分离比例,若不符合则认为基因与表型相关。计算量大。

1.2 相关性系数的t检验

首先计算基因和表型之间的相关性(如pearson),再经过r换算为t值,进行t检验。计算量小。

1.3 一般线性模型GLM

直接将基因型x和表型y做回归拟合,即y=xb+e。



其中y是表型,x是SNP、Q矩阵和总均值的一个综合变量,e是残差。

1.4 混合线性模型MLM

GLM模型中,如果两个表型差异很大,但群体本身还含有其他的遗传差异(如地域等),则那些与该表型无关的遗传差异也会影响到相关性。MLM模型可以把群体结构的影响设为协方差,把这种位点校正掉。此外,材料间的公共祖先关系也会导致非连锁相关,可加入亲缘关系矩阵作为随机效应来矫正,即y=Xb+Zu+e,Z为亲缘关系矩阵,u为个体育种值,其他同GLM。

GLM是固定效应模型。MLM除了固定效应,还加入了随机效应,即亲缘关系矩阵。所谓的固定效应是有限水平的,易控制的,关心的是水平上的影响;而随机效应有很多水平,关心的是水平背后的群体(如均值,方差等)。



有种只可意会,不可言传的感觉。我百度了下,认为它解释的还可以:随机效应模型

1.5 压缩混合线性模型CMLM

MLM的矫正过于严格,会把一些真实相关的SNP标记也过滤掉,因此CMLM模型目的是重新检测到那些假阴性SNP标记。

方法是根据个体遗传关系的相似性将其分组,然后将压缩后的组当做协变量,替换原来的个体。组内个体的亲缘关系都是一样的。

1.6 SUPER

问题来了,CMLM应该选择哪些SNP来计算亲缘关系矩阵,答案是使用所有跟表型相关的SNP(且排除了检测到的那个SNP)来构建亲缘关系矩阵的效果最好,这就是SUPER(Settlement of Kinship Under Progressively Exclusive Relationship, 逐步排他性亲缘关系解决方案)。

QTN(数量性状SNP),即控制QTL的SNP。

1.7 FarmCPU

GWAS的瓶颈一是计算速度,二是统计准确性。FarmCPU能提升速度和准确性,首先把随机效应的亲缘关系矩阵(Kinship)转换为固定效应的关联SNP矩阵(S矩阵/QTNs矩阵),使计算速度大大加快;其次利用QTN矩阵当做协变量,重新做关联分析,提升准确率。

SUPER和FarmCPU都是把bin(一段区域,比如10kb)当做SNP单位,而不是单个SNP。

1.8 Blink

Blink是进阶版GWAS,也是为提高速度和准确率。如下图所示:先用上方的GLM模型获得QTNs,然后用右侧的GLM以QTNs当做协变量进行SNP检测,得到的SNP根据LD信息确定QTNs的信息(根据染色体实际位置来选择对应的bin大小),进而利用左侧的GLM以BIC(Bayesian information criterion)策略进行QTNs准确性检测,排除假设错误的部分,保留真实的QTNs,不断循环这一过程,直到检测到所有关联SNP(即QTNs)。

模型总结:

这里是以张志武老师《统计基因组学》课程整理,所以重点介绍的是他们课题组开发的模型。

GWAS常用软件:

  • Plink
  • Tassel
  • GAPIT
  • Emmax
  • GEMMA
  • GCTA

2.GS模型

GS模型的发展:



河流左侧是以个体为单位进行预测,包含gBLUP,ssBLUP,sBLUP和cBLUP等。

河流右侧是以SNP效应值为单位进行预测,包含rrBLUP,BayesA,B,C,Cπ,Bayes LASSO等。

2.1 MAS

当控制表型的基因数量比较少,同时遗传力比较高的性状,可以用少量标记对表型进行很好的预测。

2.2 GBLUP

利用个体亲缘关系构建协变量矩阵,然后根据个体育种值对表型进行预测。

2.3 GBLUP的扩展(ssBLUP,sBLUP,cBLUP)

  • ssBLUP

    构建H矩阵求解,动物中居多,不适合植物,不多介绍,可看之前的综述文献推文。

  • sBLUP和cBLUP

    gBLUP(图A)是利用所有建模群体的基因型(GR1-GR5)对试验群体(GI1-GI4)进行预测,这个过程中每个个体间都有相互关系。

    Compression策略(图B)是将个体进行分组,把9个个体(建模群体和试验群体)分成三组,然后对不同组分别进行预测。其中把标记进行压缩,以Bin为单位进行预测的方法和GWAS的SUPER类似,所以叫sBLUP。另外以个体分组的策略跟GWAS的CMLM类似,因此叫cBLUP。

    可以理解为cBLUP对个体进行降维,sBLUP对标记进行降维。

2.4 rrBLUP

如果把GBLUP中构建协变量的个体亲缘关系矩阵换成SNP标记构成的关系矩阵,构建模型,然后对个体进行预测,就是rrBLUP的思路。

也就是把模型y=Xb+Zu+e变为y=Xb+Ms+e:

其中M是SNP构建的矩阵(替换个体亲缘关系矩阵Z),s就是标记(替换个体u)。

2.5 rrBLUP的扩展(Bayes类)

rrBLUP假设所有标记效应符合一个正态分布,同时标记效应的方差(σ^2)相等,这可能与基因的实际效应值不相符。

这时引入了贝叶斯的分析方法:预期控制表型的基因数目未知,基因效应值的分布未知。根据预先假定基因的数量和基因效应值分布的不同,建立了不同的贝叶斯模型,如BayesianA,B,C,Cπ,LASSO等。

其差别主要在于:标记效应是否符合相同分布;是否所有标记都有效应值;标记效应方差服从什么分布。

不同贝叶斯模型的假设和分布可参考之前的推文:[# 【GS文献】基因组选择技术在农业动物育种中的应用](https://www.cnblogs.com/jessepeng/p/14139862.html)

用图形直观表示不同的贝叶斯方法,下图中π表示没有标记效应的比例。

岭回归的所有标记效应方差都相等;贝叶斯A是所有标记都有效应方差,但不同标记有不同的效应方差;贝叶斯B是部分标记有效应方差,同时具有差异;贝叶斯Cπ是部分标记效应有方差,同时所有方差都相等。

2.6 BLUP vs Bayes

  • GS模型理论经历的一些发展:

  • 基于个体的BLUP

  • 基于标记的BLUP

    即Z矩阵替换为M矩阵,个体u替换为标记s。

  • rrBLUP vs GBLUP

  • Bayes vs BLUP

  • 模型性能比较

    模型差异很大,需要测试多个模型选择,涉及怎么选模型的问题。可根据遗传高低和控制基因多少,使用以下策略选择进行分析。



    以个体为预测单位的模型所需时间更少。

GS常用免费开源R包:

  • rrBLUP
  • BAGS
  • BLR
  • BGLR
  • GAPIT

3.GWAS和GS模型比较

如果GWAS使用的是MLM模型及其进阶版,那么它和GS用的其实是同一模型。

只是GWAS的重点在挖掘显著性位点,关注固定效应Xb,加入随机效应只是为了控制与表型显著相关位点的假阳性;而GS重点在计算育种值,关注随机效应Zu,加入固定效应是为了控制不同个体相同的部分。

两种方法虽然模型一样,但应用方向不同,所以视为不同技术,实际上是一回事儿。我们可以将二者结合起来,比如先用GWAS找出显著位点,再加入GS的固定效应中,可能会使预测的准确性更高。或者是如果标记数目太多,我们不想过滤掉一些无关标记,就可以结合GWAS的结果来过滤。

在GS和GWAS的结合方面,也已经有了一些模型和算法,如SSGBLUP,GS + de novo GWAS,GS + historical GWAS等。

致谢:

感谢张志武老师提供的最新教程以及开发的工具,感谢知乎张帆的课程总结。教程PPT参考:[## Statistical Genomics: 2020](http://zzlab.net/StaGen/2020/index.html)

参考资料:

https://zhuanlan.zhihu.com/p/138185705

https://www.jianshu.com/p/2006b4aaf729

GWAS与GS模型介绍与比较的更多相关文章

  1. IO模型介绍

    先理解几个问题: (1)为什么读取文件的时候,需要用户进程通过系统调用内核完成(系统不能自己调用内核)什么是用户态和内核态?为什么要区分内核态和用户态呢? 在 CPU 的所有指令中,有些指令是非常危险 ...

  2. 模型介绍之FastText

    模型介绍一: 1. FastText原理及实践 前言----来源&特点 fastText是Facebook于2016年开源的一个词向量计算和文本分类工具,在学术上并没有太大创新.但是它的优点也 ...

  3. python 全栈开发,Day44(IO模型介绍,阻塞IO,非阻塞IO,多路复用IO,异步IO,IO模型比较分析,selectors模块,垃圾回收机制)

    昨日内容回顾 协程实际上是一个线程,执行了多个任务,遇到IO就切换 切换,可以使用yield,greenlet 遇到IO gevent: 检测到IO,能够使用greenlet实现自动切换,规避了IO阻 ...

  4. {python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) IO模型比较分析 selectors模块

    python之IO多路复用 阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 ...

  5. (zhuan) 深度学习全网最全学习资料汇总之模型介绍篇

    This blog from : http://weibo.com/ttarticle/p/show?id=2309351000224077630868614681&u=5070353058& ...

  6. 深入理解 Java 内存模型(一)- 内存模型介绍

    深入理解 Java 内存模型(一)- 内存模型介绍 深入理解 Java 内存模型(二)- happens-before 规则 深入理解 Java 内存模型(三)- volatile 语义 深入理解 J ...

  7. OSI七层网络模型与TCP/IP四层模型介绍

    目录 OSI七层网络模型与TCP/IP四层模型介绍 1.OSI七层网络模型介绍 2.TCP/IP四层网络模型介绍 3.各层对应的协议 4.OSI七层和TCP/IP四层的区别 5.交换机工作在OSI的哪 ...

  8. IO模型《一》IO模型介绍

    IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步.异步.阻塞.非阻塞 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞 ...

  9. Python socket编程之IO模型介绍(多路复用*)

    1.I/O基础知识 1.1 什么是文件描述符? 在网络中,一个socket对象就是1个文件描述符,在文件中,1个文件句柄(即file对象)就是1个文件描述符.其实可以理解为就是一个“指针”或“句柄”, ...

随机推荐

  1. Java:修饰符小记

    Java:修饰符小记 对 Java 中的 修饰符,做一个微不足道的小小小小记 Java 语言提供了很多修饰符,大概分为两类: 访问权限修饰符 非访问权限修饰符 访问权限修饰符 修饰符 说明 publi ...

  2. 【二食堂】Alpha - Scrum Meeting 10

    Scrum Meeting 10 例会时间:4.20 18:00~18:20 进度情况 组员 昨日进度 今日任务 李健 1. 与柴博合作完成登录注册页面issue 继续完成登录注册页面issue 柴博 ...

  3. [HNOI2009]双递增序列(洛谷P4728)+小烈送菜(内部训练题)——奇妙的dp

    博主学习本题的经过嘤嘤嘤: 7.22 : 听学长讲(一知半解)--自己推(推不出来)--网上看题解--以为自己会了(网上题解是错的)--发现错误以后又自己推(没推出来)--给学长发邮件--得到正确解法 ...

  4. 该如何有效的提高C/C++语言编程能力

    很多答案都谈到算法的重要性,我的答案主要集中在C++上,只是一些个人经验. 其实我以前也有这样的困惑,感觉完了不知道怎么用.而且我也不是学计算机的,也没有从事相关工作,所以大概有十年的时间都没写什么程 ...

  5. RocketMQ源码详解 | Broker篇 · 其一:线程模型与接收链路

    概述 在上一节 RocketMQ源码详解 | Producer篇 · 其二:消息组成.发送链路 中,我们终于将消息发送出了 Producer,在短暂的 tcp 握手后,很快它就会进入目的 Broker ...

  6. P4430 小猴打架

    P4430 小猴打架 题目意思就是让你求,在网格图中(任意两点都有边)的生成树的个数(边的顺序不同也算不同的方案). 首先我们考虑一个生成树,由于一定有n-1条边,单单考虑添加边的顺序,根据乘法原理, ...

  7. hdu 2191 珍惜现在,感恩生活(多重背包)

    题意: 有N元经费,M种大米,每种大米有单袋价格p元,单袋重量h,以及对应袋数c. 问最多可以买多重的大米. 思路: 经典多重背包,用二进制的方法. 看代码 代码: struct node{ int ...

  8. 解决mac主机无法与 Docker容器互通问题

    方法很多,这里我说一下使用 docker-connector解决这个问题 这是一个github开源项目docker-connector  1. Mac 通过 brew 安装 docker-connec ...

  9. C++中简单使用HP-Socket

    目录 简介 使用方式 实现简单线程池 实现TCP客户端 实现TCP服务端 实现Http客户端 附件 简介 HP-Socket 是一套通用的高性能 TCP/UDP /HTTP 通信 框架 ,包含服务端组 ...

  10. 基于hadoop_yarn的资源隔离配置

    目录 yarn的基本概念 scheduler 集群整体的资源定义 fair scheduler简介 配置demo 队列的资源限制 基于具体资源限制 基于权重资源限制 队列运行状态限制 基于用户和分组限 ...