我们在上个笔记中介绍了一些关于DNA甲基化的基本概念。那么如何去判断这个序列里面甲基化的信息呢?今天我们就来就这个话题好好聊一聊~
---------------------------------------------------我是分割线---------------------------------------
1:首先我们来想一个问题,进过BS转换后的基因reads上什么碱基的数目会明显减少?
根据BS转换,然后加上后续的PCR扩增步骤,我们知道了未甲基化的C会变成T,然后全基因组上A,T,G多,C少。这样是不是人为的减少了DNA编码的复杂性。而且理论上,测序的reads存在着甲基化的所有可能性!因为说不清测序出来的碱基信息到底是比对到原基因组上是甲基化还是未甲基化的!
2:现在进行DNA甲基化比对的策略和方法有哪些呢?他们是如何解决这些问题的呢?
主要有两种比对的算法,今天我们主要关注第一种:
2.1:Three Letter Aligners
这种方法是将全基因组和参考序列所有的C都变成了T,所以DNA序列上原有的ATCG,变成了ATG,没有了C,three letter 法(三碱基比对)就很好理解了。
举个例子:
2.1.1:首先我们需要对它进行BS处理,那么甲基化的C和非甲基化的C会最终变成C和T。但是注意:我们不知道reads到底是正链还是负链!
2.1.2:将参考基因组进行CT转化,被转化的C进行了标记
2.1.3:软件内部会调用bowtie进行序列比对:
Q:所以对于这个reads1来说,比对到的是正链的信息,但是如果是反链的话,要如何进行比对呢?
进行G-A转化再来一遍比对。因为是互补链的关系
最后根据mapping的信息进行统计到底是CHG,CHH,还是CpG~
接下来我们关注一下这种算法的mapping情况:(以文献中的例子为主)
图A中有一个基因组的reads信息,选了其中4个CpG岛,然后这几个CpG岛的甲基化程度度分别是100%,50%,50%,0%
接下来把reads回帖到全基因组上,这里采取了一个策略:如果一个reads可以比对到多个位置上,那么这个reads就直接被扔掉了。不会纳入统计。在图中,因为TtGA可以比对到多个位置,然后就直接被舍弃了,然后导致最后计算出来的DNA甲基化的水平整体偏低了。
summary: 虽然得到的DNA甲基化的水平低,但是是无偏的。
----------------------------------------------分割线------------------------------------------------
PS:在bismark中,将基因组的正链定义为top strand , 简称OT, 负链定义为bottom strand, 简称OB; 亚硫酸氢盐处理后,正负链之间并不是完全的反向互补的,将OT链的反向互补链定义为CTOT, 将OB链的反向互补链定义为CTOB。对于链特异性文库而言,由于插入序列为单链,只需要比对OT和OB两条链即可,大大减少了运算量,所以目前illumina的标准BS-seq protocol构建的文库都是链特异性文库,新版的bismark默认的运行方式也是针对链特异性文库的。[3]
Reference:
1:Bismark: a flexible aligner and methylation caller for Bisulfite-Seq applications https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3102221/
2:Analysing and interpreting DNA methylation data https://www.nature.com/articles/nrg3273
3:bismark 识别甲基化位点-比对篇 https://www.jianshu.com/p/90b2cb81a690