三种方法任选1个,或者三个全选
##deseq2处理(DEG为标注化后的exp,并且添加了change列,用来质控数据)
rm(list = ls())load("TCGA-HNSC.Rdata")table(Group)#deseq2----library(DESeq2)colData <- data.frame(row.names =colnames(exp),condition=Group)if(!file.exists(paste0(proj,"_dd.Rdata"))){dds <- DESeqDataSetFromMatrix(countData = exp,colData = colData,design = ~ condition)dds <- DESeq(dds)save(dds,file = paste0(proj,"_dd.Rdata"))}load(file = paste0(proj,"_dd.Rdata"))class(dds)res <- results(dds, contrast = c("condition",rev(levels(Group))))c("condition",rev(levels(Group)))class(res)DEG1 <- as.data.frame(res)DEG1 <- DEG1[order(DEG1$pvalue),]DEG1 = na.omit(DEG1)head(DEG1)#添加change列标记基因上调下调logFC_t = 2pvalue_t = 0.05k1 = (DEG1$pvalue < pvalue_t)&(DEG1$log2FoldChange < -logFC_t);table(k1)k2 = (DEG1$pvalue < pvalue_t)&(DEG1$log2FoldChange > logFC_t);table(k2)DEG1$change = ifelse(k1,"DOWN",ifelse(k2,"UP","NOT"))table(DEG1$change)head(DEG1)
edgeR处理
library(edgeR)dge <- DGEList(counts=exp,group=Group)dge$samples$lib.size <- colSums(dge$counts)dge <- calcNormFactors(dge)design <- model.matrix(~Group)dge <- estimateGLMCommonDisp(dge, design)dge <- estimateGLMTrendedDisp(dge, design)dge <- estimateGLMTagwiseDisp(dge, design)fit <- glmFit(dge, design)fit <- glmLRT(fit)DEG2=topTags(fit, n=Inf)class(DEG2)DEG2=as.data.frame(DEG2)head(DEG2)k1 = (DEG2$PValue < pvalue_t)&(DEG2$logFC < -logFC_t);table(k1)k2 = (DEG2$PValue < pvalue_t)&(DEG2$logFC > logFC_t);table(k2)DEG2$change = ifelse(k1,"DOWN",ifelse(k2,"UP","NOT"))head(DEG2)table(DEG2$change)
limma处理
library(limma)dge <- DGEList(counts=exp)dge <- calcNormFactors(dge)v <- voom(dge,design, normalize="quantile")design <- model.matrix(~Group)fit <- lmFit(v, design)fit= eBayes(fit)DEG3 = topTable(fit, coef=2, n=Inf)DEG3 = na.omit(DEG3)k1 = (DEG3$P.Value < pvalue_t)&(DEG3$logFC < -logFC_t);table(k1)k2 = (DEG3$P.Value < pvalue_t)&(DEG3$logFC > logFC_t);table(k2)DEG3$change = ifelse(k1,"DOWN",ifelse(k2,"UP","NOT"))table(DEG3$change)head(DEG3)
组合三种数据并保存
tj = data.frame(deseq2 = as.integer(table(DEG1$change)),edgeR = as.integer(table(DEG2$change)),limma_voom = as.integer(table(DEG3$change)),row.names = c("down","not","up"));tjsave(DEG1,DEG2,DEG3,Group,tj,file = paste0(proj,"_DEG.Rdata"))
