엑셀을 이용한 BLAST 출력파일 파싱

BLAST 결과를 Parsing 하여 분석할 때 대개는 Perl, Python, 아니면 Java 등을 스크립트를 작성하여 수행하는 것이 보통이지만, 단순히 결과를 테이블로 만드는 것 정도는 아무런 프로그래밍 지식이 없어도 할 수 있는 일이다.

어떻게?

정답 : 엑셀을 이용하여 XML 형식으로 출력된 리포트를 임포트한다.

물론 이것보다 더 복잡한 일, 즉 BLAST 결과를 파싱하여 결과를 필터링하고, DB에 넣고, 이 결과에서 쿼리를 해서 다른 프로그램을 돌리고....와 같은 것이라면 스크립트를 작성할 줄 아는 것이 좋지만, 엑셀이나 억세스와 같은 오피스 프로그램이라도 어느 정도 쓸수 있으면 모르는 것보다는 훨씬 낫다. (엑셀이나 억세스와 같은 오피스 프로그램을 우습게 보는 사람들이 가끔 있지만, 사실 엑셀은 흔히 생각하는 것처럼 그렇게 널럴한 프로그램이 아니다. 물론 Perl 이나 Python 과 같은 스크립트 프로그래밍이 가능한 사람이라면 일을 보다 효율적으로 할 수 있지만, 현재의 바이오 분야의 실태를 생각하면 엑셀이라도 제대로 쓸 줄 알았으면 정말 좋겠다. -.-;; )

참고로 이 방법은 Web BLAST와 Local BLAST 에서 모두 적용된다.

(1) XML 형식으로 출력 데이터 저장하기

- Web BLAST


다들 보아왔을 Web BLAST 의 포매팅 화면이다.


여기서 'XML' 을 선택한다.


그러면 이런 화면이 나올텐데, 이 파일을 웹 브라우저에서 저장한다.

- Local BLAST

이전에 설명한 것처럼 -m 옵션을 사용한다. -m 7 을 이용하면 XML 형태의 출력파일을 얻을 수 있다.

blastall -p blastp -m 7 -i mydata.fasta -o output.xml

이런 식의 명령을 내리면 결과는 output.xml 의 형식으로 저장된다.

(2) 엑셀에서 불러오기

이를 위해서는 XML 을 지원하는 MS Office 2003 이상의 버전 이 필요하다.


엑셀의 메뉴에서 '데이터-XML-가져오기' 를 선택하고 아까 저장한 xml 파일을 선택하면..

짜잔, 이런 식으로 BLAST Report 가 임포트되었다. 친절한 빌 아저씨는 자동 필터까지 달아 주었다. -.-;;

달아준 자동 필터를 이용하여 e-value 값으로 filtering 을 하든지..

원하는 컬럼에 이름을 지정하고 countif 등의 함수를 사용하든지..


아니면 엑셀의 데이터베이스 함수 등을 이용해도 될 것이다.

물론 이러한 방법은 좀 구질구질한 것이 사실이고, BLAST 결과를 이용하여 다시 추가적인 단계를 거칠때는 아무래도 스크립트 언어를 사용하는 것이 좋겠지만, 적어도 이런 단순한 일 정도는 스크립트를 작성하지 않고 '오피스라도' 어느정도 쓸 줄 알면 꽤 많은 일을 할 수 있다.

참고사항.

- 엑셀의 행의 최대는 65536행이다. 이것보다 많은 양의 행이 존재하는 대용량의 데이터를 엑셀을 이용하려고 안간힘을 쓰지는 말기 바란다. 이런 경우에는 Relational DB 를 이용할 상황이다. 간단하게는 억세스를 이용하거나, 아니면 MySQL, 혹은 SQLite 같은 DB를 이용할 수 있는 것이 좋을 것이다.

- Local BLAST 를 사용하는 경우 굳이 XML 을 이용하지 않고, 출력 옵션에서 -m 8 = tabular,
9 =tabular with comment lines 과 같은 옵션을 이용해도 쉽게 임포트할 수 있다.


* 생물학자 여러분, 이제 이런 시덥잖은 일로 BLAST Parser 짜달라고 프로그래머를 괴롭히지 말기 바랍니다. '난 프로그래밍 못해요' 내지는 '유닉스 몰라요' 는 생물학자에게 핑계가 될 수 있을런지 모르지만 '엑셀 몰라요' 라고 하는 것은 좀 쪽팔리잖습니까.

by Newbie | 2006/07/05 00:37 | Bioinformatics/comp. | 트랙백 | 덧글(1)

트랙백 주소 : http://medialab.egloos.com/tb/1362736
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by codebook at 2007/08/01 16:49
오~ 좋은 자료입니다. 감사합니다. 방금 님의 글을 이용해서 WebBlast의 결과를 Excel에서 열었습니다. 감동~ 감동~ 64bit 엑셀에서는 100만개까지 되니깐, 잘하면 parser가 필요없을지도... ^^

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶