Abyss 基於布隆過濾器的基因組組裝軟體

2021-10-09 07:22:11 字數 2646 閱讀 3757

主流的ngs基因組組裝軟體都是先將序列劃分成kmer, 然後基於de bruijn graph圖論演算法,得到組裝好的序列。程式執行時,kmer字串時儲存在記憶體中,所以要求計算機的記憶體要足夠大。

abyss 基於布隆過濾器,不直接儲存字串,減少了記憶體的消耗。軟體的官網如下

安裝過程如下

wget 

tar xzvf abyss-2.1.0.tar.gz

cd abyss-2.1.0/

./configure --prefix=$(pwd) --without-sparsehash

make

編譯成功後,會生成許多的可執行檔案,這些檔案分散在不同的目錄下,想要成功執行該軟體,需要將這些可執行檔案都新增到path環境變數中,寫法如下

export abyss_home=/soft/abyss-2.1.0

export path=$abyss_home/abyss:$path

export path=$abyss_home/adjlist:$path

export path=$abyss_home/align:$path

export path=$abyss_home/bin:$path

export path=$abyss_home/bloom:$path

export path=$abyss_home/bloomdbg:$path

export path=$abyss_home/consensus:$path

export path=$abyss_home/dassembler:$path

export path=$abyss_home/database:$path

export path=$abyss_home/dialign:$path

export path=$abyss_home/distanceest:$path

export path=$abyss_home/filtergraph/:$path

export path=$abyss_home/fmindex/:$path

export path=$abyss_home/gapfiller:$path

export path=$abyss_home/graph:$path

export path=$abyss_home/kaligner:$path

export path=$abyss_home/kmerprint:$path

export path=$abyss_home/konnector:$path

export path=$abyss_home/layoutp:$path

export path=$abyss_home/logkmercountr:$path

export path=$abyss_home/map:$path

export path=$abyss_home/mergepaths:$path

export path=$abyss_home/overlap:$path

export path=$abyss_home/paireddbg:$path

export path=$abyss_home/parsealigns:$path

export path=$abyss_home/pathoverlap:$path

export path=$abyss_home/popbubbles:$path

export path=$abyss_home/scaffold:$path

export path=$abyss_home/sealer:$path

export path=$abyss_home/******graph:$path

只需要調整abyss_home,將其設定為軟體所在的實際目錄即可,可以在~/.bahsrc檔案中設定以上環境變數,然後執行下列**

source ~.bahsrc
wget /releases/1.3.4/test-data.tar.gz

tar xzvf test-data.tar.gz

tree -l 1 test-data

├── reads1.fastq

└── reads2.fastq

測試資料集是乙個雙端測序的結果檔案,用abyss進行組裝的命令如下

abyss-pe k=25 name=test in='test-data/reads1.fastq test-data/reads2.fastq'
name引數是生成檔案的字首,執行結束後,會生成很多檔案,以下兩個檔案是我們最關注的

test-contigs.fa

test-scaffolds.fa

分別對應contig和scaffold的結果。

對於abyss而言,只能通過for 迴圈,實現多個kmer 梯度組裝,用法如下

for k in `seq 50 8 90`; do

mkdir k$k

abyss-pe -c k$k name=test k=$k in=reads.fa

done

布隆過濾器

布隆過濾器 bloom filter 是1970年由布隆提出的。它實際上是乙個很長的二進位制向量和一系列隨機對映函式。布隆過濾器可以用於檢索乙個元素是否在乙個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。如果想要判斷乙個元素是不是在乙個集合裡,一般想到...

布隆過濾器

布隆過濾器的概念 如果想要判斷乙個元素是不是在乙個集合裡,一般想到的是將所有元素儲存起來,然後通過比較確定。鍊錶,樹等等資料結構都是這種思路.但是隨著集合中元素的增加,我們需要的儲存空間越來越大,檢索速度也越來越慢 o n o logn 不過世界上還有一種叫作雜湊表 又叫 雜湊表,hash tabl...

布隆過濾器

如果想判斷乙個元素是不是在乙個集合裡,一般想到的是將集合中所有元素儲存起來,然後通過比較確定。鍊錶 樹 雜湊表 又叫雜湊表,hash table 等等資料結構都是這種思路。但是隨著集合中元素的增加,我們需要的儲存空間越來越大。同時檢索速度也越來越慢。bloom filter 是一種空間效率很高的隨機...