Burrows-Wheeler Aligner (BWA)是一款開放原始碼的aligner
也是很多人會使用的NGS alignment程式
安裝BWA其實非常簡單
1.首先連上BWA的網站,進入下載頁面
選一個你想下載的版本,複製連結
2.輸入 wget http://sourceforge.net/projects/bio-bwa/files/bwa-0.6.2.tar.bz2/download
檔案非常小很快就可以下好
3.解壓縮下載好的壓所檔
tar -jxvf bwa-0.6.2.tar.bz2
4.進入解壓縮好的資料夾
cd bwa-0.6.2
5.編譯
make
但是編譯的過程中可能也會碰到下面的錯誤
錯誤訊息如下:
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwa.c -o bwa.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bamlite.c -o bamlite.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD utils.c -o utils.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwt.c -o bwt.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtio.c -o bwtio.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtaln.c -o bwtaln.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtgap.c -o bwtgap.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bntseq.c -o bntseq.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD stdaln.c -o stdaln.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwaseqio.c -o bwaseqio.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwase.c -o bwase.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD kstring.c -o kstring.o
ar -csru libbwa.a bwa.o bamlite.o utils.o bwt.o bwtio.o bwtaln.o bwtgap.o bntseq .o stdaln.o bwaseqio.o bwase.o kstring.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD QSufSort.c -o QSufSort.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwt_gen.c -o bwt_gen.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD is.c -o is.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtmisc.c -o bwtmisc.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtindex.c -o bwtindex.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD ksw.c -o ksw.o
在包含自 ksw.c:29 的檔案中:
/usr/lib/gcc/i686-redhat-linux/4.4.6/include/emmintrin.h:32:3: 錯誤:#error "SSE 2 instruction set not enabled"
ksw.c:43: 錯誤:expected specifier-qualifier-list before 「__m128i」
ksw.c: In function 「ksw_qinit」:
ksw.c:55: 錯誤:「ksw_query_t」 沒具名為 「qp」 的成員
ksw.c:55: 錯誤:「__m128i」 未宣告 (在此函式內第一次使用)
ksw.c:55: 錯誤:(即使在一個函式內多次出現,每個未宣告的識別碼在其
ksw.c:55: 錯誤:所在的函式內只報告一次。)
ksw.c:55: 錯誤:expected expression before 「)」 token
ksw.c:56: 錯誤:「ksw_query_t」 沒具名為 「H0」 的成員
ksw.c:56: 錯誤:「ksw_query_t」 沒具名為 「qp」 的成員
ksw.c:57: 錯誤:「ksw_query_t」 沒具名為 「H1」 的成員
ksw.c:57: 錯誤:「ksw_query_t」 沒具名為 「H0」 的成員
ksw.c:58: 錯誤:「ksw_query_t」 沒具名為 「E」 的成員
ksw.c:58: 錯誤:「ksw_query_t」 沒具名為 「H1」 的成員
ksw.c:59: 錯誤:「ksw_query_t」 沒具名為 「Hmax」 的成員
ksw.c:59: 錯誤:「ksw_query_t」 沒具名為 「E」 的成員
ksw.c:73: 錯誤:「ksw_query_t」 沒具名為 「qp」 的成員
ksw.c:82: 錯誤:「ksw_query_t」 沒具名為 「qp」 的成員
ksw.c: In function 「ksw_sse2_16」:
ksw.c:98: 錯誤:「__m128i」 未宣告 (在此函式內第一次使用)
ksw.c:98: 錯誤:expected 「;」 before 「zero」
ksw.c:110: 錯誤:「zero」 未宣告 (在此函式內第一次使用)
ksw.c:110: 警告:隱含宣告函式 「_mm_set1_epi32」
ksw.c:111: 錯誤:「gapoe」 未宣告 (在此函式內第一次使用)
ksw.c:111: 警告:隱含宣告函式 「_mm_set1_epi8」
ksw.c:112: 錯誤:「gape」 未宣告 (在此函式內第一次使用)
ksw.c:113: 錯誤:「shift」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「H0」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「ksw_query_t」 沒具名為 「H0」 的成員
ksw.c:114: 錯誤:「H1」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「ksw_query_t」 沒具名為 「H1」 的成員
ksw.c:114: 錯誤:「E」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「ksw_query_t」 沒具名為 「E」 的成員
ksw.c:114: 錯誤:「Hmax」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「ksw_query_t」 沒具名為 「Hmax」 的成員
ksw.c:117: 警告:隱含宣告函式 「_mm_store_si128」
ksw.c:124: 錯誤:expected 「;」 before 「e」
ksw.c:125: 錯誤:「h」 未宣告 (在此函式內第一次使用)
ksw.c:125: 警告:隱含宣告函式 「_mm_load_si128」
ksw.c:126: 警告:隱含宣告函式 「_mm_slli_si128」
ksw.c:134: 警告:隱含宣告函式 「_mm_adds_epu8」
ksw.c:134: 錯誤:「S」 未宣告 (在此函式內第一次使用)
ksw.c:135: 警告:隱含宣告函式 「_mm_subs_epu8」
ksw.c:136: 錯誤:「e」 未宣告 (在此函式內第一次使用)
ksw.c:137: 警告:隱含宣告函式 「_mm_max_epu8」
ksw.c:138: 錯誤:「f」 未宣告 (在此函式內第一次使用)
ksw.c:139: 錯誤:「max」 未宣告 (在此函式內第一次使用)
ksw.c:161: 警告:隱含宣告函式 「_mm_movemask_epi8」
ksw.c:161: 警告:隱含宣告函式 「_mm_cmpeq_epi8」
ksw.c:167: 警告:隱含宣告函式 「_mm_srli_si128」
ksw.c:167: 警告:隱含宣告函式 「_mm_extract_epi16」
ksw.c: In function 「ksw_sse2_8」:
ksw.c:208: 錯誤:「__m128i」 未宣告 (在此函式內第一次使用)
ksw.c:208: 錯誤:expected 「;」 before 「zero」
ksw.c:219: 錯誤:「zero」 未宣告 (在此函式內第一次使用)
ksw.c:220: 錯誤:「gapoe」 未宣告 (在此函式內第一次使用)
ksw.c:220: 警告:隱含宣告函式 「_mm_set1_epi16」
ksw.c:221: 錯誤:「gape」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「H0」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「ksw_query_t」 沒具名為 「H0」 的成員
ksw.c:222: 錯誤:「H1」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「ksw_query_t」 沒具名為 「H1」 的成員
ksw.c:222: 錯誤:「E」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「ksw_query_t」 沒具名為 「E」 的成員
ksw.c:222: 錯誤:「Hmax」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「ksw_query_t」 沒具名為 「Hmax」 的成員
ksw.c:232: 錯誤:expected 「;」 before 「e」
ksw.c:233: 錯誤:「h」 未宣告 (在此函式內第一次使用)
ksw.c:236: 警告:隱含宣告函式 「_mm_adds_epi16」
ksw.c:236: 錯誤:「S」 未宣告 (在此函式內第一次使用)
ksw.c:237: 錯誤:「e」 未宣告 (在此函式內第一次使用)
ksw.c:238: 警告:隱含宣告函式 「_mm_max_epi16」
ksw.c:239: 錯誤:「f」 未宣告 (在此函式內第一次使用)
ksw.c:240: 錯誤:「max」 未宣告 (在此函式內第一次使用)
ksw.c:242: 警告:隱含宣告函式 「_mm_subs_epu16」
ksw.c:258: 警告:隱含宣告函式 「_mm_cmpgt_epi16」
make: *** [ksw.o] Error 1
遇到這個錯誤的時候
請進入bwa-0.6.2.資料夾中 打開 Makefile修改內容
輸入 vim Makefile
>
CC= gcc
CXX= g++
CFLAGS= -g -Wall -O2
CXXFLAGS= $(CFLAGS)
AR= ar
DFLAGS= -DHAVE_PTHREAD #-D_NO_SSE2 #-D_FILE_OFFSET_BITS=64
LOBJS= bwa.o bamlite.o utils.o bwt.o bwtio.o bwtaln.o bwtgap.o bntseq.o stdaln.o \
bwaseqio.o bwase.o kstring.o
AOBJS= QSufSort.o bwt_gen.o \
is.o bwtmisc.o bwtindex.o ksw.o simple_dp.o \
bwape.o cs2nt.o \
bwtsw2_core.o bwtsw2_main.o bwtsw2_aux.o bwt_lite.o \
bwtsw2_chain.o fastmap.o bwtsw2_pair.o
也是很多人會使用的NGS alignment程式
安裝BWA其實非常簡單
1.首先連上BWA的網站,進入下載頁面
選一個你想下載的版本,複製連結
2.輸入 wget http://sourceforge.net/projects/bio-bwa/files/bwa-0.6.2.tar.bz2/download
檔案非常小很快就可以下好
3.解壓縮下載好的壓所檔
tar -jxvf bwa-0.6.2.tar.bz2
4.進入解壓縮好的資料夾
cd bwa-0.6.2
5.編譯
make
但是編譯的過程中可能也會碰到下面的錯誤
錯誤訊息如下:
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwa.c -o bwa.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bamlite.c -o bamlite.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD utils.c -o utils.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwt.c -o bwt.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtio.c -o bwtio.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtaln.c -o bwtaln.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtgap.c -o bwtgap.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bntseq.c -o bntseq.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD stdaln.c -o stdaln.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwaseqio.c -o bwaseqio.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwase.c -o bwase.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD kstring.c -o kstring.o
ar -csru libbwa.a bwa.o bamlite.o utils.o bwt.o bwtio.o bwtaln.o bwtgap.o bntseq .o stdaln.o bwaseqio.o bwase.o kstring.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD QSufSort.c -o QSufSort.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwt_gen.c -o bwt_gen.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD is.c -o is.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtmisc.c -o bwtmisc.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD bwtindex.c -o bwtindex.o
gcc -c -g -Wall -O2 -DHAVE_PTHREAD ksw.c -o ksw.o
在包含自 ksw.c:29 的檔案中:
/usr/lib/gcc/i686-redhat-linux/4.4.6/include/emmintrin.h:32:3: 錯誤:#error "SSE 2 instruction set not enabled"
ksw.c:43: 錯誤:expected specifier-qualifier-list before 「__m128i」
ksw.c: In function 「ksw_qinit」:
ksw.c:55: 錯誤:「ksw_query_t」 沒具名為 「qp」 的成員
ksw.c:55: 錯誤:「__m128i」 未宣告 (在此函式內第一次使用)
ksw.c:55: 錯誤:(即使在一個函式內多次出現,每個未宣告的識別碼在其
ksw.c:55: 錯誤:所在的函式內只報告一次。)
ksw.c:55: 錯誤:expected expression before 「)」 token
ksw.c:56: 錯誤:「ksw_query_t」 沒具名為 「H0」 的成員
ksw.c:56: 錯誤:「ksw_query_t」 沒具名為 「qp」 的成員
ksw.c:57: 錯誤:「ksw_query_t」 沒具名為 「H1」 的成員
ksw.c:57: 錯誤:「ksw_query_t」 沒具名為 「H0」 的成員
ksw.c:58: 錯誤:「ksw_query_t」 沒具名為 「E」 的成員
ksw.c:58: 錯誤:「ksw_query_t」 沒具名為 「H1」 的成員
ksw.c:59: 錯誤:「ksw_query_t」 沒具名為 「Hmax」 的成員
ksw.c:59: 錯誤:「ksw_query_t」 沒具名為 「E」 的成員
ksw.c:73: 錯誤:「ksw_query_t」 沒具名為 「qp」 的成員
ksw.c:82: 錯誤:「ksw_query_t」 沒具名為 「qp」 的成員
ksw.c: In function 「ksw_sse2_16」:
ksw.c:98: 錯誤:「__m128i」 未宣告 (在此函式內第一次使用)
ksw.c:98: 錯誤:expected 「;」 before 「zero」
ksw.c:110: 錯誤:「zero」 未宣告 (在此函式內第一次使用)
ksw.c:110: 警告:隱含宣告函式 「_mm_set1_epi32」
ksw.c:111: 錯誤:「gapoe」 未宣告 (在此函式內第一次使用)
ksw.c:111: 警告:隱含宣告函式 「_mm_set1_epi8」
ksw.c:112: 錯誤:「gape」 未宣告 (在此函式內第一次使用)
ksw.c:113: 錯誤:「shift」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「H0」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「ksw_query_t」 沒具名為 「H0」 的成員
ksw.c:114: 錯誤:「H1」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「ksw_query_t」 沒具名為 「H1」 的成員
ksw.c:114: 錯誤:「E」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「ksw_query_t」 沒具名為 「E」 的成員
ksw.c:114: 錯誤:「Hmax」 未宣告 (在此函式內第一次使用)
ksw.c:114: 錯誤:「ksw_query_t」 沒具名為 「Hmax」 的成員
ksw.c:117: 警告:隱含宣告函式 「_mm_store_si128」
ksw.c:124: 錯誤:expected 「;」 before 「e」
ksw.c:125: 錯誤:「h」 未宣告 (在此函式內第一次使用)
ksw.c:125: 警告:隱含宣告函式 「_mm_load_si128」
ksw.c:126: 警告:隱含宣告函式 「_mm_slli_si128」
ksw.c:134: 警告:隱含宣告函式 「_mm_adds_epu8」
ksw.c:134: 錯誤:「S」 未宣告 (在此函式內第一次使用)
ksw.c:135: 警告:隱含宣告函式 「_mm_subs_epu8」
ksw.c:136: 錯誤:「e」 未宣告 (在此函式內第一次使用)
ksw.c:137: 警告:隱含宣告函式 「_mm_max_epu8」
ksw.c:138: 錯誤:「f」 未宣告 (在此函式內第一次使用)
ksw.c:139: 錯誤:「max」 未宣告 (在此函式內第一次使用)
ksw.c:161: 警告:隱含宣告函式 「_mm_movemask_epi8」
ksw.c:161: 警告:隱含宣告函式 「_mm_cmpeq_epi8」
ksw.c:167: 警告:隱含宣告函式 「_mm_srli_si128」
ksw.c:167: 警告:隱含宣告函式 「_mm_extract_epi16」
ksw.c: In function 「ksw_sse2_8」:
ksw.c:208: 錯誤:「__m128i」 未宣告 (在此函式內第一次使用)
ksw.c:208: 錯誤:expected 「;」 before 「zero」
ksw.c:219: 錯誤:「zero」 未宣告 (在此函式內第一次使用)
ksw.c:220: 錯誤:「gapoe」 未宣告 (在此函式內第一次使用)
ksw.c:220: 警告:隱含宣告函式 「_mm_set1_epi16」
ksw.c:221: 錯誤:「gape」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「H0」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「ksw_query_t」 沒具名為 「H0」 的成員
ksw.c:222: 錯誤:「H1」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「ksw_query_t」 沒具名為 「H1」 的成員
ksw.c:222: 錯誤:「E」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「ksw_query_t」 沒具名為 「E」 的成員
ksw.c:222: 錯誤:「Hmax」 未宣告 (在此函式內第一次使用)
ksw.c:222: 錯誤:「ksw_query_t」 沒具名為 「Hmax」 的成員
ksw.c:232: 錯誤:expected 「;」 before 「e」
ksw.c:233: 錯誤:「h」 未宣告 (在此函式內第一次使用)
ksw.c:236: 警告:隱含宣告函式 「_mm_adds_epi16」
ksw.c:236: 錯誤:「S」 未宣告 (在此函式內第一次使用)
ksw.c:237: 錯誤:「e」 未宣告 (在此函式內第一次使用)
ksw.c:238: 警告:隱含宣告函式 「_mm_max_epi16」
ksw.c:239: 錯誤:「f」 未宣告 (在此函式內第一次使用)
ksw.c:240: 錯誤:「max」 未宣告 (在此函式內第一次使用)
ksw.c:242: 警告:隱含宣告函式 「_mm_subs_epu16」
ksw.c:258: 警告:隱含宣告函式 「_mm_cmpgt_epi16」
make: *** [ksw.o] Error 1
遇到這個錯誤的時候
請進入bwa-0.6.2.資料夾中 打開 Makefile修改內容
輸入 vim Makefile
>
CC= gcc
CXX= g++
CFLAGS= -g -Wall -O2
CXXFLAGS= $(CFLAGS)
AR= ar
DFLAGS= -DHAVE_PTHREAD #-D_NO_SSE2 #-D_FILE_OFFSET_BITS=64
LOBJS= bwa.o bamlite.o utils.o bwt.o bwtio.o bwtaln.o bwtgap.o bntseq.o stdaln.o \
bwaseqio.o bwase.o kstring.o
AOBJS= QSufSort.o bwt_gen.o \
is.o bwtmisc.o bwtindex.o ksw.o simple_dp.o \
bwape.o cs2nt.o \
bwtsw2_core.o bwtsw2_main.o bwtsw2_aux.o bwt_lite.o \
bwtsw2_chain.o fastmap.o bwtsw2_pair.o
...........
請將
DFLAGS= -DHAVE_PTHREAD #-D_NO_SSE2 #-D_FILE_OFFSET_BITS=64
修改為
DFLAGS= -DHAVE_PTHREAD -D_NO_SSE2 #-D_FILE_OFFSET_BITS=64
離開並存檔 ESC + :wq
在bwa-0.6.2資料夾中重新編譯
make
就可以完成安裝