BWT表的雙端匹配演算法

2021-08-21 15:13:01 字數 957 閱讀 2585

先對reference取反:gcaga

再對取反後的:reference顛倒位置:agacg

reference 右移:

cgtctagacg

gcgtctagac

cgcgtctaga

acgcgtctag

gacgcgtcta

agacgcgtct

tagacgcgtc

ctagacgcgt

tctagacgcg

gtctagacgc

排序:acgcgtctag ~4

agacgcgtct~6

cgcgtctaga~3

cgtctagacg~1

ctagacgcgt~8

gacgcgtcta~5

gcgtctagac~2

gtctagacgc~10

tagacgcgtc~7

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個資料。

redis 雙端鍊錶

鍊錶作為陣列之外的一種常用序列抽象,是大多數高階語言的基本資料型別,因為c 語言本身不支援鍊錶型別,大部分c 程式都會自己實現一種鍊錶型別,redis 也不例外.雙端鍊錶的應用 雙端鍊錶作為一種通用的資料結構,在redis 內部使用得非常多 它既是redis 列表結構的底層實現之一,還被大量redi...

1 4雙端鍊錶

雙端鍊錶與普通單鏈表的區別在於既可以從鍊錶頭部開始遍歷,又可以從尾部開始遍歷,這就要求每個節點不僅有乙個後向指標,還要乙個前驅指標。節點資料結構定義如下 public class dlinknode public dlinknode public dlinknode t data 雙端鍊錶資料結構包...

演算法筆記 雙端處理

有的遞推演算法既可以從左向右推也可以從右向左推,這種特性賦予了我們乙個技巧,雙端處理法 當乙個東西對遞推陣列的影響僅限於左半部分或右邊部分,我們可以構造乙個反向遞推的陣列,把不受影響的部分合起來計算 ex最大欄位和 經典的最大子段和問題應該都很熟悉了,那麼如果把這個問題魔改一下,選取兩段不相交的子段...