表达差异基因分析
时间:2022-07-25
本文章向大家介绍表达差异基因分析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1安装BiocManage,再安装DESeq2包
> # <差异基因分析>
> # 1.判断是否有BiocManager包,若不存在则安装
> options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) #设置清华镜像,加速下载
>
> if (!requireNamespace("BiocManager", quietly = TRUE))
+ install.packages("BiocManager")
> if (!requireNamespace("DESeq2", quietly = TRUE))
+ BiocManager::install('DESeq2') #通过BiocManager安装DESeq2
> library(DESeq2) #加载library
2输入数据
> #输入数据要求
> # DEseq2要求输入数据是由整数组成的矩阵
> # DESeq2要求矩阵是没有标准化的,一定记住用readcount
>
> ##2.读入所有基因原始readscount表达矩阵,行为基因,列为样品
> A <- read.table(p, header = T, row.names = 1)
> B <- as.matrix(A) #转换成矩阵格式,保证都是数值
3实验分组信息
> coldata <- read.table("/home/shijm/Rlearning/R-Online-learning/data/sample_info.txt",header = T,row.names = 1)
> coldata <- coldata[, c("condition", "type")]
4.制作dds对象,构建差异基因分析所需的数据格式
> dds <- DESeqDataSetFromMatrix(countData = B, colData = coldata, design = ~ condition);
>
> # countData = B,readscount矩阵
> # colData = coldata,分组信息,根据这个才能在2组之间比较
> # design = ~ condition,公式,表示按照condition进行分析
5.差异分析结果
> dds <- DESeq(dds)
6.提取结果,在treated和untreated组进行比较
res <- results(dds, contrast = c("condition", "treated", "untreated"))
> resordered <- res[order(res$padj),] #按照矫正后的P-value padj从小到大排序
> sum(res$padj < 0.05, na.rm = TRUE) #总结padj小于0.05显著差异的基因
[1] 356
7.输出图片
plotMA(res) #画火山图,横轴是标准化后的平均readscount,纵轴是差异倍数,大于0是上调,小于0是下调,蓝色点表示显著差异的基因
8使用ggplot自己绘制火山图
> pvalue<-res$padj
> pvalue<-as.matrix(pvalue)
> fc<-res$log2FoldChange
> fc<-as.matrix(fc)
> df<-data.frame(pvalue,fc)
> df<-na.omit(df,cols=c("pvalue","fc")) 这里去掉pvalue或fc列有NA值得行
> df$threshold[df$pvalue < 0.05 & df$fc>0 ] = "up"
> df$threshold[df$pvalue < 0.05 & df$fc<0 ] = "down"
> df$threshold[df$pvalue > 0.05 & df$fc>=0|df$fc<=0 ] = "non"
>
> ggplot(df,aes(x=fc,y=-log10(pvalue)))+
+ xlab("log2 Fold Change")+ylab("-log10P-Value")+
+
+ geom_point(aes(color=threshold),size=1,alpha=0.6,)+
+
+ scale_color_manual(values=c("red","black","blue")) +
+
+ geom_hline(aes(yintercept=-log10(0.05)),colour="grey",size=1.2 ,linetype=2) + #增加水平间隔线
+
+ geom_vline(aes(xintercept=0), colour="grey",size=1.2 ,linetype=2)+ #增加垂直间隔线
+
+ theme_few()+theme(legend.title = element_blank()) #去掉网格背景和图注标签
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Pagerslidingtabstrip菜单标题栏制作方法
- Flink SQL 自定义 Sink
- RollViewPager图片轮播效果开源框架使用方法详解
- Nacos配置中心动态获取数组配置
- android 二次打包完成apk多渠道打包的方法
- Spring的异步线程处理
- R语言做正态性检验的一个小例子
- Springboot整合Redis缓存机制
- 5000字!带你零距离接触websocket!
- 最小堆与索引堆
- Android实现状态栏白底黑字效果示例代码
- Spring的任务调度处理
- Android设计模式之Builder模式解析
- 避免在 JS 中过多使用 IF 语句优化技巧
- Linux基础:磁盘管理