limma包分析差异表达基因

limma利用广义线性模型进行差异表达基因分析,主要用于分析微阵列数据。

Data analysis, linear models and differential expression for microarray data.

1. 读入基因表达谱数据

exprSet <- read.delim(file)
# read.csv,read.table  或其他方式导入

2. 设计矩阵

group <- c(rep('normal',5),rep('tumor',6)) # mock
group = factor(group)
design <- model.matrix(~0+group)

## design <- model.matrix(~group) 
#含有差异比较,不需要比较矩阵(makeContrasts生成,不需要下面的fit2步骤

rownames(design) = colnames(exprSet)
colnames(design) <- levels(group)

3. 生成DGEList对象

dgelist <- DGEList(counts = exprSet, group = group)

4. 数据标准化、筛选

# 计算比例因子以将原始库大小转换为有效库大小。
dgelist <- calcNormFactors(dgelist)

# 筛选
keep_gene <- rowSums(cpm(dgelist) > 1 ) >= 2 # 自定义
table(keep_gene)
dgelist <- dgelist[keep_gene, , keep.lib.sizes = FALSE]

5. 差异表达基因分析

# RNA_seq数据需要counts转化,芯片数据不需要这一步
v <- voom(DGElist, design, plot = TRUE, normalize = "quantile")
fit <- lmFit(v, design)
cont.matrix <- makeContrasts(contrasts = c('grouptumor-groupnormal'), levels = design)

fit2 <- contrasts.fit(fit, cont.matrix)
fit2 <- eBayes(fit2)

nrDEG_limma_voom = topTable(fit2, coef = 'tumor-normal', n = Inf)
nrDEG_limma_voom = na.omit(nrDEG_limma_voom)
head(nrDEG_limma_voom)

voom: 将计数数据转换log2-counts per million (logCPM),估计均值-方差关系,并使用此关系计算适当的观察水平权重。然后,数据就可以进行线性建模了。

6. 提取差异表达基因

padj = 0.01 # 自定义
foldChange= 2 # 自定义
nrDEG_limma_voom_signif = nrDEG_limma_voom[(nrDEG_limma_voom$adj.P.Val < padj & 
                                              (nrDEG_limma_voom$logFC>foldChange | nrDEG_limma_voom$logFC<(-foldChange))),]
nrDEG_limma_voom_signif = nrDEG_limma_voom_signif[order(nrDEG_limma_voom_signif$logFC),]
save(nrDEG_limma_voom_signif, file = 'nrDEG_limma_voom_signif')

  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值