rm(list = ls())
library(DESeq2)
library(tidyverse)
library(pheatmap)
library(vioplot)
library(BiocParallel)
rt <- data.table::fread("F:/TCGA-counts/HTSeq_Counts_PRAD.txt",data.table = F) %>%
column_to_rownames("Tags")
metadata <- data.frame(TCGA_id=colnames(rt),
sample=factor(ifelse(str_sub(colnames(rt),14,15)<10,"tumor","normal"),levels = c("normal","tumor"))) #分組信息
################################################################################
#1.核心環節:構建dds對象
###必備條件:countData, colData(分組信息)。
### 不是配對:design = ~grouplist
### 第一列如果有基因名稱,tidy=TRUE
dds <- DESeqDataSetFromMatrix(countData = rt,
colData = metadata,
design = ~sample)
dds <- dds[rowSums(counts(dds))>1,] # 過濾原則:有原則是某基因在所有樣本中的read counts之和小于樣本總數(樣本均read counts<1)則去除。
nrow(dds)
vsd <- vst(dds,blind = F) #數據標準化,去除批次
exprSet_vst <- as.data.frame(assay(vsd)) #assay提取vst標準化后的數據,用于表達量作圖、熱圖等
plotPCA(vsd,"sample")
View(dds)
#2. 計算差異倍數及p值
dds <- DESeq(dds,parallel = T)
#3.logFC矯正
contrast <- c("sample","tumor","normal")
dd1 <- results(dds,contrast,alpha = 0.05)
plotMA(dd1,ylim=c(-5,5))
dd2 <- lfcShrink(dds,contrast = contrast,res=dd1,type = "ashr")
plotMA(dd2,ylim=c(-5,5))
res <- dd2 %>%
as.data.frame() %>%
rownames_to_column("gene_id")
# 4.id轉換
anno <- data.table::fread("F:/TCGA-anno/gencode.v22.annotation.gene.probeMap",data.table = F) %>%
select(id,gene)
res1 <- anno %>%
inner_join(res,by=c("id"="gene_id"))
write.table(res1,file = "diff-tcga-prad.txt",sep = "\t",row.names = F,col.names = T,quote = F)
save(exprSet_vst,file = "vst-tcga-prad.Rdata")
logFC矯正還是很有作用的嘛
果子洲更老師強烈推薦的lfcShrink
聲明:本文僅供學習交流用,禁止用于商業用途,如有侵權,請聯系刪除。
參考鏈接:
wx:喜大普奔,Deseq2重大升級,速度提升了60倍!(果子學生信)
wx:學好統計,我10分鐘就完成了別人服務器通宵才完成的分析。(果子學生信)