ゲノム解析用ソフトVICUNAをコンパイルする

#ゲノム解析用ソフトVICUNAをコンパイルする。

ゲノム解析用のVICUNAを使いたいという要望がありました。
見てみるとコンパイルが必要だったので手順をまとめました。
（意外と苦戦したので）

##仮想環境構築

```
OS：Ubuntu 12.04 LTS 64bit
```

Vagrantを使って構築します。

```
VirtualBox-4.3.10
vagrant_1.5.3
```

http://files.vagrantup.com/precise64.box

仮想環境構築方法は割愛します。次のサイトを参照ください。

http://www.vagrantup.com
http://www.vagrantbox.es

##GCCインストール
VICUNAのコンパイルにg++が必要なのでgcc4.7とg++4.7をインストールします。
（4.8以降では未確認）

```bash
$ sudo apt-get install python-software-properties
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt-get update; sudo apt-get install gcc-4.7 g++-4.7
$ sudo update-alternatives --remove-all gcc 
$ sudo update-alternatives --remove-all g++
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 20
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 20
$ sudo update-alternatives --config gcc
$ sudo update-alternatives --config g++
$ sudo apt-get install make
```

##VICUNA環境構築

次のサイトからダウンロードします。
http://www.broadinstitute.org/scientific-community/science/projects/viral-genomics/vicuna

vicuna.zipファイルを解凍します。

解凍後

```
~/research/VICUNA_v1.3
```

インストールはマニュアルを見ながら行います。

マニュアル：

```
~/research/VICUNA_v1.3/doc/vicuna.pdf
```

参考にするのは3章。

```
3 Quik Start - for external users
```

まずNCBI Toolkitをインストールします。

###NCBI Toolkitのインストール

次のサイトにゲストログインし、/CURRENT以下をローカルにコピーします。
（現時点で12_0_0でした）

ftp://ftp.ncbi.nih.gov/toolbox/ncbi_tools++/CURRENT/
ftp://ftp.ncbi.nih.gov/toolbox/

コピー先例：
```
~/research/ncbi_tools++/12_0_0
```

Linux用を展開します。

```bash
$ cd ~/research/ncbi_tools++/12_0_0/
$ tar xvzf ncbi_cxx--12_0_0.tar.gz
```

コンパイルします。

```bash
$ cd ncbi_cxx--12_0_0
$ ./configure --prefix=/usr/local/opt/ncbi_cxx --with-optimization --with-mt
$ make
$ sudo make install
```

###VICUNAのコンパイル

先ほどインストールしたNCBI Toolkitのパスを指定します。

```bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opt/ncbi_cxx/lib
```

Makefile内のMYPATHを書き換えます。（必要ならCOMPILERも）

```bash
$ cd ~/research/VICUNA_v1.3/src
$ vi Makefile
```

```
MYPATH=/usr/local/opt/ncbi_cxx/
COMPILER=/usr/bin/g++
```

コンパイルします。

```bash
$ make
$ cd ..
```

```
~/research/VICUNA_v1.3/bin/vicuna-omp-v1.0
```

が作成されます。

###実行準備

configファイルを自分の環境用に変更します。

```bash
$ vi config/vicuna_config.txt
```

```
pFqDir /path_to_your_fastq_files_dir/
//npFqDir /path_to_your_fastq_files_dir/
//pFaDir /path_to_your_fasta_files_dir/
//npFaDir /path_to_your_fasta_files_dir/

outputDIR /path_to_your_output_dir/
```

###実行

```bash
$ cd ~/research/VICUNA_v1.3/
$ OMP_NUM_THREADS=2 ./bin/vicuna-omp-v1.0 config/vicuna_config.txt
```

###結果

outputDIRにtrim.logとcontig.alignが出力されます。

##VicunAnalysisのコンパイル

```bash
$ cd scripts/vicuna_analysis/
$ make clean
$ make all
$ cd ../../
```

```
~/research/VICUNA_v1.3/bin/vicuna_analysis
```

が作成されます。

###実行準備

configファイルを自分の環境用に変更します。

```bash
$ vi config/vanalysis_contig.txt
```

```
pFqDir /path_to_your_fastq_files_dir/
//npFqDir /path_to_your_fastq_files_dir/
//pFaDir /path_to_your_fasta_files_dir/
//npFaDir /path_to_your_fasta_files_dir/

trim_log_file /path_to_your_trim_log_file
aln_file /path_to_your_aln_file

outputDIR /path_to_your_analysis_output_dir/

trim_log_fileとaln_fileはvicunaの出力結果のパスです。
```

###実行

```bash
$ ./bin/vicunAnalysis config/vanalysis config.txt
```

###結果

outputDIRにcontig.faとcontig.lfv.fastaが出力されます。

##はまったところ

動かすまでにいろいろと苦労したのではまったところを挙げておきます。

###MacでNCBI Toolkitのコンパイル時にエラー

MacでNCBI Toolkitをコンパイルすると次のようなエラーが大量に出ました。

```
/Users/xxx/research/ncbi_tools++/12_0_0/ncbi_cxx--12_0_0/include/corelib/impl/ncbi_atomic_defs.h:96:12: fatal error: 'bits/c++config.h' file not found
```

標準のコンパイラはgcc4.2.1と古いため、gcc4.7をインストールしてチャレンジ。

```bash
$ sudo brew tap homebrew/versions
$ sudo brew install gcc47
$ export CC=/usr/local/bin/gcc-4.7
$ export CXX=/usr/local/bin/g++-4.7
$ export LD_LIBRARY_PATH=/usr/local/opt/gcc47/lib/gcc/x86_64-apple-darwin13.1.0/4.7.3/
$ make
```

すると今度は次のようなエラーが大量に出ました。

```
ld: symbol(s) not found for architecture x86_64
```

libstdc++が必要みたいなのでコンパイルオプションに追加。

```bash
$ export CFLAGS="-lstdc++"
$ export CXXFLAGS="-lstdc++"
```

ところが再度makeを実行してもエラーは消えません。
いろいろ調べて見ましたが、解決できないため、Macでのコンパイルをあきらめてしまいました。

###Ubuntuでもリンクエラー
Ubuntuでコンパイルすると、Macで出たエラーは出ませんでしたが、
次のエラーがこれまた大量に出てしまいました。

```
/home/vagrant/research/ncbi_tools++/12_0_0/ncbi_cxx--12_0_0/GCC480-DebugOptMTDLL64/lib/libxobjread.so: undefined reference to `ncbi::objects::CPub_Base::DoSelect(ncbi::objects::CPub_Base::E_Choice, ncbi::CObjectMemoryPool*)'
```

こちらもいろいろ調べて原因はわからなかったのですが、試しにconfigオプションを変更したところコンパイルが成功しました。

変更前（VICUNAのマニュアル通りのオプション）

```bash
./configure --prefix=/usr/local/opt/ncbi_cxx --with-optimization --with-mt --with-dll
```

変更後

```bash
./configure --prefix=/usr/local/opt/ncbi_cxx --with-optimization --with-mt
```

もしくは

```bash
./configure --prefix=/usr/local/opt/ncbi_cxx
```

結局`--with-dll`オプションをつけてることが良くなかったということに落ち着きました。
（Macでもオプション変更すればうまくいくのかもしれません）

###備考

入力fastqファイルとして、DRASearchで既に登録されているものを使えそうです。

http://trace.ddbj.nig.ac.jp/DRASearch/

例：SRR513075

```bash
$ wget ftp://ftp.ddbj.nig.ac.jp/ddbj_database/dra/fastq/SRA054/SRA054092/SRX154465/SRR513075.fastq.bz2
$ wget ftp://ftp.ddbj.nig.ac.jp/ddbj_database/dra/fastq/SRA054/SRA054092/SRX154465/SRR513075_1.fastq.bz2
$ wget ftp://ftp.ddbj.nig.ac.jp/ddbj_database/dra/fastq/SRA054/SRA054092/SRX154465/SRR513075_2.fastq.bz2
$ bzip2 -d SRR513075.fastq.bz2
$ bzip2 -d SRR513075_1.fastq.bz2
$ bzip2 -d SRR513075_2.fastq.bz2
```