溯源精微 BinBash WGBS分析流程

BinBash 计算平台为以个专业生物计算平台,提供超快速的WGS , Meta Genome, WGBS 等高计算量的样品进行快速计算服务。已经完成了大量的人,动植物的千例以上的数据加速工作。以下为一个WGBS的核心分析流程。

  1. 质控
trim_galore -j $(nproc) --paired --basename $sam  -o /data/ $read1 $read2
#fastQC
fastqc -t $(nproc) -o /data/${sam}_fastqc \
                    $read1 \
                    $read2  \
                    /data/${sam}_R1_val_1.fq.gz   \                 
                    /data/${sam}_R2_val_2.fq.gz

   2. 数据切分

mkdir /data/${sam}_1 /data/${sam}_2
cd /data/${sam}_1
zcat /data/${sam}_R1_val_1.fq.gz  | split -d -a 10 -l 200000000 --filter='pigz  > ${FILE}.gz' 
cd /data/${sam}_2
zcat /data/${sam}_R2_val_2.fq.gz  | split -d -a 10 -l 200000000 --filter='pigz  > ${FILE}.gz' 
cd /data 
ls /data/${sam}_1 | while read id;do mkdir -p $id;done 
ls /data/${sam}_1 | while read id;do mv /data/${sam}_1/$id $id/${sam}_R1_val_1.fq.gz ;done 
ls /data/${sam}_2 | while read id;do mv /data/${sam}_2/$id $id/${sam}_R2_val_2.fq.gz ;done 
rm -rf /data/${sam}_2 /data/${sam}_1

3. 分块比对与合并

#mapping bismark 
block='X0000000000'
bismark --quiet --bam --rg_sample $sam --rg_id $sam  \
         -p $(nproc) --bowtie2 /database/hg38.fa/ -o ${block}/ \
          --fastq -1 $block/${sam}_R1_val_1.fq.gz -2 $block/${sam}_R2_val_2.fq.gz \
          --basename ${sam}.hg38.fa --samtools_path /usr/bin --temp_dir $block/
          
#dedup S005413.deduplication_report.txt; 8C64G 
samtools cat -@ $(nproc) -o $sam.bam --no-PG  X0000*/${sam}.hg38.fa_pe.bam

4. 比对结果统计与去重复

#bamqc
samtools sort -@ $(nproc)  -o /data/$sam.sort.bam -O BAM /data/$sam.bam
qualimap  bamqc -bam /data/$sam.sort.bam -outdir /data/bamqc_result -outformat PDF:HTML
deduplicate_bismark --bam --output_dir /data/ --samtools_path /usr/bin -p $sam.bam 

5. 甲基化提取

#人WGBS 需要46GB左右内存
/usr/bin/time bismark_methylation_extractor --samtools_path /usr/bin --parallel ${thread} \
       --comprehensive -p --no_overlap --report --gzip --cytosine_report --CX_context \
       --buffer_size ${mem}M --genome_folder /database/hg38.fa /data/$sam.deduplicated.bam\
       -o /data/

6. 差异甲基化

  差异甲基化部分,使用methylKit 软件包进行

#差异甲基化  methylKit R 
#处理/data/${sam}.deduplicated.CX_report.txt.gz  并转换成methylKit 能识别的格式 
分开CpG, CHH, CHG
echo -e "chrBase\tchr\tbase\tstrand\tcoverage\tfreqC\tfreqT" > $sam.methylKit.CG.txt
echo -e "chrBase\tchr\tbase\tstrand\tcoverage\tfreqC\tfreqT" > $sam.methylKit.CHH.txt
echo -e "chrBase\tchr\tbase\tstrand\tcoverage\tfreqC\tfreqT" > $sam.methylKit.CHG.txt

zcat ${sam}.deduplicated.CX_report.txt.gz | \
    awk -v OFS="\t" -v sam=$sam  '{ if($3=="+"){s="F"}else{s="R"};total=$4+$5;
                        print $1"."$2,$1,$2,s,total,100*$4/total,100*$5/total >> sam".methylKit."$6".txt"}'
                
 
                        
#数据很大,需要大内存                                                                                      
library(methylKit)
library(graphics)

file.list <- list(system.file("extdata", "test1.myCpG.txt",package= "methylKit"), 
                  system.file("extdata",
"test2.myCpG.txt",package= "methylKit"), 
                  system.file("extdata","control1.myCpG.txt",package= "methylKit"), 
                  system.file("extdata","control2.myCpG.txt",package= "methylKit"))   
myobj <- read(file.list, sample.id= list("test1","test2", "ctrl1", "ctrl2"),
               assembly = "hg38", treatment=
c(1,1, 0, 0), context = "CpG")  
getMethylationStats(myobj[[2]], plot= T, both.strands = F)                                   
getCoverageStats(myobj[[2]],plot = T, both.strands = F)

#过滤代码过滤甲基化数据并丢弃覆盖率低于10X的碱基,并且丢弃每个样本中覆盖率超过99.9%的碱基。
filtered.myobj <- filterByCoverage(myobj,lo.count = 10,lo.perc = NULL,hi.count = NULL, hi.perc = 99.9)  
#整合样品
meth <- unite(myobj, destrand= FALSE)
head(meth)
#样品相关性
getCorrelation(meth, plot= True)
#PCA 
PCASamples(meth,screeplot=True)
PCASamples(meth)

#聚类
clusterSamples(meth,dist='correlation',method='',plot=True)

#差异甲基化位点  
myDiff <- calculateDiffMeth(meth)

#在q值计算之后,我们可以根据q值和甲基化差异截止百分比选择差异甲基化区域/碱基。
#以下位选择q值<0.01且甲基化差异百分比大于25%的碱基。
#如果指定type =“hyper”或type =“hypo”选项,则会出现超甲基化或低甲基化区域/碱基。

#get hyper methylated bases
myDiff25p.hyper <- get.methylDiff(myDiff,difference = 25,qvalue = 0.01,type = "hyper")
# get hypo methylated bases
myDiff25p.hypo <- get.methylDiff(myDiff,difference = 25,qvalue = 0.01,type = "hypo")

#get all differentially methylated bases
myDiff25p <- get.methylDiff(myDiff,difference = 25,qvalue = 0.01)

#我们可以基于基因注释来注释我们的差异甲基化区域/碱基。
#在这个例子中,从bed文件中读取基因注释,并用这些信息注释差异甲基化区域。
#在启动子/内含子/外显子/基因间区域中差异甲基化区域的百分比。
#使用Bioconductor.org提供的GenomicFeatures软件包可以获取类似的基因注释    
gene.obj<- read.transcript.features(system.file("extdata","refseq.hg38.bed.txt", 
                                    package= "methylKit"))

diffAnn<-annotate.WithGenicParts(myDiff25p,gene.obj) 
plotTargetAnnotation(diffAnn,precedence=TRUE,main="differential methylation annotation")   
 


#CpG岛注释    
cpg.obj <- read.feature.flank(system.file("extdata","cpgi.hg38.bed.txt", 
                              package= "methylKit"),
feature.flank.name = c("CpGi","shores"))

diffCpGann <- annotate.WithFeature.Flank(myDiff25p,
                     cpg.obj$CpGi,cpg.obj$shores, 
                     feature.name = "CpGi",
                     flank.name= "shores")
#甲基化区域MDR 按照以上操作即可
tiles <- titleMethylCounts(myobj,win.size = 1000)
head(titles[[1]])
MDRdif <-calculateDiffMeth(tiles)

#差异甲基化区域对应基因的Go , Pathway富集分析

                                                                                                                                  

                                                             

                                 公众号                                                                     微信

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值