美文网首页
edgeR中的那些坑(glmQLFit和glmQLFTest)

edgeR中的那些坑(glmQLFit和glmQLFTest)

作者: MYS_bio_man | 来源:发表于2023-06-25 23:30 被阅读0次

library(edgeR)library(statmod)rawdata<-read.delim("Back_skin.counts.txt", sep="\t", check.names=FALSE, stringsAsFactors=FALSE, row.names=1)y<-DGEList(counts=cbind(rawdata[,2],rawdata[,3],rawdata[,4],rawdata[,1],rawdata[,5],rawdata[,6]), genes=row.names(rawdata))### for counts filterkeep <- rowSums(cpm(y) >0.5) >=1table(keep)y <- y[keep, ,keep.lib.sizes=FALSE]#keep.lib.size=FALSE表示重新计算文库大小。y<-calcNormFactors(y)myfactors<-factor(c("WT","WT","WT","FST","FST","FST"))data.frame(Sample=colnames(y), myfactors)design<-model.matrix(~myfactors)rownames(design)<-colnames(y)y<-estimateDisp(y, design, robust=TRUE)fit<-glmFit(y, design)lrt<-glmLRT(fit)deg<-topTags(lrt, n=nrow(lrt$table), adjust.method="BH")$tablewrite.table(deg, file="Deglist_Back_skin_WT_vs_FST.xls", sep="\t", quote=FALSE, row.names=FALSE, col.names=TRUE)

网络上的差异分析代码数不甚数,贴个代码装个逼(还嫩呢)。不过说实话,搞科研这一行的,你去测个序,不会点差异分析怎么能行呢?但是问题来了,cummeRbund 和DESeq, edgeR, limma等等的区别是什么?我应该选哪一种进行差异分析呢?这些R包里面都运用了什么模型、什么检验方法进行差异分析的呢?如果搞不清这些问题,差异结果难以令人信服,讨论时,你也不会自行的说“我的分析是靠谱的”,很有可能被老板怼。

1. 基因差异表达分析 cummeRbund 和DESeq, edgeR, limma的区别是什么?(以前看过一篇别人比较的博文,“DEGseq无重复比较,DESeq有重复比较,edgR有无重复都可用,limma适于芯片,用前考虑batcheffect”,简单借用如下):

        四款软件的输入文件不一样,这是很自然的。每个软件都需要准备各自的输入文件,格式不同那个肯定的,内容不同那就是取决于软件怎么分析了。结果不一样也很自然。分析方法不一样,结果不可能完全一致。四款软件都是R bioconductor的包。

1)cummeRbund,有参转录组tuxedo组件之一。

tuxedo=tophat+cufflinks+cummeRbund,cummeRbund特别用于这个分析流程。每个都是一套礼服的一部分。

2)DESeq,EMBL开发的。当然还有个DESeq2。

3)edgeR,WEHI开发的。

4)limma,芯片分析用的。虽然手册有用于RNA-seq分析的章节,不过我没用过limma做RNA-seq的差异分析。

其中1,2,3三款软件都是用于测序数据。一般就是比较DESeq和edgeR。Nature protocols有[Count-based differential expression analysis of RNA sequencing data using R and Bioconductor](放一个能看的Count-based differential expression analysis of RNA sequencing…)由以上知,edgeR和DESeq用哪个都成。我是用edgeR,它的手册写得也足够好。

看了看别人的回答,发现FPKM是需要考虑的一点。

现在凡是用FPKM/RPKM求表达量的软件都别用了,只用拿TPM算的。具体原因见RSEM: accurate transcript quantification from RNA-Seq data with or without a reference genome;Measurement of mRNA abundance using RNA-seq data: RPKM measure is inconsistent among samples现在涉及表达量的软件一般都会转算TPM的。Ref:trinityrnaseq/trinityrnaseq转录本定量一节。

2.edgeR分析,glmQLFit还是glmLRT:

大神们在bioconductor和biostars上有激烈的讨论,https://support.bioconductor.org/p/68629/,内容很多,我总结了一些要点:

1)如果在比较差异的过程中考虑到存在一些多变的、不确定的因素,最好采用glmQLFit和glmQLFTest(即perform quasi-likelihood F-tests),这一方法适用于大多数分析(RNAseq、chip-seq,Hi-C)。

2)glmFit和glmLRT(即likelihood ratio tests),适用于无重复的差异比较。(实际上改参数对应的方法只用了卡方检验:chi-squared test)。

3)基于实验设计完善(一般基于很好的重复),有人提出了大多数情况下,glmQLFit and glmQLFTest优于glmLRT进行差异分析。只有少数没有重复存在的实验设计中,采用glmLRT(以先验估计拟合二项分布结合广义线性模型(GLMs)寻找差异基因)。

4)有人认为,表达量数据在ERCC normalization(External RNA Control Consortium,ERCC spike-in)之后(即使是在有重复的差异比较下),LRT(glmLRT)才是做差异分析更好的选择。然而在阅读了这篇文章(https://www.nature.com/articles/nbt.2931)之后,又有其他声音说ERCC normalization (for bulk RNA-seq data, presumably?) can yield odd behaviour prior to DE analyses。【涉及ERCC方法的这篇文章我稍后再来解读】。

3.总之:

做差异优先考虑DESeq2edgeR,且优先考虑使用glmQLFit,如果遇到miRNA(一般表达数目较少,相比于一般mRNA表达数目而言)分析或者没有重复的比较,则优先使用DEGseqglmLRT(edgeR)。前面还提到了batcheffect,对于这个问题,在做差异时设计好你的design即可;limma等removebatcheffect的结果适用于一些作图和展示,并不是用于差异分析!!!

相关文章

  • 13高通量测序-edgeR文库标准化

    edgeR文库标准化 编写DESeq2(和edgeR)的人意识到他们的工具将用于各种类型的数据集,所以他们希望他们...

  • edgeR

    edgeR 主要是利用了多组实验的精确统计模型或者适用于多因素复杂实验的广义线性模型。 前者叫做“经典edgeR”...

  • Netty中的那些坑

    转载自:http://www.cnblogs.com/rainy-shurun/p/5213086.html Ne...

  • WKWebView中的那些坑

    为了方便以后查询,收藏呼神的博客 前言 关于WKWebView的特性和使用方法就不多说了,网上有很多文章介绍,我在...

  • 装修中的那些坑

    装修是件很奇妙的事情,当你你瞅着自己的新家一点一点地呈现出来的时候,你会按耐不住地畅想着以后生活在里面的种种温馨和...

  • timer中的那些坑

    引言 我们在使用timer的时候多多少少都遇到过一些坑,今天就来说说timer使用中的那些坑 1.循环引用导致的内...

  • UIDevice

    记录UIDevice的属性和方法 其中,下面这个监听物理方向改变的通知有一个坑 可以参考iOS开发中屏幕旋转的那些坑

  • 屏幕适配的那些坑

    屏幕适配的那些坑 屏幕适配的那些坑

  • 学习日语已经遇到的和总会遇到的那些问题

    正在犹豫入坑日语学习的同学,或者已经入坑的同学,学习中已经遇到的和总会遇到的那些问题,今天我将对这些问题做个总结。...

  • UITableView嵌套WKWebView的那些坑

    UITableView嵌套WKWebView的那些坑 UITableView嵌套WKWebView的那些坑

网友评论

      本文标题:edgeR中的那些坑(glmQLFit和glmQLFTest)

      本文链接:https://www.haomeiwen.com/subject/ybaddhtx.html