2017년 9월 15일 금요일

Gene map 혹은 genome map 그리기

예전에는 미생물 유전체 해독 연구 논문에 원형으로 멋지게 그린 유전체 지도를 그림으로 싣는 일이 많았다. 따지고 보면 이러한 그림 자체가 제공하는 정보는 그다지 많지가 않다. 각 strand에 따른 유전자 분포, %GC 및 GC skew 등의 global characteristic을 제외하면 말이다. 그렇다고 해서 모든 유전자의 명칭이나 기능 정보를 달아버리면 어떻게 될까? 다음 그림처럼 말이다. 이런 유형의 그림을 그리려면 절제의 미덕이 필요하며, 핵심적인 메시지만을 전달하려는 노력이 있어야 한다. 과거에 이런 그림을 논문에 실었던 것은 "이렇게 멋지고 수고스러운 일을 우리가 해냈다!"라고 자랑하려는 의도가 더 크지 않았었나 싶다.


이 그림은 잘 알려진 circular genome viewer인 CGView로 그린 예제이다. Interactive genome viewer로 더욱 발전된 프로그램인 GView도 있다. 위 그림에서는 너무 많은 정보를 담고 있어서 오히려 가치가 떨어지지만, CGView의 매우 중요한 특징 하나를 보여주고 있다. 즉 아무리 많은 라벨을 달아도 서로 겹치지 않게 알아서 잘 배치한다는 것이다.

엽록체나 미토콘드리아와 같은 세포소기관의 유전체 지도를 그리는 것은 아직도 꽤 중요하다. 왜냐하면 식물의 진화를 연구하는데 아직도 중요한 재료일뿐만 아니라 그림 하나로 표현해도 무리가 없을 정도의 정보량을 갖고 있기 떄문이다. 요즘 논문 작업을 하면서 감염성 세균의 항생제 내성 플라스미드의 유전체 지도를 그릴 일이 생겼다. CGView를 쓸까 하다가 customization을 하기가 성가셔서 다른 도구를 찾아보았다. 2008년에 논문으로 공개된 GenomeVx가 꽤 쓸만하다는 것을 알게 되었다. 흥미롭게도 이 도구는 아일랜드에 위치한 더블린 대학의 Ken Wolfe 연구실에서 개발한 것이다. Wolfe는 효모 유전체의 전문가로서 Yeast Gene Order Browser(YGOB)를 개발한 사람이기도 하다. 효모 유전체의 진화에서 내가 생각하는 가장 큰 매력적인 이벤트는 바로 whole-genome duplication(WGD)인데, Wolfe가 바로 이 분야의 전문가이다. 1997년에 Nature에 실렸던 논문 "Molecular evidence for an ancient duplication of the entire yeast genome"의 제1저자가 바로 Wolfe이다. 좀 오래된 논문이지만 이 주제에 흥미가 있다면 Yeast genome evolution - the origin of species(Yeast 2017; PDF)를 읽어보자.

GenomVx로 그림을 그려냈으나 몇 가지 문제점이 보인다. label이 없으면 유전자가 아예 그려지지 않는다는 것, 그리고 label이 서로 겹치는 문제는 해결이 안된다는 것이다. 그리고 설명과는 달리 '-'는 사라지고 만다. GenomeVx 논문의 초록 마지막에는 아예 이런 글귀가 나온다.

Output is in the Adobe Portable Document Format (PDF) and can be edited by programs such as Adobe Illustrator.

나한테는 Illustrator가 없지만, ImageMagic으로 테스트를 해 보니 편집이 가능한 것으로 보인다.  장기적으로는 GView나 Circos를 익혀서 쓰는 것이 바람직할 것이다. 공교롭게도 GView와 Circos 모두 캐나다에서 개발된 것이다. CGView 패밀리 프로그램(CGView, CCT, 및 GView) 전체에 대한 논문은 Briefings in Bioinformatics 20017년 논문을 참고하라. 간단하게 그림을 그리고 싶다면 Circleator도 좋다.

다음으로는 genome segment를 서로 비교한 그림을 표현하는 방법을 알아보자. 유전자가 몇 개 포함되지 않는 짧은 영역에 대한 것이라면 파워포인트로 거리와 크기에 대한 비례를 무시하고('not drawn to scale'이라고 변명하면 되니까) 그리면 되지만, 그릴 영역이 20 kb쯤 되면 여간 골치아픈 것이 아니다. 파워포인트의 가장 큰 단점은 전체적인 맥락에서 그림을 바꾸는 것이 불가능하다는 것이다. 예들 들어 어떤 거대 플라스미드의 120-150 kb 영역을 그리기로 했다가 마음이 바뀌어서 뒷쪽으로 10 kb만 더 포함시키기로 했다면? 그야말로 '멘붕'에 직면하는 것이다.

이번에 논문 작업을 하면서 크기가 100~300 kb에 이르는 항생제 내성 플라스미드 3 개의 특정 영역을 서로 비교하는 그림을 그리게 되었다. 2014년에 클로렐라 색소체 및 미토콘드리아 유전체 논문(링크; 그림 2)에 포함된 그림을 그리면서 genoPlotR 패키지를 썼던 일이 떠올랐다.

'사용법은 다 잊어버렸는데, 이것을 다시 익혀서 그려야 하나?'

다시 설명서를 탐독해 가면서 하루를 꼬박 투자하였다. 입력물은 GenBank 파일 3 개이지만, 그것이 전부가 아니다. 유전자의 성격에 맞추어 색을 입히고, 그림에 나타낼 라벨을 결정하는 일(Resfinder 분석 결과가 큰 힘이 되었다)은 사실상 수작업이었다. GenBank 파일을 genoPlotR에서 불러들인 뒤 테이블 형태로 출력하여 엑셀에서 편집을 한 뒤, 특정 컬럼을 복사하여 별도의 텍스트 파일로 저장하여 다시 R에서 data = scan(file="name.txt", what="character")로 입력하여 기존의 dna_seg 및 annotation 오브젝트의 특정 변수에 치환하는 지난한 작업을 거쳐서 최종 결과물을 만들어 내었다.


논문 작성에 참여하는 것은 우연히 이루어진 결정이지만, 이를 위해서 상당히 고급 수준의 지식을 얻게 되는 일이 많다. 성가시다 생각하지 말고 늘 참여하도록 애쓰자.


나토 밴드(혹은 나토 스트랩) 개조하기

나토(NATO), 즉 북대서양 조약기구라는 이름이 붙은 시계줄은 직물로 짜여진 것으로서 5개 혹은 3개의 금속 고리가 달린 구조이다. 보통은 NATO 회원국의 국기를 연상하게 하는 줄무늬가 들어있는 것이 많다. 3줄이나 5줄이 흔하고 단색 구성도 있다. 나토밴드는 손목시계를 캐쥬얼하게 차고 싶을때 많이 응용하는 아이템이다. 원래는 나토의 군수품으로 공식 제공되는 시계줄로서 G10이라는 번호로 불렸으나 지금은 누구나 쉽게 살 수 있는 물건이 되었다. 간혹 줄루밴드라고도 불리는데, 이는 상품명이라고 한다. 나토밴드와 줄루밴드의 차이점, 그리고 시계에 끼우는 방법은 링크를 참조하자.

이미지 출처: http://blog.naver.com/playkelburn/80182848379
연초에 기계식 시계에 대한 관심이 생기면서 구입했던 롤렉스 서브마리너 디자인의 저가형 시계에 언젠가는 끼워볼 생각으로 짙은 파랑색 나토밴드를 구입한 일이 있었다. 실제로 끼워보니 시계 본체 밑으로 줄이 두 겹이나 지나가게 되어 항상 손목 위에 시계가 붕 뜨는 느낌이 들었다. 게다가 직물 자체가 얇아서 헐거워지지 않게 꽉 조이면 마치 고무줄을 손목에 두른듯한 느낌이랄까? 불편한 느낌을 지울 수가 없었다.

그래서 한 겹을 잘라내어 쓰기로 하였다. 아래 사진에서 노랑색 타원으로 표시한 부분이 가위로 자르고 난 뒤의 모습이다. 라이터로 자른 면을 지져서 올이 풀어지지 않게 마무리하였다. 여분의 밴드와 두 개의 링은 이제 제거된 상태이다. 


이렇게 개조를 하고 팔목에 두르니 한결 편안하게 밀착이 되었다. 뒷면의 시스루 백을 가려버리는 것은 어쩔 도리가 없다.

원래 금속제 밴드를 쓰도록 한 손목시계에 가죽줄을 달면 시계 본체와 줄 사이에 공간이 생겨서 썩 보기에 좋지는 않다. 그러나 나토밴드를 끼우면 시계 뒷면을 통과하여 지나가므로 빈 틈이 가려진다. 

나토밴드는 나름대로 응용 범위가 넓은 아이템이다. 다만 어느 정도 두께가 되는 좋은 재료로 된 것을 고를 것, 그리고 시계와 잘 어울리는 것을 선택하는 것이 관건이다. 모든 시계에 나토밴드가 다 어울리는 것도 아니고, 시계의 크기(직경)와 두께도 감안해서 골라야 할 것이다.

2017년 9월 11일 월요일

드디어 Synology NAS DS1512+의 HDD 교체 작업을 시작하다

지난 4월달부터 계획한 NAS의 HDD 교체 작업을 9월 중순이 되어서 본격적으로 진행하고 있으니 나의 게으름도 참으로 대단한 수준이다. 구입해 놓은 6TB WD HDD가 DS1512+에서 인식 가능하다는 것을 먼저 확인한 다음 6월말부터 조금씩 rsync 백업을 해 왔다. 네트워크를 통해서 다른 건물의 서버실에 있는 Dell DAS(PowerVault MD1200)으로 파일을 복사하느라 하루에 1 테라바이트를 옮기는 것도 쉽지 않았다.

2013년 2월부터 사용한 NAS의 HDD는 아직 특별한 문제는 없다. 그러나 저장 용량을 늘리기 위해 5개의 드라이브를 전부 새것으로 교체하기로 한 것이다. 작업을 편하게 하기 위해 NAS를 사무실로 들고와서 먼지를 털어내고 Replace Drives to Expand Storage Capacity 지침서에 나온 그대로 작업을 개시하였다. 원래는 디스크 드라이브 5개를 한꺼번에 새것으로 교체한 뒤 새제품을 설정하듯이 작업을 할 생각이었는데, RAID의 기능을 이용하여 하나씩 드라이브를 교체하면 백업 파일을 다시 설치할 필요없이 데이터를 그대로 유지할 수 있는 것이다.

먼저 기존의 드라이브를 빼낸다. RAID 유형은 Synology Hybrid RAID(SHR)이었다.


4년 넘게 사용하던 HDD가 3테라바이트 제품이라고 착각을 했었다. 실제로 꺼내어서 확인하니 4테라바이트 용량이였다. DiskStation 제어판에서도 각 볼륨은 3.64 TB로 나타났다. 쓰던 HDD(왼쪽)와 새 HDD(오른쪽)를 같이 놓고 기념촬영.


전원을 넣으면 평소보다는 한참 시간이 걸려 부팅이 되면서 3연속 비프음이 계속 울린다. 웹으로 DiskStation 제어판을 연결하면 1번 볼륨에 문제가 있다는 메시지가 나온다. '수리' 버튼을 클릭하면 알아서 재정비를 한다. 새 디스크는 5.46 TB로 표시되었다. 이렇게 간단한 작업이라면 백업을 하느라 기다리지 말고 그냥 교체를 할 것을 그랬나... 하는 안이한 생각도 든다. 그래도 백업은 기본이 아니겠는가? 


그저 수정이 완료되도록 느긋하게 기다리면 된다. 하나의 HDD에 대한 수정 작업에 거의 하루는 걸릴 것 같다. 나머지 4개의 드라이브도 같은 방법으로 순차적으로 작업하면 된다. 이번 한 주 동안은 사무실 테이블을 다음과 같이 너저분한 상태로 두어야만 한다.




2017년 9월 8일 금요일

설문조사 피로증 - 이것 역시 그림자 노동이다

늘 네트워크에 연결된 현대 생활 속에서 본인의 의사와 관계없이 부딛히는 것이 온라인을 통한 설문조사이다. 직장의 인트라넷을 열면 수시로 설문조사서가 뜨고, 이메일로도 설문조사 요청을 종종 받는다. 지난주에는 이메일 메시지에 포함된 링크를 클릭했더니 연결이 되지 않는 일이 있었다. 웹으로 구현한 설문조사 페이지가 아주 친절하게도 국가정보원 보안지침에 저촉되는 사이트 목록에 있는 모양이다. 분명히 연구개발 및 국가적 정책에 관련한 설문조사인데도 그렇다.



이메일로만 요청을 해 오면 그나마 매우 양호한 케이스이다. 안하면 그만이니까. 그런데 무슨 리서치 연구소라는 곳에서 먼저 전문가 조사를 한다면서 먼저 전화를 걸어오는 경우가 있다. 수화기 너머로는 와글와글 목소리가 들린다. 아마도 상담원들이 설문조사에 협조를 요청하는 전화를 거는 일종의 텔레마케팅센터와 같은 환경인 것으로 느껴진다. 일단 수락을 하고 이메일로 설문조사 사이트에 대한 링크가 있는 메시지를 받았다.

클릭을 해 보았다. 문항의 수가 많기도 하다! 그리고 꽤 많은 생각을 요하는 것들이다. 체크를 해 나가다가 인내심에 바닥이 나기 시작한다. 생각보다 꽤 어렵다. 과연 성의있게 답을 작성하는 사람이 얼마나 될까? 분명히 앞뒤가 맞지않게 답을 작성하는 사람도 있을텐데? 이런 것에 대해서 조사를 해 본 일이 있을까?

조금 전 또 전화를 받았다. 답변을 하지 않은 문항이 있다고. '체크를 하지 않으면 다음으로 진행이 안되어야 하는데, 어떻게 하신거죠? 그냥 다음으로 넘어가게 되던가요?' 뭐 이런 정도의 질문을 나에게 한다. 그걸 내가 어찌 하는가? 난 웹 양식에 보이는 그대로 답변을 클릭하고 맨 마지막에 완료가 되었다는 메시지를 보았을 뿐인데. 약간 짜증이 나려고 했다.

누락된 답변에 대한 설문을 다시 받겠다고 한다. 어떻게? 설문조사용 웹사이트를 나 하나를 위해서 바꾸겠다는 뜻인가? 잠시 뒤에 이메일을 받았다. HWP로 만들어진 설문지 파일이었는데 답변이 하나도 되지 않은 원본이 왔다. 이런! 새로 답변을 하는 것도 어려운 일이지만 지난번에 작성한 답변과 일치하라는 보장이 어디 있단 말인가. 이걸 해야하나 말아야하나 고민을 하는 중에 다시 이메일이 왔다. 내가 이미 답변을 한 것(으로 생각되는)을 제외한 나머지 문항만이 담긴 파일이다. 아, 나와 통화를 했던 상담사가 이전 답변결과를 보고 수작업으로 한글 파일을 편집한 것이 틀림없다. 차라리 설문조사에 응한 사람이 하나 줄어든 것으로 여기고 그냥 폐기하고 말지 이렇게까지 수고를 들여야 하다니. 그만큼 답변을 한 사람이 적다는 뜻도 될 것이다. 답변서를 마무리해서 이메일로 보냈다.

간혹 설문지를 보면 조사에 응하는 사람의 입장으로서 어쩌면 이렇게 비논리적으로 만들었는지 한숨을 쉬게 하는 것들이 있다. 원하는 결론을 내리기 위해 유도하는 듯한 설문지가 있기도 하다. 아마 조사원들은 낮은 응답률에 많은 고생을 할 것이다. 그리고 이 일도 일종의 감정노동이니 나름대로의 고충이 있을 것이다. 모르는 사람에게 일일이 전화를 해서 어떤 일을 해 달라고 유도하는 것이 얼마나 힘든 일인가? 진정한 판매원은 판매하고자하는 물건에 대해서 나름대로 공부를 하겠지만, 설문조사원은 이 설문조사의 의미에 대해서 별로 사전에 교육을 받지 않는 느낌이 든다.

설문을 통해서 대중 혹은 전문가의 의견을 구하는 것은 물론 중요한 일이다. 그런데 그 빈도가 너무 높으면 일상 없무에 당연히 지장을 받는다. 특정 기관에 근무하는 사람을 대상으로 설문 조사를 하려면 개인에게 이메일을 일괄적으로 보내서 요청할 것이 아니라 해당 기관에 먼저 공식적으로 사전에 승인을 받은 뒤 설문 이메일을 보내야 하는 것은 아닐까? 마치 기관에 소속된 개인을 대상으로 언론 취재 활동을 하지 못하게 하는(즉 공식적인 홍보 채널을 반드시 통하게 하는) 것과 비슷하게 말이다. 이렇게 하면 제대로 작성된 답변지를 회수하는 비율은 현저히 떨어질 것이다.

지난주에 크레이그 램버트가 지은 <그림자 노동의 역습>을 읽었다. 소비자에게 떠넘겨지는 노동이 지나치게 많다. 소개된 여러 사례 중에서 물건이나 서비스를 구입한 뒤 너무나 많은 설문조사에 시달리는지에 관한 것이 있었다. 고객의 피드백은 매우 중요하다. 그러나 그것이 너무 많아서 문제이다. 정치 참여와 같은 것이 아니라면 성의있는 답변을 하기가 쉽지 않다. 더군다나 학창시절 시험문제 수준의 설문지를 접하면 그 누구도 선뜻 응하고 싶지 않을 것이 자명하다.

이제 또 연말이 되면 공공기관 만족도 조사를 하게 된다. 설문용 문항 작성, 설문자 선택 등 사려깊게 결정해야 할 것이 너무나 많다. 설문 자체가 논리적이고 이해하기 쉬운지, 설문자는 우호적인 답변을 줄 사람으로 일부러 고르고 있지는 않은지... 설문조사를 통해 파악된 결과는 항상 진실을 담고 있는 것도 아니다.

수능시험 문제가 잘못되어 말썽을 일으키는 일이 매우 자주 일어남을 잘 알고있다. 시험이든 설문조사든 만들어진 문항에  오류가 없는지, 난이도는 잘 조정되어 있는지를 앞으로는 인공지능이 사전에 점검하는 세상이 오지 말라는 법도 없다.


2017년 9월 6일 수요일

Genome assembler 관련 새소식

러시아의 St. Petersburg State University의 Center for Algorithmic Biotechnology에서 개발하는 de novo genome assembly tool인 SPAdes의 새 버전 3.11.0이 공개되었다는 이메일 통지를 받았다. 프로그램 배포는 http://cab.spbu.ru/software/spades/에서 이루어진다. 3.11.0에서 개선된 사항은 다음과 같다고 한다.

  • Reworked IonHammer module
  • Major improvements in metaSPAdes pipeline
  • Support for strand-specific data and coverage-based isoform detection in rnaSPAdes
  • exSPAnder repeat resolution is improved in terms of both performance and repeat resolution accuracy
  • Better RAM consumption and running time in general
  • Improved careful mode for isolate datasets
  • Several other important bug-fixes

일루미나와 PacBio 등 다양한 시퀀싱 플랫폼을 지원할뿐만 아니라 RNA-seq과 메타게놈까지 그 적용 대상이 확대되고 있으며 지속적으로 개선이 되는 모습을 보면 참 부럽다는 생각이 든다. 흔히 IT 강국으로 불리는 우리나라에서는 왜 전세계적으로 사랑을 받을 killer app이 나오지 않는 것을까? 카카오톡이나 라인 정도? 

내가 생명정보학 분야를 전부 다 파악하지는 못하지만 주로 관심을 갖는 genome assembly 영역만 보아도 전세계적으로 골고루 특징적인 도구를 꾸준히 내놓고 있다. phrap, cap3, Celera assembler, velvet, SPAdes, SOAPdenovo, IDBA, 그리고 최근의 HGAP, falcon, canu에 이르기까지. 중국과 대만도 이렇게 기여를 하고 있는데 우리나라는 없다. 참으로 안타까운 현실이다.


VelvetOptimiser 새소식


나도 모르던 사이에 VelvetOptimiser가 GitHub로 이사를 갔다. 현재 배포되는 위치는 https://github.com/tseemann/VelvetOptimiser이다. Linuxbrew를 사용해서 설치를 해 보니 원래 쓰던 것과 같은 2.2.5 버전이었다. 게다가 딸려온 velvet binary도 최대 kmer가 매우 낮은 기본 조건으로 컴파일된 상태였다. 어쩐지 테스트 실행을 할 때 설정한 kmer size와 무관하게 31로 시작을 하더라니... 지워버리고 말았다. 나중에 linuxbrew로 재설치를 하게 된다면 시스템에 이미 깔린 velvetg, velveth를 쓰도록 매만져야 하겠다. 가장 간단하게는 ~/.linuxbrew/bin/ 이하에 설치된 velvetg와 velveth를 지워버리면 된다.

새삼스럽게 왜 velvet인가? 요즘 미생물 유전체 시퀀싱 데이터를 관리하는 DB를 구상하는 중인데, library insert size를 계산하는 가장 간편한 방법이 무엇인지 찾고 있었다. De novo assembly report에는 결국 대부분 나오게 되는 수치이지만 개별 시퀀싱 샘플마다 전부 다른 방법을 쓴 관계로 이를 일일이 다시 찾아내려면 여간 성가신 일이 아니기 때문이다. 조립을 통해 만든 contig 위에 read를 다시 매핑한 뒤 getinsertsize.py를 실행하여 정확한 수치를 알아내는 것이 가능하나 reference를 다시 마련해야만 한다. 차라리 '가벼운' de novo assembler를 일괄적으로 한번 더 돌리는 것이 낫다. 가볍다는 것의 의미는 트리밍이나 오류 교정 등의 전처리를 되도록 하지 않는 것을 의미한다. 정확한 assembly를 얻고자함이 아니라서 문제가 될 것은 없다. 대신 velvet은 interleaved file을 입력물로 제공해야만 한다.

VelvetOptimiser를 실행할 때 -v(--verbose) 옵션을 주면 각 라이브러리에 대해서 추정된 insert length와 표준편차를 logfile에 기록한다. 실제 실행을 해 보니 -v 옵션을 주지 않아도 알아서 기록이 된다. library 크기와 관련된 수치가 왜 두 줄로 표시되는지는 잘 모르겠다.

Paired Library insert stats:
Paired-end library 1 has length: 609, sample standard deviation: 191
Paired-end library 1 has length: 609, sample standard deviation: 192

IDBA의 활용은 어떨까?


이번에는 심플한 assembler로서 IDBA를 선택해 보았다. IDBA는 interleaved fasta 파일을 입력물로 받아들인다. 따라서 fastq file의 쌍 또는 interleaved fastq file을 갖고 있다면 설치_디렉토리/bin/fq2fa를 사용하여 전환해야 한다. 'N'을 포함한 read를 제거하는 --filter 옵션은 필수는 아니다.



IDBA 역시 기본 조건으로 컴파일하면 다룰 수 있는 read length에 한계가 있어서(128 bp) MiSeq data를 쓰기에 곤란하다. 이러한 상황에서는 소스의 헤더 파일을 바꾸어서 다시 컴파일해야 된다(SEQanswers 250bp reads in idba_ud). 이 문제는 버전 1.1.1에서는 해결되었다.

실행 중에 화면으로 표시되는 결과는 고스란히 output_dir/log에도 기록된다. 설정된 kmer에 대한 조립을 마친 뒤 최적 결과를 선택하고 이어서 라이브러리 관련 수치가 나온다. 실행 속도는 velvet보다 조금 빠른 것처럼 느껴진다.

distance mean 583.363 sd 147.819

Velvet과 IDBA의 실행 속도 비교

'N' 제거용 필터를 거치지 않은 동일한 interleaved fasta file을 사용하여 velvet와 idba의 실행 속도를 비교하여 보았다. kmer의 크기는 91로 고정하고 thread의 수도 1로 하였다. 기본 thread의 수는 velvet의 경우 4, IDBA는 최대 가용 CPU이다. 

$ VelvetOptimiser.pl -s 91 -e 91 -f '-shortPaired -fasta M217.fa' -t 1
...
Paired-end library 1 has length: 604, sample standard deviation: 185
...
real 35m53.620s
user 33m10.259s
sys 1m42.553s
$ idba -o idba_out -r M217.fa --mink 91 --maxk 91 --num_threads 1
...
distance mean 584.907 sd 147.223
...
real 17m26.175s
user 17m21.627s
sys 0m4.952s
IDBA는 입력파일을 fastq에서 fastq로 전환하는 수고를 들여야 하지만 실행 속도가 더 빠르다. 특히 thread 수 관련 옵션은 아무것도 지정하지 않으면 기본적으로 최대 가용한 것을 다 쓰게 되므로 속도가 더 빠르다. 그런데 왜 두 프로그램이 제공하는 수치가 다를까? IDBA는 paired read 사이의 distance를 계산하는 반면 velvet은 library size라서 그런가?

원래 (paired reads or insert) distance는 서로 마주보고 위치한 두 read의 내부 거리를 의미한다. 따라서 insert size = distance + 2 rd (rd: read length)가 되어야 한다.  그러나 위에서 얻은 두 수치는 이를 만족하지 못한다. 겨우 20 bp밖에 차이가 나지 않는다. 무엇을 믿어야 할까? mapping 이후의 distance 계산은 어쩌면 일부의 read에 대해서 샘플링을 하여 산출하는지도 모른다. 

Simulated Illumina read를 사용하여 계산을 한다면?

Read simulation tool로 잘 알려진 ART(MountRainier-2016-06-05)를 사용하여 가짜 read를 만든 뒤 이를 velvet와 IDBA로 각각 조립해 보면 어느 프로그램이 좀 더 정확한 insert length 관련 수치를 계산해 내는지 알아낼 수 있을 것이다.  평균 fragment size가 600 bp이고 표준편차가 150 bp인 HiSeq 2500 모델의 paired read를 만들어서 작업을 해 보았다.

$ art_illumina -ss HS25 -i /data/project/00_references/NC_007492.fa -l 150 -f 200 -o simul -m 600 -s 150
$ fq2fa --merge simul1.fq simul2.fq simul.fa
$ time VelvetOptimiser-2.2.5/VelvetOptimiser.pl -s 91 -e 91 -f '-shortPaired -fasta simul.fa' -t 1
...
Paired-end library 1 has length: 599, sample standard deviation: 149
Paired-end library 1 has length: 600, sample standard deviation: 149
...
real 24m57.445s
user 16m30.927s
sys 4m21.573s
$ time /usr/local/apps/idba-1.1.1/bin/idba -o idba_out -r simul.fa --mink 91 --maxk 91 --num_threads 1
...
distance mean 599.669 sd 143.797
...
real 15m47.285s
user 13m30.796s
sys 1m21.300s

이번에는 프로그램이 산출한 수치가 거의 같다. 실행 속도는 IDBA가 더 빠르며, assembly 수치는 velvet이 더 우수하다(contig의 수가 적음). 따라서 library size 계산을 빨리 하려면 IDBA가 적당할 것이다.


2017년 9월 4일 월요일

에스프레소 공부

가도와키 히로유키 저(일본 Cafe Rosso 창립자) 김진경 옮김 <에스프레소 만들기(주식회사 우듬지, 2006)>를 읽으면서 공부한 내용을 요약해 본다. 저자는 Espresso Laboratory라는 사이트도 운영하고 있다. 대단히 학술적인 '에스프레소 기술자'라고 여겨진다.

에스프레소는 6.5~10 그람의 커피 원두로 20~30초의 빠른 시간 내에 20~30 ml의 양을 추출한 커피다. 이것이 바로 '솔로'에 해당한다. 아무것도 넣지 않은 상태의 순수한 것을 카페 에스프레소라 부른다. 리스트레토는 15~20 ml로 적게 추출한 것을, 룽고는 40~50 ml로 많은 양을 추출한 것이다. 리스트레토와 룽고를 내리려면 분쇄 정도, 즉 mesh를 조절하는 것이 원칙이다.

커피를 두 배로 넣고 두 잔 분량을 추출한 것(시간은 솔로와 같다)을 도피오라고 한다. 소위 더블 샷이라고 부르는 바로 그것이다.

포르타필터에 원두 가루를 넣고 탬퍼로 누른 뒤에는 필터 높이의 3 mm 정도까지 골고루 다져야 한다. 나는 늘 기계 헤드에 커피 가루가 묻는다는 것이 문제이다. 커피 가루가 너무 많다는 뜻일 것이다.

요즘 가장 어려움을 느끼는 것은 스팀밀크를 제대로 만드는 것이다. 내가 사용하는 위즈웰 DL-310에서는 스팀 분출구에 플라스틱 스팀 노즐을 반드시 끼운 상태로 스팀을 주입해야 한다. 처음에는 스팀 노즐이 단순한 보호횽 플라스틱 커버라고 생각했었는데 그게 아니었다. 다음 그림(DL-310 사용 설명서 8쪽)에 나온 그대로 해야 공기가 제대로 주입된다. 커버를 씌우지 않은 상태에서 음료나 그릇의 단순 가열은 가능하다. 스팀밀크는 피처를 흔들어서 우유와 거품을 잘 섞은 것, 핫밀크는 피처 주둥이에 스푼을 대고 액체만을 따른 것, 폼드밀크는 스팀 작업 후 수십초를 기다려 거품이 떠오르면 이것을 스푼으로 떠낸 것을 말한다. 나는 아직 스팀밀크용 저그(피처라고도 부름)을 구입하지 못해서 머그를 대충 이용한다. 컵, 텀블러, 머그, 저그, 피처 등의 액체 용기가 정확히 무엇을 가리키는지 알아보는 것도 재미있다.


우리가 매우 즐겨 마시는 카페 아메리카노는 에스프레소 솔로에 뜨거운 물 90 ml을 넣은 것이다. 그러나 요즘 우리 주변의 커피 전문점에서 판매하는 커피는 너무나 용량이 크다. 과도한 일회용품 발생의 원흉인 테이크아웃 잔을 들고 돌아다니면서 음료를 마시지 말고 차분히 앉아서 잘 데워진 도자기 잔으로 커피를 음미하면 안될까? 스타벅스 기준으로 용량을 알아보니 숏(237 ml), 톨(355 ml), 그란데(437 ml), 벤티(592 ml)이다. 책에서 참조한 표준 아메리카노는 에스프레소 한 잔에 뜨거운 물 90 ml이니 120 ml 정도에 불과하다. 커피 자판기용 종이컵(6.5 fl.oz., 약 190 ml)에 채우면 적당한 부피이다.

어제 액량온스가 ml로는 얼마나 되는지 찾다가 영국과 미국이 서로 다르다는 것도 처음 알았다. 갤론도 마찬가지. 게다가 온스는 중량의 단위이기도 하다!

아이스 카페 아메리카노는 아무래도 큰 용량으로 만들어야 제맛이다. 에스프레소 도피오(40~60 ml)에 찬물 150 ml, 각얼음을 넣어야 하니 좀 더 큰 컵에다 만들어야 한다.

카푸치노카페라떼는 약간 다르다. 그림과 더불어 설명한 자료는 여기를 참고하도록 하자. 이탈리아에서는 그냥 카푸치노라고 부르는 것을 시애틀계 커피 전문점(아마도 스타벅스)에서는 wet cappuccino라 구별하여 부른다고 한다. 이것은 에스프레소 솔로에 스팀밀크 120 ml을 섞어서 만든다. 스팀밀크를 붓기 전에 반드시 피처를 흔들어서 거품과 액체가 잘 섞이도록 한다. 그러면 dry cappuccino는? 리스트레토를 두 잔 내려 놓고, 스팀한 우유는 그대로 두었다가 폼드밀크가 떠오르면 아래의 핫밀크 120 ml를 여기에 붓는다(우유 150 ml로 시작). 그 다음에 폼드밀크를 스푼으로 떠서 그 위에 가득 얹고 게핏가루를 설탕을 곁들이면 된다.

이탈리아 스타일의 카페라떼에서는 폼드밀크가 거의 없다시피 하다. 에스프레소 솔로에 스팀밀크 120 ml를 따르되 스푼으로 막아서 폼드밀크가 들어가지 않게 한다. 반면 시애틀 스타일의 카페라떼에서는 거품이 많아야 한다. 이를 만들려면 리스트레토 두 잔에 스팀밀크 220 ml를 넣으면서 적당히 그림을 그리면 된다. 물론 그림은 필수가 아니고 선택이겠지만.

책에서는 훨씬 더 많은 에스프레소 기반 음료의 레시피를 소개하고 있지만 가장 기본이 되는 것만을 요약해 보았다.

2017년 9월 3일 일요일

스테인레스 벨 크리머를 발견하다

어제 아내가 주방을 정리하다가 종이 상자에 담겨진 소형 전동 거품기와 스테인레스 벨 크리머를 발견하였다. 마트에서 '카누'를 사면서 사은품으로 받은 것은 장 속에 넣어두고는 까맣게 잊고 있었던 것이다. 텀블러는 하도 많이 받았기에 새로운 사은품이라 카페라떼를 만들어 먹으면 되겠다고 생각하여 반가워하면서 커피와 함께 구입했었던 기억이 난다. 그때에는 앞으로 벨 크리머를 쓰게 될 것이라고는 생각도 하지 못했었다.

집에서 거의 매일 에스프레소를 내려 먹으면서 실수를 점점 줄여나가고 있다. 맛에 대해서는 이것이 최선인지는 아직 알 길이 없지만 말이다. 커피를 내릴 때 받는 용기로 적당한 것이 없어서 2006년 국외 출장때에 하바드 대학교에서 산 약간 큰 양주잔에 30 ml에 해당하는 금을 대충 그어서 사용해 왔다.  원샷, 즉 한 잔 분량인 30 ml 정도만 내리면 되는 경우에는 이 유리잔만으로도 적당하지만 내가 사용하는 커피 분쇄기(드롱기 KG79)의 최소 용량은 두 잔 분량이다. 어차피 거의 항상 아내와 커피를 같이 마시므로 갈아놓은 커피 가루를 전부 이용하여 에스프레소를 내려야 한다. 두 잔을 내려야 하므로 추출구 하나에는 이 유리잔을, 나머지 추출구에는 소주잔을 받쳐서 사용해 왔는데, 소주잔은 양주잔보다 용량이 작아서 늘 조금씩은 넘치게 되고 보기에도 좋지 않아서 전용 용기(shot glass 또는 espresso brewing pitcher)를 사려는 생각을 갖게 되었다. 그러던 중에 에스프레소를 받는 용도로 흔히 쓰이는 소용량(아마도 3온스일 것이다) 벨 크리머를 뜻하지 않게 발견하여 추가적인 지출을 줄일 수 있게 되었다.

건전지로 작동되는 전동 거품기도 매우 유용한 물건이다. 집에서 에스프레소를 만들어 먹은지 꽤 오래된 직장 동료 - 바리스타 자격증도 취득한 것으로 알고 있다 - 에 따르면 가정용 기계로 스팀 밀크를 만드는 것이 성가셔서 우유를 전자레인지에 데운 뒤 2천원짜리 다이소 거품기로 거품을 낸다고 하였다. 나도 아직은 배우는 입장이라서 에스프레소 머신으로 우유에 거품을 내려고 애를 쓰지만 이게 생각보다 쉽지 않다. 유투브에 널려 있는 동영상을 몇번이나 보면서 공부를 해 보는데도 공기 주입, 데우기, 시간 조절 등이 여전히 어렵다. 우유가 데워지는 정도를 직접 느낄 수 있는 스테인레스 밀크 저그가 없어서 더욱 어려운지도 모르겠다. 그래서 전동 거품기를 쓰는 것을 가끔 고려해 보고는 했었다.

어제 예상치 않게 발견한 물건들이다.


평소에 샷잔 대용으로 쓰던 유리잔과 함께 어제 발견한 물건들을 촬영하였다.


용량을 가늠하기 위해 계량컵을 같이 꺼내 보았다. 가득 채우면 90 ml 정도가 나온다. 시판되는 벨 크리머 중 가장 작은 용량이 3온스이니 대충 일치하는 크기이다.


밀크 저그와 온도계까지 구입하면 에스프레소와 핸드 드립용 용품은 거의 다 갖추는 셈이 된다. 참고로 우리는 핸드 드립이라고 적당히 이야기하지만 이는 서양쪽에서는 잘 쓰지 않는 용어라고 한다. 내가 알기로 콩글리쉬는 아니다. Hand drip과 pour over는 같을까 다를까라는 글을 읽어보면 도움이 될 것이다. 이 글에 포함된 동영상을 보면 물을 부어서 커피가 추출되는 동안 커피를 휘젓는 일까지도 벌어진다. 핸드 드립 '교과서'에서는 도저히 있을 수 없는 방식이다. 하지만 커피를 내리는 방법에 정답이라는 것이 어디 있을까?