BWT表的双端匹配算法

问题:reference:CGTCT;     read:GTC

由read的T开始去匹配,那么在bi-interval模型中他是怎么实现的呢?今天举例来具体复现一下。

先对reference取反:GCAGA

再对取反后的:reference颠倒位置:AGACG

reference 右移:

  1. CGTCTAGACG
  2. GCGTCTAGAC
  3. CGCGTCTAGA
  4. ACGCGTCTAG
  5. GACGCGTCTA
  6. AGACGCGTCT
  7. TAGACGCGTC
  8. CTAGACGCGT
  9. TCTAGACGCG
  10. GTCTAGACGC

排序:

  1. ACGCGTCTAG ~4
  2. AGACGCGTCT~6
  3. CGCGTCTAGA~3
  4. CGTCTAGACG~1
  5. CTAGACGCGT~8
  6. GACGCGTCTA~5
  7. GCGTCTAGAC~2
  8. GTCTAGACGC~10
  9. TAGACGCGTC~7
  10. TCTAGACGCG~9

BWT表建立完毕,从read(GTC)的中间碱基T开始匹配,

其Bi-interval为:[9,1,2]。

Forward匹配:

进T右边的C,即:TC(GA)

其Bi-interval为:[10, 6,1],根据算法更新的6。10为顺承更新。

进T左边的G,即:GTC(GAC)

其Bi-interval为:[8,6,1]

 

  • 匹配规则说明

c()表存的是以ACGT为首的碱基在bwt表中的位置,具体来看就是:C(A)=1;C(C)=3;C(G)=6;C(T)=9;

O()表存的是从0位置到I(p),有多少个a碱基。p表示上次匹配得到的碱基串,I(p)返回(1~10)范围内的一个位置。o表共有4*n个数据。

猜你喜欢

转载自blog.csdn.net/qq_39499621/article/details/81138821