edgeR进行差异分析

该文展示了如何利用R语言中的tidyverse和edgeR包对基因表达数据进行预处理、差异分析。首先,读取并处理数据,然后构建分组信息。接着,通过DGEList对象、CPM过滤、TMM标准化等步骤进行数据预处理。最后,运用glmFit和glmQLFit进行模型拟合,筛选出差异表达基因,并输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##  1、准备数据
##########
library(tidyverse)
library(readr)
count <- read_delim("~/Program/Penaeus_chinensis/data/expression_matrix/count.tsv", 
                    delim = "\t", escape_double = FALSE, 
                    trim_ws = TRUE)
gene_exp = column_to_rownames(count,var = "gene_id")

library(tidyverse)
name = c()
for (m in c("FCN25_","FCN10_","FCM25_","FCM10_")) {
  for (i in 1:6) {
    name1 = str_c(m,i)
    name = c(name,name1)
  }
}
gene_exp = gene_exp %>% dplyr::select(name)


##  2、进行edgeR差异分析
##########
#1)构建分组信息
condition_edger <-factor(c(rep('normal',12),rep('moribund',12)))

library(edgeR)

#2)数据预处理
#(1)构建 DGEList 对象
dgelist <- DGEList(counts = gene_exp, group = condition_edger)

#(2)过滤 low count 数据,例如 CPM 标准化(推荐)
keep <- rowSums(cpm(dgelist) > 1 ) >= 2
dgelist <- dgelist[keep, , keep.lib.sizes = FALSE]

#(3)标准化,以 TMM 标准化为例
dgelist_norm <- calcNormFactors(dgelist, method = 'TMM')

#差异表达基因分析
#首先根据分组信息构建试验设计矩阵,分组信息中一定要是对照组在前,处理组在后
design <- model.matrix(~condition_edger)

#(1)估算基因表达值的离散度
dge <- estimateDisp(dgelist_norm, design, robust = TRUE)

#(2)模型拟合,edgeR 提供了多种拟合算法(示例两种任选一种)
#负二项广义对数线性模型
fit <- glmFit(dge, design, robust = TRUE)
lrt1 <- topTags(glmLRT(fit), n = nrow(dgelist$counts))

#拟似然负二项广义对数线性模型
fit <- glmQLFit(dge, design, robust = TRUE)
lrt2 <- topTags(glmQLFTest(fit), n = nrow(dgelist$counts))

lrt1$table %>% filter(abs(logFC)>1 &FDR <0.05) %>% nrow()
lrt2$table %>% filter(abs(logFC)>1 &FDR <0.05) %>% nrow()
write_tsv(lrt$table %>% rownames_to_column(var = "gene_id"),file = "~/Program/shrimp/data/edgeR_result")

在RStudio中使用edgeR进行差异表达分析,首先你需要准备符合edgeR输入格式的数据集。边缘R(edgeR)是一个专为RNA-seq等高通量测序数据分析设计的R包,用于转录本水平的差异表达分析。 对于你描述的数据结构,应该按照以下步骤操作: 1. **数据预处理**: - 确保数据已经整理成合适的形式,每行代表一条转录本(基因),每列是某个样品的读数(通常是对数转换后的CPM值或FPKM值)。你可以使用`read.table()`或者`read.csv()`函数将CSV或TXT文件导入到R中,假设文件名为"your_data.txt"。 2. **分组设置**: - 根据你的描述,对照组和实验组分别放在不同的列,例如对照组可以用列名`group1`, `group2`, ..., 对应于第2、3、4列;实验组则用`group6`, `group7`, ..., 对应于第7、8、9...列。创建因子变量`condition`,表示每个样本属于对照还是实验组。 ```r data <- read.table("your_data.txt", header = TRUE) condition <- factor(c(rep("control", ncol(data) / 2), rep("treatment", ncol(data) / 2))) ``` 3. **创建DGEList对象**: - 使用`DGEList()`函数将数据和条件信息合并,这将是edgeR分析的基础。 ```r dge <- DGEList(counts = data[,-c(1)], group = condition) ``` 4. **数据质量控制**: - 检查缺失值、异常值以及数据分布的正态性和均一性。可以使用`plot(dge)`进行初步检查。 5. **归一化和截断**: - 调整计数矩阵,如使用TMM(Trimmed Mean of M-values)方法进行归一化,并对数据进行截断以减少噪声。 ```r dge <- calcNormFactors(dge) dge <- estimateCommonDisp(dge) dge <- estimateTagwisedisp(dge) dge <- normalizeBetweenArrays(dge) ``` 6. **差异分析**: - 使用`exactTest()`进行精确的负二项检验,得到统计显著性和p值。 ```r fit <- glmQLFit(dge, design=design) topTags(fit, n=nrow(dge)) ``` 7. **多重比较校正**: - 应对多个检验结果进行校正,例如FDR(False Discovery Rate)或BH方法。 ```r res <- decideTests(fit) results <- topTable(res, n=nrow(dge), adjust="fdr") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘融晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值