主流的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 是一種空間效率很高的隨機...