무엇인가를 사고 싶어서 인터넷을 열심히 뒤질 때가 있다. 아니, 좀 더 솔직해지자. 무엇인가를 사기 위해 항상 인터넷을 뒤지고 있다고 고백하자. 단지 그 관심 대상이 바뀔 뿐이다. 지난 25년(혹은 그 이상?)을 회상해보니 사진기와 렌즈, 망원경, 기타(악기), synthesizer, 자전거 부품, 오디오 부품과 스피커 등 나의 관심은 정말 다양한 분야를 휩쓸고 지나간 것 같다.
가장 최근까지 열병을 앓게 한 것은 바로 시계였다. 섭마니 째마니 논크로노니 브슬이니 하는 시계 애호가들의 은어에 조금씩 익숙해지면서 나도 이제 '시알못(시계를 알지 못하는 사람)'에서 '시잘알'로 변하고 있는지도 모르겠다. 그나마 다행인 것은 비싼 시계에는 엄두를 내지 못하겠고, 저렴한 오토매틱 시계에 조금씩 관심을 갖고 있다는 것이다. 간혹 고등학생인데 20~50만원짜리 시계를 추천해 달라는 글을 보면 가슴이 답답해진다. 곧 50을 바라보는(앗, 천기 누설이다!) 나도 누리지 못하는 호사를 미성년자가 누리다니!
- 집은 없어도 외제차를 산다.
- 아르바이트로 돈을 모아 300만원짜리 시계를 산다.
확실히 요즘의 가치관은 많이 달라진 것으로 보인다. 내가 이해하지 못한다고 해서 비난할 수는 없는 노릇이다. 그들에게는 그들의 세계(시계?)가 있는 것이니까 말이다.
종종 방문하는 인터넷 상의 시계 포럼을 가 보면, 다소 엉뚱한 질문 글이 가끔 보인다. 바로 '이 시계가 진짜인가요? 아는 (형|아버지|친구)가 주었어요' 하는 것이다. 그런데 정말 자기 상황을 정말 솔직하게 묻는 사람도 있지만, 가짜 시계를 구해서 쓰면서 이것이 얼마나 진짜처럼 보이는지를 떠보는 질문이 더 많은 것으로 생각된다. 최근에는 이런 류의 질문을 올려서 댓글 잔치를 벌인 뒤 나중에 나타나서 '포럼 회원들이 진짜를 가려내는 실력이 얼마나 되는지 테스트하려고 일부러 글을 올렸다'고 실토하는 경우도 보았다. 문제는 이런 고백성 글 안에 'ㅋㅋㅋ'가 붙는다는 것. 이 정도면 실례도 이만저만이 아니고 비아냥과 빈정거림에 다름없다.
또 이야기가 한참 옆길로 샜다. 지금 키보드 앞에 앉은 것은 오늘의 '지름'을 고백하기 위함이다. 싱가포르에 있는 Creation Watches에서 일본 오리엔트사의 저가형 오토매틱 시계를 하나 주문했다. 지난 1월에 구입한 중국제 <롤렉스 서브마리너> 카피 제품은 일종의 탐색전이었다고 보면 되겠다. 나의 호기심을 충족하면서도 가격이 부담스럽지 않은 것을 고르는 지난 한달 반 동안의 과정은 정말 고통스러웠다. 시잘알 선배들에 의하면 '싼 것 자꾸 사지 말고 단 한번에 가라!'는 명언이 있다. 그러나 물건 구입에서 그다지 단호하지 못한 나는 가랑비에 옷 적시는 시도를 자주 하는 편이다. 다이버 시계인가 드레스 워치인가, 시계줄은 가죽 혹은 금속 중에 무엇으로 할 것인가, 직경은 작게 할 것인가 혹은 크게 할 것인가, 기계식인가 혹은 쿼츠인가, 더욱 심각하게는 어느 제조사를 택할 것인가에 관한 가장 근본적인 물음까지. 그런 긴 시간의 고민 끝에 오리엔트 Three Star 라인의 저렴한 제품을 주문하기에 이르렀다. 날짜만 표시되는(아마도 48743 무브먼트 사용) 제품으로서 통줄이 아닌 소위 깡통줄을 사용한 제품인 것이다. 워낙 DHL를 이용한 총알 배달로 유명한 곳이라 금요일쯤이면 물건을 받아볼 수 있지 않을까 싶다.
택배 기사로부터 방금 건네받은 물건의 포장을 풀면서 내용물에 대한 간단한 평가를 하는 동영상이 요즘 유튜브 등에 많이 올라온다. 이것은 현명한 구매 행위에 분명히 도움은 된다. 하지만 '언박싱'이니 '핸즈온'이니 하는 영어 표현은 쓰지 않았으면 좋겠다. 3-4일 후 시계를 받게 되면 모델명 및 사진 공개와 함께 소박한 평을 써 보고자 한다. 아마도 쇼핑몰 사이트를 제외하면 이 오리엔트 모델의 국문 사용기로는 최초가 아닐까?
2017년 2월 28일 화요일
2017년 2월 21일 화요일
점점 진화하는 hybrid genome assembly
융합, 복합, 차세대(창조?) 등등의 단어를 나열하지 않으면 자기의 기술 분야에서 눈에 뜨이기가 점점 어려운 세상이 되었다. 실체는 갖추지도 못한 상태에서 어떤 키워드를 선점하느냐가 중요한 전략으로 여겨지지 않던가?
PacBio의 long read 시퀀싱 기법을 사용하면 SMRT cell 하나에서 만들어지는 데이터만으로 충분히 세균의 유전체를 완성 수준으로 구성하는 것이 가능하다. 그런데 실제 샘플에 따라서 갖가지 사정이 존재하며, 아직까지도 일루미나 데이터가 조력자 이상의 훌륭한 동반자 역할을 하고 있다. 최근에 국내 담수호에서 분리된 남세균의 유전체 시퀀싱을 하면서 지금까지 경험하지 못한 여러 일들을 겪게 되었다. 이 과정을 통해서 배운 것도 많다.
시퀀싱 대상이 된 남세균은 기본적으로 axenic condition이 아니었다. 즉, 여러 세균과 같이 공생하는 일종의 작은 집단을 이룬다. 어떻게 보면 metagenome sequencing과 매우 유사한 상황이었다. MiSeq sequencing을 하여 k-mer abundance에 의한 필터링을 해 보았지만 결과의 개선 정도는 높지 않았다. 반면 PacBio data에 의한 nonhybrid assembly가 비교적 좋은 결과를 내었다. 아마도 preassembly 과정에서 적은 빈도로 존재하는 read가 상당히 제거된 것으로 풀이된다. SMRT analysis, Canu 그리고 Falcon assembly 중에서 Falcon의 결과가 가장 우수하였으므로 이를 대상으로 교정 및 약간의 후처리 작업을 통해서 대여섯개 수준의 서열을 얻어낼 수 있었다. 사용한 후처리 도구는 CLC Genomics Workbench("Join Contigs"), PB-Jelly, 그리고 SMRT analysis의 일부 기능(Quiver & AHA)이다. 마지막으로 Pilon을 사용한 오류 교정도 실시하였다.
De novo assembly에서는 "이 방법만 따르면 돼!"하고 외칠만한 최고의 방법은 존재하지 않는다고 생각한다. 샘플의 상황에 따라(사실상 혼합 배양체 상태인 남세균의 경우도 한 사례이다), 그리고 적용한 sequencing platform에 따라서 각기 다른 방식으로 최선의 결과를 얻을 따름이다. 새로운 소프트웨어가 자꾸 나오는 것도 사용자 입장에서는 별로 반가운 일은 아니다. 관련 자료를 찾다가 작년 여름에 Nucl. Acids Res.에 출판된 "Contiguous and accurate de novo assembly of metazoan genomes with modest long read coverage"라는 논문을 접하게 되었다(링크). Hybrid와 nonhybrid 방식은 sequencing coverage에 따라서 assembly의 완성도가 다르게 나타난다는 것이 요지이며, long read sequencing을 위한 효율적인 DNA 분리 방법도 제시하고 있다는 점이 특징이다. 연구 대상 생명체는 초파리였다. 이 논문에는 다양한 hybrid assembler를 평가한 끝에 DBG2OLC를 선택했다고 하였다. DBG는 de Bruijn graph, OLC은 overlap-layout-consensus를 의미한다. 즉 short read를 이용한 조립법과 전통적인 조립법을 연결하는 가교 역할을 하겠다는 의지를 보이는 작명이 아닌가 싶다.
흔히 hybrid assembler라고 하면 일루미나 등의 NGS(=2세대) read를 error-rich long read(3GS)에 정렬하여 오류를 정정하는 것으로부터 시작하는데, DBG2OLC에서는 NGS 유래 de Bruijn graph를 long read 위에 매핑하는 것이 출발점이다. 즉 read-to-read mapping이 아니라 contig-to-read가 시작점이 된다. 논문의 그림을 무단으로 가져다가 블로그에 실을 수는 없으니 그림 1의 링크만 제시한다.
그러면 염기 수준의 오류 정정은 어느 단계에서 이루어지는가? long read들을 모아서 multiple sequence alignment를 하면서 중첩 정보를 직접 이용하여 염기의 오류가 교정된다고 한다. 이러한 방법을 통하여 기존의 도구에 비해서 실행에 소요되는 시간이 대폭 줄어들어들게 되었다.
지금은 내가 가장 즐겨 사용하는 hybrid assembler인 SPAdes(v3.10.0)으로 남세균 시퀀싱 데이터를 처리해 보는 중이다. 결과가 나오면 검토한 다음 새로운 도구인 DBG2OLC
PacBio의 long read 시퀀싱 기법을 사용하면 SMRT cell 하나에서 만들어지는 데이터만으로 충분히 세균의 유전체를 완성 수준으로 구성하는 것이 가능하다. 그런데 실제 샘플에 따라서 갖가지 사정이 존재하며, 아직까지도 일루미나 데이터가 조력자 이상의 훌륭한 동반자 역할을 하고 있다. 최근에 국내 담수호에서 분리된 남세균의 유전체 시퀀싱을 하면서 지금까지 경험하지 못한 여러 일들을 겪게 되었다. 이 과정을 통해서 배운 것도 많다.
시퀀싱 대상이 된 남세균은 기본적으로 axenic condition이 아니었다. 즉, 여러 세균과 같이 공생하는 일종의 작은 집단을 이룬다. 어떻게 보면 metagenome sequencing과 매우 유사한 상황이었다. MiSeq sequencing을 하여 k-mer abundance에 의한 필터링을 해 보았지만 결과의 개선 정도는 높지 않았다. 반면 PacBio data에 의한 nonhybrid assembly가 비교적 좋은 결과를 내었다. 아마도 preassembly 과정에서 적은 빈도로 존재하는 read가 상당히 제거된 것으로 풀이된다. SMRT analysis, Canu 그리고 Falcon assembly 중에서 Falcon의 결과가 가장 우수하였으므로 이를 대상으로 교정 및 약간의 후처리 작업을 통해서 대여섯개 수준의 서열을 얻어낼 수 있었다. 사용한 후처리 도구는 CLC Genomics Workbench("Join Contigs"), PB-Jelly, 그리고 SMRT analysis의 일부 기능(Quiver & AHA)이다. 마지막으로 Pilon을 사용한 오류 교정도 실시하였다.
De novo assembly에서는 "이 방법만 따르면 돼!"하고 외칠만한 최고의 방법은 존재하지 않는다고 생각한다. 샘플의 상황에 따라(사실상 혼합 배양체 상태인 남세균의 경우도 한 사례이다), 그리고 적용한 sequencing platform에 따라서 각기 다른 방식으로 최선의 결과를 얻을 따름이다. 새로운 소프트웨어가 자꾸 나오는 것도 사용자 입장에서는 별로 반가운 일은 아니다. 관련 자료를 찾다가 작년 여름에 Nucl. Acids Res.에 출판된 "Contiguous and accurate de novo assembly of metazoan genomes with modest long read coverage"라는 논문을 접하게 되었다(링크). Hybrid와 nonhybrid 방식은 sequencing coverage에 따라서 assembly의 완성도가 다르게 나타난다는 것이 요지이며, long read sequencing을 위한 효율적인 DNA 분리 방법도 제시하고 있다는 점이 특징이다. 연구 대상 생명체는 초파리였다. 이 논문에는 다양한 hybrid assembler를 평가한 끝에 DBG2OLC를 선택했다고 하였다. DBG는 de Bruijn graph, OLC은 overlap-layout-consensus를 의미한다. 즉 short read를 이용한 조립법과 전통적인 조립법을 연결하는 가교 역할을 하겠다는 의지를 보이는 작명이 아닌가 싶다.
흔히 hybrid assembler라고 하면 일루미나 등의 NGS(=2세대) read를 error-rich long read(3GS)에 정렬하여 오류를 정정하는 것으로부터 시작하는데, DBG2OLC에서는 NGS 유래 de Bruijn graph를 long read 위에 매핑하는 것이 출발점이다. 즉 read-to-read mapping이 아니라 contig-to-read가 시작점이 된다. 논문의 그림을 무단으로 가져다가 블로그에 실을 수는 없으니 그림 1의 링크만 제시한다.
그러면 염기 수준의 오류 정정은 어느 단계에서 이루어지는가? long read들을 모아서 multiple sequence alignment를 하면서 중첩 정보를 직접 이용하여 염기의 오류가 교정된다고 한다. 이러한 방법을 통하여 기존의 도구에 비해서 실행에 소요되는 시간이 대폭 줄어들어들게 되었다.
지금은 내가 가장 즐겨 사용하는 hybrid assembler인 SPAdes(v3.10.0)으로 남세균 시퀀싱 데이터를 처리해 보는 중이다. 결과가 나오면 검토한 다음 새로운 도구인 DBG2OLC
2017년 2월 14일 화요일
마크다운(markdown) 문서를 파이어폭스로 열기
리눅스에서 종종 프로그램 설치를 하면서 README.md라는 이름의 파일을 종종 접하게 된다. 처음에는 이것이 어떤 성격의 문서인지를 전혀 몰랐었다. vi로 열면 흔히 보는 도움말 텍스트 파일인데 왜 확장자가 .md인 것일까? 조사를 한 결과 마크다운(markdown)이란 문법으로 만들어진 문서라는 것을 알게 되었다. 위키 문서를 작성할 때 쓰는 문법과 마찬가지로 매우 간단하고, html로 전환하기도 쉽다고 한다.
그렇다고 해서 .md 문서를 vi나 gedit, 또는 ooffice --writer로 열어서 보기는 아깝다. 텍스트의 서식이 제대로 나타나지 않는 것은 물론, 하이퍼링크를 클릭하지 못하기 때문이다. 마크다운 전용 뷰어를 설치하여 쓰거나, html로 전환하여 파일로 저장한 뒤 웹 브라우저에서 여는 것이 바람직하다.
리눅스용 마크다운 뷰어를 찾아보았지만 눈에 썩 들어오는 것이 없다. Markdown.pl이라는 markdown to html converter가 있어서 마크다운 문서를 파일로 쓰거나 표준 출력으로 내보내는 것이 가능하다. 그러면 표준 출력으로 나오는 html 코드를 파이어폭스로 파이핑할 수 없을까? 구글링을 해 보았으나 크롬이나 파이어폭스가 이런 처리를 해 준다는 정보는 없다. 다만 browser라는 유틸리티가 표준입력으로 받은 html 코드를 웹브라우저로 띄워주는 역할을 할 수 있다고 한다. browser는 linuxbrew 환경으로 설치하면 된다.
그렇다고 해서 .md 문서를 vi나 gedit, 또는 ooffice --writer로 열어서 보기는 아깝다. 텍스트의 서식이 제대로 나타나지 않는 것은 물론, 하이퍼링크를 클릭하지 못하기 때문이다. 마크다운 전용 뷰어를 설치하여 쓰거나, html로 전환하여 파일로 저장한 뒤 웹 브라우저에서 여는 것이 바람직하다.
리눅스용 마크다운 뷰어를 찾아보았지만 눈에 썩 들어오는 것이 없다. Markdown.pl이라는 markdown to html converter가 있어서 마크다운 문서를 파일로 쓰거나 표준 출력으로 내보내는 것이 가능하다. 그러면 표준 출력으로 나오는 html 코드를 파이어폭스로 파이핑할 수 없을까? 구글링을 해 보았으나 크롬이나 파이어폭스가 이런 처리를 해 준다는 정보는 없다. 다만 browser라는 유틸리티가 표준입력으로 받은 html 코드를 웹브라우저로 띄워주는 역할을 할 수 있다고 한다. browser는 linuxbrew 환경으로 설치하면 된다.
$ brew install browser $ browser Usage: browser pipe html to a browser $ echo '<h1>hi mom!</h1>' | browser $ ron -5 man/rip.5.ron | browser $ Markdown.pl FALCON-integrate/README.md | browser /home/hyjeong/.linuxbrew/bin/browser:22: warning: Insecure world writable dir /usr/local/apps/amos-2.0.8 in PATH, mode 040777
짜잔~! 드디어 파이오폭스에서 문서가 나타난다.
이 과정을 굳이 블로그로 남기는 이유는? 그러지 않으면 내가 Markdown.pl과 browser를 설치했었는지, 사용법은 어떻게 되는지를 기억하지 못하기 때문이다.
2017년 2월 5일 일요일
Blast2GO 4.0.7 설치하기
Blast2GO를 실행할 때마다 나타나는 환영 메시지에 최신 업데이트 소개가 항상 보여서 나는 내 Blast2GO가 항상 자동으로 업데이트되고 있다는 착각에 빠져 있었다. 홈페이지에서 소개한 Enrichment Analysis(Fisher's Exact Test)가 제대로 돌지 않아서 며칠 동안을 고민하다가 노트북 컴퓨터에 Blast2GO basic version 최신본을 설치하여 테스트를 해 보았다. Help 메뉴를 클릭하면 나타나는 버전 정보는 다음과 같다.
바로 어제 집에서 윈도우 64비트용 버전을 다운로드하여 설치하였으니 최신판인 4.0.7이 맞다. 그런데 내가 리눅스에서 설치하여 사용 중인 Pro 버전과는 구성이 매우 다르다. 이게 어떻게 된 일인가? 일단 새로 설치한 Blast2GO를 사용하여 예제 데이터로서 Enrichment Analysis with Blast2GO를 받아다가 돌려보니 아주 훌륭한 분석 결과가 나왔다. 프로그램 결과창에 나타나는 그림을 저장하거나, Enrichment Analysis 결과 전체를 .b2g 파일로 저장하는 것은 Pro 버전에서만 가능하다. Basic 버전에서는 텍스트 파일로 분석 결과를 저장하여 다른 툴을 사용하여 그림을 그려야만 한다.
최신 버전을 둘러보다가 .dat는 legacy format의 project file임을 알게 되었다. 이토록 내가 무심하였다니... 다시 리눅스로 돌아가서 Blast2GO 버전을 확인해 보았다. 그러면 그렇지! 2015년 3월 3년 기한으로 Pro 버전 라이센스를 받아서 설치한 상태의 버전(3.1.3)이 그대로 남아 있었다.
Blast2GO 홈페이지에 접속하여 새 버전을 받아다가 설치하고 라이센스 키를 적용한 뒤 나의 데이터셋을 적용해 보았다. 아주 정상적인 결과가 나왔다. CLC Genomics Workbench에서 hypergeometric test를 하려면 annotation file을 별도로 준비해야 하고, 분석 결과를 그림으로 제공하지도 않는다. 어차피 GO annotation을 blas2GO 환경에서 해야 하니 이 도구 안에서 enrichment test까지도 실시하는 것이 바람직할 것이다.
바로 어제 집에서 윈도우 64비트용 버전을 다운로드하여 설치하였으니 최신판인 4.0.7이 맞다. 그런데 내가 리눅스에서 설치하여 사용 중인 Pro 버전과는 구성이 매우 다르다. 이게 어떻게 된 일인가? 일단 새로 설치한 Blast2GO를 사용하여 예제 데이터로서 Enrichment Analysis with Blast2GO를 받아다가 돌려보니 아주 훌륭한 분석 결과가 나왔다. 프로그램 결과창에 나타나는 그림을 저장하거나, Enrichment Analysis 결과 전체를 .b2g 파일로 저장하는 것은 Pro 버전에서만 가능하다. Basic 버전에서는 텍스트 파일로 분석 결과를 저장하여 다른 툴을 사용하여 그림을 그려야만 한다.
최신 버전을 둘러보다가 .dat는 legacy format의 project file임을 알게 되었다. 이토록 내가 무심하였다니... 다시 리눅스로 돌아가서 Blast2GO 버전을 확인해 보았다. 그러면 그렇지! 2015년 3월 3년 기한으로 Pro 버전 라이센스를 받아서 설치한 상태의 버전(3.1.3)이 그대로 남아 있었다.
Blast2GO 홈페이지에 접속하여 새 버전을 받아다가 설치하고 라이센스 키를 적용한 뒤 나의 데이터셋을 적용해 보았다. 아주 정상적인 결과가 나왔다. CLC Genomics Workbench에서 hypergeometric test를 하려면 annotation file을 별도로 준비해야 하고, 분석 결과를 그림으로 제공하지도 않는다. 어차피 GO annotation을 blas2GO 환경에서 해야 하니 이 도구 안에서 enrichment test까지도 실시하는 것이 바람직할 것이다.
2017년 2월 3일 금요일
clusterProfiler를 사용한 KEGG enrichment analysis
전통적인 microarray 실험이나 RNA-seq data 분석을 통해서 얻어지는 가장 중요한 중간 자료는 차등발현유전자(DEG, differentially expressed gene)이다. 가령 대장균 배양체에 열을 갑자기 가한 뒤 발현된 유전자를 찾아서 그 기능을 알아보면 heatshock protein gene이 많은 비율을 차지할 것이다. 그런데 여기에서 중요한 것은 대장균이 원래 갖고 있는 유전자 중 heatshock 관련 유전자의 수 자체가 얼마인지를 아는 것이다. 고등학교 시절에 배운 통계와 확률 수준에서 이야기한다면, 흰 공과 검은 공이 각각 50개씩 섞인 주머니에서 5개의 공을 꺼냈는데 흰 공이 3개, 검은 공이 2개 나왔다면 이것이 정말 무작위로 꺼낸 것인지 아니면 흰 공이 편향되게 많이 나온 것인지를 결정해야 하는 문제와 비슷한 것이다. 즉 초기하분포(hypergeometric distribution)의 영역이 된다.
물론 내가 아주 정확한 예를 든 것은 아니다. 모집단과 샘플의 크기, 그리고 복원 추출이냐 아니냐 등의 문제를 언급하지 않았기 때문이다. 일단 대충 넘어가도록 하자^^
다시 (gen)omics의 영역으로 넘어오자. 연구 대상이 되는 생명체의 전체 유전자에 대한 functional classification이 아주 잘 되어있는 모델 생명체는 이런 분석을 하기에 매우 적합하다. 단지 gene ID만 있으면 DEG set에 어떤 기능이 특출나게 더 존재하는지를 알려주는 도구가 많이 있기 때문이다. 여기서는 대조군에 대해서 발현량이 더 많거나 적은지 자체가 중요하지 않다. 오직 '차이'가 있는 유전자 전체를 뭉뜽그려서 하는 이야기이다.
그런데 세균 유전체를 다루는 나 같은 사람에게는 이 분석 작업이 오히려 불편하다. 전체 gene set에 대한 functional classification을 스스로 해결해야 하기 때문이다. Blast2GO가 이런 용도로는 매우 편리하다. 그리고 일단 각 유전자에 대한 GO term이 확정되면, Blast2GO(How to perform a gene set enrichment analysis with Blast2GO 링크) 혹은 CLC Genomics Workbench에서 DEG set이 더 많이 갖고 있는 기능들에 대한 통계적 분석을 할 수 있다.
오늘 발견한 R package는 clusterProfiler라는 것이다. 잘 알려진 모델 생명체가 아니더라도 KEGG에 등록된 유전체라면 functional enrichment analysis가 가능하게 만드는 패키지이다. 참조한 사례는 R-Bloggers.com에 패키지 저자들이 올린 포스팅이다.
KEGG enrichment analysis with latest online data using clusterProfiler
업무용 컴퓨터에 설치된 기존 R 버전(3.1.2)에서는 지원이 되지 않아서 최신 버전(3.3.2)를 깔고 DOSE와 clusterProfiler 패키지를 설치하여 사용하였다. 너무 오랫만에 R을 쓰려니 텍스트 파일에 수록된 gene list를 scan() 함수를 입력하는 것도 힘들다. 입력하려는 데이터가 숫자가 아니라고 불평을 하는 것 아닌가? 해결책은 다음과 같았다.
물론 내가 아주 정확한 예를 든 것은 아니다. 모집단과 샘플의 크기, 그리고 복원 추출이냐 아니냐 등의 문제를 언급하지 않았기 때문이다. 일단 대충 넘어가도록 하자^^
다시 (gen)omics의 영역으로 넘어오자. 연구 대상이 되는 생명체의 전체 유전자에 대한 functional classification이 아주 잘 되어있는 모델 생명체는 이런 분석을 하기에 매우 적합하다. 단지 gene ID만 있으면 DEG set에 어떤 기능이 특출나게 더 존재하는지를 알려주는 도구가 많이 있기 때문이다. 여기서는 대조군에 대해서 발현량이 더 많거나 적은지 자체가 중요하지 않다. 오직 '차이'가 있는 유전자 전체를 뭉뜽그려서 하는 이야기이다.
그런데 세균 유전체를 다루는 나 같은 사람에게는 이 분석 작업이 오히려 불편하다. 전체 gene set에 대한 functional classification을 스스로 해결해야 하기 때문이다. Blast2GO가 이런 용도로는 매우 편리하다. 그리고 일단 각 유전자에 대한 GO term이 확정되면, Blast2GO(How to perform a gene set enrichment analysis with Blast2GO 링크) 혹은 CLC Genomics Workbench에서 DEG set이 더 많이 갖고 있는 기능들에 대한 통계적 분석을 할 수 있다.
오늘 발견한 R package는 clusterProfiler라는 것이다. 잘 알려진 모델 생명체가 아니더라도 KEGG에 등록된 유전체라면 functional enrichment analysis가 가능하게 만드는 패키지이다. 참조한 사례는 R-Bloggers.com에 패키지 저자들이 올린 포스팅이다.
KEGG enrichment analysis with latest online data using clusterProfiler
업무용 컴퓨터에 설치된 기존 R 버전(3.1.2)에서는 지원이 되지 않아서 최신 버전(3.3.2)를 깔고 DOSE와 clusterProfiler 패키지를 설치하여 사용하였다. 너무 오랫만에 R을 쓰려니 텍스트 파일에 수록된 gene list를 scan() 함수를 입력하는 것도 힘들다. 입력하려는 데이터가 숫자가 아니라고 불평을 하는 것 아닌가? 해결책은 다음과 같았다.
> gene = scan("gene_list.txt", what="string")
나오는 결과는 대충 다음과 같다.
패키지의 저자인 Guangchuang Yu와 Li-Gen Wang에게 감사를! 남은 숙제는 갖가지 기능으로 장식된 Blast2GO Pro 최신 버전을 더욱 알뜰하게 활용하는 것이다.
내 오토매틱 시계의 작동 시간은 얼마나 될까?
태엽을 동력으로 이용하는 오토매틱 손목시계는 착용 중 자연스런 손의 움직임에 의해 내부의 로터가 돌면서 스스로 태엽이 감긴다. 어떤 시계는 용두를 돌려서 태엽을 감을 수 있게 되어 있고(manual winding이라고 한다), 또 어떤 것은 오직 시간과 날짜/요일을 맞추는 용도로만 용두를 쓸 수 있게 만들어져 있다. 후자의 경우는 움직임이 매우 적은 사람에게는 불편을 초래할 것이다. 로터가 어느 한쪽으로만 돌아야만 태엽이 감기는 시계도 있고, 양방향 전부 가능한 시계도 있다.
생에 최초의 오토매틱 시계를 구입한지 약 3주가 지났다. 하루 종일 차고 퇴근하여 풀어 놓으면 그 다음날 아침까지 제대로 작동한다. 그러면 또 차고 나가면 태엽이 감기고... 시계를 하나만 쓰는 사람에게는 별 문제가 없다. 물론 주말이라는 변수는 있다. 그런데 하루쯤 다른 시계를 차고 나가면 어떻게 될까? 예를 들어 월요일에는 오토매틱 시계를 차고 근무를 하고, 화요일에는 이를 풀어놓고 다른 시계를 착용하였다고 가정하자. 나의 경우는 수요일 새벽에 시계가 멈춘 것을 발견하였다. 즉 월요일 저녁부터 그대로 놓아 둔 오토매틱 시계가 이틀 후 새벽 3-5시까지 작동했다는 뜻이다.
월요일 저녁에 시계를 손목에서 풀 때 태엽이 완전히 감긴 상태는 아닐 것이다. 대충 계산하면 시계 착용을 멈춘 뒤 약 30여 시간이 흐른 뒤 동작을 멈춘 셈이다. 고급 시계에는 남은 동력 상태를 알려주는 power reserve indicator가 장착된 것도 있다. 무브먼트마다 다르겠지만 보통 완전히 감긴 상태에서 35~40시간 정도를 작동한다고 한다.
오늘은 다른 실험을 해 보았다. 완전히 멈춘 시계를 손에 쥐고 맷돌을 돌리듯 시계 방향으로 30회 돌린 뒤 얼마나 작동하는지를 체크한 것이다. 약 한 시간 23분 가량 작동하였다. 만약 꼼짝도 하지 않고 책을 읽거나, 컴퓨터 작업을 하거나 - 오른손은 마우스 작동을 위해 비교적 먼 거리를 움직이지만 왼손은 그럴 기회가 없다 - 혹은 차량으로 이동을 하는 중이라면 오토매틱 시계로서는 동력을 충전할 기회가 없는 셈이다. 다행히 내 시계는 용두를 돌려서 태엽을 감는 것이 가능하다. 그런데 이것이 시계에 무리를 준다는 의견도 많다. 공급처에서 보낸 설명서에는 10회 이상으로만 감는 것이 바람직하다고 하였다.
완전 기계식 시게는 태엽이 감기면서 용두가 잘 돌아가지 않는 것을 느끼게 된다. 이를 넘어서 돌리면 태엽이 파손된다. 그런데 manual winding이 가능한 오토매틱 시계도 그러한가? 다 감긴 후에는 용두가 헛돌게 만들어진 보호 메카니즘이 모든 오토매틱 시계에 채용된 것인지 혹은 일부의 고급 제품에만 채용된 것인지를 나는 알지 못한다.
지금 사용 중인 초저가 오토매틱 시계는 어쩌다보니 매뉴얼 와인딩이 되는 제품이지만, 두번째의 오토매틱 시계(이것을 노리고 있는 것은 사치일지도 모른다!)로 눈여겨보는 역시 저가의 시계들은 매뉴얼 와인딩을 허용하지 않는 것이 대부분이다. 그러니 내 생활 습관이 오토매틱 시계를 허용하지 않는 매우 정적인 것임을 솔직하게 시인하고 더 이상의 오토매틱 시계에 대한 관심을 갖지 않는 것이 현명할지도 모른다. 첫 시계를 저가품으로(말하자면 싸구려 제품) 구입한 것도 이러한 초기 탐색 목적으로서 지나친 비용을 투자하지 않기 위함이었다. 많은 경험자들은 찔끔찔끔 싼 거 여러개 사지 말고 한방에 가는 것이 정답이라고 하지만 말이다.
생에 최초의 오토매틱 시계를 구입한지 약 3주가 지났다. 하루 종일 차고 퇴근하여 풀어 놓으면 그 다음날 아침까지 제대로 작동한다. 그러면 또 차고 나가면 태엽이 감기고... 시계를 하나만 쓰는 사람에게는 별 문제가 없다. 물론 주말이라는 변수는 있다. 그런데 하루쯤 다른 시계를 차고 나가면 어떻게 될까? 예를 들어 월요일에는 오토매틱 시계를 차고 근무를 하고, 화요일에는 이를 풀어놓고 다른 시계를 착용하였다고 가정하자. 나의 경우는 수요일 새벽에 시계가 멈춘 것을 발견하였다. 즉 월요일 저녁부터 그대로 놓아 둔 오토매틱 시계가 이틀 후 새벽 3-5시까지 작동했다는 뜻이다.
월요일 저녁에 시계를 손목에서 풀 때 태엽이 완전히 감긴 상태는 아닐 것이다. 대충 계산하면 시계 착용을 멈춘 뒤 약 30여 시간이 흐른 뒤 동작을 멈춘 셈이다. 고급 시계에는 남은 동력 상태를 알려주는 power reserve indicator가 장착된 것도 있다. 무브먼트마다 다르겠지만 보통 완전히 감긴 상태에서 35~40시간 정도를 작동한다고 한다.
오늘은 다른 실험을 해 보았다. 완전히 멈춘 시계를 손에 쥐고 맷돌을 돌리듯 시계 방향으로 30회 돌린 뒤 얼마나 작동하는지를 체크한 것이다. 약 한 시간 23분 가량 작동하였다. 만약 꼼짝도 하지 않고 책을 읽거나, 컴퓨터 작업을 하거나 - 오른손은 마우스 작동을 위해 비교적 먼 거리를 움직이지만 왼손은 그럴 기회가 없다 - 혹은 차량으로 이동을 하는 중이라면 오토매틱 시계로서는 동력을 충전할 기회가 없는 셈이다. 다행히 내 시계는 용두를 돌려서 태엽을 감는 것이 가능하다. 그런데 이것이 시계에 무리를 준다는 의견도 많다. 공급처에서 보낸 설명서에는 10회 이상으로만 감는 것이 바람직하다고 하였다.
완전 기계식 시게는 태엽이 감기면서 용두가 잘 돌아가지 않는 것을 느끼게 된다. 이를 넘어서 돌리면 태엽이 파손된다. 그런데 manual winding이 가능한 오토매틱 시계도 그러한가? 다 감긴 후에는 용두가 헛돌게 만들어진 보호 메카니즘이 모든 오토매틱 시계에 채용된 것인지 혹은 일부의 고급 제품에만 채용된 것인지를 나는 알지 못한다.
지금 사용 중인 초저가 오토매틱 시계는 어쩌다보니 매뉴얼 와인딩이 되는 제품이지만, 두번째의 오토매틱 시계(이것을 노리고 있는 것은 사치일지도 모른다!)로 눈여겨보는 역시 저가의 시계들은 매뉴얼 와인딩을 허용하지 않는 것이 대부분이다. 그러니 내 생활 습관이 오토매틱 시계를 허용하지 않는 매우 정적인 것임을 솔직하게 시인하고 더 이상의 오토매틱 시계에 대한 관심을 갖지 않는 것이 현명할지도 모른다. 첫 시계를 저가품으로(말하자면 싸구려 제품) 구입한 것도 이러한 초기 탐색 목적으로서 지나친 비용을 투자하지 않기 위함이었다. 많은 경험자들은 찔끔찔끔 싼 거 여러개 사지 말고 한방에 가는 것이 정답이라고 하지만 말이다.
수동 감기를 하지 않은 날, 아침에 맞추었던 시계가 오후에 한 시간 혹은 그 이상 늦게 가는 것을 발견하기도 하였다. 아마 태엽이 다 풀려서 멈추었다가 손목 움직임에 의해 다시 돌아가고 있는 것이었는지도... 이렇게 불편한 것이 오토매틱 시계의 속성이지만, 사람과 기계 사이의 매우 밀접한 상호작용에 의해서 스스로 작동된다는 것이 매력으로 느껴진다. 시원한 푸른색 다이얼과 반짝거리는 동전 테두리 모양 베젤도 마음에 든다. 그래서 소위 '다이버 워치' 디자인이 오랜동안 사랑을 받는가 보다.
타이맥스 전자시계를 제외하면 이미 나의 손목시게는 네 개이다. 아들에게 잠시 넘긴 포체 제품까지 포함하면 다섯 개. 만약 시계를 하나 더 들이면 이들에게 돌아갈 관심은 당연히 줄어들 것이다. 아직 결정을 내리지 못하겠다.
피드 구독하기:
글 (Atom)