生物信息学入门 使用 RNAseq counts数据进行差异表达分析(DEG)——edgeR 算法 数据 代码 结果解读

本文主要是介绍生物信息学入门 使用 RNAseq counts数据进行差异表达分析(DEG)——edgeR 算法 数据 代码 结果解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       差异表达分析通常作为根据基因表达矩阵进行生物信息学分析的第一步,有助于我们观察基因在不同样本中的表达差异,从而确定要研究的基因和表型之间的联系。常用的基因表达数据来自基因芯片或高通量测序。虽然矩阵看起来差不多,但是由于服从不同的分布,因此在进行差异表达的时候需要用不同的方法。对于一般的生命科学领域科研人员来说,了解晦涩的算法并没有太大价值。本文力求精简,从数据——算法——结果三个方面给出最简单的示范。注意:文中代码仅适用于RNAseq的counts数据!使用的是edgeR算法!

1.数据准备

数据准备包括表达矩阵和分组矩阵。

表达矩阵:

分组矩阵:

第一列为样本名称,第二列为组名称,注意每一列都要有列名

2. 使用edgeR包进行差异分析

首先要安装edgeR包和gplots包

source("http://bioconductor.org/biocLite.R")
biocLite("edgeR")
biocLite("gplots")

读取数据

library("edgeR")
library('gplots')
setwd("C:/Users/lenovo/Desktop/sample")
foldChange=1 #fold change=1意思是差异是两倍
padj=0.05#padj=0.05意思是矫正后P值小于0.05
rt=read.csv("fpkm.csv",header=TRUE,row.names=1,check.names = FALSE)  
#读取矩阵文件,这是输入的数据路径,改成自己的文件名#
exp=as.matrix(rt) #转化为矩阵#
dimnames=list(rownames(exp),colnames(exp))
data=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)#15,16行意思是将带引号的数据转换成数值#
data=data[rowMeans(data)>1,] #去除低表达的数据#

读取分组矩阵

group <- read.csv("datTraits.csv",header=TRUE,row.names=1,check.names = FALSE)
group <- group[,1] #定义比较组,按照癌症和正常样品数目修改#
design <- model.matrix(~group) #把group设置成一个model matrix#

计算步骤

y <- DGEList(counts=data,group=group) #group哪些是正常,哪些是癌症样本,让edgeR可以识别#
y <- calcNormFactors(y) #对因子矫正#
y <- estimateCommonDisp(y)#25,26估计变异系数,即估计方差;估计内部差异程度,看组间差异是否比内部差异大,如果大,可选为差异基因#
y <- estimateTagwiseDisp(y)
et <- exactTest(y,pair = c("healthy","T2D"))
topTags(et) #预览结果
summary(de <- decideTestsDGE(et))  #结果的统计信息,基于FDR
ordered_tags <- topTags(et, n=100000)
allDiff=ordered_tags$table
allDiff=allDiff[is.na(allDiff$FDR)==FALSE,]
diff=allDiff
newData=y$pseudo.counts

输出结果

write.csv(diff, "edgerOut.csv")
diffSig = diff[(diff$FDR < padj & (diff$logFC>foldChange | diff$logFC<(-foldChange))),]#筛选有显著差异的#
#write.table(diffSig, file="diffSig.xls",sep="\t",quote=F)#输出有显著差异表达的到diffSig这个文件#
write.csv(diffSig, "diffSig.csv")
diffUp = diff[(diff$FDR < padj & (diff$logFC>foldChange)),]#foldchange>0是上调,foldchange<0是下调#
#write.table(diffUp, file="up.xls",sep="\t",quote=F)#39-42把上调和下调分别输入up和down两个文件#
write.csv(diffUp, "diffUp.csv")
diffDown = diff[(diff$FDR < padj & (diff$logFC<(-foldChange))),]
#write.table(diffDown, file="down.xls",sep="\t",quote=F)
write.csv(diffDown, "diffDown.csv")

差异表达矩阵制作教程:https://blog.csdn.net/tuanzide5233/article/details/83659768

差异表达的热图绘制详见:https://blog.csdn.net/tuanzide5233/article/details/83659501

使用limma包对基因芯片数据进行差异表达分析教程:https://blog.csdn.net/tuanzide5233/article/details/83541443

GEO芯片数据差异表达分析时需要log2处理的原因:https://blog.csdn.net/tuanzide5233/article/details/88542805

GEO芯片数据差异表达分析时是否需要log2以及标准化的问题:https://blog.csdn.net/tuanzide5233/article/details/88542558

 

 

这篇关于生物信息学入门 使用 RNAseq counts数据进行差异表达分析(DEG)——edgeR 算法 数据 代码 结果解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935922

相关文章

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映