生信 | ATAC-Seq基礎分析+高級分析+多組學分析

寫在前面

  • 其實很多作者已經探索的差不多了闪檬,相關腳本、教程也很多氛悬,但我還是自己系統(tǒng)的總結一下吧则剃。有時候感覺是浪費時間,但是在寫的時候能發(fā)現并學習到很多新的知識如捅,不斷記錄反思棍现,也算是對自己這段時間的學習成果有個交代。但由于我是初學者镜遣,還望各位不吝賜教己肮。

ATAC-seq的首次提出:【文章原文】【scATAC原文】
ATAC-seq植物界的里程碑:【文章原文】【中文解讀】
ATAC-seq針對不同植物物種進行研究:【文章原文】【中文解讀】
ATAC-seq針對不同植物組織進行研究:【文章原文】【中文解讀】
ATAC-seq針對不同處理條件進行研究:【文章原文】【中文解讀】
ATAC-seq生信分析方法綜述:【文章原文】【中文解讀1】【中文解讀2】
ATAC-seq基礎原理一文了解:【一文了解ATAC-seq】

一、基礎知識

1. 解密表觀遺傳學的三個方向與測序方法

  • 1. 探索染色質的開放性(chromatin accessibility)
    ATAC-seq: Assay of Transposase Accessible Chromatin sequencing
    DNase-seq: DNase I hypersensitive sites sequencing
    FAIRE-seq: Formaldehyde-Assisted Isolation of Regulatory Elements sequencing
  • 2. 探索轉錄因子的綁定與組蛋白修飾(TF binding and histone modifications)
    ChIP-seq: Chromatin Immuno-Precipitation sequencing
  • 3. 探索核小體占位(nucleosome positioning and occupancy)
    MNase-seq: Micrococcal Nuclease sequencing

2. 名詞解釋

  • epigenetics:表觀遺傳學悲关。表觀遺傳學修飾在不改變DNA序列的情況下控制著基因的表達谎僻,包括染色質重塑、組蛋白修飾寓辱、DNA甲基化和microRNA通路等
  • peaks: 峰艘绍。常用來表示染色質的開放程度,因為是測序的reads落在了染色質的開放區(qū)秫筏,堆疊后被可視化的一種豐度的體現诱鞠。
  • THSs: 轉座酶超敏感位點(transposase hypersensitive sites)挎挖。
  • CREs: 順式調控元件(cis-regulatory elements)。即DNA分子中具有轉錄調節(jié)功能的特異DNA序列航夺。按功能特性蕉朵,真核基因順式作用元件分為啟動子增強子沉默子阳掐。
  • ACRs: 染色質開放區(qū)域(accessible chromatin regions)始衅。即正常或核小體被酶切裸露出來的DNA片段所在的區(qū)域锚烦。這篇【NP | 2019】根據ACRs距離最近基因的距離將ACRs分為三種類型:genic (gACRs; overlapping a gene), proximal (pACRs; within 2?kb of a gene) or distal (dACRs; >2?kb from a gene),分別是跨越基因的帝雇,近端的涮俄,遠端的染色質開放區(qū)。
  • transposon: 轉座子尸闸。一段可以從原位上單獨復制或斷裂下來彻亲,環(huán)化后插入另一位點,并對其后的基因起調控作用的DNA序列吮廉。戳看轉座子科普
  • promoter: 啟動子苞尝。啟動子是位于結構基因5'端上游的DNA序列,能活化RNA聚合酶宦芦,使之與模板DNA準確的結合并具有轉錄起始的特異性宙址。每個啟動子包括至少一個轉錄起始點以及一個以上的功能組件(典型的如TATA盒子)
  • proximal promoters: 近端啟動子。是DNA上位于基因開始之前的一個區(qū)域调卑,在那里蛋白質和其他分子結合在一起準備讀取該基因抡砂。
  • enhancer: 增強子。增強子是遠離轉錄起始點恬涧、決定基因的時間注益、空間特異性表達、增強啟動子轉錄活性的DNA序列溯捆,其發(fā)揮作用的方式通常與方向丑搔、距離無關,可位于轉錄起始點的上游或下游提揍。從功能上講啤月,沒有增強子存在,啟動子通常不能表現活性劳跃;沒有啟動子時顽冶,增強子也無法發(fā)揮作用。
  • TFs: 轉錄因子(transcription factors)是保證目的基因以特定的強度在特定的時間與空間表達的蛋白質分子售碳。與RNA聚合酶Ⅱ形成轉錄起始復合體强重,共同參與轉錄起始的過程绞呈。
  • TSS: 轉錄起始位點(transcription start site)。在一個典型的基因內部间景,排列順序為轉錄起始位點(TSS佃声,一個堿基)-起始密碼子編碼序列 (ATG)-終止密碼子編碼序列(TGA)-轉錄終止位點 (TTS),即TSS-ATG-TGA-TTS
  • histone:組蛋白倘要。通常含有H1圾亏,H2A,H2B封拧,H3志鹃,H4等5種成分,其中H1與H3極度富含賴氨酸(lysine)泽西,H1不保守曹铃,其他組蛋白的基因非常保守。除H1外捧杉,其他4種組蛋白均分別以二聚體(共八聚體)相結合陕见,形成核小體核心。DNA便纏繞在核小體的核心上味抖。而H1則與核小體間的DNA結合
  • nucleosome: 核小體评甜。是由DNA和組蛋白形成的染色質基本結構單位。每個核小體由146bp的DNA纏繞組蛋白八聚體1.75圈形成仔涩。核小體核心顆粒之間通過50bp左右的連接DNA相連忍坷,暴露在核小體表面的DNA能被特定的核酸酶接近并切割
  • H3K4me1: 組蛋白H3上的第4位賴氨酸發(fā)生單甲基化(mono-methylation of H3 at lysine 4) (NG | H3K4me1與增強子的關系)
  • H3K9ac:組蛋白H3上的第9位賴氨酸發(fā)生乙酰化(H3 acetylation marks at lysine 9)關于H3K4me1與H3K9ac的不同熔脂,依舊可以參考這篇文獻【NP | 2019】【NC | 2019】
  • 組蛋白甲基化:甲基化可發(fā)生在組蛋白的賴氨酸和精氨酸殘基上承匣,而且賴氨酸殘基能夠發(fā)生單、雙锤悄、三甲基化韧骗,而精氨酸殘基能夠單、雙甲基化零聚,這些不同程度的甲基化極大地增加了組蛋白修飾和調節(jié)基因表達的復雜性
  • 組蛋白乙跖郾化:四種類型的組蛋白相互作用,將細胞核里的DNA緊緊地包裝起來隶症。這樣的緊密包裝能夠有效阻止酶讀取DNA上的遺傳信息政模。然而,乙趼旎幔基連到組蛋白上能削弱它們對DNA的占據淋样。因此局部乙酰化能暴露出相應的基因胁住,讓它們更容易激活
    真核生物細胞核內染色質結構

二趁猴、基礎分析

1. 分析前的準備

1.1 下載ATAC測序數據(或者用你自己的數據也行)
# 提取100w條reads代碼
ls *gz|while read id;do zcat $id|head -4000000|gzip > ./100/${id};done
image.png
1.2 下載tair10基因組與gff3注釋文件
wget https://www.arabidopsis.org/download_files/Genes/TAIR10_genome_release/TAIR10_chromosome_files/TAIR10_chr_all.fas
wget https://www.arabidopsis.org/download_files/Genes/TAIR10_genome_release/TAIR10_gff3/TAIR10_GFF3_genes_transposons.gff
# 改名
mv TAIR10_chr_all.fas TAIR10_genome.fa
mv TAIR10_GFF3_genes_transposons.gff TAIR10.gff3
1.3 安裝miniconda
1.4 所需軟件安裝(分析中所用到的軟件都匯集于此垢粮,下文不再介紹如何下載)\color{red}{請先激活conda環(huán)境再安裝L臁!W愣粱腻!}
conda install -c bioconda -y fastqc
conda install -c bioconda -y trimmomatic
conda install -c bioconda -y bwa
conda install -c bioconda -y samtools
conda install -c bioconda -y picard
conda install -c bioconda -y macs2
conda install -c bioconda -y bedtools
conda install -c bioconda -y deeptools
conda install -c bioconda -y homer

\color{red}{后續(xù)分析是使用SRR7512044用做測試(如下)庇配,但思路和方法都可以借鑒}

測試數據

2. 測序質量檢測

fastqc -t 8 -o ./ *.fastq.gz

-t: 線程
-o: 存放路徑斩跌,不用指定前綴,默認為.fastq.gz前面的字段
*.fastq.gz: fastqc可以同時接受多個fastq.gz文件捞慌,因此采用正則表達式【*】表示全部

  • 結果解讀
    由于開始測序時不準確耀鸦,因此前15bp左右的ATGC含量有波動,需要在后面截掉啸澡。而最長reads為76bp袖订,則暗示著我最后至少要保留多長的序列。
    一般我的計算思路是:保留的序列長度 =(最長的的reads長度-前面波動的堿基長度)× 40%

2. 測序質量檢控制

  • 所需軟件:Trimmomatic【官方網站】【中文介紹】
    其實這批數據已經做過質控了嗅虏,如何判斷的呢洛姑?QC的為一個范圍且短于提供給NCBI上的數據。因此我們沒必要質控皮服,但為了流程的完整性楞艾,還是假裝質控一下。質控之后龄广,還要進行質檢硫眯,如此循環(huán),直到合格择同。
# 定義一些變量两入,后面修改起來方便
filename=SRR7512044

trimmomatic PE -threads 10 \
./${filename}_1.fastq.gz ./${filename}_2.fastq.gz \
./${filename}_1.clean.fq.gz ./${filename}_1.drop.fq.gz \
./${filename}_2.clean.fq.gz ./${filename}_2.drop.fq.gz \
HEADCROP:15 LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:24

PE: 雙端模式。需要兩個輸入文件敲才,正向測序序列和反向測序序列:sample_R1.fastq.gzsample_R2.fastq.gz裹纳;
以及四個輸出文件:sample_1.clean.fq.gzsample_1.drop.fq.gz择葡;sample_2.clean.fq.gzsample_2.drop.fq.gz
-threads: 線程數
HEADCROP: 從 reads 的開頭切掉指定數量的堿基,即從fastqc中看的
LEADING: 從 reads 的開頭切除質量值低于閾值的堿基
TRAILING: 從 reads 的末尾開始切除質量值低于閾值的堿基
SLIDINGWINDOW: 從 reads 的 5' 端開始痊夭,進行滑窗質量過濾刁岸,切掉堿基質量平均值低于閾值的滑窗
MINLEN: 如果經過剪切后 reads 的長度低于閾值則丟棄這條 reads,即上面的計算方法:(76-15)×40%≈24

3. 建立索引與序列比對

bwa index -p /路徑/bwaIndexTair /路徑/TAIR10_genome.fa

-p: 索引前綴疏哗,后綴自動補充
TAIR10_genome.fa: 基因組文件

  • 序列比對
    由于sam文件較大,因此我們直接跳過sam禾怠,使用samtools轉換為排序后的bam文件返奉,注意【|】不要漏掉,且排序是依據reads比對到基因組的位置排的
# 定義一些變量吗氏,后面用
filename=SRR7512044
index=/路徑/bwaIndexTair

bwa mem -M -t 8 \
-R "@RG\tID:${filename}\tSM:${filename}\tLB:WXS\tPL:Illumina" \
$index \
${filename}_1.clean.fq.gz \
${filename}_2.clean.fq.gz \
| samtools sort -O bam -@ 10 -o ./${filename}.raw.bam
#無論干啥芽偏,生成bam文件后就要建立bam索引,并檢查比對情況
samtools index -@ 10 -b ./${filename}.raw.bam
samtools flagstat ./${filename}.raw.bam > ./${filename}.raw.stat
cat ${filename}.raw.stat

-M: 將 shorter split hits 標記為次優(yōu)弦讽,以兼容 Picard’s markDuplicates 軟件
-R: STR 完整的read group的頭部污尉,可以用 '\t' 作為分隔符, 在輸出的SAM文件中被解釋為制表符TAB. read group 的ID往产,會被添加到輸出文件的每一個read的頭部被碗,強推去看關于-R的解釋【-R的使用】
-O: 表示輸出的bam文件
-o: 輸出的bam文件名
-t@: 線程數

  • 關于stat中內容的解釋如下
14608455 + 0 in total (QC-passed reads + QC-failed reads) reads總數
37967 + 0 secondary                                       出現比對到參考基因組多個位置的reads數
0 + 0 supplementary                                       可能存在嵌合的reads數
0 + 0 duplicates                                          重復的reads數
14590894 + 0 mapped (99.88% : N/A)                        比對到參考基因組上的reads數
14570488 + 0 paired in sequencing                         屬于PE read的reads總數。
7285244 + 0 read1                                         PE read中Read 1 的reads 總數仿村。
7285244 + 0 read2                                         PE read中Read 2 的reads 總數锐朴。
14507068 + 0 properly paired (99.56% : N/A)               完美比對的reads總數。PE兩端reads比對到同一條序列蔼囊,且根據比對結果推斷的插入片段大小符合設置的閾值焚志。
14551500 + 0 with itself and mate mapped                  PE兩端reads都比對上參考序列的reads總數。
1427 + 0 singletons (0.01% : N/A)                         PE兩端reads压真,其中一端比上娩嚼,另一端沒比上的reads總數。
26260 + 0 with mate mapped to a different chr             PE read中滴肿,兩端分別比對到兩條不同的序列的reads總數岳悟。
17346 + 0 with mate mapped to a different chr (mapQ>=5)   PE read中,兩端分別比對到兩條不同

4. 去除PCR重復并再次進行質控

picard MarkDuplicates \
REMOVE_DUPLICATES=true \
I=${filename}.raw.bam \
O=${filename}.rmdup.bam \
M=${filename}.rmdup.log
# 實時監(jiān)測我們的數據發(fā)生了什么變化
samtools index ${filename}.rmdup.bam
samtools flagstat ${filename}.rmdup.bam > ./${filename}.rmdup.stat

REMOVE_DUPLICATES=true: 表示將檢測出的PCR duplication直接去除普碎;
I: 或者INPUT指定輸入的bam文件;
O: 或者OUTPUT指定輸出去除PCR duplication的bam文件录平;
M: 或者METRICS_FILE指定輸出的matrix log文件麻车。

  • 下面是再次進行質控
samtools view -h -f 2 -q 30 ${filename}.rmdup.bam \
| grep -v -e "mitochondria" -e "*" -e "chloroplast" \
| samtools sort -O bam -@ 10 -o - > ${filename}.last.bam
# 實時監(jiān)測我們的數據發(fā)生了什么變化
samtools index ${filename}.last.bam
samtools flagstat ${filename}.last.bam > ./${filename}.last.stat

-h: 輸出的sam文件帶header,默認不帶
-f: 輸出含有所有flag的reads
-q 比對的最低質量值斗这,一般20/30都可以
其他參數介紹看 samtools 使用簡述动猬,需要說明的是由于比對到線粒體和葉綠體的reads不是我們關注的重點,因此使用grep剔除掉表箭,當然了赁咙,做動物的話需要剔除什么視情況而定了。

  • 好了免钻,下面來看看我們的數據從\color{red}{raw→rmdup→last}到底發(fā)生了那些變化
  • 然后彼水,從IGV看看發(fā)生了什么變化
    關于使用IGV查看bam文件中reads呈現不同顏色的說明,請參考:【玩轉基因組瀏覽器之IGV展示bam文件】

5. 統(tǒng)計過濾后的結果中Insertsize長度分布

  • 所需軟件:picard【官方網站】【中文介紹】
    Insertsize =(read2的比對位點 - read1的比對位點)+ read2的長度极舔。也可以隨便點擊上圖IGV中任一一條reads查看插入片段的大小
picard CollectInsertSizeMetrics \
I=./${filename}.last.bam \
O=./${filename}.last.insertsize \
H=./${filename}.last.hist.pdf

有關下圖的介紹凤覆,請看【給你bam文件,你會畫插入片段長度分布圖嗎姆怪?】

5. \color{red}{peaks\ calling}與FRiP_score/SPOT_score的計算

effective_genome_size=119481543

bedtools bamtobed -i ${filename}.last.bam > ${filename}.last.bed
macs2 callpeak \
-t ${filename}.last.bed \
-g ${effective_genome_size} \
--nomodel --shift -100 --extsize 200 \
-n ${filename}.last \
-q 0.01 --outdir ./peaks
  • 其實步鉴,這里面討論最多的是--nomodel --shift -100 --extsize 200這些參數如何選擇揪胃,下面的圖很形象的展示了參數的作用。當然氛琢,我也是查閱了很多資料與文獻喊递,一般默認在ATAC-seq,DNase-seq阳似,FAIRE-seq的時候將shift設置為extsize的一半骚勘,且參數固定為:--nomodel --shift -100 --extsize 200。而在MNase-seq的時候苍姜,參數固定為:--nomodel --shift 37 --extsize 73续扔。在ChiP-seq的時候不用移峰,所以只使用-nomodel踱阿,當做組蛋白修飾的時候泽疆,由于peak并不典型户矢,所以使用–nomodel –shift 73參數。另外如何使用macs2 predictd預測雙峰模型殉疼,這里就不展開介紹了梯浪,可以私聊我,我把腳本發(fā)你瓢娜。
shift 與 extsize 到底在干啥驱证?
  • 下面是我見過的圖中解釋移峰現象最清楚的了,可以參考
移峰
  • 最后恋腕,就是輸出文件的解讀
    1. ${filename}_peaks.xls
前幾行是callpeak時的命令抹锄。后面是:
1.染色體號
2.peak起始位點
3.peak結束位點
4.peak區(qū)域長度
5.peak的峰值位點(summit position)
6.peak 峰值的高度(pileup height at peak summit, -log10(pvalue) for the peak summit)
7.peak的富集倍數(相對于random Poisson distribution with local lambda)
    1. ${filename}_peaks.narrowPeak
narrowPeak文件是BED6+4格式,可以上傳到IGV查看
1.染色體號
2.peak起始位點
3.peak結束位點
4.peak name(樣本名+_peak_1的后綴之類的)
5.-10*log10qvalue
6.正負鏈
7.fold change
8.-log10pvalue
9.-log10qvalue
10.相對于峰的峰頂位置(relative summit position to peak start)
  • 注意:\color{red}{xls里起始坐標需要減1才與narrowPeak的起始坐標一樣荠藤,見下圖}
    1. ${filename}_summits.bed
BED格式的文件伙单,包含peak的summits(峰頂)位置
1.染色體號
2.峰的峰頂起始位點(注意是峰頂,不是峰哈肖,他只是一個點)
3.峰的峰頂起始位點(因此二者就差一個堿基的位置)
4.峰頂(樣本名+_peak_1的后綴之類的)
5.-log10pvalue
  • 注意:\color{red}{xls里起始坐標需要減1才與bed的起始坐標一樣吻育,見下圖}

  • 另外,需要告訴你的是淤井,bed文件中第2列中的峰頂起始位點是如何計算的布疼?
    bed文件中第2列(峰的峰頂起始位點) = xls第二列 + xls第十列 -1”液荩或者↓↓↓↓
    bed文件中第2列(峰的峰頂起始位點) = narrowPeak第二列 + narrowPeak第十列

  • 總覽比較:


    bed游两,narrowPeak,bdg漩绵,xls四種類型輸出文件的比較
  • FRiP_score的計算【官方介紹】
    簡單來說贱案,FRiP_score說的就是統(tǒng)計落在Peaks里面的reads數量與所有比對到基因組上reads數量的比值≈雇拢可以作為判定樣本測序質量的一個指標宝踪。

Reads=$(bedtools intersect -a ${filename}.last.bed -b ${filename}_peaks.narrowPeak |wc -l|awk '{print $1}')
totalReads=$(wc -l ${filename}.last.bed|awk '{print $1}') 
echo ${Reads} ${totalReads} ${filename} 'FRiP_score:' $(echo "scale=2;100*${Reads}/${totalReads}"|bc)'%'
  • 官網上說ATAC-Seq的FRiP score should be >30%(https://www.encodeproject.org/atac-seq/)我猜是如果大多數reads都不在peaks區(qū)域,說明測序質量或者實驗效果不是太好碍扔,因為酶切切開的就是peaks區(qū)域瘩燥,太少不是就偏離實驗目的了嘛
  • SPOT_score的計算【官方介紹】【軟件安裝】
    簡單來說,SPOT_score就是在FRiP_score的基礎上增加了測序深度的條件限制不同,比如FRiP是統(tǒng)計全局的reads厉膀,而SPOT只統(tǒng)計測序深度為30×的reads,大于30×的reads不再參與統(tǒng)計。目前我還在探索中如何計算站蝠。

二汰具、高級分析

所謂的高級并不高大上,做了有可能也不能讓你的文章提升檔次菱魔,望周知留荔!

1. IGV可視化

  • 前面的bam文件,narrowPeak文件澜倦,bed文件都有了聚蝶,現在還差一個bw文件,因此我們先跑下面的代碼藻治,然后在IGV里面統(tǒng)一看一下

  • 所需軟件:deeptools【官方網站】【中文介紹】IGV
    主要是為生成bw文件用于IGV展示

bamCoverage --bam ${filename}.last.bam -o ${filename}.last.bw \
    --binSize 10 \
    --normalizeUsing RPGC \
    --effectiveGenomeSize ${effective_genome_size} \
    --ignoreForNormalization chrX \
    --extendReads

注:如果發(fā)現沒有這個包pysam.libchtslib碘勉,直接安裝pip install numpydoc
-o: 生成bw文件
binSize: 自行設定覆蓋度計算的窗口大小(bin)
normalizeUsing: 數據準化方法,有三種RPGC桩卵,RPKM验靡,CPM,BPM
ignoreForNormalization: 設置你想忽略的染色體名稱
extendReads: 讓reads擴展至fragment的大小

  • IGV一覽
IGV可視化bw雏节、narrowpeak胜嗓,bed,bam钩乍,gff文件

2. TSS/TES 可視化

awk -vFS='[\t=;]' -vOFS="\t" \
'{if ($3=="gene") print $1,$4,$5,$10,$6,$7}' \
TAIR10.gff|sed 's/Chr//g' > refseq.bed  
#由于tair官網上提供的基因組文件中染色人命名沒有Chr,為保持一致妄痪,這里去掉
  • 然后進行TSS可視化
computeMatrix reference-point --referencePoint TSS  -p 15 \
    -b 2000 -a 2000 \
    -R ./refseq.bed \
    -S *.bw \
    -o TSS.gz \
    --skipZeros \
    --outFileSortedRegions Heatmap1sortedRegions.bed
plotHeatmap -m TSS.gz -out TSS.Heatmap.pdf --plotFileFormat pdf
plotProfile -m TSS.gz -out TSS.Profile.pdf --plotFileFormat pdf --perGroup
  • 然后進行TES 可視化
computeMatrix scale-regions  -p 15  \
    -b 2000 -a 2000 \
    -R ./refseq.bed \
    -S *.bw \
    --skipZeros -o body.gz
plotHeatmap -m body.gz -out body.Heatmap.pdf --plotFileFormat pdf
plotProfile -m body.gz -out body.Profile.pdf --plotFileFormat pdf --perGroup
  • 另外哈雏,參考下面這個圖楞件,看每個參數控制的哪里衫生,如何同時繪制多個等。這是我好久之前總結的土浸,清晰度堪憂

3. 相關性可視化(依舊是使用deeptools)

  • 因為我測試樣本少罪针,所以就使用官網的圖了哈,但代碼是能跑通的黄伊,放心使用泪酱。
  • 先使用 [bw] 文件生成 [npz] 文件。所有樣本做相關性,用 [*.last.bw]墓阀,多個單列出來也行
multiBigwigSummary bins -b *.last.bw -o number.of.bins.npz
  • 畫相關性熱圖
plotCorrelation -in number.of.bins.npz \
--corMethod pearson \
--skipZeros \
--plotTitle "Pearson Correlation of Average Scores Per Transcript" \
--plotFileFormat pdf \
--whatToPlot heatmap --colorMap RdYlBu --plotNumbers \
-o heatmap_PearsonCorr_bigwigScores.pdf \
--outFileCorMatrix PearsonCorr_bigwigScores.tab
heatmap
  • 畫相關性點圖
plotCorrelation -in number.of.bins.npz \
--corMethod pearson \
--skipZeros \
--plotTitle "Pearson Correlation of Average Scores Per Transcript" \
--plotFileFormat pdf \
--whatToPlot scatterplot \
-o scatterplot_PearsonCorr_bigwigScores.pdf \
--outFileCorMatrix PearsonCorr_bigwigScores.tab
相關性點圖

5. ChIPseeker對peaks進行注釋和可視化

  • 對peak的注釋分為兩個部分——\color{red}{結構注釋與功能注釋}
    \color{red}{結構注釋}會將peak所落在基因組上的區(qū)域結構注釋出來毡惜,比如說啟動子區(qū)域,UTR區(qū)域斯撮,內含子區(qū)域等等经伙。同時,也會將與peak最臨近的基因注釋出來勿锅,非常好用帕膜。
    \color{red}{功能注釋}其實并不是對peak進行注釋的,而是對peak最臨近的基因注釋的溢十,因此這部分就和傳統(tǒng)的GO/KEGG等分析如出一轍啦垮刹。

5.1 結構注釋

5.1.1 準備工作:導入包,沒有的安裝吧张弛。另外需要使用gff/gtf構建一個TxDb荒典。因為官網上TxDb也不是每一個物種都有(目前共43個),因此我們自己手動構建吞鸭。

#if (!requireNamespace("BiocManager", quietly = TRUE))
#    install.packages("BiocManager")
#BiocManager::install("clusterProfiler")

library(clusterProfiler)
library(ChIPseeker)
library(GenomicFeatures)
txdb <- makeTxDbFromGFF("public/bioinfoYu/genome/tair10/TAIR10.gff",
                        format="gff")    #也可以使用gtf
keytypes(txdb)    #感興趣的話种蝶,可以用以下方法探索txdb都包含了什么內容
keys(txdb)

5.1.2 單個文件的結構注釋(不推薦在這一步加OrgDB的內容,沒用)

#讀入單個summits文件
peaks <- readPeakFile("SRR7512044_summits.bed")
#結構注釋
peakAnno <- annotatePeak(peaks,
                         TxDb=txdb,
                         tssRegion=c(-1000, 1000))

上面的tssRegion取值有說法的瞒大,因為判定"Promoter", "Exon", "Intron", "Intergenic"等結構的依據就是根據范圍來的螃征。比如定義1000以內的,則在1kbp之內規(guī)定為"Promoter (<=1kb)"透敌,而1k-2k內定義為"Downstream (1-2kb)"盯滚。但你定義2000以內呢,則在1kbp之內規(guī)定為"Promoter (<=1kb)"酗电,而1k-2k內定義為"Promoter (1-2kb)"魄藕。雖然,ChIPseeker會標記出來區(qū)域撵术,但還是三思后再取范圍背率。

#注釋完,進行可視化嫩与,多種圖可供選擇
plotAnnoBar(peakAnno)
plotDistToTSS(peakAnno)
vennpie(peakAnno)
plotAnnoPie(peakAnno)
#install.packages("ggupset")
library(ggupset)
upsetplot(peakAnno)
#install.packages("ggimage")
library(ggimage)
upsetplot(peakAnno, vennpie=TRUE)

#最后將我們的注釋結果轉為數據框寝姿,便于查看
df <- as.data.frame(peakAnno)
#將注釋到的基因提取出來(第14列),用于后續(xù)功能分析
gene <- df[,14]
提供可視化的方法

5.1.3 多個文件的結構注釋

#一次也可以讀入多個summits文件划滋,使用list存儲饵筑,然后使用lapply注釋
files = list(peak1 = "peaks.bed", peak2 = ("peak.bed"))
peakAnnoList <- lapply(files, 
                       annotatePeak,
                       TxDb=txdb,
                       tssRegion=c(-2000, 2000))
plotAnnoBar(peakAnnoList)
plotDistToTSS(peakAnnoList)
讀入多個summits文件的可視化

5.2 功能注釋

5.2.1 可選支線
由于這里需要物種的OrgDb注釋庫,但并不是所有的物種都有按ζ骸根资!怎么辦架专?戳看【構建自己的OrgDb庫】。如果你足夠幸運玄帕,研究的物種正好在官網僅提供的20個物種中存在部脚,那就拿來用吧。除了以上這些都好說裤纹,還有是\color{red}{ID轉換}睛低,后面再說。
5.2.2 OrgDb下載
本次測試是用擬南芥的樣本服傍,在官網中可以直接將所需要的的OrgDb庫下載到服務器上钱雷,這樣就不用在R里面重復在網上獲取浪費時間了。比如說擬南芥吹零,就可以下載罩抗。當然也可以直接install了,看你喜歡哪種了灿椅。

wget http://www.bioconductor.org/packages/release/data/annotation/src/contrib/org.At.tair.db_3.13.0.tar.gz
tar -zvxf org.At.tair.db_3.13.0.tar.gz

5.2.3 導入OrgDb

#從本地下載OrgDb庫(如果你直接下載到了R的lib里面套蒂,就直接library也可)
install.packages("/public/bioinfoYu/genome/tair10/org.At.tair.db", repos=NULL)
#另外一種方法
#if (!requireNamespace("BiocManager", quietly = TRUE))install.packages("BiocManager")
#BiocManager::install("org.At.tair.db")
#載入庫
library(org.At.tair.db)
#感興趣的話,看看org.At.tair.db包含的都是些啥
#查看包含的列名
keytypes(org.At.tair.db)
#查看包含的基因ID
keys(org.At.tair.db)
#隨便選擇一個基因和一些列名茫蛹,看一看到第是什么東東操刀,不過因為導入了其他包,下面命令報錯婴洼,我至今還沒有解決
select(org.At.tair.db,keys="AT1G01010",columns = c("ENTREZID","GO","SYMBOL"))

5.2.4 ID轉換(非必須)
上面5.1.2已經得到peak附近的基因集【gene】了骨坑,如果需要ID轉換,就是用Y叔clusterProfiler中的bitr函數

#首先柬采,去除版本號欢唾,如AT1G50040.1后面的.1,當然我們的測試集沒有粉捻,因此不用做
#gene_rm <- gsub(".[0-9]+$","",gene)
#下面進行ID轉換
keytypes(org.At.tair.db)
gene_last <- bitr(geneID = gene, 
                    fromType = "TAIR",
                    toType = c("ENTREZID", "SYMBOL", "GENENAME"),
                    OrgDb = org.At.tair.db)

# geneID    需要轉換的ID
# fromType  當前ID類型
# toType    轉換成什么ID礁遣,使用keytypes()查看有哪些類型
# OrgDb     注釋數據庫

5.2.5 GO功能注釋

# 因為keyType不接受數據框類型的數據,因此我們轉換為字符型
genelist <- gene.symbol[,2]  #注意我這里把ENTREZID單獨拿出來了肩刃,所以下面自然是keyType = "ENTREZID",
go_result <- enrichGO(genelist,
                      keyType = "ENTREZID", 
                      OrgDb = org.At.tair.db, 
                      ont = "BP", #BP,MF,CC,ALL可選
                      pAdjustMethod = "BH", 
                      qvalueCutoff = 0.05, 
                      readable = FALSE)
#可視化祟霍,showCategory=20調整顯示的條目多少
dotplot(go_result, showCategory=20)
#將結果轉為數據框,可以選擇導出
goresult <- as.data.frame(go_result)
GO可視化

5.2.6 KEGG通路注釋

#geneClusters必須是數據框類型盈包,ID必須是ENTREZID類型
class(gene.symbol)
compKEGG <- compareCluster(geneClusters=gene.symbol, 
                           fun = "enrichKEGG",
                           organism = "ath",    #在 http://www.genome.jp/kegg/catalog/org_list.html 上查看物種簡寫
                           pvalueCutoff  = 0.05, 
                           pAdjustMethod = "BH")
dotplot(compKEGG, showCategory = 20, title = "KEGG Pathway Enrichment Analysis")
KEGG可視化

6. homer尋找motif

# 提取peaks的位置信息文件
awk '{print $4"\t"$1"\t"$2"\t"$3"\t+"}' \
SRR7512044_peaks.narrowPeak > SRR7512044.homer_peaks.tmp
# 尋找motif
findMotifsGenome.pl SRR7512044.homer_peaks.tmp \
./TAIR10_genome.fa \  #指定參考基因組
./SRR7512044.motif \  #輸出文件夾的名字
-size 200 -len 8,10,12

7. DiffBind找差異peak

首先根據我自己的理解將找差異peak的原理說一下:既然是找差異的peak沸呐,那首先就要保證不同樣本間peak所在的區(qū)間基本一致才可以。因此第一步就是找到多個樣本相同的peak區(qū)間续语。第二步垂谢,基于這些相同區(qū)域的peak開始找差異,這個地方的差異和傳統(tǒng)的RNA-Seq找差異基因的原理一模一樣疮茄,都是對落在峰區(qū)間的reads進行計數滥朱,數量不同的話差異就由此而來。但軟件都幫我們做了力试,就不用考慮那么多了

  • 我廢話真多徙邻,其實最麻煩的就是準備輸入數據,下面來看怎么做
    一般情況相下需要包括以下幾列:"SampleID"畸裳, "Tissue"缰犁, "Factor", "Condition" 怖糊,"Treatment"帅容,"Replicate", "bamReads" 伍伤,"ControlID" 并徘,"bamControl" ,"Peaks"和"PeakCaller"

  • 但我們做ATAC-Seq的哪里有什么control扰魂,controlID麦乞,bamControl,因此刪掉劝评,而"Tissue"姐直, "Factor", "Condition" 蒋畜,"Treatment"声畏,"Replicate",表示的都是分組的意思姻成,因此我保留了兩個"Factor"砰识,"Replicate",最后csv文件的樣子如下:

SampleID:不能有重復
Factor:進行分組佣渴,后面要做差異分析的依據
Replicate:重復的編號
bamReads:最后生成的bam文件辫狼。全路徑+bam文件名
Peaks:macs2生成的narrowPeak文件。全路徑+narrowPeak文件名
PeakCaller:說明peak類型辛润,使用narrowPeak文件則為narrow膨处。使用xls文件,則用macs砂竖。使用bed文件真椿,則用bed

  • 開始正題
# 安裝包
if (!requireNamespace("BiocManager", quietly = TRUE))install.packages("BiocManager")
BiocManager::install("DiffBind")
library(DiffBind)
#導入數據,dba函數會將會將bam文件一同導入乎澄,因此csv中的路徑一定要準確
tamoxifen <- dba(sampleSheet="atDiff.csv")
#查看樣本間的相關性
plot(tamoxifen)
#計算每個樣本中的reads數
tamoxifen <- dba.count(tamoxifen)
#簡單查看計算結果
info <- dba.show(tamoxifen)
libsizes <- cbind(LibReads=info$Reads, FRiP=info$FRiP, PeakReads=round(info$Reads * info$FRiP))
rownames(libsizes) <- info$ID
libsizes
#統(tǒng)計結果
       LibReads FRiP PeakReads
cmt2_1  6720462 0.29   1948934
cmt2_2  7747491 0.33   2556672
wild_1  7078309 0.36   2548191
wild_2  8030752 0.34   2730456
ddcc_1  6370232 0.30   1911069
ddcc_2  6956429 0.35   2434750
#默認基于測序深度對數據進行標椎化
tamoxifen <- dba.normalize(tamoxifen)
norm <- dba.normalize(tamoxifen, bRetrieve=TRUE)
norm
#查看進行標準化的文庫大小(library-size)突硝,其實就是各樣本文庫大小總和的平均值,你可以計算驗證一下
normlibs <- cbind(FullLibSize=norm$lib.sizes, NormFacs=norm$norm.factors, NormLibSize=round(norm$lib.sizes/norm$norm.factors))
rownames(normlibs) <- info$ID
normlibs
#標椎化結果
       FullLibSize  NormFacs NormLibSize
cmt2_1     6720462 0.9398443     7150612
cmt2_2     7747491 1.0834724     7150612
wild_1     7078309 0.9898885     7150612
wild_2     8030752 1.1230859     7150612
ddcc_1     6370232 0.8908652     7150612
ddcc_2     6956429 0.9728438     7150612
#分組置济,格式是表頭在最前面解恰,要分的組依次寫在后面锋八,只能兩兩比較,因此后面只能寫兩組护盈,但可以多執(zhí)行幾次挟纱,都會追加到tamoxifen 中
#分組1,后面使用contrast=1單獨查看
tamoxifen <- dba.contrast(tamoxifen, contrast=c("Factor","ddcc","wild"))
#分組2腐宋,后面使用contrast=2單獨查看
tamoxifen <- dba.contrast(tamoxifen, contrast=c("Factor","cmt2","wild"))
#當然還可有分組3,4,5等紊服,均可以使用contrast=number單獨查看
tamoxifen
#按照分組分別進行差異分析,默認使用DESeq2進行計算胸竞,可以選擇method = DBA_EDGER(edgR)欺嗤,或者兩個都要method = DBA_ALL_METHODS
tamoxifen <- dba.analyze(tamoxifen)
dba.show(tamoxifen, bContrasts=TRUE)
#查看差異分析的結果與導出為csv文件
#查看第1組差異分析的結果
tamoxifen.DB_1 <- dba.report(tamoxifen,contrast=1)
tamoxifen.DB_1
write.csv(tamoxifen.DB_1, file="diffBind_result.csv")

#查看第2組差異分析的結果
tamoxifen.DB_2 <- dba.report(tamoxifen,contrast=2)
tamoxifen.DB_2
write.csv(tamoxifen.DB_2, file="diffBind_result.csv")

##傳統(tǒng)的上下調在找差異peak中稱為“Gain”或“Loss”
#查看第1組的差異peak數量“Fold>0或<0”控制是“Gain”或“Loss”
sum(tamoxifen.DB$Fold>0,contrast=1)
sum(tamoxifen.DB$Fold<0,contrast=1)
#查看第2組的差異peak數量“Fold>0或<0”控制是“Gain”或“Loss”
sum(tamoxifen.DB$Fold>0,contrast=2)
sum(tamoxifen.DB$Fold<0,contrast=2)
  • 由于我是使用兩組進行測試的,所以可以使用contrast=1或contrast=2分別查看卫枝,由于都是相同的代碼煎饼,下面進行可視化的時候,只選擇contrast=1進行可視化
#韋恩圖可視化
dba.plotVenn(tamoxifen, contrast=1, bDB=TRUE, bGain=TRUE, bLoss=TRUE, bAll=FALSE)

#PCA
dba.plotPCA(tamoxifen) #這里可以使用所有樣本進行PCA
dba.plotPCA(tamoxifen, contrast=1, label=DBA_FACTOR)#單獨對分組1進行PCA

#MA plots
dba.plotMA(tamoxifen, contrast=1)

#Volcano plots
dba.plotVolcano(tamoxifen, contrast=1)

#Box plots
dba.plotBox(tamoxifen, contrast=1)

#Heatmap
hmap <- colorRampPalette(c("red", "black", "green"))(n = 13)
#對所有樣本的所有的差異peak畫熱圖
dba.plotHeatmap(tamoxifen,correlations=FALSE,scale="row",colScheme = hmap)
#單獨對分組1中所有的差異peak畫熱圖
dba.plotHeatmap(tamoxifen, contrast=1, correlations=FALSE, scale="row", colScheme = hmap)
dba.plotHeatmap(tamoxifen,correlations=FALSE,scale="row",colScheme = hmap)
  • 想畫下面的圖剃盾,可是一直提示\color{red}{could\ not\ find\ function\ dba.plotProfile}腺占,因此還沒有成功,用官方提供的圖展示一下吧痒谴,大家能畫出來可以和我說一聲哦衰伯。這是【官方文檔】可以參考
#Profiling and Profile Heatmaps
dba.plotProfile(tamoxifen)

8. footprint分析

目前我還沒有找到使用于所有物種的軟件,HINT-ATAC用來做footprint分析的話积蔚,應該只支持不幾個物種意鲸,比較雞肋。ATACseqQC應該是一款不錯的軟件尽爆,最近還在探索怎顾。各位如有建議,歡迎提出漱贱。

三槐雾、ATAC-seq與多組學數據聯(lián)合分析

轉錄因子ChIP-seq:由于大部分轉錄因子結合的是染色質開放區(qū)域,所以ATAC-seq的Peak可能和轉錄因子ChIP-seq的Peak存在部分重疊的情況幅狮,而且ATAC-seq得到的Peak長度往往更長募强,因此ATAC-seq數據和轉錄因子ChIP-seq數據可以相互驗證。轉錄因子在ChIP-seq中獨有的Peak暗示這個轉錄因子可能是結合在異染色質區(qū)域的驅動型轉錄因子(Pioneer TFs)崇摄,驅動型轉錄因子隨后招募染色質重塑復合體以及其它轉錄因子開始轉錄擎值。另外,聯(lián)合分析已經報道的ChIP-seq數據可以更準確地分析轉錄因子的足跡逐抑。
組蛋白修飾ChIP-seq:ATAC-seq數據同樣可以和組蛋白修飾ChIP-seq數據進行聯(lián)合分析鸠儿,其中轉錄激活性修飾(H3K4me3,H3K4me1和H3K27ac等)與染色質開放程度呈正相關厕氨,轉錄抑制性修飾(H3K27me3)與染色質開放程度呈負相關进每。聯(lián)合已知的增強子和啟動子之間的相互作用數據也可以幫助構建調控網絡汹粤。
RNA-seq:ATAC-seq數據可以通過聯(lián)合分析RNA-seq數據來發(fā)現哪些差異表達的基因是受染色質可及性調控的,進一步可以推測這些差異表達的基因哪些是受開放染色質中具有motif和footprint的轉錄因子調控的品追,因此ATAC-seq與RNA-seq的聯(lián)合分析有助于破譯基因調控網絡和細胞異質性玄括。

  • 前前后后用了1周的時間冯丙,將近段所學匯總于此肉瓦,如有錯誤望各位多多諒解并指出,感謝胃惜!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末泞莉,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子船殉,更是在濱河造成了極大的恐慌鲫趁,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件利虫,死亡現場離奇詭異挨厚,居然都是意外死亡,警方通過查閱死者的電腦和手機糠惫,發(fā)現死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門疫剃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硼讽,你說我怎么就攤上這事巢价。” “怎么了固阁?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵壤躲,是天一觀的道長。 經常有香客問我备燃,道長碉克,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任并齐,我火速辦了婚禮漏麦,結果婚禮上,老公的妹妹穿的比我還像新娘冀膝。我一直安慰自己唁奢,他們只是感情好,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布窝剖。 她就那樣靜靜地躺著麻掸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赐纱。 梳的紋絲不亂的頭發(fā)上脊奋,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天熬北,我揣著相機與錄音,去河邊找鬼诚隙。 笑死讶隐,一個胖子當著我的面吹牛,可吹牛的內容都是我干的久又。 我是一名探鬼主播巫延,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼地消!你這毒婦竟也來了炉峰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤脉执,失蹤者是張志新(化名)和其女友劉穎疼阔,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體半夷,經...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡婆廊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了巫橄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淘邻。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嗦随,靈堂內的尸體忽然破棺而出列荔,到底是詐尸還是另有隱情,我是刑警寧澤枚尼,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布贴浙,位于F島的核電站,受9級特大地震影響署恍,放射性物質發(fā)生泄漏崎溃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一盯质、第九天 我趴在偏房一處隱蔽的房頂上張望袁串。 院中可真熱鬧,春花似錦呼巷、人聲如沸囱修。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽破镰。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲜漩,已是汗流浹背源譬。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留孕似,地道東北人踩娘。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像喉祭,于是被迫代替她去往敵國和親养渴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內容

  • ATACseq 基本原理如下圖所示臂拓。真核生物 DNA 與核小體結合形成染色質厚脉,結合的緊密程度是動態(tài)變化的习寸。當 DN...
    BeeBee生信閱讀 17,129評論 16 42
  • 作者 | Arno審稿 | 童蒙編輯 | amethyst 上一期我們介紹了ATAC-seq相關的背景知識胶惰。ATA...
    生信阿拉丁閱讀 17,515評論 5 40
  • 這是目前為止我看到過的關于ATAC-seq的最新綜述,感興趣的話值得一讀霞溪。2020.4.22更新:我看到一個公眾號...
    Steven潘閱讀 18,592評論 1 62
  • 背景: 染色質和染色體的結構和功能 每一條染色單體由單個線性DNA分子組成孵滞。細胞核中的DNA是經過高度有序的包裝,...
    xuzhougeng閱讀 35,857評論 10 93
  • 表情是什么鸯匹,我認為表情就是表現出來的情緒坊饶。表情可以傳達很多信息。高興了當然就笑了殴蓬,難過就哭了匿级。兩者是相互影響密不可...
    Persistenc_6aea閱讀 124,154評論 2 7