背景知識
什么是ATAC-Seq?
Assay for transposase-accessible chromatin using sequencing(利用轉座酶研究染色質可接近性的高通量測序技術),可以在全基因上捕獲裸露DAN與核小體的DNA。
細胞的不同時期染色質松緊程度不同,其中結構疏松的染色質被稱為開放染色質,它有足夠的區域允許一些調控蛋白過來與其結合。染色質的這種特性,叫做染色質的可接近性。ATAC-Seq使用Tn5酶(load with sequencing adaptors)插入核小體間的開放染色質區域,生成可被PCR擴增的測序文庫片段。
為什么要做ATAC-Seq,ATAC-Seq相比于其他技術有什么優勢?
優勢:使用細胞數較少;使用ATAC-seq識別全基因組上的開放染色質區域,在調控區域識別核小體結合和核小體游離位置,尋找全基因組范圍內蛋白質可結合位點的信息,尋找不知道的特定轉錄因子;使用“footprint”推斷dna結合蛋白在b細胞系中的位置。
ChIP-seq:一種針對DNA結合蛋白,組蛋白修飾或核小體的全基因組分析技術。根據感興趣的轉錄因子設計抗體去做ChIP實驗拉DNA,驗證感興趣的轉錄因子是否與DNA存在相互作用。
MNase-Seq:用來鑒定核小體區域。
CUT&Tag:適用于微量細胞的ChIP技術。解讀CUT&Tag - 簡書
分析流程
一.分步跑
1.fastqc質控
用 fastqc 檢查序列質量,看是否需要進行過濾和去接頭
fastqc -o cleanout -t 20 clean.*_R1.fq.gz
2.過濾并處理接頭
(1).fastp處理
fastp -i *_R1.fq.gz -I *_R2.fq.gz -o clean.*_R1.fq.gz -O clean.*_R2.fq.gz -f 15 --adapter_sequence=TCGTCGGCAGCGTC --adapter_sequence_r2=GTCTCGTGGGCTCGG -w 15
用fastp處理后面數據時發現,切了之后還會出現adapter的問題。
(2).改用trimmoatic
java -jar /home/*/trimmomatic-0.39.jar PE? -phred33 -trimlog logfile -threads 16 *_R1.fq.gz *_R2.fq.gz clean.*_R1p.fq.gz clean.*_R1u.fq.gz clean.*_R2p.fq.gz clean.*_R2u.fq.gz ILLUMINACLIP:/home、*/Trimmomatic-0.39/adapters/NexteraPE-PE.fa:2:30:10:8:true SLIDINGWINDOW:15:20 HEADCROP:15
參數解讀:生信軟件 | Trimmomatic (測序數據質控) - 知乎
3.然后將序列比對到參考基因組上
bowtie2 --very-sensitive -p 15 -x /home/zjin/atac/ref/horse -1 clean.HBM-2_R1p.fq.gz -2 clean.HBM-2_R2p.fq.gz | samtools sort -O bam -@ 15 -o - > output.bam
#use the --very-sensitive parameter to have more chance to get the best match even if it takes a bit longer to run.
4.去除pcr重復
首先需要清楚是實驗還是物種本身的pcr重復
(1).samtools
samtools sort -n -o namesort.bam output.bam -@ 25
從名稱排序的對齊中填寫配合坐標、SIZE 和配合的相關標志。
samtools fixmate -@ 15 -m namesort.bam fixmate.bam
samtools sort -o positionsort.bam fixmate.bam -@ 15
samtools markdup positionsort.bam markdup.bam -@ 20
(2).picrad
picard MarkDuplicates REMOVE_DUPLICATES=true I=output.bam O=picard.bam M=picard.metrc.csv
去除低質量reads
samtools view -h -f 2 -q 30 picard.bam |? samtools sort -O bam -@ 10 -o - > picard.last.bam
5.去除線粒體重復
線粒體DNA是裸露的,也可以被Tn5酶識別切割
可以通過下面兩種方法中任一種實現:
在比對之前,將線粒體DNA從比對使用的參考基因組中去除。該方法的缺點使比對數會看起來比較差,因為所有的線粒體DNA序列都將被記為未匹配序列。
在進行比對之后去除線粒體DNA。可以使用Harvard FAS Informatics編寫的python腳本去除線粒體RNA序列。
samtools view -@ 15 -h markdup.bam | python removeChrom.py - - chrM(根據參考基因組上線粒體的來命名,也可以是MT等) -p 15| samtools? view -@ 15 -b - > f.bam? ? ? ? ? ? ? ? harvard/removeChrom.py at master · jsh58/harvard · GitHub
#每一步做完后,可以用samtools檢查一下
$ samtools flagstat sample1.bam
3826122 + 0 in total (QC-passed reads + QC-failed reads) #總共的reads數
0 + 0 secondary
1658 + 0 supplementary
343028 + 0 duplicates
3824649 + 0 mapped (99.96% : N/A) #總體reads的匹配率
3824464 + 0 paired in sequencing #總共的reads數
1912442 + 0 read1 #reads1中的reads數
1912022 + 0 read2 #reads2中的reads數
3808606 + 0 properly paired (99.59% : N/A) #完美匹配的reads數:比對到同一條參考序列,并且兩條reads之間的距離符合設置的閾值
3821518 + 0 with itself and mate mapped #paired reads中兩條都比對到參考序列上的reads數
1473 + 0 singletons (0.04% : N/A) #單獨一條匹配到參考序列上的reads數,和上一個相加,則是總的匹配上的reads數。
5882 + 0 with mate mapped to a different chr#paired reads中兩條分別比對到兩條不同的參考序列的reads數
4273 + 0 with mate mapped to a different chr (mapQ>=5) #paired reads中兩條分別比對到兩條不同的參考序列的reads數
6.macs2 進行peak calling
macs2 callpeak -t f.bam -g 2.5e9 --nomodel --shift -100 --extsize 200 -n HFM --outdir ./horse
需要注意其中背景基因組序列數量和 --shift --extsize 參數,基因組大小可以通過在網站上查找得知,也可以自己寫個腳本去了解。
python fa.py /home/zjin/atac/ref/Equus_caballus.EquCab3.0.dna.toplevel.fa --thread 15? ? ? ? 有效基因組大小: 2497530654
7.計算FRIP值
(1).先把bam文件轉為bed文件,使用的是SAMtobed這個python文件,此處不能使用BEDTools中的bamtobed軟件來處理,因為它的輸出文件不是MACS2可以處理的標準文件。
samtools view -h? f.bam? | python /home/zjin/data/HFM-1/SAMtoBED.py? -i -? -o f.bed? -x? -v
bedtools bamtobed -i finallly.bam -o bed.bed
但是之后也可以用其進行比較。然后算出分母----序列比對到基因組上的總reads(去除pcr重復,線粒體)
wc -l f.bed,然后再求交集
bedtools intersect -a bed.bed -b /home/zjin/data/HFM-1/horse/HFM_peaks.narrowPeak |wc -l
第一個算出來的是0.2058,第二個算出來的是0.2026
(2).也可以使用r包來計算
library(encodeChIPqc)
library(GenomicRanges)
peaks =? read.table('/home/zjin/data/3-21/GJM/horse/GJM_peaks.narrowPeak')
colnames(peaks) = c('chr','start','end','name','score','strand','signal','pval','qval','peak')
peaks.gr = makeGRangesFromDataFrame(peaks,keep.extra.columns=TRUE)
bam.file ="/home/zjin/data/3-21/GJM/f.bam"
frip(bam.file,peaks.gr)
8.計算insert size
picard CollectInsertSizeMetrics I=./f.bam O=./CBM.insertsize H=./CBM.pdf
可以先去了解下文庫長度是多少,2代測序一般是300bp。
peak結果中要存在NFR和mononucleosome peak區域,NFR peak指的是長度小于1個核小體單位長度的peak區域,1個核小體的DNA長度為146bp, NFR peak長度小于146b;ppmononucleosome peak指的是只跨越了1個核小體的peak, 長度在1個到2個核小體單位長度之間,即146到292bp之間,考慮兩個核小體。
一般每200bp會存在一個峰,這個周期性波動反應的是核小體的個數,這是因為tn5酶有時候會切兩個、三個或多個核小體下下來。富集最多的就是切下的開放染色質區域的reads。
9.計算tss
常規的做法是提取TSS兩側區域的reads, 比如上下游各提取2kb的區域,劃分等長窗口bin統計每個窗口內的coverage, 最終會生成一個矩陣,行為基因,列為不同窗口。根據這個矩陣可以繪制TSS兩側reads分布圖, 也可以計算TSS Enrichment score。推薦使用deeptools。
10.計算IDR
IDR(Irreproducibility Discovery Rate),通過比較一對經過排序的regions/peaks 的列表,然后計算反映其重復性的值,log文件會給出peaks通過IDR < 0.05的比率。IDR的值越小越好,說明兩者間重復性越小。
sort -k8,8nr HBM-2_peaks.narrowPeak > sort.HBM-2_peaks.narrowPeak
idr --samples sort.HBM-1_peaks.narrowPeak sort.HBM-2_peaks.narrowPeak --input-file-type narrowPeak --rank p.value --output-file sort.sample-idr --plot --log-output-file sample.idr.log
11.計算nrf和PBC1、PBC2
NRF代表的是非冗余reads的比例,與參考基因組比對之后,我們可以得到所有比對上的reads, 其中有一部分是unique mapping的reads, 這些reads唯一比對到基因組上的一個位置,NRF就是unique mapping reads除以total? mapped reads。
PBC1和PBC2稱之為PCR阻塞系數,和NRF不同,這兩個系數通過基因組位置的個數來進行計算。將unique mapping reads比對上的基因組位置稱之為M, 根據每個位置上比對上的序列數,稱之為M1, M2等,其中,PBC1為M1/M的值,PBC2為M1/M2的值。
samtools view -h output.bam | grep AS | grep -v XS |wc -l(找到唯一匹配)
samtools view -h output.bam |wc -l
在質檢完成后,可以進行下一步的相關分析。
做完之后可以詳細閱讀這個教程,里面有很詳細的流程指導以及步驟的意義,裨補缺漏。galaxy
12.繪制pca圖,差異peak以及相關性分析
具體參數步驟詳見:生信 | ATAC-Seq基礎分析+高級分析+多組學分析 - 簡書
PCA主成分分析:原理是將高維數據投影到較低維空間,提取多元事物的主要因素,揭示其本質特征。得到主成分軸向(屬性)的目的就是為了可以舍棄其他次要的成分,當然,主成分屬性也是優于其他成分的屬性,缺點就是這個屬性沒法用語言來解釋。
在一般情況下,對于一個屬性的數據分布來說,方差越大越好分類。PC1是影響分類的主要成分Principal components。和PC1垂直的y就是PC2。百分數是指這個主成分對總體方差的貢獻率,比如PC1可以解釋總體方差的44%。值是特征值,在第一維度,第二維度上分別表示出來。
相關性熱圖:一般來講研究對象(樣品或處理組)之間使用距離分析,而元素(物種或環境因子)之間進行相關性分析。策略是將基因組劃分為等長的區間,稱之為bin, 計算每個區間內的覆蓋度,然后通過比較不同樣本間的覆蓋度來計算樣本相關性。
區間覆蓋度:每一堿基的覆蓋率是基因組堿基被測序的平均次數。基因組的覆蓋深度是通過與基因組匹配的所有短讀的堿基數目除以該基因組的長度來計算的。
但是通過deeptools的multiBamSummary命令,發現畫出來的bin并不是等分的,可以自己寫個腳本做一下。
差異peak:找到多個樣本相同的peak區間,然后基于這些相同區域的peak開始找差異(落在peak間的reads數量不同而造成),一般是已知結果用圖來展示。
13.igv可視化
導入物種的基因組和GTF文件,在導入bw文件,尋找marker基因上peak是否富集。
igv操作:IGV可視化reads分布和表達峰圖 - 知乎
14.尋找motif
motif我們可以簡單理解為:在復雜網絡中出現的局部規律,這種規律現象無處不在。
在生物中Motif是比較有特征的短序列,會多次出現。利用motif分析可以挖掘其修飾/結合偏好,進而鎖定相關基因,對后續討論、實驗具有指導作用。用homer尋找motif時需要兩個數據集:一種是常見的bed文件格式,另一種是HOMER軟件指定使用的peak文件格式。步驟如下:
(1). 序列提取
通過bed文件給出的基因組位置信息,在對應基因組上提取出來的是對應的基因組序列
通過peak文件給出的位置信息提取ATAC-Seq中reads在基因組上的富集信息
(2).背景選擇
使用的是基因組位置時從整個基因組序列抓取GC含量一致的序列作為背景序列(序列長度可設置)
(3).GC含量矯正
將目標序列和背景序列對GC含量進行分bin(5%區間),背景序列通過調節權重得到和目標序列同樣的GC含量分布.
(4). 自動標準化
減少偏差
homer尋找motif有兩種模式。
Discovering Motifs de novo
(1).解析輸入序列
根據設置的motif長度(默認是8,10,12),將輸入序列解析為寡核苷酸,生成一個寡核苷酸頻度表,并記錄它在目標和背景序列中出現的次數。
#寡核苷酸 (Oligonucleotide),是一類只有20個以下堿基的短鏈核苷酸的總稱(包括脫氧核糖核酸DNA或核糖核酸RNA內的核苷酸)
(2).寡核苷酸自動均一化
(3).全局搜索
基本原理就是若某個motif富集,則其存在的寡核苷酸也同樣富集,為了增加靈敏度和節省計算資源,允許錯配。(超幾何分布和二項式)
(4).矩陣優化
(5).標記和重復
當最優的寡核苷酸序列被優化成motif后,motif 對應的序列從要分析的數據中移除,接下來再分析直到設定個數的motif序列被發現。
Screening for Enrichment of Known Motifs,
(1).加載moitf數據庫
(2).掃描所有的motif
掃描每個motif的序列并計算在多少目標或背景序列上出現來確定每個motif的富集度。
為什么要找motif,CHIP-seq和ATAC-seq的區別?
ATAC-seq根據motif找到的moti (轉錄因子集合位點獨有的序列,起始位點在基因組上面),去在基因組上找轉錄因子。
CHIP-seq是已知轉錄因子,知道moti序列(特定的),然后看有沒有peak。
總而言之做ATAC-seq是為了去發現感興趣的位置。
2.使用ENCODE提供的ATAC-Seq pipeline
GitHub - ENCODE-DCC/atac-seq-pipeline: ENCODE ATAC-seq pipeline
輸入原始fastq數據一直到peak caling結束的基礎分析功能
pipeline中的build_genome_data.sh,用于將不同基因組處理成所需的文件。
質控標準:The fraction of reads in called peak regions (FRiP score) should be >0.3, though values greater than 0.2 are acceptable
結果會出現詳細的質控報告