Chip-seq

作者: 超级无敌大蜗牛 | 来源:发表于2020-02-20 18:28 被阅读0次

    from 生信技能树
    paper: Brookes, E. et al. Polycomb associates genome-wide with a specific RNA polymerase II variant, and regulates metabolic genes in ESCs. Cell Stem Cell 10, 157–170 (2012).

    GSE accession: GSE34518,总共是9个样本,但是很多样本都分开在多个lane测序的,所以每个样本其实是有多个sra文件,需要进行合并。

    Use prefetch to download them all, then transform those SRA files to fastq files by sra-toolkits, then align them to mm10, and call peaks.

    测序用的是: Illumina Genome Analyzer II 测序仪,测序策略是 SE50。
    data="/home/zzz/data/test"

    #查找sra accesion list,用vim命令写入sra.list文件
    SRR391032
    SRR391033
    SRR391034
    SRR391035
    SRR391036
    SRR391037
    SRR391038
    SRR391039
    SRR391040
    SRR391041
    SRR391042
    SRR391043
    SRR391044
    SRR391045
    SRR391046
    SRR391047
    SRR391048
    SRR391049
    SRR391050
    

    下载sra并且转换为fastq

    cd $data
    conda install -c bioconda sra-tools #安装sra-tools
    cd $data/sra
    cat sra.list |while read i; do prefetch $i; done #download sra files
    ## 默认下载目录:~/ncbi/public/sra/ ,但是我的是下载在当前文件夹下的,而且每个sra文件都是一个文件夹。
    ls -lh ~/ncbi/public/sra/
    

    第一步需要制作配置文件,需要先从ncbi下载sra的information文件sra.table

    ## 直接用excel制作config文件,或者写代码, 我当然是用的excel,这个代码太麻烦了啦。。。
    cut -f 4,7 sra.table |cut -d":" -f 2 |sed 's/ChIPSeq//g' | sed 's/MockIP//g'|sed  's/^ //' |tr ' ' '_' |perl -alne '{$h{$F[0]}++ if exists $h{$F[0]}; $h{$F[0]}=1 unless exists $h{$F[0]};print "$F[0]$h{$F[0]}\t$F[1]"}' > config
    

    得到内容如下,命名为config.txt

    RNAPII_S5P_1    SRR391032
    RNAPII_S5P_2    SRR391033
    RNAPII_S2P_1    SRR391034
    RNAPII_S7P_1    SRR391035
    RNAPII_8WG16_1    SRR391036
    RNAPII_8WG16_2    SRR391037
    RNAPII_S2P_2    SRR391038
    RNAPII_S2P_3    SRR391039
    RNAPII_S7P_2    SRR391040
    H2Aub1_1    SRR391041
    H2Aub1_2    SRR391042
    H3K36me3_1    SRR391043
    H3K36me3_2    SRR391044
    Control_1    SRR391045
    Control_2    SRR391046
    Ring1B_1    SRR391047
    Ring1B_2    SRR391048
    Ring1B_3    SRR391049
    RNAPII_S5PRepeat_1    SRR391050
    

    批量sra转fq文件

    ## 下面用到的 config 文件,就是上面自行制作的。
    cat config.txt |while read i;
    do echo $i
    arr=($i)
    srr=${arr[1]}
    sample=${arr[0]}
    # 单端测序数据的sra转fasq
    fastq-dump -A  $sample -O $data/raw  --gzip --split-3  $data/sra; done
    # -A: Replaces accession derived from <path> in filename(s) and deflines (only for single table dump)
    #不知道为什么我的这个命令就是跑不通,所以我用了自己的代码:
    fastq-dump --gzip --split-3 $data/sra/*sra
    #然后把fastq.gz文件手动改了名称,其实可以下载的时候直接用-O参数重新命名。
    

    qc

    cd $data/raw/
    ls *gz | xargs fastqc -t 10 -o $data/raw/qc
    multiqc $data/raw/qc -o $data/raw/qc
    

    用trim_galore进行数据过滤,此处是单端测序

    cd $data/raw/
    ls *gz | while read i;
    do 
    nohup trim_galore -q 25 --phred33 --length 25 -e 0.1 --stringency 4 -o $data/clean  $i & 
    done 
    

    trimmed_data进行QC

    mkdir $data/clean/qc
    ls $data/clean/*gz | xargs fastqc -t 10 -o $data/clean/qc
    multiqc $data/clean/qc -o $data/raw/qc
    

    使用bowtie2进行比对

    直接用bowtie2进行比对和统计比对率, 需要提前下载参考基因组然后使用命令构建索引,或者直接就下载索引文件,这里用常用的mm10

    # 索引大小为3.2GB, 不建议自己下载基因组构建,可以直接下载索引文件,代码如下:
    mkdir referece && cd reference
    wget -4 -q ftp://ftp.ccb.jhu.edu/pub/data/bowtie2_indexes/mm10.zip
    unzip mm10.zip
    

    单端测序数据进行比对

    ls ../clean/*gz |while read i;
    do 
    file=$(basename $i)
    sample=${file%%.*}
    # echo $file $sample
    bowtie2 -p 5 -x $bowtie2_index -U  $i | samtools sort  -O bam  -@ 5 -o - > ${sample}.bam 
    done #最后只输出bam文件,没有sam文件
    

    注意到这里没有用samtools 的view命令将sam转换成bam文件,然后再sort,我就比较了一下这两个命令的区别。下面是结果:

    Activated-24h-1.bam.count.txt:ENSMUSG00000000028    3092
    Activated-24h-2.bam.count.txt:ENSMUSG00000000028    3483
    Activated-72h-1.bam.count.txt:ENSMUSG00000000028    2260
    Activated-72h-2.bam.count.txt:ENSMUSG00000000028    1989
    Resting-1.bam.count.txt:ENSMUSG00000000028  157
    Resting-2.bam.count.txt:ENSMUSG00000000028  185
    

    对过滤后mapping得到的bam文件进行QC

    cd $data/bam
    ls *.bam  |xargs -i samtools index {}
    ls *.bam  |while read i ;do (nohup samtools flagstat $i > $(basename $i ".bam").stat & );done 
    
    grep '%' *stat #得到所有mapping率
    Control_1_trimmed.stat:7415799 + 0 mapped (87.76% : N/A)
    Control_2_trimmed.stat:7202987 + 0 mapped (86.18% : N/A)
    H2Aub1_1_trimmed.stat:8949983 + 0 mapped (97.19% : N/A)
    H2Aub1_2_trimmed.stat:13195346 + 0 mapped (97.27% : N/A)
    H3K36me3_1_trimmed.stat:11732645 + 0 mapped (98.85% : N/A)
    H3K36me3_2_trimmed.stat:13404798 + 0 mapped (98.38% : N/A)
    Ring1B_1_trimmed.stat:4620324 + 0 mapped (93.31% : N/A)
    Ring1B_2_trimmed.stat:4633085 + 0 mapped (93.57% : N/A)
    Ring1B_3_trimmed.stat:22884650 + 0 mapped (95.12% : N/A)
    RNAPII_8WG16_1_trimmed.stat:7465754 + 0 mapped (96.07% : N/A)
    RNAPII_8WG16_2_trimmed.stat:20652996 + 0 mapped (95.30% : N/A)
    RNAPII_S2P_1_trimmed.stat:24966425 + 0 mapped (97.05% : N/A)
    RNAPII_S2P_2_trimmed.stat:6095629 + 0 mapped (94.73% : N/A)
    RNAPII_S2P_3_trimmed.stat:8659690 + 0 mapped (96.81% : N/A)
    RNAPII_S5P_1_trimmed.stat:11791542 + 0 mapped (97.45% : N/A)
    RNAPII_S5P_2_trimmed.stat:12171421 + 0 mapped (98.09% : N/A)
    RNAPII_S5PRepeat_1_trimmed.stat:4158664 + 0 mapped (82.71% : N/A)
    RNAPII_S7P_1_trimmed.stat:6378735 + 0 mapped (80.81% : N/A)
    RNAPII_S7P_2_trimmed.stat:5962539 + 0 mapped (82.54% : N/A)
    

    有几个文件建index的时候报错,查了网站之后,用了下面的命令,发现正常的bam文件返回值是VALID,而报错的文件不是。因此我重新跑了QC命令之后就好了。

    gunzip -t H2Aub1_1_trimmed.bam && echo "VALID"
    gzip: H2Aub1_1_trimmed.bam: decompression OK, trailing garbage ignored
    gunzip -t Control_1_trimmed.bam && echo "VALID"
    VALID
    

    合并bam文件
    samtools 的merge命令只能用来merge sort过的bam文件
    当有多个bam文件时,一般思路就是对每一个bam进行sort、index后,再merge成一个整体merged.bam,然后对merged.bam再进行sort、index,才算能用了,得到最终结果应该是是sorted.merge.bam

    ## 如果不用循环:
    ## samtools merge  control.merge.bam Control_1_trimmed.bam Control_2_trimmed.bam
    ## 循环命令
    mkdir  ~/project/epi/ mergeBam
    cd ~/project/epi/align
    ls *.bam|sed 's/_[0-9]_trimmed.bam//g' |sort -u |while read id;do samtools merge $data/merge.bam/$i.merge.bam $i*.bam ;done
    #sort -u 的意思是输出的时候去除重复
    

    mapping过的bam文件,进行筛选,qc

    #去除duplicate
    ls  $data/merge.bam/*merge.bam  | while read i ;do (nohup samtools markdup -r $i $(basename $id ".bam").rmdup.bam & );done #这样写nohup命令虽然可以几个同时跑,比较快,但是我不知道nohup命令的log文件被写到哪里了。
    #去除低mapping的reads,以及mapping多次的reads
    ls $data/merge.bam/*rmdup.bam | while read i; 
    do
    file=$(basename $i)
    sample=${file%%.*}
    echo $file $sample
    samtools view $i -bF 4 -q 10 > ${sample}.uniq.bam
    done
    #过滤后的reads进行qc
    ls $data/merge.bam/*.uniq.bam  |xargs -i samtools index {}
    ls $data/merge.bam/*.uniq.bam  |while read i ;do
    samtools flagstat $i > $(basename $i ".uniq.bam").stat;done 
    grep '%' *stat
    control.stat:10120184 + 0 mapped (100.00% : N/A)
    H2Aub1.stat:14453515 + 0 mapped (100.00% : N/A)
    H3K36me3.stat:20416595 + 0 mapped (100.00% : N/A)
    Ring1B.stat:20587109 + 0 mapped (100.00% : N/A)
    RNAPII_8WG16.stat:19619979 + 0 mapped (100.00% : N/A)
    RNAPII_S2P.stat:21815365 + 0 mapped (100.00% : N/A)
    RNAPII_S5PRepeat.stat:3324476 + 0 mapped (100.00% : N/A)
    RNAPII_S5P.stat:7593988 + 0 mapped (100.00% : N/A)
    RNAPII_S7P.stat:8086221 + 0 mapped (100.00% : N/A)
    

    使用macs2进行call peak

    cd  $data/merge.bam 
    ls  *uniq.bam |cut -d"." -f 1 |while read i;
    do 
    macs2 callpeak -c  control.uniq.bam -t $i.uniq.bam -f BAM -B -g mm -n $i --outdir $data/peaks  2 > $id.log
    done  
    

    -t: 实验组的输出结果
    -c: 对照组的输出结果
    -f: -t和-c提供文件的格式,可以是”ELAND”, “BED”, “ELANDMULTI”, “ELANDEXPORT”, “ELANDMULTIPET” (for pair-end tags), “SAM”, “BAM”, “BOWTIE”, “BAMPE” “BEDPE” 任意一个。如果不提供这项,就是自动检测选择。
    -g: 基因组大小, 默认提供了hs, mm, ce, dm选项, 不在其中的话,比如说拟南芥,就需要自己提供了。
    -n: 输出文件的前缀名
    -B: 会保存更多的信息在bedGraph文件中,如fragment pileup, control lambda, -log10pvalue and -log10qvalue scores, 但这个参数意义不大,得到的bedgraph文件没啥用。
    -q: q值,也就是最小的PDR阈值, 默认是0.05。q值是根据p值利用BH计算,也就是多重试验矫正后的结果。
    -p: 这个是p值,指定p值后MACS2就不会用q值了。
    -m: 和MFOLD有关,而MFOLD和MACS预构建模型有关,默认是5:50,MACS会先寻找100多个peak区构建模型,一般不用改,因为你很大概率上不会懂。

    对比了一下只去掉adaptor,去掉adaptor和duplicate,去除adaptor以及没有比对上、多重比对、duplicate的peaks(raw_peaks,rmdup_peaks,peaks)

    wc -l *bed
    #raw_peaks
           0 ../raw_peaks/control_summits.bed
        1182 ../raw_peaks/H2Aub1_summits.bed
       40034 ../raw_peaks/H3K36me3_summits.bed
       26029 ../raw_peaks/Ring1B_summits.bed
       41628 ../raw_peaks/RNAPII_8WG16_summits.bed
       20029 ../raw_peaks/RNAPII_S2P_summits.bed
       38659 ../raw_peaks/RNAPII_S5PRepeat_summits.bed
       56672 ../raw_peaks/RNAPII_S5P_summits.bed
       72203 ../raw_peaks/RNAPII_S7P_summits.bed
      296436 total
    #rmdup_peaks
           0 control_summits.bed
        1182 H2Aub1_summits.bed
       39815 H3K36me3_summits.bed
       26029 Ring1B_summits.bed
       41628 RNAPII_8WG16_summits.bed
       20029 RNAPII_S2P_summits.bed
       38659 RNAPII_S5PRepeat_summits.bed
       56750 RNAPII_S5P_summits.bed
       72203 RNAPII_S7P_summits.bed
      296295 total
    #peaks
           0 ../peaks/control_summits.bed
        2203 ../peaks/H2Aub1_summits.bed
       23031 ../peaks/H3K36me3_summits.bed
       25062 ../peaks/Ring1B_summits.bed
       34926 ../peaks/RNAPII_8WG16_summits.bed
       20118 ../peaks/RNAPII_S2P_summits.bed
       33668 ../peaks/RNAPII_S5PRepeat_summits.bed
       54452 ../peaks/RNAPII_S5P_summits.bed
       62553 ../peaks/RNAPII_S7P_summits.bed
      256013 total
    

    发现去不去PCR duplicate对于最后call peaks的结果不会影响太大,但是去不去多重比对和没有比对对结果影响比较大。

    根据生信技能树的经验:
    前几个月处理这个数据集的时候使用的过滤低质量reads参数是短于 35bp的全部丢弃,现在是短于25bp的全部抛弃,导致了得到的peaks从数量上千差别不小。

    MACS2结果

    _peaks.xls
    This file is generated by MACS version 2.2.6
    Command line: callpeak -c Activated_input.bam -t Activated_H2AK9ac.bam -f BAM -B -g mm -n Activated_H2AK9ac
    ARGUMENTS LIST:
    name = Activated_H2AK9ac
    format = BAM
    ChIP-seq file = ['Activated_H2AK9ac.bam']
    control file = ['Activated_input.bam']
    effective genome size = 1.87e+09
    band width = 300
    model fold = [5, 50]
    qvalue cutoff = 5.00e-02
    The maximum gap between significant sites is assigned as the read length/tag size.
    The minimum length of peaks is assigned as the predicted fragment length "d".
    Larger dataset will be scaled towards smaller dataset.
    Range for calculating regional lambda is: 1000 bps and 10000 bps
    Broad region calling is off
    Paired-End mode is off
    
    tag size is determined as 50 bps
    total tags in treatment: 25164589
    tags after filtering in treatment: 25164589
    maximum duplicate tags at the same position in treatment = 1
    Redundant rate in treatment: 0.00
    total tags in control: 18816543
    tags after filtering in control: 18816543
    maximum duplicate tags at the same position in control = 1
    Redundant rate in control: 0.00
    d = 214
    alternative fragment length(s) may be 214 bps
    chr     start   end     length  abs_summit      pileup  -log10(pvalue)  fold_enrichment -log10(qvalue)  name
    chr1   4784036 4784310    275    4784120         17.20     8.44714        4.54950 6.37316      Activated_H2AK9ac_peak_1
    
    #length: peak区域长度
    #abs_summit: peak的峰值位点(summit position)
    #pileup: peak 峰值的高度(pileup height at peak summit, -log10(pvalue) for the peak summit)
    #fold_enrichment: peak的富集倍数(相对于random Poisson distribution with local lambda)
    

    Coordinates in xls is 1-based which is different with BED format
    xls里的坐标和bed格式的坐标还不一样,起始坐标需要减1才与narrowPeak的起始坐标一样。

    _peaks.narrowPeak

    narrowPeak文件是BED6+4格式,可以上传到UCSC浏览。输出文件每列信息分别包含:
    1;染色体号
    2:peak起始位点
    3:结束位点
    4:peak name
    5:int(-10*log10qvalue)
    6 :正负链
    7:fold change
    8:-log10pvalue
    9:-log10qvalue
    10:relative summit position to peak start(?)

    chr1    4784035 4784310 Activated_H2AK9ac_peak_1        63      .       4.54950 8.44714 6.37316 84
    chr1    4784829 4785734 Activated_H2AK9ac_peak_2        586     .       12.83651        61.82663        58.671
    
    _summits.bed

    BED格式的文件,包含peak的summits位置,第5列是-log10pvalue。如果想找motif,推荐使用此文件。

    chr1    3670687 3670688 Activated_H3K27me3_peak_1       7.21477
    chr1    3671910 3671911 Activated_H3K27me3_peak_2       16.00848
    

    补充:

    bed格式简介
    BED格式能够非常简洁的表示基因组特征和注释,尽管BED格式描述中定义了12列,但是仅仅只有3列必须,因此BED格式按照列数继续细分为BED3,BED4,BED5,BED6,BED12。
    BED12定义的12列分别为:chrom, start, end, name(BED代表的特征名),score(范围为0~1000,可以是pvalue, 或者是字符串,如"up"), strand(正负链), thickstart, thickednd(额外着色位置, 比如说表示外显子), itemRgb(RGB颜色,如255,0,0), blockCount(区块数量, 如外显子), blockSizes(由逗号隔开的区块大小), blockStarts(由逗号隔开的区块起始位点)。
    对BED文件的细分格式进行举例说明
    BED3:chr1 11873 14409
    BED4: chr1 11873 14409 uc001aaa.3
    BED5: chr1 11873 14409 uc001aaa.3 0
    BED6: chr1 11873 14409 uc001aaa.3 0 +
    BED12: chr1 11873 14409 uc001aaa.3 0 + 11873 12000 123,123,123 3 354,109,1189, 0,739,1347,

    1-based coordinate system:序列的第一个碱基设为数字1,如SAM, VCF, GFF, wiggle格式
    0-based coordinate system :序列的第一个碱基设为数字0,如BAM, BCFv2, BED, PSL格式

    .bdg

    bedGraph格式,可以导入UCSC或者转换为bigwig格式。两种bfg文件:treat_pileup, and control_lambda.
    NAME_peaks.broadPeak
    BED6+3格式与narrowPeak类似,只是没有第10列。

    image.png
    上图引自:用MACS2软件call peaks

    使用deeptools进行可视化

    还有很多其他用法,参考:https://vip.biotrainee.com/d/226-如何使用deeptools处理bam数据

    deeptools提供bamCoverage和bamCompare进行格式转换,为了能够比较不同的样本,需要先将基因组分成等宽分箱(bin),统计每个分箱的read数,最后得到描述性统计值。对于两个样本,描述性统计值可以是两个样本的比率,或是比率的log2值,或者是差值。如果是单个样本,可以用SES方法进行标准化。

    bamCoverage的基本用法

    bamCoverage -e 170 -bs 10 -b chip_sorted.bam -o chip.bw
    # chip_sorted.bam是前期比对得到的BAM文件
    

    得到的bw文件就可以送去IGV/Jbrowse进行可视化。 这里的参数仅使用了-e/--extendReads-bs/--binSize即拓展了原来的read长度,且设置分箱的大小。其他参数还有

    --filterRNAstrand {forward, reverse}: 仅统计指定正链或负链
    --region/-r CHR:START:END:选取某个区域统计
    --smoothLength:通过使用分箱附近的read对分箱进行平滑化
    如果为了其他结果进行比较,还需要进行标准化,deeptools提供了如下参数:

    --scaleFactor:缩放系数
    --normalizeUsingRPKMReads: Per Kilobase per Million mapped reads (RPKM)标准化
    --normalizeTo1x: 按照1x测序深度(reads per genome coverage, RPGC)进行标准化
    --ignoreForNormalization: 指定那些染色体不需要经过标准化
    如果需要以100为分箱,并且标准化到1x,且仅统计某一条染色体区域的正链,输出格式为bedgraph,那么命令行可以这样写

    mouse测序数据,2号染色体中间会浪费一堆reads
    bedgraph转换成tdf格式,igvtools可以完成转换,tdf格式文件可以快速被igv打开

    查看TSS附近的信号强度

    #先得到bw文件,之前已经得到,这里就不再赘述
    bed="/home/zzz/data/reference/annotation/mm10_refseq.bed"
    for i in  $data/bw/*rmdup.bw;
    do 
    echo $i
    file=$(basename $i )
    sample=${file%%.*} 
    echo $sample  
    computeMatrix reference-point  --referencePoint TSS   \
    -b 2000 -a 2000    \
    -R  $bed \
    -S $i  \
    --skipZeros  -o matrix1_${sample}_TSS_2K.gz  \
    --outFileSortedRegions ${sample}_TSS_2K.bed
    # 输出的gz为文件用于plotHeatmap, plotProfile
    
    ## both plotHeatmap and plotProfile will use the output from computeMatrix
    plotHeatmap -m matrix1_${sample}_TSS_2K.gz  -out ${sample}_Heatmap_2K.png
    plotHeatmap -m matrix1_${sample}_TSS_2K.gz  -out ${sample}_Heatmap_2K.pdf --plotFileFormat pdf  --dpi 720  
    plotProfile -m matrix1_${sample}_TSS_2K.gz  -out ${sample}_Profile_2K.png
    plotProfile -m matrix1_${sample}_TSS_2K.gz  -out ${sample}_Profile_2K.pdf --plotFileFormat pdf --perGroup --dpi 720 
    
    done 
    
    image.png

    画genebody的图

    bed="/home/zzz/data/reference/annotation/mm10_refseq.bed"
    for i in  $data/bw/*.rmdup.bw ;
    do 
    echo $i
    file=$(basename $i )
    sample=${file%%.*} 
    echo $sample 
    
    computeMatrix scale-regions  -p 5  \
    -b 3000 -a 3000    \
    -R  $bed \
    -S $i  \
    --regionBodyLength 15000 --skipZeros \
    -o matrix1_${sample}_genebody.gz  \
    --outFileSortedRegions regions1_${sample}_genebody.bed
    
    ## both plotHeatmap and plotProfile will use the output from   computeMatrix
    plotHeatmap -m matrix1_${sample}_genebody.gz  -out ${sample}_Heatmap_genebody.png
    plotHeatmap -m matrix1_${sample}_genebody.gz  -out ${sample}_Heatmap_genebody.pdf --plotFileFormat pdf  --dpi 720  #输出文件有两种格式,一个是png,一个是pdf,实操的时候可以只保留一个。
    plotProfile -m matrix1_${sample}_genebody.gz  -out ${sample}_Profile_genebody.png
    plotProfile -m matrix1_${sample}_genebody.gz  -out ${sample}_Profile_genebody.pdf --plotFileFormat pdf --perGroup --dpi 720 
    done 
    

    上面的批量代码其实就是为了统计全基因组范围的peak在基因特征的分布情况,也就是需要用到computeMatrix计算,用plotHeatmap以热图的方式对覆盖进行可视化,用plotProfile以折线图的方式展示覆盖情况。

    computeMatrix具有两个模式:scale-regionreference-point。前者用来信号在一个区域内分布,后者查看信号相对于某一个点的分布情况。无论是那个模式,都有两个参数是必须的,-S是提供bigwig文件,-R是提供基因的注释信息。还有更多个性化的可视化选项。

    使用R包对找到的peaks文件进行注释

    bedPeaksFile ='8WG16_summits.bed'; 
    bedPeaksFile
    ## loading packages
    require(ChIPseeker)
    require(TxDb.Mmusculus.UCSC.mm10.knownGene)
    txdb <- TxDb.Mmusculus.UCSC.mm10.knownGene
    require(clusterProfiler) 
    peak <- readPeakFile( bedPeaksFile )  
    keepChr= !grepl('_',seqlevels(peak)) #将chr_去掉,只留下常染色体和性染色体
    seqlevels(peak, pruning.mode="coarse") <- seqlevels(peak)[keepChr]
    peakAnno <- annotatePeak(peak, tssRegion=c(-3000, 3000), 
                             TxDb=txdb, annoDb="org.Mm.eg.db") 
    peakAnno_df <- as.data.frame(peakAnno)
    

    更详细的教程参见另一篇分享:https://www.jianshu.com/p/a4f497608485

    homer

    homer安装

    conda install homer

    homer 软件配置
    mkdir ~software/homer && cd homer
    wget http://homer.ucsd.edu/homer/configureHomer.pl
    
    # conda安装的Homer实际没有包含参考序列或注释数据 ;但是可以使用 configureHomer.pl下载数据
    perl /home/zzz/data/software/homer/configureHomer.pl -install mm10
    
    Usage: configureHomer.pl [options]
    
    Options:
            -list 列出可用的包
            -install 安装Homer或homer需要用到的数据包
            -version 安装homer包时,可以指定包版本
            -remove 移除包
            -update 更新所有包到最新版本
            -reinstall 强制重新安装所有已经安装过的包
            -all 安装所有包
            -getFacts (add humor to HOMER - to remove delete contents of data/misc/)
            -check 检查第三方软件:samtools, DESeq2, edgeR
            -make 重新配置和编译可执行文件
            -sun SunOS系统,使用gmake 和 gtar代替make 和 tar
            -keepScript 不更新configureHomer.pl
            -url 安装时,使用的资源地址,默认:http://homer.ucsd.edu/homer/
            Hubs & BigWig settings (with read existing settings from config.txt if upgrading):
                -bigWigUrl <base urls for bigWigs> (Setting for makeBigWigs.pl)
                -bigWigDir <base directory for bigWigs> (Setting for makeBigWigs.pl)
                -hubsUrl <base urls for hubs> (Setting for makeMultiWigHub.pl)
                -hubsDir <base directory for hubs> (Setting for makeMultiWigHub.pl)
        Configuration files: 下载 update.txt,更新config.txt
    
    homer 使用
    cd  $data/peaks
    for i in *.bed;
    do
    echo $i
    file=$(basename $i )
    sample=${file%%.*} 
    echo $sample  
    awk '{print $4"\t"$1"\t"$2"\t"$3"\t+"}' $i >${sample}.bed  ## 将bed文件的第4列,第1列,第2列,第3列打印出来,是为了让bed文件符合homer软件的输入
    findMotifsGenome.pl ${sample}.bed mm10 ${sample}_homer_motif -len 8,10,12
    annotatePeaks.pl ${sample}.bed mm10  1>${sample}.peakAnn.xls 2>${sample}.annLog.txt 
    done 
    
    findMotifs常用参数:

    -bg:自定义背景序列;
    -size: 用于motif寻找得片段大小,默认200bp;-size given 设置片段大小为目标序列长度;越大需要得计算资源越多;
    -len:motif大小设置,默认8,10,12;越大需要得计算资源越多;
    -S:结果输出多少motifs, 默认25;
    -mis:motif错配碱基数,默认2bp;
    -norevopp:不进行反义链搜索motif;
    -nomotif:关闭重投预测motif;
    -rna: 输出RNA motif,使用RNA motif数据库;
    -h:使用超几何检验代替二项式分布;
    -N:用于motif寻找得背景序列数目,default=max(50k, 2x input);耗内存参数
    参考链接:https://www.jianshu.com/p/93f45acff1f3

    不仅仅找了motif,还顺便把peaks注释了一下。得到的后缀为peakAnn.xls 的文件就可以看到和使用R包注释的结果是差不多的(homer official web: http://homer.ucsd.edu/homer/ngs/peakMotifs.html)。

    image.png

    MEME寻找motif

    需要通过bed格式的peaks的坐标来获取fasta序列。这个是在线的,我应该不会去用。MEME,链接:http://meme-suite.org/

    参考链接:https://www.jianshu.com/p/1384173c353b

    相关文章

      网友评论

        本文标题:Chip-seq

        本文链接:https://www.haomeiwen.com/subject/vxzvfhtx.html