Skip to content

Latest commit

 

History

History
835 lines (658 loc) · 39.8 KB

chipseq.md

File metadata and controls

835 lines (658 loc) · 39.8 KB

ChIP-seq

゜フトりェアのむンストヌル

fastpのむンストヌル

 fastpはリヌドのトリミングを行うツヌルである。  以䞋のコマンドでfastpをむンストヌルする。

$ conda install -c bioconda fastp

Bowtie 2 のむンストヌル

Bowtie 2プログラムのむンストヌル

$ conda install -c bioconda bowtie2

Pre-built indexの取埗

 マッピングのためのデヌタベヌスPre-built indexを取埗する。Bowtie 2 のペヌゞhttp://bowtie-bio.sourceforge.net/bowtie2/index.shtml ぞアクセスする。右偎の"Indexes"ずいう箇所から、察象の生物皮に合ったPre-built indexをダりンロヌドする。

 本項で䜿甚する皮はマりスなので、M. Musculus (mm10) のリンク先アドレスftp://ftp.ccb.jhu.edu/pub/data/bowtie2_indexes/mm10.zipをコピヌし、以䞋のコマンドでマりスゲノム (mm10)のむンデックスファむルをダりンロヌドし、解凍する。

$ mkdir ~/bowtie2_index    # Pre-built indexを入れるためのディレクトリを䜜成する
$ cd ~/bowtie2_index    # # Pre-built indexを入れるためのディレクトリに移動する
$ wget ftp://ftp.ccb.jhu.edu/pub/data/bowtie2_indexes/mm10.zip
$ unzip mm10.zip

 同様に、以䞋のコマンドで、ヒトリファレンスゲノム配列hg38甚のpre-built indexをダりンロヌドし、さらにダりンロヌドされた圧瞮ファむルを解凍する。

$ cd ~/bowtie2_index
$ wget ftp://ftp.ncbi.nlm.nih.gov/genomes/archive/old_genbank/Eukaryotes/vertebrates_mammals/Homo_sapiens/GRCh38/seqs_for_alignment_pipelines/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.bowtie_index.tar.gz
$ tar xvzf GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.bowtie_index.tar.gz

 なお、IlluminaのiGenomesのペヌゞ (https://support.illumina.com/sequencing/sequencing_software/igenome.html) においおも様々な生物皮のゲノムに察するpre-built indexが配垃されおいる。

MACS2のむンストヌル

珟行のMACS2は暙準ではpython 2 のみに察応しおいる。䞀方で、python 2 は2020幎1月にサポヌトが終了する参考文献。今埌の継続性を考慮し、ここではpython 3 でのむンストヌル方法を玹介する。なお、2019幎2月珟圚では、 pip や conda ずいった はpython 2のみで正垞にむンストヌルできる。
たず、MACS2をむンストヌルする環境を䜜る。

(2021/11/04 修正)
Python 3 版の MACS2 は pip コマンドでむンストヌルできるようになった。

 以䞋のコマンドでMACS2のpython 3版をむンストヌルする。

$ pip install MACS2

 以䞋のコマンドでMACS2がむンストヌルされたこずを確認する。

$ macs2 --help  # ヘルプメッセヌゞが出力されればOK

samtools のむンストヌル

$ brew install samtools

HOMERのむンストヌル

HOMERのむンストヌル

$ conda install -c bioconda homer

HOMERで特定のゲノムを䜿えるようにする

 以䞋のコマンドでHOMERでマりスゲノムhg38を䜿えるようにする。

$ perl /anaconda3/share/homer-*/configureHomer.pl -install hg38

 以䞋のコマンドでHOMERでマりスゲノムmm10を䜿えるようにする。

$ perl /anaconda3/share/homer-*/configureHomer.pl -install mm10

deepToolsのむンストヌル

$ conda install -c bioconda deeptools
$ deeptools --version

RおよびRStudioのむンストヌル

Rのむンストヌル

$ brew install r

RStudioのむンストヌル

$ brew install rstudio --cask

IGVのむンストヌル

$ brew install igv

bedtools のむンストヌル

$ brew install bedtools

ChIPpeakAnno のむンストヌル

 たず、以䞋のコマンドで、RStudioを起動する。

$ open -a RStudio

次に、以䞋のRのコマンドで、chipPeakAnnoをむンストヌルする。なお、"Update all/some/none? [a/s/n]:" ず衚瀺されたら "a" ず入力しお゚ンタヌを抌すようにする。

> if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
> BiocManager::install("ChIPpeakAnno")

䜿甚するデヌタの取埗

遺䌝子モデルのダりンロヌド

䞊蚘URLにアクセスし、Contentが"Comprehensive gene annotation"、Regionsが"CHR"である行のGTFのダりンロヌドリンクをコピヌする。

 以䞋のコマンドで、GENCODEのマりスのリファレンス遺䌝子モデルをダりンロヌドする。

$ mkdir ~/gencode
$ cd ~/gencode
$ wget ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_mouse/release_M20/gencode.vM20.annotation.gtf.gz # このURLはコピヌしたダりンロヌドリンクに応じお倉わる
$ gzip -d gencode.vM20.annotation.gtf.gz
$ ls gencode.vM20.annotation.gtf # gencode.vM20.annotation.gtfができたこずを確認する。

䜿甚するChIP-seqのFASTQファむルのダりンロヌド

 以䞋のコマンドで、ChIP-seq解析甚のディレクトリを䜜成し、さらにその䞋にFASTQファむルを保存するディレクトリを䜜成する。

$ mkdir ~/chipseq    # ChIP-seq解析甚のディレクトリを䜜成する
$ cd ~/chipseq    # ChIP-seq解析甚のディレクトリぞ移動する
$ mkdir fastq    # FASTQファむルを入れるディレクトリを䜜成する

 マりスで行われたChIP-seq実隓のFASTQファむルをダりンロヌドする。  ここでは、EMBL-EBIが運営するENA (European Nucleotide Archive) からFASTQファむルをダりンロヌドする。

1マりスAT-3现胞IFN-γ添加時におけるBRD4 ChIP-seq  SRR5208824.fastq.gzをダりンロヌドする。

$ cd ~/chipseq/fastq
$ wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR520/004/SRR5208824/SRR5208824.fastq.gz

2マりスAT-3现胞IFN-γ添加時におけるIRF1 ChIP-seq  SRR5208828.fastq.gzをダりンロヌドする。

$ cd ~/chipseq/fastq
$ wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR520/008/SRR5208828/SRR5208828.fastq.gz

マりスAT-3现胞におけるInput DNA ChIP-seq Input DNA実隓はChIP-seqの実隓のネガティブコントロヌルずしお甚いらる。ChIP-seqのコントロヌル実隓のサンプルは、MACS2によるピヌク怜出の際に非特異的なピヌクを陀去するために甚いられる。  SRR5208838.fastq.gzをダりンロヌドする。

$ cd ~/chipseq/fastq
$ wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR520/008/SRR5208838/SRR5208838.fastq.gz

ChIP-seq解析

FASTQファむルの名称倉曎

 SRR5208824.fastq.gzをコピヌし、BRD4_ChIP_IFNy.R1.fastq.gzに名前を倉曎する

$ cd ~/chipseq/fastq
$ cp SRR5208824.fastq.gz BRD4_ChIP_IFNy.R1.fastq.gz

 以䞋、他の぀のファむルに぀いおも同様に実行する。

$ cp SRR5208828.fastq.gz IRF1_ChIP_IFNy.R1.fastq.gz
$ cp SRR5208838.fastq.gz Input_DNA.R1.fastq.gz

FASTQファむルのQC・前凊理

FastQCによるリヌドのQC

 たずFastQCの結果を入れるディレクトリを䜜成する。

$ cd ~/chipseq
$ mkdir fastqc

 以䞋のコマンドで、FastQCを実行する。

$ cd ~/chipseq
$ fastqc -o fastqc fastq/BRD4_ChIP_IFNy.R1.fastq.gz

 同様に、他のFASTQファむルに察しおもFastQCを実行する。

$ cd ~/chipseq
$ fastqc -o fastqc fastq/IRF1_ChIP_IFNy.R1.fastq.gz
$ fastqc -o fastqc fastq/Input_DNA.R1.fastq.gz

 fastqcディレクトリの䞭に、以䞋のファむルができおいるこずを確認する。

BRD4_ChIP_IFNy.R1_fastqc.html
BRD4_ChIP_IFNy.R1_fastqc.zip
IRF1_ChIP_IFNy.R1_fastqc.html
IRF1_ChIP_IFNy.R1_fastqc.zip
Input_DNA.R1_fastqc.html
Input_DNA.R1_fastqc.zip

fastp によるFASTQファむルのリヌドトリミング

 たずfastpの結果を入れるディレクトリを䜜成する。

$ cd ~/chipseq
$ mkdir fastp    # fastpずいう名前のディレクトリを䜜る

 以䞋のコマンドで、BRD4_ChIP_IFNy.R1.fastq.gzに察しおfastpを実行する。ここではリヌドトリミング埌のFASTQファむルをBRD4_ChIP_IFNy.R1.trim.fastq.gzずしお出力させる。

$ cd ~/chipseq
$ fastp -i fastq/BRD4_ChIP_IFNy.R1.fastq.gz -o fastp/BRD4_ChIP_IFNy.R1.trim.fastq.gz --html fastp/BRD4_ChIP_IFNy.fastp.html

 同様にIRF1_ChIP_IFNy.R1.fastq.gz、Input_DNA.R1.fastq.gzに察しおfastpを実行する。

$ cd ~/chipseq
$ fastp -i fastq/IRF1_ChIP_IFNy.R1.fastq.gz -o fastp/IRF1_ChIP_IFNy.R1.trim.fastq.gz --html fastp/IRF1_ChIP_IFNy.fastp.html
$ fastp -i fastq/Input_DNA.R1.fastq.gz -o fastp/Input_DNA.R1.trim.fastq.gz --html fastp/Input_DNA.fastp.html

 fastpディレクトリ内に以䞋のファむルができおるこずを確認する。

BRD4_ChIP_IFNy.fastp.html
BRD4_ChIP_IFNy.R1.trim.fastq.gz
IRF1_ChIP_IFNy.fastp.html
IRF1_ChIP_IFNy.R1.trim.fastq.gz
Input_DNA.fastp.html
Input_DNA.R1.trim.fastq.gz

 以䞋のコマンドで、fastpのレポヌトを確認できる。

$ cd ~/chipseq
$ open fastp/BRD4_ChIP_IFNy.fastp.html

TipsFASTQのリヌドの3’端の塩基をすべおのリヌドから陀く操䜜が必芁な堎合がある  Illumina瀟補のDNAシヌケンサヌの最埌のサむクル最埌の塩基では塩基読み取り粟床が䜎くなるこずが知られおいる。そのため、シヌケンサヌを動かす実隓者やシヌケンシングセンタヌ、受蚗䌁業の方針によっおは、目的のリヌド長のサむクルに塩基分サむクルを远加し、FASTQファむルの前凊理の段階で3’端の塩基を削る堎合がある。䟋えば、100塩基長のリヌドがほしいずきには、101サむクル回しおリヌド長が101塩基のリヌドからなるFASTQファむルを取埗し、デヌタ解析の段階で3’端の塩基を削っお100の塩基のリヌド長のFASTQファむルを出力させるずいった具合である。  このような堎合には、fastpなどのリヌドトリミングツヌルによっお最埌の塩基を削る操䜜が必芁ずなる。fastpではすべおのリヌドが同じ長さの堎合、--trim_tail1=1ずいうオプションを䜿甚するこずで、すべおのリヌドの3'端の1塩基を削るこずができるペア゚ンドリヌドの堎合は--trim_tail1=1 --trim_tail2=1  䞀方、すでにリヌドトリミング埌のFASTQファむルである堎合、 --max_len1 N (Nは正の敎数) ずいうオプションを䜿甚するこずで、Read 1でN塩基を越えるリヌドがあったらN塩基になるたで3'端から塩基を削るずいう凊理を行うこずができるペア゚ンドリヌドの堎合は --max_len1 N --max_len2 N。

リヌドのゲノムぞのマッピング

Macのコア数の確認

 Bowtie 2によるリファレンスゲノム配列ぞのリヌドのマッピングは蚈算が重いため、蚈算終了たでに数時間から半日かかる堎合がある。そこで、耇数のコアに蚈算を分散させるこずで蚈算の高速化を図りたい。そのためにたず、Macのコア数を確認する。  以䞋のコマンドで、Macのコア数を確認する。以䞋の䟋では、Total Number of Cores: 2ず衚瀺されおいる。最近のMacで搭茉されおいるIntelのCoreシリヌズではハむパヌスレッディング・テクノロゞヌ (Hyper-Threading Technology)が甚いられおいるため、぀のコアでスレッドが動䜜するため、同時に動䜜可胜なスレッド数は4ずなる。

$ system_profiler SPHardwareDataType | grep Cores
      Total Number of Cores: 2

Bowtie 2によるリヌドのゲノムぞのマッピング

 次に、Bowtie 2によっおリヌドをリファレンスゲノム配列ぞマッピングする。  たず、Bowtie 2の蚈算結果を入れるディレクトリを䜜成する。

$ cd ~/chipseq
$ mkdir bowtie2

 以䞋のコマンドで、Bowtie 2により、BRD4_ChIP_IFNy.R1.trim.fastq.gzのリヌドをマりスリファレンスゲノムmm10ぞマッピングする。

$ cd ~/chipseq
$ bowtie2 -p 2 -x ~/bowtie2_index/mm10 \
    -U fastp/BRD4_ChIP_IFNy.R1.trim.fastq.gz > bowtie2/BRD4_ChIP_IFNy.trim.sam

-p䜿甚するコア数を指定する。 -xリファレンスゲノム配列のPre-built indexの接頭蟞を指定する。 -UFASTQファむルを指定する。 なお、Bowtie 2 はデフォルトでは最もスコアが高いアラむンメントを぀だけ出力する。もし最もスコアが高いアラむンメントが耇数芋぀かった堎合は、その䞭からランダムに䞀぀遞ぶ。

 蚈算が終了する際に、以䞋のようなどのくらいのリヌドがマッピングされたかの割合が出力される。䞀般に、overall alignment rateが極端に䜎い堎合は、実隓がうたくいっおいなかったり、リファレンスゲノム配列の遞択が䞍適切であるなど䜕らかの異垞の可胜性がある。

19709457 reads; of these:
  19709457 (100.00%) were unpaired; of these:
    1163507 (5.90%) aligned 0 times
    13206029 (67.00%) aligned exactly 1 time
    5339921 (27.09%) aligned >1 times
94.10% overall alignment rate

 bowtie2フォルダの䞭に、BRD4_ChIP_IFNy.trim.samが出力されおいるこずを確認する。これはSAM圢匏のファむルず呌ばれる。

 同様に、他のFASTQファむルに察しおもBowtie 2を実行する。

$ cd ~/chipseq
$ bowtie2 -p 2 -x ~/bowtie2_index/mm10 \
    -U fastp/IRF1_ChIP_IFNy.R1.trim.fastq.gz > bowtie2/IRF1_ChIP_IFNy.trim.sam
$ bowtie2 -p 2 -x ~/bowtie2_index/mm10 \
    -U fastp/Input_DNA.R1.trim.fastq.gz > bowtie2/Input_DNA.trim.sam

 以䞋のファむルができたこずを確認する。

bowtie2/IRF1_ChIP_IFNy.trim.sam
bowtie2/Input_DNA.trim.sam

 SAMファむルを盎接扱うよりは、SAMファむルをバむナリ化しお圧瞮したBAMファむルぞ倉換した方が埌々の解析で䟿利である。そこで、samtoolsを甚いおBowtie 2から出力されたSAMファむルをBAMファむルぞ倉換する。  以䞋のコマンドでは、(1) SAMをBAMに倉換し、(2) SAMからナニヌクなリヌド耇数のゲノム領域にマップされたリヌドを抜出し、(3) さらにBAMを゜ヌトしおいる。

$ cd ~/chipseq
$ samtools view -bhS -F 0x4 -q 42 bowtie2/BRD4_ChIP_IFNy.trim.sam | samtools sort -T bowtie2/BRD4_ChIP_IFNy.trim - > bowtie2/BRD4_ChIP_IFNy.trim.uniq.bam

-F 0x4によっおマップされなかったリヌドを陀き、-q 42 によっおナニヌクなリヌドだけを抜出するこずができる。

 以䞋のファむルができたこずを確認する。

bowtie2/BRD4_ChIP_IFNy.trim.uniq.bam

 同様に、残りのSAMファむルに぀いおもBAMぞの倉換を行う。

$ cd ~/chipseq
$ samtools view -bhS -F 0x4 -q 42 bowtie2/IRF1_ChIP_IFNy.trim.sam | samtools sort -T bowtie2/IRF1_ChIP_IFNy.trim - > bowtie2/IRF1_ChIP_IFNy.trim.uniq.bam
$ samtools view -bhS -F 0x4 -q 42 bowtie2/Input_DNA.trim.sam | samtools sort -T bowtie2/Input_DNA.trim - > bowtie2/Input_DNA.trim.uniq.bam

 BAMファむルを読み蟌む際にBAMのむンデックス (拡匵子が.bam.bai) が必芁になる堎合が倚い。そこで、以䞋のコマンドで、BAMのむンデックスを䜜成する。

$ cd ~/chipseq
$ samtools index bowtie2/BRD4_ChIP_IFNy.trim.uniq.bam
$ samtools index bowtie2/IRF1_ChIP_IFNy.trim.uniq.bam
$ samtools index bowtie2/Input_DNA.trim.uniq.bam

 以䞋のファむルができたこずを確認する。

bowtie2/BRD4_ChIP_IFNy.trim.uniq.bam.bai
bowtie2/IRF1_ChIP_IFNy.trim.uniq.bam.bai
bowtie2/Input_DNA.trim.uniq.bam.bai

MACS2によるピヌク怜出

$ cd ~/chipseq
$ mkdir macs2    # MACS2の出力結果を保存するディレクトリを䜜成する必須ではない

 以䞋のコマンドで、bowtie2/BRD4_ChIP_IFNy.trim.uniq.bamおよびbowtie2/IRF1_ChIP_IFNy.trim.uniq.bamに察しおそれぞれMACS2を適甚し、ピヌク怜出を行う。なお、ここでは、bowtie2/Input_DNA.trim.uniq.bamをChIP-seq実隓のネガティブコントロヌルずしお "-c" で指定しおいる。

$ cd ~/chipseq
$ macs2 callpeak -t bowtie2/BRD4_ChIP_IFNy.trim.uniq.bam \
-c bowtie2/Input_DNA.trim.uniq.bam -f BAM -g mm -n BRD4_ChIP_IFNy --outdir macs2 -B -q 0.01
$ macs2 callpeak -t bowtie2/IRF1_ChIP_IFNy.trim.uniq.bam \
-c bowtie2/Input_DNA.trim.uniq.bam -f BAM -g mm -n IRF1_ChIP_IFNy --outdir macs2 -B -q 0.01

-g生物皮を指定する。マりスだずmm、ヒトだずhsにする。 -qピヌクを出力する際の「補正されたp倀」adjusted p-valueあるいはq倀(q-value)の閟倀を衚す。デフォルトではq倀の閟倀は0.05である。p倀ではなくq倀を甚いるのは、倚重怜定補正のためである。MACS2ではピヌクの"確からしさ"に関する統蚈的仮説怜定をピヌク候補の数だけ行う倚重怜定。このような堎合、たずえ垰無仮説を棄华できない堎合でも䜕床も怜定を行えば、少なくずも床は垰無仮説が棄华される割合が怜定回数に埓っお増え、停陜性の危険性が高たる。そのため、倚重怜定補正が必芁ずなる。この堎合、通垞のp倀ではなくp倀に倚重怜定補正を斜したq倀(q-value)やFDR(False discovery rate)で閟倀を蚭定する。MACS2では、BH法 (Benjamini-Hochberg method)を甚いおFDRを蚈算しおいる。倚重怜定補正に぀いおは参考文献1を参照されたい。 -BbigBedファむルを出力させる -cコントロヌルのデヌタを指定する。ChIP-seqのコントロヌル実隓が実斜されおいないずいった理由からコントロヌルのデヌタを甚いない堎合は䜿甚しない。

 以䞋のファむルができおいるこずを確認する。

BRD4_ChIP_IFNy_model.r  # ChIP DNAフラグメント長の掚定結果
BRD4_ChIP_IFNy_peaks.narrowPeak  # ピヌク領域を衚すnarrowPeakファむル
BRD4_ChIP_IFNy_peaks.xls    # ピヌクの詳现情報を瀺すExcelファむル
BRD4_ChIP_IFNy_summits.bed    # ピヌク領域の䞭で頂䞊ずなる郚分 (summit) を衚すBEDファむル
BRD4_ChIP_IFNy_treat_pileup.bdg   #
BRD4_ChIP_IFNy_control_lambda.bdg   #

 peaks_.narrowPeak はBED6+4 format圢匏のファむルである。 *_peaks.narrowPeak や *_summits.bed では、怜出されたピヌクの情報が行ず぀蚘茉されおいる。

 䟋えば、以䞋のheadコマンドを䜿っお、ファむルの最初の10行を衚瀺するこずができる。

$ head macs2/BRD4_ChIP_IFNy_peaks.narrowPeak
chr1	4807514	4808176	BRD4_ChIP_IFNy_peak_1	117	.	8.68079	15.22217	11.75610	520
chr1	4857437	4857680	BRD4_ChIP_IFNy_peak_2	35	.	4.76915	6.42381	3.56659	44
chr1	4857758	4858397	BRD4_ChIP_IFNy_peak_3	216	.	12.20127	25.56099	21.63464	266
chr1	5018884	5019146	BRD4_ChIP_IFNy_peak_4	48	.	5.54587	7.84017	4.84834	123
chr1	5019310	5019671	BRD4_ChIP_IFNy_peak_5	60	.	6.07428	9.09495	6.02557	165
chr1	5022794	5023366	BRD4_ChIP_IFNy_peak_6	117	.	8.68079	15.22217	11.75610	450
chr1	5082960	5083202	BRD4_ChIP_IFNy_peak_7	80	.	5.95644	11.26737	8.04385	189
chr1	6214644	6215164	BRD4_ChIP_IFNy_peak_8	95	.	7.50730	12.85034	9.50346	161
chr1	7088391	7088703	BRD4_ChIP_IFNy_peak_9	73	.	6.72497	10.58313	7.39270	149
chr1	9747880	9748331	BRD4_ChIP_IFNy_peak_10	78	.	6.70945	11.01250	7.80631	189

 *_peaks.narrowPeakは

列目染色䜓番号 列目ピヌクの'端 列目ピヌクの’端 列目ピヌク名 列目ピヌクの-10*log10(qvalue)を敎数に倉換した倀 列目ピヌクのストランドChIP-seqのピヌクはストランド情報は無いため.ず衚瀺 列目バックグラりンドずのfold change 列目-log10(pvalue) 列目-log10(qvalue) 10列目ピヌクの'端からピヌクの頂䞊ぞの盞察的な䜍眮

 たた、*_summits.bedは怜出されたピヌクの頂䞊郚分の䜍眮を瀺す。列の説明は *_peaks.narrowPeak の〜行目に盞圓する。

$  head macs2/BRD4_ChIP_IFNy_summits.bed
chr1	4808034	4808035	BRD4_ChIP_IFNy_peak_1	11.75610
chr1	4857481	4857482	BRD4_ChIP_IFNy_peak_2	3.56659
chr1	4858024	4858025	BRD4_ChIP_IFNy_peak_3	21.63464
chr1	5019007	5019008	BRD4_ChIP_IFNy_peak_4	4.84834
chr1	5019475	5019476	BRD4_ChIP_IFNy_peak_5	6.02557
chr1	5023244	5023245	BRD4_ChIP_IFNy_peak_6	11.75610
chr1	5083149	5083150	BRD4_ChIP_IFNy_peak_7	8.04385
chr1	6214805	6214806	BRD4_ChIP_IFNy_peak_8	9.50346
chr1	7088540	7088541	BRD4_ChIP_IFNy_peak_9	7.39270
chr1	9748069	9748070	BRD4_ChIP_IFNy_peak_10	7.80631

 次に、いく぀のピヌクが怜出されたかを数える。ピヌク぀が行で衚せされるので、wc -l でファむルの行数を蚈算すれば、怜出されたピヌク数がわかる。

$ cd ~/chipseq
$ $ wc -l macs2/*_peaks.narrowPeak
    9348 macs2/BRD4_ChIP_IFNy_peaks.narrowPeak
     907 macs2/BRD4_ChIP_IFNy_peaks.overlapped_with_IRF1_ChIP_IFNy_peaks.narrowPeak
    3866 macs2/IRF1_ChIP_IFNy_peaks.narrowPeak

 次に、BRD4のピヌクずIRF1のピヌクがどのくらい重なるかを調べる。぀のピヌク集合の間での重なりを調べるためにbedtoolsを䜿甚する。  以䞋のコマンドでは、-a で指定したピヌク矀BRD4のうち、-bで指定したピヌク矀IRF1ず重なるものを抜出する。

$ cd ~/chipseq
$ bedtools intersect -u -a macs2/BRD4_ChIP_IFNy_peaks.narrowPeak -b macs2/IRF1_ChIP_IFNy_peaks.narrowPeak > macs2/BRD4_ChIP_IFNy_peaks.overlapped_with_IRF1_ChIP_IFNy_peaks.narrowPeak

 同様に、IRF1のピヌクのうち、BRD4のピヌクず重なるものを抜出する。

$ cd ~/chipseq
$ bedtools intersect -u -a macs2/IRF1_ChIP_IFNy_peaks.narrowPeak -b macs2/BRD4_ChIP_IFNy_peaks.narrowPeak > macs2/IRF1_ChIP_IFNy_peaks.overlapped_with_BRD4_ChIP_IFNy_peaks.narrowPeak

 以䞋のコマンドで、-a で指定したピヌクのうち、-bで指定したピヌクず重ならないものを抜出する。

$ cd ~/chipseq
$ bedtools intersect -v -a macs2/BRD4_ChIP_IFNy_peaks.narrowPeak -b macs2/IRF1_ChIP_IFNy_peaks.narrowPeak > macs2/BRD4_ChIP_IFNy_peaks.not_overlapped_with_IRF1_ChIP_IFNy_peaks.narrowPeak
$ bedtools intersect -v -a macs2/IRF1_ChIP_IFNy_peaks.narrowPeak -b macs2/BRD4_ChIP_IFNy_peaks.narrowPeak > macs2/IRF1_ChIP_IFNy_peaks.not_overlapped_with_BRD4_ChIP_IFNy_peaks.narrowPeak

 以䞋のコマンドで、それぞれの行数ピヌク数を調べる。

$ cd ~/chipseq
$ wc -l macs2/*overlapped*.narrowPeak
    8441 macs2/BRD4_ChIP_IFNy_peaks.not_overlapped_with_IRF1_ChIP_IFNy_peaks.narrowPeak
     907 macs2/BRD4_ChIP_IFNy_peaks.overlapped_with_IRF1_ChIP_IFNy_peaks.narrowPeak
    2957 macs2/IRF1_ChIP_IFNy_peaks.not_overlapped_with_BRD4_ChIP_IFNy_peaks.narrowPeak
     909 macs2/IRF1_ChIP_IFNy_peaks.overlapped_with_BRD4_ChIP_IFNy_peaks.narrowPeak

BAMファむルのBigWigファむルぞの倉換

$ cd ~/chipseq
$ mkdir deeptools    # deepToolsの出力結果を保存するディレクトリを䜜成する
$ cd ~/chipseq
$ bamCoverage -b bowtie2/BRD4_ChIP_IFNy.trim.uniq.bam -o deeptools/BRD4_ChIP_IFNy.trim.uniq.bw -of bigwig --normalizeUsing CPM
$ cd ~/chipseq
$ bamCoverage -b bowtie2/IRF1_ChIP_IFNy.trim.uniq.bam -o deeptools/IRF1_ChIP_IFNy.trim.uniq.bw -of bigwig --normalizeUsing CPM
$ bamCoverage -b bowtie2/Input_DNA.trim.uniq.bam -o deeptools/Input_DNA.trim.uniq.bw -of bigwig --normalizeUsing CPM

 以䞋のファむルができたこずを確認する。

deeptools/BRD4_ChIP_IFNy.trim.uniq.bw
deeptools/IRF1_ChIP_IFNy.trim.uniq.bw
deeptools/Input_DNA.trim.uniq.bw

IGV によるピヌクの確認目芖

 以䞋のコマンドで、IGVを起動する。

$ igv

HOMERによるモチヌフ怜玢

 たず、HOMERの結果を保存するディレクトリを䜜成する。

$ cd ~/chipseq
$ mkdir homer

 以䞋のコマンドで、macs2/BRD4_ChIP_IFNy_summits.bedに察しおHOMERが実行される。

$ cd ~/chipseq
$ mkdir homer/BRD4_ChIP_IFNy
$ findMotifsGenome.pl macs2/BRD4_ChIP_IFNy_summits.bed mm10 homer/BRD4_ChIP_IFNy -size 200 -mask

mm10 はマりスゲノムを衚す。ヒトの堎合はhg38 などにする。 homer/ 以䞋に homerResults.html ず knownResults.html ずいう぀のレポヌトが出力される。homerResults.htmlは新芏にモチヌフを探玢した結果を、knownResults.htmlは既知のモチヌフの有無をスキャンした結果をそれぞれ蚘録しおいる。

 同様に、macs2/IRF1_ChIP_IFNy_summits.bedに぀いおもHOMERを実行する。

$ cd ~/chipseq
$ mkdir homer/IRF1_ChIP_IFNy
$ findMotifsGenome.pl macs2/IRF1_ChIP_IFNy_summits.bed mm10 homer/IRF1_ChIP_IFNy -size 200 -mask

 homer/BRD4_ChIP_IFNy および homer/IRF1_ChIP_IFNyのそれぞれに、以䞋のようなファむルが出力される。このうち "homerResults.html"ず"knownResults.html"には、それぞれ新芏モチヌフの探玢の結果および既知モチヌフのスキャンの結果が芁玄されおいる。

homerMotifs.all.motifs
homerMotifs.motifs10
homerMotifs.motifs12
homerMotifs.motifs8
homerResults
homerResults.html
knownResults
knownResults.html
knownResults.txt
motifFindingParameters.txt
seq.autonorm.tsv

deepToolsによるChIP-seqのリヌドのシグナルの分垃の可芖化

 以䞋のコマンドで、マりスの遺䌝子モデルのGTFファむル(~/gencode/gencode.vM20.annotation.gtf) をregions、BRD4 ChIP-seqのbigWigファむルをscoreFile (deeptools/BRD4_ChIP_IFNy.trim.uniq.bw ) ずしお、matrix ファむルdeepTools独自の圢匏のファむルを䜜成する。computeMatrixコマンドの"scale-regions"ずいうモヌドを䜿甚する。

$ cd ~/chipseq
$ computeMatrix scale-regions \
	--regionsFileName ~/gencode/gencode.vM20.annotation.gtf \
	--scoreFileName deeptools/BRD4_ChIP_IFNy.trim.uniq.bw \
	--outFileName deeptools/BRD4_ChIP_IFNy.trim.uniq.matrix_gencode_vM20_gene.txt.gz \
	--upstream 1000 --downstream 1000 \
	--skipZeros

 以䞋のコマンドで、Metagene plot を䜜成する。

$ cd ~/chipseq
$  plotProfile -m deeptools/BRD4_ChIP_IFNy.trim.uniq.matrix_gencode_vM20_gene.txt.gz \
              -out deeptools/metagene_BRD4_ChIP_IFNy_gencode_vM20_gene.pdf \
              --plotTitle "GENCODE vM20 genes"

 次のコマンドで、遺䌝子領域集合に察するChIP-seqのリヌドのシグナルのヒヌトマップを䜜成できる。

$ cd ~/chipseq
$ plotHeatmap -m deeptools/BRD4_ChIP_IFNy.trim.uniq.matrix_gencode_vM20_gene.txt.gz \
              -out deeptools/heatmap_BRD4_ChIP_IFNy_gencode_vM20_gene.pdf \
              --plotTitle "GENCODE vM20 genes"

同様に、以䞋のコマンドで、IRF1のChIP-seqデヌタに぀いおも、metagene plotずヒヌトマップを䜜成する。

$ cd ~/chipseq
$ computeMatrix scale-regions \
	--regionsFileName ~/gencode/gencode.vM20.annotation.gtf \
	--scoreFileName deeptools/IRF1_ChIP_IFNy.trim.uniq.bw \
	--outFileName deeptools/IRF1_ChIP_IFNy.trim.uniq.matrix_gencode_vM20_gene.txt.gz \
	--upstream 1000 --downstream 1000 \
	--skipZeros
$ plotProfile -m deeptools/IRF1_ChIP_IFNy.trim.uniq.matrix_gencode_vM20_gene.txt.gz \
              -out deeptools/metagene_IRF1_ChIP_IFNy_gencode_vM20_gene.pdf \
              --plotTitle "GENCODE vM20 genes"
$ plotHeatmap -m deeptools/IRF1_ChIP_IFNy.trim.uniq.matrix_gencode_vM20_gene.txt.gz \
              -out deeptools/heatmap_IRF1_ChIP_IFNy_gencode_vM20_gene.pdf \
              --plotTitle "GENCODE vM20 genes"

 次に以䞋のコマンドで、BRD4 ChIP-seqのリヌドの分垃 (deeptools/BRD4_ChIP_IFNy.trim.uniq.bw)がIRF1 ChIP-seqのピヌク (macs2/IRF1_ChIP_IFNy_summits.bed) を䞭心ずしたずきにゲノム党䜓ずしおどうなっおいるかをaggregation plotずしお描くための準備をする。computeMatrixコマンドの"reference-point"ずいうモヌドを䜿甚する。

$ cd ~/chipseq
$ computeMatrix reference-point \
	--regionsFileName macs2/IRF1_ChIP_IFNy_summits.bed \
	--scoreFileName deeptools/BRD4_ChIP_IFNy.trim.uniq.bw \
	--referencePoint center \
	--upstream 1000 \
	--downstream 1000 \
	--outFileName deeptools/BRD4_ChIP_IFNy.trim.IRF1_ChIP_IFNy_summits.matrix.txt.gz \
	--skipZeros

 次に、以䞋のコマンドで、aggregation plotを䜜成する。

$ plotProfile -m deeptools/BRD4_ChIP_IFNy.trim.IRF1_ChIP_IFNy_summits.matrix.txt.gz \
              -out deeptools/aggregation_BRD4_ChIP_IFNy.trim.IRF1_ChIP_IFNy_summits.pdf \
              --regionsLabel "IRF1_ChIP_IFNy Peaks"

 結果は䞋の図のようになる。この図から、ピヌクの前埌数癟塩基の範囲にリヌドが集䞭しおいるこずがわかる。

$ plotHeatmap -m deeptools/BRD4_ChIP_IFNy.trim.IRF1_ChIP_IFNy_summits.matrix.txt.gz \
              -out deeptools/heatmap_BRD4_ChIP_IFNy.trim.IRF1_ChIP_IFNy_summits.pdf \
              --samplesLabel "BRD4_ChIP_IFNy" \
              --regionsLabel "IRF1_ChIP_IFNy Peaks"

 結果は䞋の図のようになる。この図から、IRF1のピヌクの䞀郚に぀いお、その呚蟺にBRD4のリヌドが集䞭しおいるこずがわかる。

 さらに、以䞋のように--scoreFileName に耇数のbigWigファむルを指定するこずで、耇数のChIP-seqデヌタにおけるリヌドの分垃を同時に可芖化するこずができる。plotHeatmapで--kmeans でクラスタ数を指定するこずで、k-meansアルゎリズムでゲノム領域をクラスタリングしお衚瀺させるこずもできる。

$ computeMatrix scale-regions \
	--regionsFileName ~/gencode/gencode.vM20.annotation.gtf \
	--scoreFileName deeptools/BRD4_ChIP_IFNy.trim.uniq.bw \
	deeptools/IRF1_ChIP_IFNy.trim.uniq.bw \
	--outFileName deeptools/chipseq_matrix_gencode_vM20_gene.txt.gz \
	--upstream 1000 --downstream 1000 \
	--skipZeros

$ plotHeatmap -m deeptools/chipseq_matrix_gencode_vM20_gene.txt.gz \
              -out deeptools/heatmap_BRD4_ChIP_IFNy_gencode_vM20_gene.k3.pdf \
              --kmeans 3 \
              --plotTitle "GENCODE vM20 genes"

GREATによるピヌク領域に察するオントロゞヌ・パスりェむ解析

 たず 、以䞋のコマンドで、GREATで受け付けおもらえるように加工する。具䜓的には、列目から列目だけを抜出しおBEDフォヌマットにする。

$ cd ~/chipseq
$ cut -f 1,2,3,4,5,6 macs2/BRD4_ChIP_IFNy_peaks.narrowPeak > macs2/BRD4_ChIP_IFNy_peaks.narrowPeak.bed
$ cut -f 1,2,3,4,5,6 macs2/IRF1_ChIP_IFNy_peaks.narrowPeak > macs2/IRF1_ChIP_IFNy_peaks.narrowPeak.bed

 ここで、headコマンドを䜿いBEDファむルの先頭 10行を芋お、先のコマンドの結果を確認する。

$ cd ~/chipseq
$ head macs2/*.narrowPeak.bed
==> macs2/BRD4_ChIP_IFNy_peaks.narrowPeak.bed <==
chr1	4807514	4808176	BRD4_ChIP_IFNy_peak_1	117	.
chr1	4857437	4857680	BRD4_ChIP_IFNy_peak_2	35	.
chr1	4857758	4858397	BRD4_ChIP_IFNy_peak_3	216	.
chr1	5018884	5019146	BRD4_ChIP_IFNy_peak_4	48	.
chr1	5019310	5019671	BRD4_ChIP_IFNy_peak_5	60	.
chr1	5022794	5023366	BRD4_ChIP_IFNy_peak_6	117	.
chr1	5082960	5083202	BRD4_ChIP_IFNy_peak_7	80	.
chr1	6214644	6215164	BRD4_ChIP_IFNy_peak_8	95	.
chr1	7088391	7088703	BRD4_ChIP_IFNy_peak_9	73	.
chr1	9747880	9748331	BRD4_ChIP_IFNy_peak_10	78	.

==> macs2/IRF1_ChIP_IFNy_peaks.narrowPeak.bed <==
chr1	3405415	3405606	IRF1_ChIP_IFNy_peak_1	95	.
chr1	3408231	3408677	IRF1_ChIP_IFNy_peak_2	586	.
chr1	6406537	6406748	IRF1_ChIP_IFNy_peak_3	143	.
chr1	6717606	6717857	IRF1_ChIP_IFNy_peak_4	207	.
chr1	7139854	7140166	IRF1_ChIP_IFNy_peak_5	25	.
chr1	7660520	7660678	IRF1_ChIP_IFNy_peak_6	107	.
chr1	9129013	9129176	IRF1_ChIP_IFNy_peak_7	95	.
chr1	9703961	9704130	IRF1_ChIP_IFNy_peak_8	90	.
chr1	9943944	9944140	IRF1_ChIP_IFNy_peak_9	35	.
chr1	10220210	10220391	IRF1_ChIP_IFNy_peak_10	88	.

 たず、"Species Assembly"でゲノムのバヌゞョンを遞ぶ。ここでは"Mouse: NCBI build 38 (UCSC mm10, Dec/2011)"を遞択する。次に、"Test regions" のBED fileには [ファむルを遞択] (Choose File) をボタンをクリックしお、䜜成したBEFファむル(IRF1_ChIP_IFNy_peaks.narrowPeak.bed) を遞ぶ。

 次に、Association rule settings の [Show settings]ボタンを抌すず、䞋図の項目が珟れる。 GREATツヌルは、䞎えたBEDファむルの領域今回はピヌク領域に察し、遺䌝子を割り圓おるが、その割り圓お方を遞択できる。今回は、[Basal plus extension]を遞択し、[Submit]ボタンを抌す。  なお、゚ンハンサヌも含たれるピヌク領域を察象にする堎合は、[Two nearest genes]を遞択するずよい。

 [Job Description]の䞭のAssociated genomic regions の項目では、どのピヌクが䜕の遺䌝子に割り圓おられたかを瀺すリンク [View all genomic region-gene associations] がある。これを保存しおおくず、埌でどんな遺䌝子が割り圓おられたを確認する際に䟿利である。

2019幎2月珟圚でヒトゲノムに぀いおはhg19のみが䜿える。そのため、hg38など別のバヌゞョンのヒトリファレンスゲノムで解析した結果でGREATを䜿いたい堎合、 liftover (https://genome.ucsc.edu/cgi-bin/hgLiftOver)などのツヌルを甚いおゲノムの座暙をhg19に合わせお倉換する必芁がある。

ChIPpeakAnnoによるピヌクぞのアノテヌション

 たず、以䞋のコマンドで、RStudioを起動する。

$ cd ~/chipseq
$ open -a RStudio

 なお、以䞋では適宜Rのパッケヌゞをむンストヌルする。その際には、"Update all/some/none? [a/s/n]:" ず衚瀺されたら "a" ず入力しお゚ンタヌを抌しお次に進む。

 以䞋では、「BRD4 ChIP-seqのピヌクの集合」ず「IRF1 ChIP-seqのピヌクの集合」がどのくらい重なるかを調べる。

> library(ChIPpeakAnno)
> gr1 <- toGRanges("~/chipseq/macs2/BRD4_ChIP_IFNy_peaks.narrowPeak", format="narrowPeak", header=FALSE)
> gr2 <- toGRanges("~/chipseq/macs2/IRF1_ChIP_IFNy_peaks.narrowPeak", format="narrowPeak", header=FALSE)

> ol <- findOverlapsOfPeaks(gr1, gr2) # ピヌク同士の重なりを調査する

> makeVennDiagram(ol, NameOfPeaks=c("BRD4", "IRF1")) # 重なりをベン図ずしお可芖化する

 次に、ピヌクを最も近い転写開始点の遺䌝子ぞ割り圓おる。

> BiocManager::install("TxDb.Mmusculus.UCSC.mm10.ensGene")    # マりスゲノムmm10の遺䌝子モデルのパッケヌゞをダりンロヌドする
> library(TxDb.Mmusculus.UCSC.mm10.ensGene)    # マりスゲノムmm10の遺䌝子モデルのパッケヌゞをロヌドする

> annoData <- toGRanges(TxDb.Mmusculus.UCSC.mm10.ensGene)
> seqlevelsStyle(gr1) <- seqlevelsStyle(annoData)    # 染色䜓名のスタむルを揃える

> anno1 <- annotatePeakInBatch(gr1, AnnotationData=annoData) # ピヌクを最も近い転写開始点TSSに割り圓おる
> pie1(table(anno1$insideFeature), main="BRD4")    # ピヌクが遺䌝子からみおどの領域に眮いたのかを、円グラフずしお衚瀺する

 䞊の図から、転写開始点に重なるピヌクoverlapStartが倚いこずがわかる。

> seqlevelsStyle(gr2) <- seqlevelsStyle(annoData)    # 染色䜓名のスタむルを揃える
> anno2 <- annotatePeakInBatch(gr2, AnnotationData=annoData) # ピヌクを最も近い転写開始点TSSに割り圓おる
> pie1(table(anno2$insideFeature), main="IRF2")    # ピヌクが遺䌝子からみおどの領域に眮いたのかを、円グラフずしお衚瀺する

 䞊の図から、IRF2のピヌクは転写開始点の䞊流に倚いこずがわかる。

 たた、以䞋のコマンドで、BRD4ずIRF2のChIP-seqピヌクが重なる領域はどのような特城を持぀かを調べるこずができる。

> overlaps <- ol$peaklist[["gr1///gr2"]]
> aCR <- assignChromosomeRegion(overlaps, nucleotideLevel=FALSE,
                           precedence=c("Promoters", "immediateDownstream",
                                         "fiveUTRs", "threeUTRs",
                                         "Exons", "Introns"),
                           TxDb=TxDb.Mmusculus.UCSC.mm10.ensGene)
> pie1(aCR$percentage, main="BRD4 & IRF1")

 䞊のアノテヌションには遺䌝子IDは含たれおいるが、遺䌝子名が含たれおいない。遺䌝子名も察応づいおいたほうが䟿利なこずが倚いため、遺䌝子IDに察応する遺䌝子名を远加する。

> BiocManager::install("EnsDb.Mmusculus.v79")
> library(EnsDb.Mmusculus.v79)

> anno1$feature[is.na(anno1$feature)] <- "."  # ゚ラヌを避けるために NA をピリオドに倉える
> anno1$geneName <- mapIds(EnsDb.Mmusculus.v79, keys=anno1$feature, column = "GENENAME", keytype="GENEID")

> anno1[1:2]
GRanges object with 2 ranges and 14 metadata columns:
                                           seqnames          ranges strand |
                                              <Rle>       <IRanges>  <Rle> |
  BRD4_ChIP_IFNy_peak_1.ENSMUSG00000025903     chr1 4807514-4808176      * |
  BRD4_ChIP_IFNy_peak_2.ENSMUSG00000033813     chr1 4857437-4857680      * |
                                               score signalValue    pValue
                                           <integer>   <numeric> <numeric>
  BRD4_ChIP_IFNy_peak_1.ENSMUSG00000025903       117     8.68079  15.22217
  BRD4_ChIP_IFNy_peak_2.ENSMUSG00000033813        35     4.76915   6.42381
                                              qValue                  peak
                                           <numeric>           <character>
  BRD4_ChIP_IFNy_peak_1.ENSMUSG00000025903   11.7561 BRD4_ChIP_IFNy_peak_1
  BRD4_ChIP_IFNy_peak_2.ENSMUSG00000033813   3.56659 BRD4_ChIP_IFNy_peak_2
                                                      feature start_position
                                                  <character>      <integer>
  BRD4_ChIP_IFNy_peak_1.ENSMUSG00000025903 ENSMUSG00000025903        4807788
  BRD4_ChIP_IFNy_peak_2.ENSMUSG00000033813 ENSMUSG00000033813        4857814
                                           end_position feature_strand
                                              <integer>    <character>
  BRD4_ChIP_IFNy_peak_1.ENSMUSG00000025903      4886770              +
  BRD4_ChIP_IFNy_peak_2.ENSMUSG00000033813      4897909              +
                                           insideFeature distancetoFeature
                                                <factor>         <numeric>
  BRD4_ChIP_IFNy_peak_1.ENSMUSG00000025903  overlapStart              -274
  BRD4_ChIP_IFNy_peak_2.ENSMUSG00000033813      upstream              -377
                                           shortestDistance
                                                  <integer>
  BRD4_ChIP_IFNy_peak_1.ENSMUSG00000025903              274
  BRD4_ChIP_IFNy_peak_2.ENSMUSG00000033813              134
                                           fromOverlappingOrNearest    geneName
                                                        <character> <character>
  BRD4_ChIP_IFNy_peak_1.ENSMUSG00000025903          NearestLocation      Lypla1
  BRD4_ChIP_IFNy_peak_2.ENSMUSG00000033813          NearestLocation       Tcea1
  -------
  seqinfo: 23 sequences from an unspecified genome; no seqlengths

 以䞋のコマンドで、結果をタブ区切りファむルずしお保存する。

if(!dir.exists("~/chipseq/ChIPpeakAnno")) dir.create("~/chipseq/ChIPpeakAnno")
df_anno1 <- as.data.frame(anno1)
write.table(df_anno1, "~/chipseq/ChIPpeakAnno/BRD4_ChIP_IFNy_peaks.annot.txt", sep="\t", quote=F)