TandemTools 长串联重复比对工具

编辑 / Bioinformatics / 发布于2022-11-17 / 更新于2023-03-16 / 阅读 160

论文地址

TandemMapper

Selection of k-mers

TandemMapper使用稀少的k-mer,即出现次数小于组装长度除以100kb的值。因为如果使用唯一的k-mer,它的密度可能会变化的特别明显,会导致某些区域的覆盖率下降或者不正确的映射。但由于长串联重复的组装可能会出错,一些罕见的k-mer可能是错误的组装序列上的,TandemMapper去掉在读取数据中出现频率低于5%和高于95%的k-mer,把剩下的这些k-mer称为solid k-mer。

TandemMapper将 aR,bRa_R, b_R定义为solid k-mer a,b在 read R 中的出现 aA,bAa_A, b_A则为在组装A的出现,我们只关心在R中出现一次的k-mer,aR,bRa_R, b_R只出现一次,但aA,bAa_A, b_A在组装的序列上可能会出现多次, 定义d(aR,bR)d(a_R, b_R), d(aA,bA)d(a_A, b_A)分别为a,b在R和A中的距离。记aRaAa_R和a_A为一个匹配aMa_M, 同样bRbAb_R和b_A为匹配bMb_M.
distance(aM,bM)=min{d(aR,bR),d(aA,bA)}distance(a_M,b_M)=min\{d(a_R,b_R),d(a_A,b_A)\}
diff(aM,bM)=d(aR,bR)d(aA,bA)diff(a_M,b_M)=|d(a_R,b_R)−d(a_A,b_A)|
penalty(aM,bM)=diff(aM,bM)/distance(aM,bM)penalty(a_M,b_M)=diff(a_M,b_M)/distance(a_M,b_M)
收集所有read中连续非重叠的唯一k-mer a,b,定义
distortion C = penalty的中值 + penalty 第三四分位数和第一四分位数的区别

另外 aM,bMa_M,b_M 兼容compatible 当 distance(aM,bM)<maxDistancedistance(a_M, b_M) < maxDistance
(maxDistance 定义为两个连续的唯一k-mer在组装序列上的最大距离)

Tandemmapper module

给一个read,定义一个有向带权的兼容性图,顶点集代表read R 和组装 A 中所有匹配的solid k-mer。 如果在 R 中 a 在 b 前面且aM,bMa_M,b_M是兼容的,用边链接这两个顶点,定义这个变得权重为 premiumpenalty(aM,bM)premium-penalty(a_M,b_M) premium是一个常量,选择最能够正确比对read最多的数字(默认0.1)。read R 和组装序列 A 的链定义为图中最长的路径,因为solid k-mer在 R中最多出现一次,所以chain中的k-mer不会出现多次。给定read的chain可以用来把read映射到组装序列上。Tandemmapper使用动态规划对每个read查找chain,过滤短的chain,并且在对每个保留下的chain的边界内部进行核苷酸级别的比对。