2015년 11월 26일 목요일

ABySS 1.9.0 버전 설치..

ABySS assembler 가 기존 1.5.1 버전에서 1.9.0 버전으로 업데이트 되었다. 업데이트 되면서 크게 바뀐 것 중에 하나가 라이센스 정책... 기존에는 GPL v3 라이센스 였지만 BCCCA 라이센스로 바뀌면서 Academy Only 로 바뀌었다. 나랑은 상관없는 이야기...

그 외에도 Boost, OpenMPI, sparsehash, SQLite 가 필요한데 SQLite 는 뭔데 새로 생겼다. 귀찮게..
자세한 것은 https://github.com/bcgsc/abyss#abyss 직접 보라.

먼저 Boost 설치부터 하자. http://www.boost.org/
현재 최신 버전은 1.59 이다.

파일을 다운 받아 압축을 풀면...
1. ./bootstrap.sh 하면 b2 와 bjam 파일이 생성 된다.
2. ./b2 --prefix=/.../PATH/usr/local/ threading=multi install
3. 기다려라.. 시간 좀 걸릴 거다.. ㅡ,.ㅡ


두번째 Open MPI 를 설치하자. http://www.open-mpi.org/
현재 최신 버전은 1.10.1 이다. 파일을 다운로드 받아 압축 해제하고 들어가자.

1. ./configure --prefix=/.../usr/openmpi
2. make all
3. make install

2번에서 multi core 를 이용해 더 빨리 설치할 수 있다. 'make j4 all' core 4개를 쓴다는 뜻. 그런데 실제론 해보니 그다지 빨라지는 듯 싶지 않다.
여기서 끝이 아니다.

~/.bashrc 에 다음 두 줄을 더하거나 삽입해야 된다.

export PATH=/.../PATH/usr/openmpi/bin
exoprt LD_LIBRARY_PATH=/.../PATH/usr/openmpi/lib

세번째 sparsehash 를 설치하자. https://github.com/sparsehash/sparsehash
기존 goolge code 가 없어지고 github 로 통합된 듯.. 왼쪽에 다운로드 버튼이 있다.
다운로드한 파일의 압축을 해제하고 디렉토리로 들어간다.
1. ./configure --prefix=/.../PATH/usr/local
2. make
3. make install

이쯤 되니 별거 없는 듯 느껴진다.

네번째. 마지막이다. SQLite 를 설치하자. 이건 처음 보는 거라 좀 긴장된다.
http://www.sqlite.org/ 현재 최신 버전은 3.9.2 이다.
사실, precompiled 가 있으니 그거 쓰는게 속 편하다. 그래도 한번 source code 로 해보자.

1. README 파일을 읽어보자. 뭔가 있다.
2. ./configure --prefix=/.../PATH/usr/local --enable-readline=yes --enable-threadsafe=yes --enable-dynamic-extensions=yes
3. make
4. make install
5. ~/.bashrc 에 export LD_LIBRARY_PATH=/.../PATH/usr/local/lib 추가하라는 글이 뜬다.
뭔가 있을 줄 알았어.. 그런데 아까 한거 같은데...

이제 목표였던 ABySS assembler 를 설치하러 가자. 위의 험난한 과정을 거치다보니 예전엔 몰랐던 옵션들의 의미를 대충 알게 되었고 ABySS 설치도 무척이나 쉽게 느껴진다.
위의 방법대로 해왔다면 밑의 명령어 줄로 하면 무난하게 설치가 된다.

1. http://www.bcgsc.ca/platform/bioinfo/software/abyss 에서 다운로드를 받는다.
2. 압축을 해제하고 디렉토리로 들어간다.
3.  ./configure --prefix=/.../PATH/abyss CC=gcc CXX=g++ --with-boost=/.../PATH/usr/local/include --with-mpi=/.../PATH/usr/openmpi CPPFLAGS=-I/.../PATH/usr/local/gcc-4.9.3/include --with-sqlite=/.../PATH/usr/local/ --with-sparsehash=/.../PATH/usr/local/include --enable-maxk=128
4. make
5. make install
6. /.../PATH/abyss/bin 디렉토리를 $PATH 에 포함시킨다.

컴파일 도중 warning 이 뜨고 그걸 무시하고 싶다면 make AM_CXXFLAGS=-Wall 를 실행하라고 나오는데 딱히 warning 이 없어서 그냥 진행했다.

2015년 11월 25일 수요일

gcc compiler 를 설치하기 위한 여정..

 서버가 아직도 우분투 10.10 인 관계로 gcc ,g++ 컴파일러가 4.4 버전이다. ABySS 어셈블러도 신버전이 나온 김에 재설치를 하기 위하여 gcc, g++ 컴파일러를 4.9.3 버전으로 업데이트를 해보려고 한다.
 그런데, 이 서버는 예전에 좀비 서버가 된 적이 있어서 학교 전산팀에서 외부로 나가는 트래픽을 막아놓았다. 게다가 나에겐 비록 root 계정이 있기는 하지만 하는 김에 root 계정 없이 설치를 해보고자 했더니 아주 험난한 과정이 기다리고 있었다. 하지만 한번 해보고자 한다.

gcc 컴파일러 설치를 위해서는 선행해서 필요한 것들이 기다리고 있다.
GNU M4 (http://ftp.gnu.org/gnu/m4/)
autoconfigure (ftp://ftp.gnu.org/gnu/autoconf/)
automake (ftp://ftp.gnu.org/gnu/automake/)

꼭 순서대로 설치해야 된다.

본래대로라면 default 설치 위치가 /usr 로 설정되어 있지만 나는 root 계정이 아닌 관계로 개인 디렉토리에 설치할 거다.

각 압축 파일을 풀어서 새로 생성된 디렉토리로 들어간 다음
1. ./configure --prefix=/.../My_path
2. make
3. make install

순서대로 하면 /.../My_path/bin 디렉토리가 생겨 있고 여기에 컴파일된 파일이 생성되어 있을 것이다. 저 디렉토리를 $PATH 에 걸어놓으면 나머지는 순조롭게 설치가 된다.

그리고 gcc 홈페이지 (https://gcc.gnu.org/) 에 가보면 여러가지 필요한 것들이 나열 되어 있다. 그 중에서..
1. GNU Multiple Precision Library (GMP https://gmplib.org/)
2. MPFR Library (http://www.mpfr.org/  http://www.mpfr.org/mpfr-current/#download),
3. MPC Library (http://www.multiprecision.org/  http://www.multiprecision.org/index.php?prog=mpc&page=download)
4. ISL Library (ftp://gcc.gnu.org/pub/gcc/infrastructure/) version 0.15, 0.14, 0.13, or 0.12.2

왠만한 것들은 우분투에도 있지만 저 4가지는 없거나 $PATH 에 안 잡혀 있다. 그래서 일단 저 4가지를 설치해보자.

먼저 GMP 압축 파일을 받아서 압축을 해제하고 디렉토리로 들어간다.
1. ./configure --prefix=/.../My-path/usr/local
2. make
3. make check
4. make install

두번째로 MPFR 을 설치하자.
마찬가지로 압축 파일을 받아 압축 해제 후 디렉토리로 들어가서..
1. ./configure --prefix=/../My_path/usr/local --with-gmp=/.../My_path/usr/local
2. make
3. make install

 세번째 MPC 설치하자.
1. ./configure --prefix=/.../My_path/usr/local --with-gmp=/.../My_path/usr/local --with-mpfr=/.../My_path/usr/local
2. make
3. make install

 네번째 ISL 을 설치하자.
1. ./configure --prefix=/.../My_path/usr/local --with-gmp-prefix=/.../My_path/usr/local
2. make
3. make install

** gcc 설치하다가 알았는데 ISL 0.15 버전은 gcc 4.9.3 버전에서 지원하지 않는 것 같다. 0.14 버전으로 재설치했다.


마지막으로 대망의 gcc... 이것을 위해 여기까지 왔다.. ㅜ_ㅜ

** gcc 를 설치하기 전 LD_LIBRARY_PATH 라는 환경변수에 isl 등을 설치했던 lib 디렉토리를 추가해줘야 한다.
export LD_LIBRARY_PATH=/.../My_path/usr/local/lib/:$LD_LIBRARY_PATH:

1. gcc 압축 파일을 받아 압축을 해제하고 해당 디렉토리에 들어간 다음
./configure --prefix=/.../My_path/usr/local/gcc-4.9.3/ --enable-stage1-languages=all --with-mpc=/.../My_path/usr/local/ --with-mpfr=/.../My_path/usr/local/ --with-gmp=/.../My_path/usr/local/ --with-isl-include=/.../My_path/usr/local/include/ --with-isl-lib=/.../My_path/usr/local/lib/ --disable-multilib

본래 --with-isl=PATH 옵션이 있어서 해봤는데 계속 되는 에러로 --with-isl-include, --with-isl-lib 두 옵션으로 바꿔버렸더니 됐다. 또한 현재 시스템엔 32 bit 와 64 bit 중에 64 bit 시스템 밖에 없으므로 --enable-multilib 와 --disable-multilib 둘 중에 하나 고르라는 에러가 떠서 64 bit 만 쓸 것이므로 --disable-multilib 옵션을 골랐다.

2. make
3. make install

2015년 8월 25일 화요일

FASTQ 파일 내의 base count 하기

fasta 파일의 경우에는 fastasize.py 라는 걸 선구자 분들이 만들어 놔서 간단하게 카운트가 되었다. 그래서 매번 fastq 를 fasta 로 변환하고 count 를 했는데 찾다보니 직접 count 할 수 있다는 걸 알게 되었다.

https://www.biostars.org/p/78043/

위의 웹페이지는 일종의 토론을 한 내용이고.. 거의 마지막에 간단한 명령어가 있어서 이것을 애용한다.

grep "^[ACGTN]" test.fastq | tr -d "\n" | wc -m

awk '{s++}END{print s/4}' test.fastq

위는 base number 를 count 하고 밑은 read number 를 카운트 한다.

----------------------
2018년 3월 21일
위의 내용을 수정함.

위에서 base number 를 count 할 때 안 맞는다. 이상해서 찾아보니 quality 에도 ATGCN 이 존재할 수 있기 때문에 그것들까지 count 되는 듯 싶다. 그래서 찾아보니...

awk 'NR%4==2{c++; l+=length($0)}END{print "Number of reads: "c;print "Number of bases in reads: "l}' fastq.file

이라는 방법이 있었고, 다시 해서 맞춰보니 fastasize.py 와 일치하는 수자가 나온다.

FASTQ 포멧의 전환...

https://en.wikipedia.org/wiki/FASTQ_format

위의 위키피디아에는 fastq 포멧에 대한 설명이 되어 있다.
프로그래머 라면 포멧에 대한 설명도 매우 중요하겠지만 나는 그냥 이용자일 뿐이라서 그다지 중요하지 않다.

보다 중요한 것은 맨 밑에...
FASTQ 를 FASTA 포멧으로 전환하기..

zcat input_file.fastq.gz | awk 'NR%4==1{printf ">%s\n", substr($0,2)}NR%4==2{print}' > output_file.fa

정확하게는 gzip 으로 압축되어 있는 fastq 파일의 압축을 해제하면서 fasta 파일로 전환하는 것이다. 압축이 되어 있지 않다면 zcat 대신 cat 을 쓰면 된다.

fastq 포멧은 Phred+64 와 Phred+33 이 있고 게다가 범위 값도 Sanger, Solexa, Illumina (v1.3, v1.5, v1.8) 버전마다 달라서 그야말로 혼돈의 카오스 이다.
자세한 것은 위키피디아 항목을 참조하자.

그냥 간단하게 전부 무시하고 Phred+64 와 Phred+33 사이의 전환법만 알고 넘어가자.

Illumina CASAVA 1.8 버전을 1.3 버전으로 바꾸기 (Phred+64 를 Phred+33 으로 전환)

sed -e '4~4y/!"#$%&'\''()*+,-.\/0123456789:;<=>?@ABCDEFGHIJ/@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghi/' myfile.fastq


Illumina CASAVA 1.3 버전을 1.8 버전으로 바꾸기 (Phred+33 를 Phred+64 으로 전환)

sed -e '4~4y/@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghi/!"#$%&'\''()*+,-.\/0123456789:;<=>?@ABCDEFGHIJ/' myfile.fastq

대략 2013년 이후로는 Illumina Phred+33 으로 강제 통일된 상태나 마찬가지..
만약 보유하고 있는 파일의 fastq 포멧을 알고 싶다면 fastqc 프로그램을 이용해서 파일을 분석해보자.

http://www.bioinformatics.babraham.ac.uk/projects/fastqc/