有参转录组学习六:差异表达分析

Author:ligc

Date:19/5/18

DEG differential expression genes

input1 input2
GeneA: input1-reads count input2-reads count

fold change = input2-reads count / input1-reads count

问题1. 测序量是否一致 :测序量,矫正测序量,normalization

1.1 quantile,1.2 genometry, 1.3 traditional

问题2 怎么去衡量,哪个才是真正显著的基因?

200000 -> 250000 ; 2000 -> 2500; 200 -> 250
哪个才是显著差异的?

基本假设:

1. 大部分的gene表达量不变;
2. 高表达的gene表达量不变;

1.为什么大多数基因表达量不变?

p-value

H0: 两者没有差异;
H1:两者有差异;
统计量x,a=0.05,肯定H0或者否定H1;
input1,2000,input2, 2500,p-value = 0.001
p-value < 0.05 , 小概率事件;单次实验不发生;否定H0;有差异

为什么高表达的gene表达量不变?

因为如果高表达基因表达量发生变化则会影响其他基因表达量也发生变化

input1; geneA,B,C 200 = 150 + 25 + 25
input2; geneA,B,C 200 = 130 + 35 + 35

问题3

如果高表达的基因变了怎么办?

如果大多数表达的基因变了怎么办?

3.1 掺入spike-in(针对以上两种情况)

3.2 house keeping gene进行校正(针对高表达基因)

bioinformatics

核心是为了降噪!而不是提高噪音!
we do not need bioinfor magics

cuffdiff pipeline

FASTQ-reads -> mapping (HISAT2,tophat2) -> BAM -> cuffdiff -> DEGs(FPKM)

DESeq2 pipeline

FASTQ-reads -> mapping (HISAT2,tophat2) -> BAM -> Gene Raw Reads Count -> find DEGs in R (No FPKM)

泊松分布

不太常见的事情发生的次数

比如被雷劈

lambda, E,Var

负二项分布

两盒火柴,A,B,随机取光一盒火柴所用的次数X
sum(A,B) >= X >= min(A,B)
类比于:
reads落在gene1上的概率,即reads_count符合negative binomial distribution
gene1, non-gene1
TPM = 1E6 * FPKM / total FPKM

DESeq2

基本流程:

输入数据:

表达矩阵、样品信息矩阵、差异比较矩阵

步骤:
  • 构建一个dds(DESeqDataSet)的对象

  • 利用DESeq函数进行标准化处理

  • 用result函数来提取差异比较的结果


    Import

构建dds矩阵

dds <- DESeqDataSetFromMatrix(countData = cts, colData = coldata, design= ~ batch + condition)

表达矩阵:即countData,就是通过之前的HTSeq-count生成的reads-count计算融合的矩阵。行为基因名,列为样品名,值为reads或fragment的整数。
样品信息矩阵:即代码中的colData,它的类型是一个dataframe(数据框),第一列是样品名称,第二列是样品的处理情况(对照还是处理等)。可以从表达矩阵中导出或是自己单独建立。
差异比较矩阵:即代码中的design,差异比较矩阵就是告诉差异分析函数哪些是对照,哪些是处理。

library(tidyr)
library(DESeq2)
rm(list = ls())
getwd()
list.files()
count_tab = read.table("merge_count.matrix",header =T)# ,row.name =1

count_tab <- separate(count_tab,gene_id,into = "gene_id",sep = "[.]")

rownames(count_tab) = count_tab$gene_id
count_tab = count_tab[,-c(1)]

colData = read.table("SRR_Acc_List_sample.txt",header = T)

colData$condition = factor(colData$condition,c("control","Akap95"))

dds <- DESeqDataSetFromMatrix(countData = count_tab,
                              colData = colData,
                              design= ~ condition)
dds <- DESeq(dds)
resultsNames(dds) # lists the coefficients
res <- results(dds, name="condition_Akap95_vs_control")
res = res[order(res$padj), ]
resDF = as.data.frame(res)
resDF$gene_id = rownames(resDF)
resDF = resDF[ ,c(7,1,2,3,4,5,6)]
##cbind
#resDF <- cbind("gene_id"=rownames(resDF),resDF)
DEG_list <- subset(resDF,padj<0.05 &abs(log2FoldChange)>1)
write.table(DEG_list,file = "mouse_DEG_list",row.names = F,sep = "\t",quote = F)
write.table(resDF,file = "mouse_Akap95_DEG.tab",sep = "\t",quote = FALSE,row.names = FALSE)
# or to shrink log fold changes association with condition:
res <- lfcShrink(dds, coef="condition_Akap95_vs_control", type="apeglm")
## PCA plot
library(ggplot2)
vsd <- vst(dds, blind=FALSE)
pcaData <- plotPCA(vsd, intgroup=c("condition"), returnData=TRUE)
percentVar <- round(100 * attr(pcaData, "percentVar"))
plot_Fig = ggplot(pcaData, aes(PC1, PC2, color=condition)) +
  geom_point(size=3) +
  xlab(paste0("PC1: ",percentVar[1],"% variance")) +
  ylab(paste0("PC2: ",percentVar[2],"% variance")) + 
  coord_fixed()
ggsave(plot_Fig,filename = "mouse_DEseq2_PCA.pdf")
# plotPCA(vsd, intgroup=c("condition", "type"))
## MA plot
pdf("mouse_MAplot.pdf")
plotMA(res, ylim=c(-2,2))
dev.off()

MA_plot

mean of normalized counts 表示经过标准化后的平均reads count。
log fold change 基因表达量的倍数变化。
PCA

heatmap

参考文章:

1.https://www.jianshu.com/p/26511d3360c8
2.https://www.jianshu.com/p/5f94ae79f298
3.https://www.bilibili.com/video/av19929350

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容