Beginning Bioinformatics for Biologists
  가장 먼저 필요한 것들
  Writer : Seyeon Weon   Updated : 10-26   Hit : 8633   Updates 

생물정보학적인 일이란 결국 "컴퓨터로 뭘 하는 것"이란 점은 다들 알고 있을 터이고요. 이에 따라서 우리에게 centrifuge도 중요하듯이 컴퓨터 그 자체도 중요한데, 이것부터 시작을 해봅니다. 하드웨어에 대해서는 다른 글에서 적을 예정이고, 우선은 소프트웨어에 대해서 적습니다.

 

생물정보학 일은 운영체계는 거의 리눅스로 하는 것으로 정해져 있다는 점을 알고 있는지요? 이에 따라서 우리도 환경을 리눅스로 통일을 합니다. 그리고, 어쩔 수 없이, 또는 고집으로 ^^; 윈도우즈에 머물러야겠다면, cygwin을 시도해보기 바랍니다. cygwin에 대해서는 따로 글을 적겠습니다.

 

(아 참, 요즘은 정확한 단어만 알면 구글 신에게 여쭈어 보면 거의 예외 없이 가장 중요한 사이트로 우리를 인도하여 주신다는 것을 알고 있죠? ^^;)

 

리눅스에 대해서도 따로 글을 하나 적는 것이 좋겠군요.

 

, "생물정보학 시작하기" 책 쓴다고 하더니, 왜 갑자기 리눅스부터 끄집어내는가 하는 사람도 있겠군요. 한 마디로 이런 종류의 일은 윈도우즈로는 영 제대로 안 됩니다. 그런데 지금까지 경험에 리눅스부터 일단 장애물이 되더군요. 극복할 방법은 몸으로 때우는 수밖에 다른 수가 없습니다. 무조건 하다 보면 되는 일이니, 꼭 그렇게 해보기를 바랍니다. ^^;

 

리눅스의 "이 없으면 잇몸으로" 식의 대용품인 cygwin, 설치는 그냥 보통의 윈도우즈용 소프트웨어 설치이니 여기에 어려움이 있는 사람은 당연히 이 글을 읽고 있는 사람 중엔 없을 터이고요. , 제 생각에 "리눅스를 설치 해보려고 두 달을 시도를 하다가 포기를 했다"는 식이 되는 것보다는, 일단은 그런 일이 생길 리가 없는 cygwin부터 설치를 해서 유닉스의 맛을 좀 보게 되기를 바랍니다.

 

용어 정리를 위해서, 리눅스와 유닉스와의 관계에 대해서도 한 마디 적는 것이 좋겠군요. 이에 대해서는 상당히 복잡한 이야기가 많지만 최종 결론만 적으면, 리눅스가 오늘날에는 가장 표준의 유닉스입니다. 유닉스는 원래 미국 AT&T 벨 연구소에서 개발된 것으로, http://www.levenez.com/unix/에 보니 실로 엄청난 수의 유닉스들이 있군요. 하긴, 운영체계라는 것이 전산학자들의 중요한 연구 대상 중의 하나이기도 하니... 그리고, MS Windows처럼 유닉스가 아닌 운영체계들도 역시 엄청난 수가 존재합니다. , 이렇게 적고 보니 "무엇이 유닉스인가" 하는 질문에 답을 해야 하는 일이 생기고 말았군요. http://kb.iu.edu/data/agat.html 정도를 한 번 읽어보기 바랍니다. 더 관심이 많은 사람은http://en.wikipedia.org/wiki/Unix도 읽어보기를 바랍니다.

 

국내에서는 매킨토시를 거의 사용을 하질 않으니 별로 중요하지 않은 점이지만, http://kb.iu.edu/data/agat.html의 첫머리에도 있는 것처럼 요즘은 거의 두 번째 정도로 popular한 유닉스인 Mac OS/X 생물정보학 일을 위한 환경으로 다른 나라들에서는 꽤 많이 쓰이는군요.

 

그런데, 진짜로 핵심적인 점이 빠졌군요. 도대체 유닉스가 "생물학자가 생물정보학적인 일하기" 용으로 뭐가 그렇게 좋다는 것인가 하는 점 말입니다. 문제는 이게 설명하기가 쉽지가 않더군요. 물론 할 설명이 없는 것이 아니라, 느낌이 제대로 팍 오도록 설명을 하는 것이 말입니다. , 아예 구체적인 예를 하나 들어봅니다. 이번에 홈 페이지 새로 꾸미면서 어느 디렉터리에 있는 모든 html 파일들에서 intro.html register.html이라고 되어 있는 것을 각기 intro.php register.php로 바꾸어야 할 일이 있었는데, 그때 사용한 유닉스(물론 리눅스상의 명령어가 아래입니다.

 

for i in *.html;

do

  mv $i $i.1;

  sed -e 's/intro\.html/intro\.php/g' -e 's/register\.html/register\.php/g' $i.1 > $i;

  rm -f $i.1;

done

 

저렇게 복잡한 것을 배우기 보다는 그냥 일일이 손으로 타이핑을 쳐서 고치겠다고요? 생물정보학적인 일들에서는 파일이 수백 개가 되는 일이 흔합니다. 어느 쪽이 쉬운가요? 머리가 나쁘면 몸이 고생을 해도 어느 정도가 있지…… ^^; 게다가 고생을 해서라도 되는 일이면 괜찮은데, 아예 불가능하게 됩니다. 파일 수가 한 1000개쯤 되면 몇 주일을 꼬박 해서라도 어찌 해보겠는데, 2만 개쯤 되면 좀 곤란하겠죠? 인내의 한계는 이런 데서 시험을 하는 것이 아닙니다. ^^; 몇 주일이면 위의 유닉스 명령어를 배우고도 남을 시간입니다. 그리고 대부분의 일들은, 요즘은 컴퓨터 속도야 엄청나니 혼자서 돌아가도록 명령어를 잘 만들어주기만 하면 금방 끝날 일들이겠죠.

 

그러니까 유닉스는 이런 종류의 일들을 하기에 딱 맞는 환경입니다. 물론 cygwin에서도 그대로 똑같이 가능합니다. 단지, 같은 컴퓨터라면 리눅스보다 더 느린 속도가 나오고, 그밖에 여러 단점들도 있다는 점이 문제인 것이죠. , 일단은 cygwin으로 시작을 하더라도, 결국에는 리눅스로 옮겨가게 되기를 바랍니다.

 

그리고 좀 더 실질적인 예를 하나 들어봅니다.

 

Bioinformatics: A Practical Guide to the Analysis of Genes and Proteins, Third Edition, Andreas D. Baxevanis, B. F. Francis Ouellette (Editors), 2005, Wiley-Interscience의 제18장이 Cold Spring HarborLincoln Stein이 쓴 것인데, 인터넷에 공개가 되어 있진 않군요. 제목이 "Using Perl to facilitate biological analysis" chapter인데, 이곳의 첫 머리에 있는 내용입니다. 내용은 그대로 빌려오지만, 좀 더 친절하게 풀어서 적어봅니다. (이런 예는 제가 손수 만들 수도 있지만, 지금의 상황이 워낙 특이한 것 같아서 이렇게 "Cold Spring Harbor"라는 권위에 일부러 의존을 합니다. 이렇게라도 해야 꿈쩍이라도 할 것 같다고 생각을 할 수밖에 없는 현 상황이 제가 생각해도 좀 딱하긴 하지만... ^^;)

 

예를 들어 C. elegans 같은 모델 생물을 대상으로 연구를 하고 있다고 합시다. 물론 지금부터 적는 이야기는 모든 모델 생물에 그대로 적용이 됩니다. 우선, WormPep C. elegans genome에 있는 gene들에 대해서 정리를 해놓은 DB입니다. 이 글을 쓰고 있는 현재의 최신 버전인 버전 163의 첫 머리를 아래에 그대로 옮겨봅니다. DBftp://ftp.sanger.ac.uk/pub/wormbase/WS163에 있습니다.

 

>2L52.1 CE32090 WBGene00007063 Zinc finger, C2H2 type status:Partially_confirmed TR:Q9XWB3 protein_id:CAA21776.2
MSMVRNVSNQSEKLEILSCKWVGCLKSTEVFKTVEKLLDHVTADHIPEVIVNDDGSEEVV
CQWDCCEMGASRGNLQKKKEWMENHFKTRHVRKAKIFKCLIEDCPVVKSSSQEIETHLRI
SHPINPKKERLKEFKSSTDHIEPTQANRVWTIVNGEVQWKTPPRVKKKTVIYYDDGPRYV
FPTGCARCNYDSDESELESDEFWSATEMSDNEEVYVNFRGMNCISTGKSASMVPSKRRNW
PKRVKKRLSTQRNNQKTIRPPELNKNNIEIKDMNSNNLEERNREECIQPVSVEKNILHFE
KFKSNQICIVRENNKFREGTRRRRKNSGESEDLKIHENFTEKRRPIRSCKQNISFYEMDG
DIEEFEVFFDTPTKSKKVLLDIYSAKKMPKIEVEDSLVNKFHSKRPSRACRVLGSMEEVP
FDVEIGY
>2RSSE.1 CE32785 WBGene00007064 status:Partially_confirmed TR:Q8I133 protein_id:CAD59137.1
MTVASYSMVLCGSSDDHRYRGRIEKVKFGVPINEAFAHDIPATLLMLLLKVNKDGPAKKD
IWRAPGNQAQVRKLSQVMQHGRLVNIENFTVYTAASVIKKFLSKLPNGIFGRDNEETLFN
SASTGMDIEKQRQVFYRIFGSLPVASQHLLVLLFGTFRVVADSSDGHSNAMNPNAIAISV
APSLFHTCIHDGRTARVEDLQRFKLASNIVCSIICSFGDTKLFPRECYEYYARYTGRTLR
IDENRMFTFHNPSNRRARGEEFSALAAKCAGAYSLAAIHLAEEASPEPTPTTSKPPRGNG
VGRAGSLKQHALTQTTDHPKRSVSIAAKDPYPTDLRTSVSCDF

 

이와 같이 생긴 파일을 fasta format file이라고 합니다. biological sequence data를 기록해 두는 포맷으로 가장 널리 쓰이는 것인데, 사실 너무나 간단한 것입니다. 첫 줄에는 '>'로 시작을 해서 sequenceID 번호부터 시작해서 여러 정보들을 ':' '|'로 구분을 해서 좍 적어주게 됩니다. 둘째 줄부터가 실제 sequence data가 시작이 되는 것이죠. 위의 예에서는 sequence가 두 개인데, 이처럼 여러 개의 fasta 포맷으로 된 sequence들을 하나의 파일에다 좍 연결을 해놓은 것을 concatenated fasta format이라고 부르죠. (이름이 더 거창하군요. ^^;) 그리고, WormPep 163에서는 C. elegans predicted protein의 수가 23,164개이군요. (이 중에서 2206개가 splice variants라서 C. elegans가 가진 gene의 개수와는 일치하지 않습니다. , 이 말이 무슨 소린지 모르는 사람은 분자생물학 공부를 좀 더 열심히 하기 바랍니다. 필요한 일도 물론 아니겠지만, 이런 기초 분자생물학 강의를 이곳에서 하지는 않습니다.) 당연히 이미 다들 알고 있는 점이겠지만, 이처럼 모델 생물의 단백질 전체에 대한 DB는 쉽게 구할 수가 있습니다.

 

RNAi 실험은 요즘 많이들 하고 있죠? 이번에 노벨상도 탔더군요. 이처럼 생물학은 늘 재미있는 것이죠. 언제나 놀라운 발견들이 끊임없이 이루어지니... 그리고 DNA chip 실험은 어떠한가요? 요즘은 샘플만 주면 chip 실험부터 컴퓨터 분석까지 해서 최종적으로 gene list까지 뽑아서 가져다 주는 서비스를 해주는 곳들이 그럭저럭 성업 중이라고 하던데... proteomics에서도 역시 gene list를 얻게 되죠. (, 사실은 단순히 gene list를 뽑아내는 일보다는 훨씬 더 복잡한 방식으로 들여다보는 것이 이러한 방식의 실험들을 더 제대로 활용을 하는 것이 됩니다. 여기에 대해서는 할 이야기가 무척 많은데, 물론 이곳에는 적지 않겠습니다. 이 책은 “omics적인 방식의 연구란 무엇인가”에 대한 책이 아니라, 그냥 “요즘 나오는 데이터를 제대로 활용하려면 이런 컴퓨터 사용 기술을 가져야 한다.”에 대한 책이니 말입니다.)

 

위에서 말한 gene list의 특징이 뭘까요? 물론 가장 일반적인 경우는 “어떤 두 가지 조건에서 발현되는 양의 차이가 큰 정도에 따라 나열을 한 것에서 상위 몇 개”인 식이겠죠. 지금 강조하고자 하는 점은 이것이 “5가 훨씬 넘는다는 점입니다. 물론 대개는 순위가 있는 목록이니, 5등까지만 고르면 5개가 되겠죠. 그런데, DNA chip 실험해놓고서 이렇게 하면 남들이 한심하다고 생각을 한다는 것을 다들 잘 알고 있으니, 울며 겨자 먹기로 50개쯤은 고르게 되는 것이고요. ^^; , 이 부분은 이야기가 너무 복잡해지니 이 정도 적습니다. 하여간, 예전과는 달리 어떤 실험 결과로부터 다수의 gene들이 뭔가를 더 해봐야 하는 대상으로 우리에게 주어지는 일이 흔하게 된 것이죠. 지금 50개를 이처럼 강조하는 이유가 무엇인지 굳이 풀어서 적으면, “세상에 50개도 넘는다니! 그걸 사람 손으로 어떻게 하란 말인가! 말도 안 돼! 나보고 석사만 한 10년 하라는 거야 뭐야?”가 된다는 점 때문입니다. ^^; , 이 리스트에 속한 개개의 gene 하나하나를 대상으로 다시 자세하게 여러 가지 실험을 해보는 것은 흔히 할 수 있는 일은 물론 아닌 것이죠.

 

그렇지만 흔히 할 수 있는 일도 있습니다. 바로 컴퓨터로 이것저것 돌려보는 일입니다. “무슨 소리야? 컴퓨터로도 뭐 하나 제대로 하려면 꼼짝 않고 컴퓨터 앞에 앉아서 마우스 클릭을 얼마나 해대야 하는데. 50개나 하려면 하루에 하나씩 하면 50일은 걸리겠군.”이란 소리를 하는 사람도 물론 있겠군요. , 아주 적절한 비유는 아닌 것 같긴 하지만, 생각이 떠오른 김에 적어봅니다. DNA chip이란 것이 결국 Northern blot을 한꺼번에 몇만 번을 해주는 것이잖아요. Northern blot으로 DNA chip 한 장과 동일한 양의 데이터를 얻기 위해서는 석사 학위를 한 200년쯤 걸려서 하면 되겠죠? ^^; 그러니까, 컴퓨터로 뭘 하는 방법 중에서 딱 DNA chip에 해당하는 방법이 있습니다. 그게 바로 이 책의 내용입니다.

   

그리고는 이런 경우들도 있겠군요. “왜 50개씩이나 되는 gene list 가지고 그러는데? 남들이야 뭐라고 하든말든 5개만 딱 선택해서 하면 되지.“인 경우도 있을 터이고, “저런 실험들을 왜 그렇게 사용하는데? 그냥 내 gene down 또는 up regulation시켰을 때, apoptosis 관련 gene들의 expression이 영향을 받는지에 대해, yes no냐 하는 답을 얻어내는데 잘만 활용하고 있는데, 무슨 얼어 죽을 gene list?”인 경우도 있을 터이고, 심지어는 “나는 무슨 DNA chip이니, proteomics, RNAi, deferential display니 하는 것들은 모조리 혐오하는 사람이야.”도 있겠군요. ^^; , 이러한 온갖 이유들로 말미암아 위에 적은 50(또는 500개나 5000)짜리 gene list problem은 자신과는 무관한 일이라고 합시다. 그럼 이 책을 그만 읽어도 되겠다고요? 그런데 문제는, 남들이 이런 실험들을 해서 그 데이터를 마구 공개를 해놓는다는 점입니다. 그리고 또 문제는, 이렇게 공개를 해놓은 데이터를 나의 경쟁자들이 눈을 부릅뜨고 기다렸다가 새 데이터가 공개되는 족족 다운로드 받아서, 컴퓨터로 분석하는 일을 부지런히 하고 있다는 점에 있는 것이죠. 그리고, 이런 activity가 갈수록 점점 더 강해지고 있다는 것이고요. , 여기에서 “그건 내가 알 바가 아니야.”라는 소리를 하는 사람은 물론 정신이 살짝 이상한 사람일 터이고요. ^^;

 

정리를 해보면 대략 두 가지 정도가 되는군요. 하나는 “나의 gene list를 컴퓨터로 분석을 해보기” 위해서이고, 다른 하나는 “모조리 남들이 만든 데이터들이지만, 이들을 내 연구의 context에서 분석을 해보기" 위해서이군요. 이 두 가지 경우에 모두 이 책의 내용에 해당하는 컴퓨터 사용 기술이 필요하게 됩니다. 조금 군더더기인 소리지만, 예전에는 이런 것이 필요가 없었죠. 그런 실험을 직접 해볼 수도, 남들이 해서 그 데이터를 공개를 해놓은 것도 거의 존재하지 않았으니... 그래서 이 글을 읽고 있는 사람들이 소속되어 있는 생물학계가 바로 이러한 모양새가 되어 있는 것입니다. 하지만 이젠 변화가 시작이 된 것이죠. 선진국들에서 이미 이 변화가 상당히 진행이 되었고, 국내에서는 몇 해쯤 뒤쳐져 있는 것이고요

 

Lincoln Stein의 글에 나온 C. elegans RNAi 실험에 대한 DBhttp://nematoda.bio.nyu.edu/cgi-bin/rnai/index.cgi에 있는 것이로군요. 만든 사람의 이름 중에서 Lincoln Stein이 들어가 있는 것으로 볼 때 거의 확실하겠군요. , 최근에는 update가 안 되고 있는 것으로 보이는군요. 하지만, 기왕 따라 하고 있으니, DB를 그대로 설명에 사용해봅니다. 위의 홈 페이지에서 ”Other Searches:”라고 되어 있는 부분을 찾을 수가 있는지요? 찾았으면 그 다음 줄에 있는 Search Options Menu를 클릭합니다. 그 다음 상단에 나오는 메뉴 중에서 Phenotype Query Builder를 클릭합니다. (아 참, 여기에서 한 마디... 그러니까, 웹 브라우저 상에서 마우스 클릭을 하는 방식도 필요합니다. 일에 따라서는 이게 훨씬 자연스러운 경우도 있죠. 그렇지만, 지금 하고 있는 일은 사실은 그렇지 않은 것입니다. DB가 이런 식으로 공개가 되어 있으니 어쩔 수 없이 이 방식으로 사용을 할 수밖에 없는 것이죠.) 그 다음, 다른 것은 그대로 두고, 가운데 있는 phenotype들이 좍 리스트가 된 첫 선택 상자에서 Slu를 찾아서 선택을 해줍니다. sluggish라는 뜻이죠. , 굼뜨게 되는... (원래 Lincoln Stein의 글에는 neuronal signaling에 영향을 끼치는 gene들로 되어 있는데, 우리는 그냥 이 phenotype을 사용해봅니다.) 그런 다음 Submit query 버튼을 누르면, 그제서야 진짜로 DB에 보낼 질의문이 나옵니다. DB의 바탕이 되는 DBMS(DataBase Management System의 줄인 말로, 예를 들어 지금 제가 지금 쓰고 있는 글 그 자체가 DB라면, Microsoft Word에 해당하는 것입니다. , 지나치게 쉽게 설명을 하고 있나요? ^^;) ACeDB라는 것으로 http://www.acedb.org가 홈 페이지입니다. 객체지향형 DBMS의 일종으로, 이름 그 자체에 아예 C. elegans가 들어가 있는 것인데, 성능(속도)이 영 좀 그래서 별로 안 쓰이고 있죠.

 

query find RNAi Phenotype = *Slu*

 

를 위 DBMS에 보내면 RNAi 테이블에서 이름이 Phenotype인 행에 Slu(이 경우 대소문자 구분은 없습니다.)라는 문자열이 들어가 있는 열만 뽑아주는 것이죠. 테이블, 즉 표는 행과 열로 되어 있다는 것을 모르는 사람은 당연히 없을 터이고요. (, 객체지향형이 무슨 뜻이고, 반대로 이게 뭔지 아는 경우에는 “객체지향형 DMBS에서는 단순히 테이블 형태가 아닐 터인데” 하는 등과 같은 괜히 복잡해지는 이야기는 지금 하지 말도록 합시다. ^^;) 일반적으로 표의 행에는 이름이 붙어있게 되죠? 우리가 만드는 표가 보통 다 그렇잖아요. Phenotype이란 이름이 붙은 행의 내용에 Slu라는 문자열이 들어가 있으면 그런 열을 다 뽑아주는 것이죠. 여기에서 *Slu*라고 앞뒤로 *가 붙어 있는데, 제 생각에는 이것은 오히려 빼주어야 옳을 것 같군요. , slut처럼 우리가 원하는 것이 아닌 단어가 있을 수도 있고, 이 경우에는 Slu가 그 자체가 일종의 공식 용어라는 점도 있죠. 물론 그냥 sluggish라고 길게 적은 경우도 있다면 문제가 될 터인데, 이 경우는 그렇지 않군요. 직접 확인을 해보기 바랍니다. (확인하는 방법은 숙제입니다. ^^;) 그 다음, Submit query 버튼을 누르면, 드디어 굼뜨게 되는 표현형질이 나타나는 84개의 RNAi 실험의 목록이 나옵니다. (, RNAi 실험이 뭔지 모르는 사람이 이 글을 읽고 있으면 어떡하나 하는 걱정이 문득... 어떡하죠? 공부하세요!)

 

그 다음부터가 문제인데요. 일단 당연한 방법은 몸을 혹사하는 것이죠. VDT 증후군에 시달려가면... 음, 원래 잘 만든 서비스라면, 화면에 뜬 것을 여러 가지 포맷으로 사용자의 하드 디스크에 저장할 수 있는 옵션을 제공을 해주어야 하는데... 이게 없는 경우인데, 뭐 여러 가지 방법들이 있습니다. 한 번 소개를 해봅니다.

 

(그나저나, 지금 독자 mailing list 7명이 가입을 했는데, 읽고 있나요? 읽고 있으면 저한테 마구 자극을 팍팍 보내주기를 바랍니다. 그래야 글을 쓰는 속도가 더 빨라질 터이니 말입니다. ^^;)

 

(작성 중...)

  06-10-04
fasta란 이름은 http://www.ebi.ac.uk/fasta33/ 에 있는 sequence database search 프로그램에서 유래를 한 것입니다. 이 프로그램에서 입력 sequence의 포맷으로 사용이 되었기 때문에 붙여진 이름입니다. 워낙 간단명료하고 또 이 정도로도 충분해서 가장 널리 채택이 된 것이죠. 약간 다른 소리지만, fasta를 사실은 fast와 a를 따로 발음을 해야 하는데, 뭐 안 지킨다고 뭐라고 할 종류의 일은 아니로군요. 이 프로그램을 처음 만들었을 때, 워낙 느린 Smith-Waterman alignment보다 빠르게 만들었다고 해서 fast란 단어를 붙였고, 실제로는 프로그램명은 fastn과 fastp였습니다. n는 nucleotide, p는 당연히 protein이죠. 그런데, 새 버전을 내놓으면서 둘을 합쳤고, 이름을 all이란 뜻으로 fasta라고 했던 것입니다. (음, 물론 이런 시시콜콜한 점까지 다 알아야 하는 것은 아니지만, fasta가 워낙 자주 쓰이게 되는 단어이기도 하니...)
Up