bulk RNA-seq canonical workflow(salmon和subread)

References:

1.RNA-seq(4):Hisat2+FeatureCounts+DESeq2流程+作圖坐梯!

https://pzweuj.github.io/2018/07/18/rna-seq-4.html

2.一個(gè)植物轉(zhuǎn)錄組項(xiàng)目的實(shí)戰(zhàn)

http://www.bio-info-trainee.com/2809.html

3.RNA_seq(1)植物轉(zhuǎn)錄組差異基因分析簡單練習(xí)

http://www.reibang.com/p/7146d5c41294

Part I II 基本是照著做的徽诲,腳本會(huì)有一丟丟修改,之后吃飽了再弄吧

Part III:Featurecounts —>構(gòu)建dds object 吵血,獲得expression matrix

featureCounts完成生物學(xué)定量

featureCounts是一款可以進(jìn)行生物學(xué)定量的軟件谎替,它集成在subread的package里了

需要提供gtf格式的注釋或者SAF格式的注釋;

>gff3='/public/study/mRNAseq/tair/Arabidopsis_thaliana.TAIR10.28.gff3.gz'

>gtf='/public/study/mRNAseq/tair/Arabidopsis_thaliana.TAIR10.28.gtf.gz'

>featureCounts='/trainee/home/yjxiang/tools/subread-1.6.2-source/bin/featureCounts'

>nohup$featureCounts-T 5 -p -t exon -g gene_id -a$gtf-o /trainee/home/yjxiang/practice/subread_workflow/counts_out/counts_id.txt/trainee/home/yjxiang/practice/subread_workflow/mapping_out/*.bam & #掛在后臺(tái)即便網(wǎng)絡(luò)不穩(wěn)也可執(zhí)行,在提交程序和前臺(tái)運(yùn)行之間的選擇蹋辅!

會(huì)得到兩個(gè)文件钱贯,一個(gè)是結(jié)果count_id.txt,一個(gè)是結(jié)果的count_id.txt.summary侦另。
subread/featurecount 獲得的count_id.txt?

DESeq2差異基因分析

First step:獲取表達(dá)矩陣和分組信息

> library(DESeq2)

## 數(shù)據(jù)預(yù)處理

> sampleNames<-c('ERR1698194','ERR1698195','ERR1698196','ERR1698197')# 抽取前四列sample

>data <- read.table("count_id.txt", header=TRUE, quote="\t", skip=1)

>names(data)<-c('Geneid','Chr','Start','End','Strand','Length','ERR1698194','ERR1698195','ERR1698196','ERR1698197','ERR1698198','ERR1698199','ERR1698200','ERR1698201','ERR1698202','ERR1698203','ERR1698204','ERR1698205','ERR1698206','ERR1698207','ERR1698208','ERR1698209')#對(duì) 第一行重命名

# 前六列分別是Geneid Chr Start End Strand Length# 我們要的是count數(shù)秩命,所以從第七列開始

>names(data)[7:10] <- sampleNames

>countData<-as.matrix(data[7:10])#第七列開始是每個(gè)sample對(duì)應(yīng)的feature的counts,[前處sampleName命令有誤,與此提取數(shù)據(jù)不match]

#將數(shù)據(jù)轉(zhuǎn)換為矩陣格式

用featureCounts定量得到的counts_id.txt 褒傅,經(jīng)過格式處理之后得到表達(dá)矩陣:countdata:第一列是基因ID弃锐,之后的列都是樣本ID

每一行代表不同的基因在不同樣本中的表達(dá)量.

> rownames(countData)<-data$Geneid

> database <- data.frame(name=sampleNames)

#database設(shè)置分組信息

>database <- data.frame(name=sampleNames, condition=c('a','a','b','b'))

>rownames(database) <- sampleNames#database是一個(gè)二維矩陣,賦予列名

>colnames(countData)<-NULL

##Second step: 構(gòu)建dds對(duì)象

>dds <- DESeqDataSetFromMatrix(countData, colData=database, design= ~ condition)

> dds

class: DESeqDataSet?

dim: 33602 4?

metadata(1): version

assays(1): counts

rownames(33602): AT1G01010 AT1G01020 ...

? ATCG01300 ATCG01310

rowData names(0):

colnames(4): ERR1698194 ERR1698197

? ERR1698204 ERR1698207

colData names(2): name condition

> dds <- dds[ rowSums(counts(dds)) > 1, ]

## 使用DESeq函數(shù)估計(jì)離散度樊卓,然后差異分析獲得res對(duì)象

> dds<-DESeq(dds)#對(duì)原始的dds進(jìn)行標(biāo)準(zhǔn)化

>resultsNames(dds)#查看結(jié)果名稱

>res <- results(dds)#用results函數(shù)提取結(jié)果拿愧,并賦值給res變量

> summary(res) #查看結(jié)果

out of 21129 with nonzero total read count

adjusted p-value < 0.1

LFC > 0 (up)? ? ? ?: 76, 0.36%

LFC < 0 (down)? ? ?: 115, 0.54%

outliers [1]? ? ? ?: 0, 0%

low counts [2]? ? ?: 3687, 17%

(mean count < 12)

[1] see 'cooksCutoff' argument of ?results

[2] see 'independentFiltering' argument of ?results

>write.csv(res, "res_des_output.csv")

>resdata <- merge(as.data.frame(res), as.data.frame(counts(dds, normalized=TRUE)),by="row.names",sort=FALSE)

>write.csv(resdata, "all_des_output.csv", row.names=FALSE)

##Third step:提取結(jié)果并繪制火山圖

result.csv

Part VI: Drawing

> #提取差異基因!!!

> res <- res[order(res$padj),]

> resdata <-merge(as.data.frame(res),as.data.frame(counts(dds,normalize=TRUE)),by="row.names",sort=FALSE)

> deseq_res<-data.frame(resdata)

> up_diff_result<-subset(deseq_res,padj < 0.05 & (log2FoldChange > 1)) #提取上調(diào)差異表達(dá)基因

> down_diff_result<-subset(deseq_res,padj < 0.05 & (log2FoldChange < -1)) #提取下調(diào)差異表達(dá)基因

> write.csv(up_diff_result,"D:\\R.3.5.3\\上調(diào)_diff_results.csv") #輸出上調(diào)基因

> write.csv(down_diff_result,"D:\\R.3.5.3\\下調(diào)_diff_results.csv") #輸出下調(diào)基因

1.Valcano?火山圖 可以非常直觀且合理地篩選出在兩樣本間發(fā)生差異表達(dá)的基因

R script:

> library(ggplot2)

> # 這里的resdata也可以用res_des_output.csv這個(gè)結(jié)果重新導(dǎo)入哦杠河。

> # 現(xiàn)在就是用的前面做DESeq的時(shí)候的resdata碌尔。

> resdata$change <- as.factor(

+? ? ?ifelse(

+? ? ? ? ?resdata$padj<0.01 & abs(resdata$log2FoldChange)>1,

+? ? ? ? ?ifelse(resdata$log2FoldChange>1, "Up", "Down"),

+? ? ? ? ?"NoDiff"

+? ? ?)

+ )#確定統(tǒng)計(jì)學(xué)顯著性

> valcano <- ggplot(data=resdata, aes(x=log2FoldChange, y=-log10(padj), color=change)) +?

+? ? ?geom_point(alpha=0.8, size=1) +?

+? ? ?theme_bw(base_size=15) +?

+? ? ?theme(

+? ? ? ? ?panel.grid.minor=element_blank(),

+? ? ? ? ?panel.grid.major=element_blank()

+? ? ?) +?

+? ? ?ggtitle("DESeq2 Valcano") +?

+? ? ?scale_color_manual(name="", values=c("red", "green", "black"), limits=c("Up", "Down", "NoDiff")) +?

+? ? ?geom_vline(xintercept=c(-1, 1), lty=5, col="gray", lwd=0.5) +?

+? ? ?geom_hline(yintercept=-log10(0.01), lty=5, col="gray", lwd=0.5)

> valcano

2.PCA 主成分分析,把數(shù)據(jù)降維后進(jìn)行分析券敌,pc1和pc2是對(duì)整個(gè)數(shù)據(jù)集解釋程度貢獻(xiàn)率第一和第二的cluster唾戚,主成分。

R script:

> # library(ggplot2)

> rld <- rlog(dds)

> pcaData <- plotPCA(rld, intgroup=c("condition", "name"), returnData=T)

> percentVar <- round(100*attr(pcaData, "percentVar"))

> pca <- ggplot(pcaData, aes(PC1, PC2, color=condition, shape=name)) +?

+? ? ?geom_point(size=3) +?

+? ? ?ggtitle("DESeq2 PCA") +?

+? ? ?xlab(paste0("PC1: ", percentVar[1], "% variance")) +?

+? ? ?ylab(paste0("PC2: ", percentVar[2], "% variance"))

> pca

3.heatmap:熱圖實(shí)現(xiàn)基因表達(dá)模式可視化的需求待诅。 4個(gè)樣本的表達(dá)差異并不明顯叹坦,因?yàn)槲沂菑耐慌沃须S機(jī)抽取的無差別處理的4個(gè)samples。

Rscript:

>?library(pheatmap)

> select <- order(rowMeans(counts(dds, normalized=T)), decreasing=T)[1:1000]

> nt <- normTransform(dds)

> log2.norm.counts <- assay(nt)[select,]

> df <- as.data.frame(colData(dds)[, c("name", "condition")])

> pheatmap(log2.norm.counts, cluster_rows=T, show_rownames=F, cluster_cols=T, annotation_col=df, fontsize=6)

>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卑雁,一起剝皮案震驚了整個(gè)濱河市募书,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌测蹲,老刑警劉巖莹捡,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扣甲,居然都是意外死亡篮赢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來启泣,“玉大人涣脚,你說我怎么就攤上這事×让#” “怎么了遣蚀?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長纱耻。 經(jīng)常有香客問我妙同,道長,這世上最難降的妖魔是什么膝迎? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任粥帚,我火速辦了婚禮,結(jié)果婚禮上限次,老公的妹妹穿的比我還像新娘芒涡。我一直安慰自己,他們只是感情好卖漫,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布费尽。 她就那樣靜靜地躺著,像睡著了一般羊始。 火紅的嫁衣襯著肌膚如雪旱幼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天突委,我揣著相機(jī)與錄音柏卤,去河邊找鬼。 笑死匀油,一個(gè)胖子當(dāng)著我的面吹牛缘缚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敌蚜,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼桥滨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弛车?” 一聲冷哼從身側(cè)響起齐媒,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纷跛,沒想到半個(gè)月后喻括,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忽舟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年双妨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淮阐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刁品,死狀恐怖泣特,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挑随,我是刑警寧澤状您,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站兜挨,受9級(jí)特大地震影響膏孟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拌汇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一柒桑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧噪舀,春花似錦魁淳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纺座,卻和暖如春息拜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背净响。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國打工少欺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人别惦。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓狈茉,卻偏偏與公主長得像夫椭,于是被迫代替她去往敵國和親掸掸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容