Thursday, July 19, 2012

Local에서 BLAST+ 작업하기 x64

예전에 포스팅한 Local에서 BLAST 돌리기는 32bit 버전이었는데
요즘 64bit OS를 사용하고 있는 관계로 (본인 또한 다 64bit ㅎㅎ) 업데이트를 해보기로 한다.

일반적으로 Local이라 함은 데스크탑 즉, 윈도우 환경이 대다수일 것이라고 생각된다.
(물론 리눅스나 맥을 데스크탑으로 사용하시는 능력자분들도 있으시겠다.)

Blast를 윈도우 환경에서 작업하고 싶은 경우
NCBI 사이트에 가서 BLAST 프로그램을 다운받으면 된다.

Blast+ 64bit, Blast+ 32Bit, Blast 64Bit, Blast 32Bit

Blast와 Blast+의 차이는 엄청나다 Blast는 기존에 간단한 옵션과 사용방법을 그대로 유지하고 있지만 Blast+의 경우 드라마틱한 속도 개선과 성능이 향상 되었다(는 모르겠고 옵션과 사용방법은 확실하게 드라미틱하게 복잡해졌다)고 한다.

일단 위에서 본인의 OS Bit수에 맞는 Blast를 다운로드 받고, exe파일을 더블 클릭하여 압축을 해제한다. 단, 알수없는 많은 파일들이 눈앞에 펼쳐지는 것을 보기 싫다면 별도의 폴더를 만든 후 더블 클릭하시길..

더블클릭하여 압축을 해제하게 되면 bin, data, doc 폴더가 생성되게 된다.

윈도우에서 Blast작업은 "명령 프롬프트" 창에서 하던가 아니면 별도의 스크립트를 작성해서 실행 시킬 수 있다.

기존의 Blast와는 다르게 BLAST 프로그램들인 blastp, blastn등과 같은 프로그램들이 각각 분리되어졌다.




Step 1. BLAST DB 생성

사용예
makeblastdb -in <input_file.fasta> -input_type {asn1_bin|asn1_txt|blastdb|fasta|xml} -dbtype {nucl|prot} -parse_seqids -hash_index

추가적으로 masking 작업을 위한 masker 프로그램이 동봉되어 있다.
-mask_data {dustmasker|segmasker|windowmasker}
사용하실려면 사용하시길... :)



그리고 output되는 파일의 파일 용량이 1G보다 큰 경우 blastdb 파일이 여러개로 쪼개 질 수 있다. 이런 상황을 방지하기 위해서는 다음 옵션을 사용하여 output 파일의 파일당 최대 용량을 늘려주면 된다.

-max_file_sz <size>, size는 "1GB", "2GB" 이렇게 작성하면 된다.

예제
~/blast+/ncbi-blast-2.2.25+/bin/makeblastdb -in input.fa -input_type fasta -dbtype nucl -parse_seqids -hash_index -max-file-sz 4GB


--------------------------------------------------------------------------------
Building a new DB, current time: 07/18/2012 13:00:27
New DB name: input.fa
New DB title: input.fa
Sequence type: Nucleotide
Keep Linkouts: T
Keep MBits: T
Maximum file size: 4294967296B
Adding sequences from FASTA; added 211174 sequences in 151.743 seconds.
--------------------------------------------------------------------------------


위의 작업이 끝나면 다음과 같은 파일들이 생성된다.
input.fa.{nhd|nhi|nhr|nin|nog|nsd|nsi|nsq}


Step 2. BLAST 실행

예전의 BLAST와 달리 BLAST+에서는 blast 프로그램들이 모두 각각의 수행 파일로 존재한다. 사용되는 옵션은 대부분 유사하니 크게 걱정할 필요는 없다. 다만 parameter 이름이 약간 달라진것 제외하고는 :)

사용예

blastn -query <input_file> -db <blastdb_file> -out <output_file> -evalue <e-value> -outfmt {0..11} -num_threads <number thread>

예제

blastn -query query.fa -db database.fa -out output.txt -evalue 1 -outfmt 6 -num_threads 8

"database.fa 파일에 query.fa파일을 8개의 thread를 사용해서 blastn을 하는 작업으로 e-value가 1이하인 것만 저장하고 결과 파일은 output.txt파일에 저장한다. 그리고 결과 형식은 tabular형식으로 저장한다" 라는 의미를 담고 있는 명령어임. :)


모 그럼... 이정도로.. BLAST+ 간단 사용법에 대한건 마무리하는걸로..

No comments: