RNA-seq中的基因表达量计算和表达差异分析

差异分析的步骤:
1)比对;
2) read count计算;
3) read count的归一化;
4)差异表达分析;

背景知识:
1)比对:
普通比对: BWA,SOAP
开大GAP比对:Tophat(Bowtie2);
2) Read count(多重比对的问题):
丢弃
平均分配
利用Unique region估计并重新分配
表达量计算的本质
目标基因表达量相对参照系表达量的数值。
参照的本质:
( 1)假设样本间参照的信号值应该是相同的;
( 2)将样本间参照的观测值校正到同一水平;
( 3)从参照的数值,校正并推算出其他观测量的值。 
例如:Qpcr:目标基因表达量(循环数)相对看家基因表达量(循环数);RNA-seq:目标基因的表达量(测序reads数),相对样本RNA总表达量(总测序量的reads数),这是最常用的标准。
归一化的原因及处理原则:
1)基因长度
2)测序量
3)样本特异性(例如,细胞mRNA总量,污染等)前两者使用普通的RPKM算法就可以良好解决,关键是第三个问题,涉及到不同的算法处理。 
RNA-Seq归一化算法的意义:
基因表达量归一化:在高通量测序过程中,样品间在数据总量、基因长度、基因数目、高表达基因分布甚至同一个基因的不同转录本分布上存在差别。因此不能直接比较表达量,必须将数据进行归一化处理。 
RNA-seq差异表达分析的一般原则
1)不同样品的基因总表达量相似
2)上调差异表达与下调差异表达整体数量相似(上下调差异平衡)
3)在两组样品中不受处理效应影响的基因, 表达量应该是相近的(差异不显著)。
4)看家基因可作为表达量评价依据( 待定)

不同的算法比较:
以什么数值来衡量表达量:RPKM、FPKM、TPM
以什么作为参照标准:TMM(edgeR软件)、De seq矫正
RPKM:是Reads Per Kilobase per Million mapped reads的缩写,代表每百万reads中来自于某基因每千碱基长度的reads数。

本质:
1)以reads数为计算单位;
2)对基因长度(基因间的比较)和总数据量(样本间的比较)做矫正;
RPKM的弊端
1)由于可变剪切,同一基因有效转录区域长度未必相同(这个一般情况下可以不考虑,了解一下:Cufflinks软件考虑了这个问题)优化策略:外显子或转录本水平的表达量分析。
2) 使用reads数计算基因表达量有轻微误差(这里暂不展开,主要了解一下定义)优化策略:FPKM或 TPM
3) mRNA的总量未必相等。 
RPKM的优化:FPKm
 F = Fragment,即测序片段数量。这些片段都是从完整的cDNA打碎而来的;
本质:以文库中的片段数量为计算单位在Paired-end测序中,一个fragment就是两条PE reads构成的片段。由于是PE比对,理论上比SE比对更可靠。 
RPKM的优化:TPM
T = Transcripts
本质:以转录本的条数为计算单位。使用转录本的条数(或者说:转录本的测序深度),代替reads数,在一定条件下定量更准,尤其样本间表达基因总数差异很大的时候(例如,对照样本有1万个基因表达,另外处理组仅有4000个基因表达)。 
mRNA总量未必相等
mRNA总量不等——细胞本身不同
例如:活跃组织vs休眠的组织;癌细胞vs正常细胞
mRNA总量不等——污染
例如:核糖体污染外源RNA污染 
解决方法——不同算法比较
其中归一化算法介绍:
1)Total Count(TC):总reads数矫正
2)Upper Quartile(UQ):上四分之一分位数(总reads)
矫正
3)Median(Med);中位数(总reads数)矫正
4)Quantile (Q):基因芯片软件limma中的校正算法;
5)RPKM:总reads数,但引入了基因长度
6)几何平均数:Deseq软件中的算法;
7)TMM:edgeR软件中的算法;
8)RPKM
逻辑1:不同位置数值的稳定性不同

四分位数quartile:将数据按从小到大排列,并分成四等分,这样得到3个分割点,第一个分割点叫做lowerquartile,第二个叫Media,第三个叫Upper quartile
很显然,极大值具有极大不稳定性,而且可能会显著影
响总体之和(假设,我们之中有个马云,我们的总收入
有什么变化?)
 所以,Upper quartile和Median的数值,比总表达量之
和更加稳定,更适合作为参照。
逻辑2:表达量居中的基因的表达量值,其数值应该是相似的。
DESeq与edgeR,默认情况下都使用这一的逻辑校正。(DESeq and edgeR Bioconductor packages) 
Deseq:异常高表达的基因,会显著影响细胞中的总mRNA的数量。类似的,如果样本中受到不同程度的外源RNA,如病毒、真菌等的污染,也会显著影响样本总mRNA数,导致RPMK值的误差。对于这样的问题,Deseq尝试对数据进行矫正(矫正因子),使表达量处于中间位置的基因表达量应该是基本相同的(即使用表达量处于中间的基因表达量值作为参照,而减少高表达基因的作用)。 
Deseq: 校正因子=样本表达中位数/所有样本表达量中位数:回答了一个关键的问题:Deseq不同差异比较组间,计算得到的表达量值不同。因
为样本在变化,“所有样本表达量的中位数”也在变动。RPKM:总表达量为参照
Deseq:中位数为参照

TMM(edgeR):与Deseq类似,在去除高表达基因和差异最大的基因后,TMM也是要找到一个加权系数,使剩余的基因在被矫正后差异倍数可能小。TMM的加权系数是基于两两样本比较后推算获得的(也就是两组样本的比较,将产生与这次比较相关的加权系数)。然后将所有基因除以这个加权系数,从而保证大部分表达量居中的基因表达量最相似。 
不同RNA-seq表达量归一化算法的区别
Deseq类的校正算法:理论上更加稳定;但不同批次的比较会得到不同的表达量值,不利于进行多处理组/批次数据的统一分析(例如,趋势分析、共表达分析)校正会掩盖一些问题(例如:样本污染)
RPKM类的算法: 容易受异常高表达基因、外源污染等的干扰;但也更容易从结果的异常中,发现潜在问题;得到的表达量值是恒定的,多处理组/批次的数据可以合并分析。折中的方法:使用RPKM类的算法,但需要人工检查数据是否
异常。备注: Deseq软件也可以关闭校正的功能。

实际经验总结
总之:从多方面考虑,RPKM类算法,如果合理使用,依然是最优的。具体问题具体分析:在遇到问题的时候,找到问题的来源,从而给出解决方案(没有完美的流程,只有最佳解决方案)

RNA-seq中的基因表达量计算和表达差异分析的更多相关文章

  1. RNA seq 两种计算基因表达量方法

    两种RNA seq的基因表达量计算方法: 1. RPKM:http://www.plob.org/2011/10/24/294.html 2. RSEM:这个是TCGAdata中使用的.RSEM据说比 ...

  2. RNA -seq

    RNA -seq RNA-seq目的.用处::可以帮助我们了解,各种比较条件下,所有基因的表达情况的差异. 比如:正常组织和肿瘤组织的之间的差异:检测药物治疗前后,基因表达的差异:检测发育过程中,不同 ...

  3. Others-大数据平台Lambda架构浅析(全量计算+增量计算)

    大数据平台Lambda架构浅析(全量计算+增量计算) 2016年12月23日 22:50:53 scuter_victor 阅读数:1642 标签: spark大数据lambda 更多 个人分类: 造 ...

  4. geotrellis使用(十六)使用缓冲区分析的方式解决投影变换中边缘数据值计算的问题

    Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 问题探索 采样说明 实现方案 总结 一.前言     ...

  5. libviso中的姿态解算【转载】

    这篇关于libviso的文章,本人已投稿在泡泡机器人微信公众号中,放到这里,作学习笔记用. libviso一直以来被称为在视觉里程计(VO)中的老牌开源算法.它通过corner,chessboard两 ...

  6. sql server中根据地图经纬度算距离

    从别的地方烤过来的,自己试了一下,可以计算 出来,不过正确不正确的就不太懂了. USE [niaoren]GO/****** Object:  UserDefinedFunction [dbo].[f ...

  7. .net 中两个日期算经过的月份数

    DateTime startDate = DateTime.Parse("2014-11-1"); DateTime endDate = DateTime.Parse(" ...

  8. TOMCAT到底能 承受多少并发,并发量计算你方法

        TOMCAT 可以稳定支持的最大并发用户数 https://www.jianshu.com/p/d306826aef7a tomcat并发数优化maxThreads.acceptCount(最 ...

  9. [物理学与PDEs]第5章习题5 超弹性材料中客观性假设的贮能函数表达

    设超弹性材料的贮能函数 $\hat W$ 满足 (4. 19) 式, 证明由它决定的 Cauchy 应力张量 ${\bf T}$ 满足各向同性假设 (4. 7) 式. 证明: 若贮能函数 $W$ 满足 ...

随机推荐

  1. C罗转会尤文图斯

    皇家马德里头号球星C罗转会意甲尤文图斯,结束了9年的皇马生涯,已获得5座金球奖.

  2. HTML5 关于一些本地操作 cookie,sessionStorage,localStorage

    1,b/s 开发中经常会使用到 cookie,大部分情况下,都是由后端代码实现,那么 js 怎么实现对 cookie 的操作呢? <!DOCTYPE html> <html> ...

  3. servlet的运行机制,转发和重定向

    一.当发送一个请求到服务器端的时候,容器(tomcat)会判断该路径属于哪一个servlet进行处理,servlet有一个抽象父类“httpservlet”,这个类是一个模板设计模式的类,其中serv ...

  4. Django10-Form组件

    一.Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在很多场景下都需要对用户的输入做校验,比如校验用户是 ...

  5. 机器学习-Sklearn

    Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一. Sklearn 包含了很多种机器学习的方式: Classification 分类 Regres ...

  6. 2.表单与PHP

    不管是一般的企业网站还是复杂的网络应用,都离不开数据的添加.通过PHP服务器端脚本语言,程序可以处理那些通过浏览器对Web应用进行数据调用或添加的请求. 回忆一下平常使用的网站数据输入功能,不管是We ...

  7. java学习--自定义类的实例的大小比较和排序

    我们知道Object类有一个equals方法,用于比较两个对象是否相等 我们只要在自定义类中重写了equals方法(若不重写就是比较两个实例的地址,相当于==)就可以用来比较该类的两个实例是否相等 问 ...

  8. 2017-11-11 Sa Oct How to open a browser in Python

    2017-11-11 Sa Oct How to open a browser in Python python -m webbrowser "http://www.example.com/ ...

  9. echars踩坑之图表缓存

    针对echars 在一个图表内渲染多次数据时,图表会缓存上一次的数据导致下一次的数据图表变形.使用clear()清除图表缓存. 不让页面缓存的方法 按F12打开Network在Disable cach ...

  10. 使用netty HashedWheelTimer构建简单延迟队列

    背景 最近项目中有个业务,需要对用户新增任务到期后进行业务处理.使用定时任务定时扫描过期时间,浪费资源,且不实时.只能使用延时队列处理. DelayQueue 第一想到的是java自带的延时队列del ...