Languages Translated

Languages Translated(語言轉換)

2012年8月9日 星期四

安裝BWA過程中可能出現的錯誤

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
...........



請將
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

就可以完成安裝


linux下如何安裝Boost

如果是進行sequencing 相關的bioinformatic的人  多多少少會接觸到Illumina的資料

Illumina本身也有推出一套可以進行alignment的軟體  稱之為CASAVA

該軟體現階段更新至 version 1.8.2版本  而該軟體就需要用到Boost

這也是本人第一次遇到要安裝Boost

其實安裝boost這個C++函式庫的方式並不難,
但是對於一個linux新手來說還是會搞得一個頭兩個大


下面就是一步一步的用最精簡的方式完成boost的安裝

首先進入Boost網站中下載的頁面,選擇最新的Current Release

點入Download的頁面中,會有四種壓縮格式bz, 7z, zip及gzip, 我這邊使用gzip格式說明

首先進入LINUX中


1.首先下載檔案

wget http://sourceforge.net/projects/boost/files/boost/1.50.0/boost_1_50_0.tar.gz/download

2.解壓縮

tar -xzvf boost_1_50_0.tar.gz

3.進入解壓縮完的資料夾

cd  boost_1_50_0

4. 導出boost的編譯器

執行   ./bootstrap.sh

5. 進行編譯安裝(預設安裝在/usr/include)

./bjam " "-sTOOLS=gcc" "--includedir=/usr/include" "--libdir=/usr/lib/boost" install


接下來就完成了

如果有要使用ABySS這個程式進行de novo assembly

那boost也將是你必須安裝的程式