バローズ - ウィーラーによる高速かつ正確な短い読み取りアライメント変換

オリジナルリンク: https://blog.csdn.net/math715/article/details/46992623

バローズ - ウィーラーによる高速かつ正確な短い読み取りアライメント変換

バローズ-ウィーラーの高速かつ正確な短い読み出し調整は、変換
本論文では、生体情報、BWAのアルゴリズム設計を。

1. BWT変換
T = RUOSHUIを仮定は、
文字が後ろに任意の文字T T $より小さい加え、X = RUOSHUI $の
Xサイクルが文字列のセットに結合された後に得られた文字列は、N * Nの行列をシフト
0 $ RUOSHUIを
1 UOSHUI $ R&LT
2 OSHUI $ RU
。3 SHUI $ RUO
。4 HUI $ RUOS
。5 UI $ RUOSH
。6 I $ RUOSHU
。7 $ RUOSHUI
ソートアルファベット行列Mの後に得られた
0.7 $ RUOSHUI
。1. 4 HUI $ RUOS
2. 6 I $ RUOSHU
。3 RU OSHUI $ 2
。4 RUOSHUI $ 0
。5 3 $ RUO SHUI
。6. 5 $ RUOSH UI
。7. 1 $ R&LT UOSHUI

BWTは、文字列L = "ISUU $ OHR"を得るために変換、
接尾辞配列S = [7,4,6​​,2,0,3,5,1]

ドメインサフィックスアレイ2
列は、検索する文字列X、W、フィールドアレイである場合、XにおけるRサフィックスアレイ- (W)R_(W) 、R(W)R(W) これは、間隔W接尾辞配列で発現させました。
Wが空の文字列である場合は、R - (W)R_(W)= 1、R(W)R(W)= |。W | -1
C(A)、文字列表現のX表に示すように、まず、行列Mの行数に登場

I $ H O R&LT S U-
C(A)0 6 5 4 3 1 2
O(I)中の[I]表Lに示すように、文字が表示された回数を表します。

L I S U-U- $ O H R&LT
0 1 2 3 4 5 6 7
$ 0 0 0 0 1 1 1 1
H 0 0 0 0 0 0 1 1
I. 1. 1. 1. 1. 1. 1. 1 1
0 0 0 0 0 1 1 1
R&LT 0 1 0 0 0 0 0
U 0 1 0 2 2 2 2 2
3ピンポイント
AW、式
R - (AW)= C( A)+ O(R - (W)-1)+ 1R_( AW)= C(A)+ O(A、R_(Wである)-1)+ +1の
R(AW)= C(A)+ O(A、R(Wである))R (AW)= C(A) + O(R(W))
正確に決定AW接尾番号フィールド
かもしれないが、Y接尾文字列リクエスト数フィールド、上記の式を用いて決定しました。これは、バックエンドの外観と呼ばれています。

4.非完全検索
マッチを表す非正確な検索文字列は、zの差を超えません。一つは、穴が現れると間違っています。再帰的を使用して計算。次のように具体的な方法があります

InexactSearch( W, z )
    CalculateD( W )
    return inexRecur( W, |W| - 1, z, 1, |X| - 1 )

CalculateD( W ) 
    j = 0
    z = 0
    for ( i = 0; i < |W| ; ++i ){
        if ( W[j,i] is not substring of W ){
             z = z + 1
             j = i + 1
        }
        D(i) = z 
    }
inexRecur( W, i, z, k, l )
    if z < D(i) 
        return NULL
    if i < 0 
        return {[k, l]}
    I = NULL
    I = I U inexRecur( W, i - 1, z - 1, k , l )
    for each b in {A, G, C, T } 
        k = C(b) + O ( b, k - 1 ) + 1
        l = C(b) + O ( b, l )
        if k <= l 
            I = I U inexRecur( W, i , z- 1 , k , l )
            if b = W[i] 
                I = I U inexRecur( W, i - 1, z, k, l )
            else 
                I = I U inexRecur( W, i - 1, z - 1, k, l )
    return I 

 

おすすめ

転載: blog.csdn.net/u010608296/article/details/102642626