2017년 9월 28일 목요일

SMALT aligner (Sanger Institute) and Anvi'o

감염균 유전체의 대용량 분석에 관한 논문을 보다가 SMALT라는 새로운 short read mapping 프로그램을 사용했다는 기록을 자주 보게 되었다. Bowtie와 BWA라는 고전적인 도구가 있는데 왜 Sanger Institute에서는 자체적인 프로그램을 만든 것일까? 공식 웹사이트에 가서 SMALT에 대한 간단한 설명을 읽어보았다.
SMALT employs a hash index of short words up to 20 nucleotides long and sampled at equidistant steps along the reference genome. For each sequencing read, potentially matching segments in the reference genome are identified from seed matches in the index and subsequently aligned with the read using dynamic programming.
Reference indexing 작업을 할 때 일정한 간격으로 짧은 word로 이루어진 hash index를 만들어 둔 뒤 read의 매핑 단계에서 이를 사용하여 빠른 seed match를 찾은 다음 dynamic programming으로 제대로 정렬을 한다는 것이 특징이다. 흠, 그렇구나... 그러면 나는 BWA, bowtie(bowtie2), BBMap 등의 원리와 특성을 정말 이해하고 있으며 이를 간략하게 설명할 수 있는가?

답은 '아니오'이다. 그저 쓰기 편하고 실행 속도가 빠른 것을 선호할 뿐이다. 어제부터 SMALT를 써 보는 중인데 bowtie2보다는 조금 더 빨리 적응하고 있다.

시카고 대학의 A. Murat Eren 교수가 여러 mapping tool을 비교한 결과를 웹에 공개하였기에 이를 소개해 본다. 아직 공개되지 않는 metagenomic read를 bowtie, bowtie2, BBmap, BWA, CLC, GSNAP, Novoalign 및 SMALT로 매핑하여 Anvi'o로 그 결과를 시각화한 것이다.

Comparing different mapping software using anvi'o

Anvi'o는 또 무엇인가? 2015년 PeerJ에 A. Murat Eren이 발표한 플랫폼이다. 논문의 제목은 Anvi'o: an advanced analysis and visualization platform for 'omics data. JGI에서도 워크샵을 열 정도이니 매우 인기를 끄는 도구임에는 틀림이 없다. 워크샵은 바로 이번주 월-화 양일간 있었다!(An anvi'o workshop at the Joint Genome Institute) 심지어 이런 말까지 있었다.

I know that people rave about it and the visualizations it produces look really fool.

같은 사이트(microBEnet, microbiology of the built environment network)에 Eran이 쓴 글을 또 하나 소개해 본다. 제목은 Anvi'o: a new platform to work with metagenomic data. 여기에서는 STAMPS(Strategies and Techniques for Analyzing Microbial Population Structure)라는 교육 코스에 대한 언급도 있었다.

본론으로 돌아가서, 여러 short read aligner가 만들어낸 결과를 Anvi'o가 어떻게 표현하는지 살펴보자. 결과물을 전부 합쳐서 표현하는 것도 가능하다. 이 글에 결과 수치를 인용하지는 않았지만 percent mapped read로만 판단한다면 bbmap, gsnap, novoalign, smalt가 가장 많은 read를 reference에 붙였다.


그러나 mapping rate가 성적표를 구성하는 유일한 과목은 아니다. 상대적으로 많은 read를 붙인 프로그램일수록 SNP처럼 보이는 것이 더 많이 나오기 때문이다. 결론에서는 mapping parameter를 최적화하여 각 프로그램들이 내놓는 결과를 비슷한 수준으로 만들 수 있다고 하였다. 따라서 default parameter를 사용함에 있어서 주의를 기울이라는 것이다.

2017년 9월 25일 월요일

아르키메데스 AW0063 손목시계의 크로노그래프 분 표시 다이얼의 숫자는 분명히 잘못되었다

Chronograph란 스톱워치 기능이 추가된 시계를 말한다. 타이머와 스톱워치는 비슷해 보이지만 정반대의 기능을 갖는다. 타이머는 일정 시간(예: 5분)을 설정한 뒤 버튼을 눌러 작동시키면 표시창의 시간이 점차 줄어들다가 0이 되었을때 알림음을 내는 기능이고, 스톱워치는 0부터 시작하여 시간이 점차 증가하다가 사용자가 다시 버튼을 눌렀을 때 멈춘다. 즉 타이머는 설정한 것으로부터 시간이 얼마나 남았는지, 스톱워치는 기준 시간으로부터 시간이 얼마나 흘렀는지를 보여준다. 라면을 끓일 때에는 타이머가 유리한가, 혹은 스톱워치(크로노미터)가 유리한가? 그건 활용하기 나름이다. 경보음이 필요하면 타이머가 유리하지만 시간을 미리 맞추어야 한다. 반면 타이머는 시간 표시창을 계속 주시하고 있어야 한다.

보통의 손목시계에서 초침에 해당하는 것이 크로노미터 시계에서는 평소에 돌아가지 않는다. 그래서 시계가 가지 않는다고 오해를 하는 일이 있다. 이 바늘은 크로노미터 버튼을 눌러서 그 기능이 작동 중일때만 돌아간다. 어떤 일이 있어도 항상 돌아가는 초바늘은 작은 서브다이얼에 붙어 있다.

Chronometer는 위키백과에 따르면 선박의 진동 및 온도 변화에 영향을 받지 않는 정밀한 휴대용 기계식 시계를 말한다. 같은 접두어인 chrono-로 시작하지만 혼동하지 말자.

작년 1월에 구입하여 착용 중인 국산 브랜드 아르키메데스 V-Revolution 라인의 시계인 AW0063의 다이얼을 보자(노랑색 박스). 9시 방향의 크로노그래프용 분 표시용 서브다이얼의 숫자 표시가 좀 이상하지 않은가? 바늘이 돌아가는 방향에 따라서 숫자가 증가해야 함이 당연하다. 그런데 10분이 표시되어야 할 위치에 20분이, 20분이 표시되어야 할 위치에 10분이 찍혀있다. 크로노그래프 분 서브다이얼에서는 한 바퀴가 30분이다. 시간 표시에서 반 시간 단위를 알 수 있기 때문이다. 따라서 40분, 50분은 표시되지 않는다.

아르키메데스 시계(가운데)의 시침 위치가 정상이 아니다.
시계줄을 바꾸면서 시계를 떨어뜨려서 시침이 살짝 빠진 것이다!

그 어떤 크로노그래프를 보아도 이렇게 숫자 표시가 뒤집어진 것은 없다. 아주 표준적인 다른 크로노그래프의 모습을 보자. 이 시계는 12시 방향에 분 표시가 있다. 


아르키메데스의 다른 크로노그래프 시계도 이러한 정상적인 숫자 배열을 하고 있다. 그러나 내 시계(AW0063)와 기본 디자인은 같지만 색깔만 다른 AW0062, AW0064~AW0066이 전부 이렇게 잘못된 배열의 서브다이얼을 장착하고 있다. 아마도 디자인 단계에서 실수가 있었던 모양이다. 이에 대해서 우림 FMG에 문의하거나 클레임을 걸지는 않았다. 잘못 인쇄된 우표나 지폐가 나중에 기념물 취급을 받기도 하니 그저 흥미로운 일이라고 생각해 두기로 하였다. 하지만 분명히 시계 디자인을 책임진 사람은 이 오류를 알고 있었을텐데? 아직까지도 모르고 있었다면 그것은 큰 문제이다.

그래도 아르키메데스의 10년간 배터리 무상 교체는 매력적이지 않은가? 맞는 말이다. 그런데 스와치는 2016년부터 보증서를 지참하지 않아도 평생 배터리를 무상으로 교체해 준다고 한다(관련 뉴스). 이러다가 자동차처럼 명품 혹은 고급 시계도 구입을 하는 것이 아니라 리스를 하는 시대가 오는 것은 아닌지 모르겠다. 

2017년 9월 22일 금요일

Docker를 통해 배우는 Galaxy와 Plasmid Profiler

Galaxy는 웹 기반의 오픈소스형 생명정보 분석용 플랫폼이다. 2009년에 미국 Cold Spring Harbor Laboratory에서 열린 Genome Informatics Meeting에 참석했다가 이를 처음으로 접하고 참 흥미로운 소프트웨어라고 생각을 했었다. 그 이후로 발전에 발전을 거듭하여 대용량의 NGS data를 다루는 사람이라면 누구나 손쉽게 접근할 수 있는 서비스가 되었다. 다양한 생명정보학 분석 도구가 이미 내장되어 있는데다가 Tool Shed를 이용하여 사용자가 구동하기를 원하는 개별적인 프로그램을 적재할 수 있고 워크플로우 구성도 가능하다.

내가 주로 다루는 미생물 유전체 시퀀싱 데이터는 리눅스 기반의 몇 가지 공개 소프트웨어와 CLC Genomics Workbench(Genome Finishing Module 및 Microbial Genomics Module)에서 충분히 소화가 가능했기에 갤럭시에는 별로 관심을 갖기 않았었다. 그런데 최근 감염균의 whole genome sequencing data에 포함된 플라스미드 서열을 조립하지 않고 incompatibility group으로 구분하고 항생물질 내성 유전자 프로필을 구성하는 소프트웨어인 Plasmid Profiler를 테스트하면서 갤럭시를 쓰지 않을 수 없었다. 갤럭시를 로컬 시스템에 설치하는 것은 꽤 부담이 되는 일이다. 그러나 갤럭시와 그 내부에서 워크플로우 형태로 실행 가능한 Plasmid Profiler를 Docker 이미지로 제공하여 정말 쉽게 체험을 할 수 있도록 만들어 놓았다. 개발자가 제공한 샘플 데이터와 내 데이터를 사용하여 그저께부터 벌써 몇번째 실행을 하고 있는지 모른다. Docker라는 도구의 편의성도 놀랍지만 갤럭시도 의외로 사용법이 쉬웠다.

Docker란 도대체 무엇인가? 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 호스트 OS 위에 게스트 OS가 올라가는 VirtualBox 같은 무거운 방식은 잊어버리자. 도커에 대해서 아무 아이디어가 없는 사람은 다음의 웹문서 삼종세트를 읽어보기 바란다.

  1. 초보를 위한 도커 안내서 - 도커란 무엇인가?
  2. 초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기
  3. 초보를 위한 도커 안내서 - 이미지 만들고 배포하기
갤럭시 도커 이미지PlasmidProfiler-Galaxy 도커 이미지는 각각의 링크를 참조하기 바란다. Plasmid Profiler를 실행하는 것은 너무나 쉽다. 도커를 먼저 설치한 뒤, 다음과 같이 입력하면 그만이다. 첫 실행에서 이미지 파일을 내려받아서 실행을 하게 된다. 실행 중이 도커의 인스턴스를 '컨테이너'라 한다(내가 용어를 정확하게 이해하고 있는지는 아직 자신이 없다). 다운로드한 이미지는 시스템 어딘가에 저장이 되므로 다음번 docker run에서는 좀더 빨리 실행이 된다.
docker run -t -p 48888:80 phacnml/plasmidprofiler_0_1_6  
그러면 웹 브라우저에서 48888 포트를 열면 된다. 다음은 최종 결과물의 스크린샷이다.


내가 실제로 사용한 명령어는 다음과 같다. 이렇게 하면 Plasmid Finder의 결과 파일들이 로컬 파일시스템(/data/apps/galaxy_storage/)에 그대로 저장이 된다. 이를 일부러 지우지 않으면 도커를 중단하고 다음에 다시 실행하여도 보존된 파일을 갤럭시 히스토리 내에서 볼 수 있다. /export는 도커 컨테이너 내에서의 경로이다.
docker run -t -p 48888:80 -v /data/apps/galaxy_storage/:/export/ phacnml/plasmidprofiler_0_1_6

Plasmid Profiler의 작동 설명

플라스미드는 모자이크 구조를 하는 경우가 많고 반복 서열과 mobile element의 함량이 많아서 whole genome sequencing 결과물에서 염색체 서열과 구별하기가 매우 어렵다. PLACENET이나 plasmidSPAdes와 같이 plasmid의 서열만을 추출하려는 프로그램도 존재하지만 그렇게 만족스런 수준은 아니다. Plasmid Profiler는 아예 de novo assembly를 배제하고서 시퀀싱 샘플에 포함된 플라스미드의 유형과 내성 유전자 콘텐츠를 비교하는 것을 목표로 한다.

입력물은 (1) NGS short read data, (2) 플라스미드 서열 데이터, 그리고 (3) replicon sequence + 관심대상 유전자 서열(주로 항생제 내성 유전자)의 세 가지이다. (2)와 (3)은 도커 이미지에 내장된 상태이지만 항생제 내성 유전자는 사용자가 용도에 맞게 추가해야 한다. 기본적으로 포함된 파일에는 5개의 carbapenemase 유전자만 들어있다. (2)번의 플라스미드 서열 데이터(pp_plasmid_database.fasta)는 NCBI에서 다운로드한 Gammaproteobacteria의 플라스미드 서열 2797개를 완성도와 유사도 측면에서 추려서 대표적인 서열만 모은 것이다. (3)번 데이터(plasmidfinder_plusAMR.fasta)는 덴마크 Center for Genomic Epidemiology에서 배포하는 PlasmidFinder DB에서 유래한 replicon sequence 파일에 항생제 내성 유전자 서열을 덧붙인 것이다. 여기서 말하는 replicon이란 흔히 쓰이는 개념인 '자가복제 가능한 서열'이 아니라, 플라스미드의 incompatibility group을 나누는데 기준이 될 수 있는 염기서열이다.

Plasmid Finder의 첫번째 단계에서는 KAT를 사용하여 Gammaproteobacteria의 플라스미드 서열에 해당하는 것(k-mer 기반)만을 선별한다. 그 다음에는 read를 SRST2로 처리하여 curated plasmid sequence, 즉 (1)번 데이터에서 hit를 모은다. 여기서 조금 혼동스러운 것은 이 과정의 결과로서 얻어지는 것이 input read의 모임이 아니라 plasmid database의 hit되는 영역이라는 것이다(이것은 착각이었다. 9월 27일자 추가 사항을 참고). 다음 단계로 넘어가는 서열(history panel에서 "Fasta Extract Sequence on collection ###..."로 표시)의 ID가 다음과 같다는 점에서 확인 가능하다. input read를 조립하지 않고 단지 매핑만 하므로, reference plasmid DB에서 매핑된 영역을 추출하여 다음 단계로 넘기는 것으로 판단된다. 
>550__KU665642.1__KU665642.1__00132 no
>510__KF874498.1__KF874498.1__00168 no
>514__KU295133.1__KU295133.1__00182 no
>686__KJ146688.1__KJ146688.1__00190 no ...

2017년 9월 27일 그리고 이후에 추가한 사항

그게 아니었다. SRST2에서 확인된 plasmid DB의 hit sequence를 그대로 가져오는 것이었다. 이것은 서열 ID와 길이를 서로 맞추어 봄으로써 확인한 것이다. Plasmid Profiler flowchart의 step 3에도 나와있듯이 여기에서 하는 일은 "Identify plasmid hits per isolate from individualized databases (SRST2)"인 것이다.  //추가 사항은 여기까지이다.

다음 과정을 살펴보자. 바로 이전 단계에서 얻어진 서열을 BLAST DB로 전환한 뒤 (3)번 서열을 query로 하여 MegaBLAST를 실시한다. 그러면 어떤 내성 유전자가 있는지, 플라스미드는 어떻게 그룹을 지어야 하는지를 알 수 있다. 마지막 단계에서는 R package를 돌려서 dendrogram이 포함된 heatmap으로서 결과를 작성한다.

아직 결과물이 100% 마음에 드는 것은 아니다. 특히 샘플이 가진 모든 내성 유전자 목록을 보여주지 못한다는 것이 가장 큰 한계점으로 여겨진다. Hit된 reference plasmid가 갖는 best hit AMR(antimicrobial resistance) gene만 보여지게 만들었기 때문이다. 현 단계에서 Plasmid Profiler 논문은 bioRxiv에만 공개된 상태이니 만약 전문 학술지에 정식으로 게재가 되면 성능 개선이 이루어질지도 모르는 일이다.

2017년 9월 21일 목요일

손목시계 줄 바꾸기

아르키메데스 손목시계(사진 가운데)의 묵직한 금속제 통줄을 '산뜻한' 가죽줄로 바꾸었다. 폭은 22 mm이고 두께도 꽤 되어서 실제로 착용해 보면 그렇게 산뜻하지는 않다. 왼쪽의 오리엔트 시계(FEM7P007B9)도 시계줄의 폭은 같으나 금속판을 접어서 만든 것이라 매우 가볍다. 약간은 깡통과 같은 느낌이 드는 것을 피할 수는 없지만. 맨 오른쪽의 삼성 돌체 시계는 전지 교체를 위해 출근길에 들고 나왔던 아내의 손목시계이다.

금속 통줄은 견고하고 고급스럽다는 장점이 있지만 무겁다. 아르키메데스 시계는 작년 초에 구입하여 금속줄 상태 그대로 사용해 왔었는데 날씨나 기분, 컨디션에 따라서 너무 꽉 끼는 것 같다가도 또 너무 헐렁한 것 같게 느껴지기도 하였다. 즉 가죽줄처럼 조임쇠를 사용하여 즉각적인 조절을 할 수 없다는 것이 단점이다. 마침 '드레스 워치'에 대한 느낌을 갖고도 싶었기에 가죽줄 교체를 시도하게 된 것이다. 이렇게 시계줄을 바꾸는 일을 소위 '줄질'이라 한다. 시계 자체가 워낙 두껍고 커서 얇은 시각적 효과 말고는 드레스 워치의 기분을 내기는 어려웠다. 이번 줄질 덕분에 드레스 워치를 하나 들일까 말까 하던 욕심을 완전히 잠재우게 되었다.

아르키메데스 시계(가운데)의 시침 위치가 정상이 아니다.
시계줄을 바꾸면서 시계를 떨어뜨려서 시침이 살짝 빠진 것이다!

Archimedes V-Revolution AW0063

오리엔트와 아르키메데스 시계 모두 베젤 직경은 43 mm이다. 이번 경험을 통해서 확실하게 깨달은 것이 있으니 이보다 큰 시계는 앞으로 절대 사지 말자는 것이다. 아무리 큰 손목시계가 대세라고 해도 손목이 이에 어울리게 두껍지 않으면 초라해 보일 수 있기 때문이다. 시계 관련 게시판에는 이런 글이 늘 올라온다.

'이거 방간 맞나요'

방간이란 '방패 간지(感じ)'의 줄임말이다. 시계가 손목에 비해서 너무 커서 마치 방패 같은 느낌이 난다는 속어이다. 이는 결코 적절한 표현이 아니다. 이보다 더 좋지 않은 표현은 '난민 손목'이라는 것이 있다. 손목이 얇다는 것을 굶주려서 야윈 난민의 손목으로 비하하여 나타내는 것이다. 이에 비하면 '줄질'이란 용어는 차라리 귀엽고 아름답다.

손목시계와 관련해서 사용자가 직접 할 수 있는 가장 첫단계의 일이 시계줄을 갈거나 길이를 줄이는 것, 즉 줄질의 단계이고 그 다음은 뒷뚜껑을 열고 배터리를 교체하는 것이다. 배터리 교체는 의외로 어렵다. 잘못하면 상처를 낼 수도 있고 시계에 따라서는 열어놓은 뚜껑이 맨손으로 닫히질 않아서 전문적인 프레스 공구가 필요할 때가 있다. 그러려면 질 좋은 시계공구세트가 필요하다. 그 다음 단계는? 새 시계를 사는 것.

2019년 8월 20일 업데이트

이 가죽줄은 현재 오리엔트 FEM7P007B9 손목시계에 장착된 상태이다. 몇 차례 부실한 줄바꿈을 시도하였다가 바넷봉이 빠지면서 오리엔트 시계의 엔드피스 하나를 잃어버리고 만 것이다. 원래의 시계줄이 가장 잘 어울리지만 어쩔 수 없는 일이다.

델 인스피론 데스크탑 3668 구입

2012년 10월에 집에서 쓰려고 구입했던 델 인스피론 660s에 이어서 또다시 인스피론 데스크탑 컴퓨터를 구입하였다. 이번의 모델명은 3668이다. 2006년 2개월 반의 국외 출장을 위해 XPS 노트북을 산 것까지 포함하면 델의 제품을 세번째 구입한 것이다. 인스피론 660s 전에는 2008년에 Shuttle XPC SG33G5 베어본을 사용했었는데 불안정한 하드웨어와 윈도우 비스타는 정말이지 '최악'의 조합이었다. 따져보니 가정용 컴퓨터의 구입 주기는 대략 4년에서 5년인 셈이었다. 인스피론 3668은 660s에 비해서 조금 더 좌우 폭이 넓고 키가 크다. 대신 앞뒤 폭은 더 줄어들었다. 같이 딸려온 마우스와 키보드는 예전에 쓰던 것보다 더욱 세련되고 슬림한 형태를 하고 있었다. 사양을 살펴보면 다음과 같다(델 홈페이지의 제품 소개). 모니터는 새로 구입하지 않았다.

  • 7세대 인텔 코어 i5-7400 프로세서(6MB 캐시, 3.50GHz)
  • 8GB DDR4 2400MHz 메모리
  • 1TB 7200 rpm HDD
  • 인텔 HD 그래픽 630
  • Windows 10 포함

이것보다 더 낮은 사양의 제품도 있었으나 너무 싼 가격에만 집착하지 않기로 하였다. 한컴오피스NEO와 오피스365를 설치하고 프린터 무선 연결을 완료하였다.


델 컴퓨터는 주문이 들어가면 중국 공장에서 조립에 착수하여 배송되기 때문에 국내 제품을 구입하는 것이 비하면 물건을 받는데 시간이 많이 걸릴 수밖에 없다. 9월 9일에 주문을 한 것이 오늘(21일) 배송되었으니 거의 2주가 걸린 셈이다. 이를 제외한다면 전반적인 품질, 가격, 서비스 면에서 비교적 만족스러운 편이다. 원래 이번에는 컴퓨존 같은 국내 업체에서 조립PC(예: 아이웍스 PC)를 주문할 생각도 가졌었지만 제품 종류가 너무 많아서 포기하였다.

연구실에서 업무를 위해 꽤 많은 대수의 서버를 사용하고 있으나 - 윈도우 노트북과 맥북 프로를 포함하여 - 최신 하드웨어의 사양에 대해서는 오히려 잘 모르는 편이다. 지금의 것은  i 몇이더라? '투알라틴 셀러론' 프로세서까지는 기억이 나는데 그 이후 것의 이름은 그다지 감흥을 주지 못한다. Xeon을 쓰는 서버들에 대해서는 아예 무감각해지고 말았다. 그저 코어 수와 메모리, 하드디스크 용량 정도만 파악하고 있을 뿐. 올해에는 DAS를 처음으로 구입하였고 NAS의 HDD를 6TB x 5개로 증설하였다는 것, 맥북 프로를 쓰기 시작했다는 것, Docker에 흥미를 갖게 되었다는 것 등이 업무를 위한 컴퓨터 생활에서 새롭게 경험한 것이다.

앞으로 5년 뒤에는 어떤 컴퓨터를 사게 될까? 그때 나라 안팎의 경제상황은 어떻게 변해 있을까? 또 누가 대통령을 하고 있을까? 인공지능이 정말 얼마나 많은 일자리를 대신하고 있을지, 4차 산업혁명은 정말 진전되었을지(아니면 실제로 존재하기는 하는지) 궁금하다. 지금 성공 가도를 달리던 기업이 5년 뒤에는 흔적도 없이 사라지고, 새로운 기업들이 또 생겨나고 있을지도 모르는 일이다.

2017년 9월 20일 수요일

라이언 홀리데이 지음 <에고라는 적(Ego is the enemy)>

이 책의 저자인 라이언 홀리데이는 1987년 생으로 올해 겨우 만 서른 살이 된 젊은이이다. 그럼에도 불구하고 성공한 미디어 전략가이자 베스트셀러 저자이기도 하다. <아메리칸 어패럴>사의 마케팅 이사로 일하면서 그가 만든 광고는 큰 성공을 거두면서 트위터, 유튜브, 구글 등에서 연구 사례로 소개되기도 하였지만 실패의 나락으로 떨어지기도 하였다. 결코 긴 인생을 살지 않았으나 성공과 실패를 두루 경험하고 나서 인생의 전환점에 설 때에는 '에고'를 버려야 함을 깨닫고 이런 책을 내게 된 것이다. 서른 살에 쌓았을 것이라고는 믿기 어려운 많은 고민과 철학이 담긴 책이라고 할 수 있다. 흔히 접하는 자기계발서에서 주장하듯이 자신감과 열정, 자존감으로 뭉쳐서 남을 통제하듯이 인생을 살아서는 안된다는 것이 주된 내용이다.


위키백과에서 '에고'의 뜻을 찾아보았다.

자아(自我, ego)는 생각, 감정 등을 통해 외부와 접촉하는 행동의 주체로서의 '나 자신'을 말한다.

그러나 프로이트의 심리학에서 다루는 에고와는 조금 다르다. 저자가 말하는 에고는 포괄적이고 보편적인 개념으로서의 에고이다. 서문(26쪽)에서는 그 누구(무엇)보다 더 잘해야 하고 보다 더 많아야 하고 또 보다 많이 인정받아야 하는 것, 이것이 바로 에고이다라고 하였다. 즉 자신감이나 재능의 범주를 초월하는 우월감이나 확신이기도 하다. 바로 이것을 버려야 한다는 것이 이 책의 일관된 주제이다.

이상하지 않은가? 성공을 지향하는 일반적인 자기계발서에서는 결코 보기 어려운 주장이기 때문이다. 약간은 허황된 목표를 설정하고 끊임없이 되뇌이면 결국 내가 바뀌고 세상이 바뀌면서 원하는 바를 이루게 된다는 주장이 더 많지 않은가? 어딘가 모르게 조금은 소심해 보이는 홀리데이의 글이 내 마음을 조금씩 파고들었다.
권위를 가진다는 것과 권위 있는 자리에 있다는 것은 같지 않다.
만약 당신이 이미 알고 있다고 생각한다면 당신은 결코 그것을 배울 수 없다. 
무엇보다 중요한 것은 지나친 열정에 사로잡히지 않는 것이다.
그 일은 누군가에게 굽신거리는 일이 아니라 다른 사람이 멋있어 질 수 있도록 지원하는 일이다.
우리가 이룬 목표를 이뤘을 때 거기에 장엄한 대서사라는 것은 없다. 그와 같은 성공이 일어났을 때 당신은 단지 우연히 거기에 있었을 뿐이다.
어떤 독일 작가는 메르켈의 50번째 생일에 바친 축사에서 그녀의 가장 중요한 무기는 '가식 없음'이라고 했다.
스포트라이트를 좇지 마라.
당신은 증오나 분노가 아니라 이미 일어난 일을 인정하고 받아들여야 한다.
좀 더 유명해지고 싶다. 남을 통제하고 싶다. 리더가 되고 싶다... 이런 겉으로 보이는 성취에 집착하지 말자. 스스로가 생각하는 자기만의 특별함에 매몰되지 않고, 자유로운 마음으로 당신이 이루고자 하는 바를 이루어나갈 수 있기를 바란다(서론에서).  

성공보다 더 큰 가치를 찾아라. 성공의 정의는 사람마다 같지 않을 것이다. 중요한 것은 적어도 지금보다 더 바르게 되려는 노력을 해야 한다는 것이다.



2017년 9월 19일 화요일

독서 기록: 휴먼 3.0, 트랜스 휴먼, 신체증강휴먼...

얼마 전에 연구관련 기획문건을 쓰면서 참조를 했던 자료의 제목이 신체증강휴먼이었다. 구글에서 이 단어로 검색을 했던 참조했던 PDF 파일이 그대로 나온다(링크). 한국보건산업진흥원 주소의 하위에서 발견되는 이 자료는 첫쪽에 '2017 미래유망기술 프로그램'이라는 제목이 붙어있지만 머리말이 없어서 어떤 취지에서 만들어진 자료인지 알 길이 없다. 한국보건산업진흥원 메인페이지의 통합검색창에 '신체증강휴먼'을 입력해도 이 문서의 링크가 나오지 않는다. 오로지 구글 검색을 통해서만 나오는 희한한 문서이다. 이 자료에 따르면 신체증강휴먼 기술은 신체에 부착하거나 신체의 일부분으로 결합시켜 인체의 능력을 증강 보완하고 인간의 의지에 따라 조절이 가능한 모든 기술을 의미한다.

트랜스휴머니즘에 대한 온라인 설문조사에 응한 일도 있었다. 제목은 '인간기술융합의 트랜스휴먼 시대 미래사회 핵심 이슈 전문가 조사'였다. 트랜스휴머니즘이란 "기술을 적극적으로 활용해서 신체의 변형, 확대, 증강을 도모하고 정신적, 육체적 능력을 향상하려는 문화적이고 지적인 운동. 이를 통해 인간성(humanity), 정상성(normality)에 대한 통념을 끊임없이 허물고 확장하는 것을 목적으로 함"으로 정의하였다.

조엘 가로의 책 <급진적 진화>에서는 강화인이라는 표현을 사용하였다. 이 책을 읽고 나서 나는 곧바로 레이 커즈와일의 <특이점이 온다>를 읽었다. 과거의 지식과 경험으로 예측할 수 없는 고도 기술의 미래사회에서는 한계효용증가의 법칙에 따라 더욱 놀라운 일이 벌어질 것이다. 인간과 인공지능, 인간과 컴퓨터, 인간과 기술이 구별이 되지 않는 시대가 오면 이러한 신체증강휴먼, 트랜스휴먼, 강화인이 사회를 주도하게 될지도 모르는 일이다.

지난주에 읽은 책 <휴먼 3.0: 미래 사회를 지배할 새로운 인류의 탄생>(피터 노왁 지음)도 이러한 맥락에서 크게 벗어나지 않는다. 그의 또다른 저작인 '섹스, 폭탄, 그리고 햄버거'는 나중에 꼭 읽어볼 생각이다.


여기에 4차 산업혁명까지 곁들이면 마래 담론에서 빼먹어서는 안될 모든 주제를 모두 담는 셈이 되겠다. 미래를 대비한다는 것은 분명 중요한 일이지만 한낱 유행어로 끝나고 마는 것은 아닌지 모르겠다. 지난 주말, 서울 종로의 모 공공장소(서울특별시 사적의 하나)에 마련된 휴게장소에 잠시 앉아있는데 옆쪽 테이블에서는 60대 이상은 됨직한 어르신들 예닐곱이 모임을 갖고 있었다. 모임을 주도하는 강연자는 장기를 계속 바꾸어 이식해 나가면서 사람이 영원히 살 수 있게될 미래의 기술에 대하여 이야기하고 있었다. 내가 보기에는 분명히 동양철학이나 신흥종교와 관련된 모임으로 느껴졌는데 말이다!

저자가 미래에 새로운 인간이 탄생하면서 불륜은 증가하나 섹스는 감소하고, 자아를 형성하는 공간이 사라지고, 기술발전으로 종교가 소멸할 것으로 내다보았다. 결국 세계화된 조화 대 만연하는 개인주의는 서로가 윈-윈 하는 새로운 통합으로 이어질 것으로 예견하였다. 기술의 발전이 주는 해악을 분명히 인지하면서 모두가 번영하는 미래에 대한 낙관적인 전망으로 마무리를 하였다.

나는 미래에 대해서 그다지 낙관적인 생각을 갖고 있지 못하다. 불확실한 것은 점점 많아지는데 사람들은 확실한 방법을 미리 찾기 위해서 지나치게 몰두한다. 단언코 이것 하나만은 확실하다고 본다. 일자리는 줄어들 것이다!

Synology NAS의 디스크 교체는 실패인가 성공인가?

시놀로지 디스크스테이션(NAS) DS1512+의 하드디스크드라이브 5 개를 전부 교체하는 작업이 무려 일주일 만에 끝이 났다. 변형된 RAID의 일종인 SHR(Synology Hybrid RAID)를 사용한 장비이므로 드라이브를 하나씩 새것으로 교체하면서 수정을 거치면 파일이 그대로 보존된 상태로 교체 작업이 아주 간편하게 끝날 것으로 기대했었다. 드라이브 하나를 교체한 뒤 패리티 수정을 하는데 하루가 걸리니 일주일이면 모든 과정이 무난히 끝날 것으로 예상을 했었던 것이다. 파일은 전부 Dell PowerVault MD1200 DAS(direct attached storage)로 백업을 하였으므로 만약 실패를 해도 자료를 원상복구하는 데에는 문제가 없었다.

세번째의 드라이브를 교체하면서 상황이 조금씩 꼬이기 시작하였다. 전날 저녁 분명히 패리티 수정이 60% 이상 진행된 것을 보고 퇴근하였었는데 아침에 출근을 하여 확인하니 30% 정도로 오히려 후퇴한 것이 아닌가? 중간에 문제가 있어서 패리티 수정을 다시 시작한 것일까? 마지막 다섯번째 드라이브를 교체할 때까지 같은 현상이 나타났다. 어쨌든 예상한 시간을 초과하여 교체가 다 끝났다고 생각하고 늘어난 저장용량을 적용하려는데 드라이브에 이상이 있다는 메시지가 나온다. NAS를 재부팅을 하였는데 이때부터 문제가 시작된 것이다. 제대로 부팅이 안되는 것이다. 장비 전면의 LED 표시도 이상하고, 웹으로 접속도 안된다.

무엇이 문제일까.

예전에 쓰던 디스크를 하나 꽂아 보았다. 정상적으로 부팅은 된다. NAS에 이상은 없다는 뜻이다. 저장공간 수정을 하지 않고 새 디스크를 하나씩 꽂아가면서 부팅이 잘 됨을 확인한 뒤, 아예 전면적인 저장공간 재설치를 해 버렸다. 즉 일주일에 걸친 교체와 자동 복구는 하나도 소용이 없었던 것이다. 원래 계획대로 5 개 디스크를 한번에 교체하여 새로 설정을 하였다면 하루 정도에 모든 일이 끝났었을 것이다.

이제 리눅스 클라이언트 쪽으로 가 보았다. NAS의 공유 저장소를 NFS로 마운트하는 예전 설정을 그대로 사용하였지만 오직 root가 읽을 수만 있는 권한으로 제한된 상태이다. NAS의 저장공간을 새로 설치하면서 설정을 고쳐야만 하는 상황인 것이다. NFS로 파일시스템을 공유할 때에는 계정명이 아니라 숫자 uid를 기반으로 한다고 하였다. 서버, 즉 NAS쪽에서 이를 건드려야 하는데 어떻게 하는지를 잘 모르겠다. 어림짐작으로 제어판의 NFS 규칙 편집 창에서 Squash 설정을 '매핑 없음'에서 'admin에 root 매핑'으로 바꾼 뒤 NAS를 재부팅하였다. 리눅스 클라이언트로 가니 이제 NAS 공간이 읽고 쓸 수 있게 바뀌었다. 실제로는 drwxrwxrwx 상태라서 하부 디렉토리 수준에서 손을 대야만 했다. 상세한 것은 Synology 지식기반의 로컬 네트워크 내에서 Synology NAS의 파일에 액세스하는 방법(NFS) 항목을 참고하라.


NAS로 ssh 로그인이 되도록 만들면 일반적인 리눅스 기반의 NFS server를 다루듯이 설정을 바꿀 수 있을 것이다. 하지만 아직은 5000번 포트로 NAS에 접속하여 설정을 건드리는 것이 편하다.

이렇게 하여 지난 6월 말부터 계획한 스토리지 증설 '사업'은 마무리되었다. 요약하자면 다음의 일들을 수행한 셈이다.
  • Dell PowerVault MD1200(DAS)을 도입하여 Dell PowerEdge R910 서버에 연결하였다.
  • 모든 유전체 관련 데이터를 DAS로 옮겼다. Synology DiskStation DS1512+(NAS)에 있던 파일도 마찬가지로 복사하였다.
  • NAS의 HDD를 기존의 4 TB에서 6 TB의 것으로 교체하여 저장 용량을 늘렸다. NAS는 만 4년이 조금 넘게 24시간 구동하던 것이다.


2017년 9월 17일 일요일

독서 기록: 차가운 계산기('I spend, therefore I am')

지은이: 필립 로스코(스코틀랜드 세인트앤드루스 대학교 경영대학원 경영학부 부교수)
옮긴이: 홍기빈 글로벌정치경제연구소에 소개된 글


책의 서론을 읽으면서 묘한 흥분감과 함께 이렇게 몰입이 되기는 처음이었다. 세상 모든 것에 가격을 매길 수 있을까? 심지어 누구나 하나밖에 갖고 있지 않는 목숨에 대해서도? 만약 목숨에 가격표를 붙일 수 있다면 과연 얼마라고 써야 합당할까? 그 사람이 평생 벌어들이는 '급여'에 약간을 덧붙인 것으로 충분할까? 아니면 우리를 둘러싼 모든 것, 우리가 행동하는 모든 것, 심지어 감정이나 타인에 대한 배려, 공동체 의식까지도 가격표를 붙여서 시장에서 자유롭게 거래하게 하면 모든 문제가 해결될까? '비용-편익 분석'을 통해서 행동하면 세상은 정말 합리적으로 돌아갈까? 심지어 자살이라는 극단적인 선택을 하는 사람들도 비용-편익 분석에 따라서 행동한 것일까?

경제학의 시작은 과학이었는지도 모른다. 원시적인 공동체 사회에서 거래라는 개념이 생겨나고, 화폐와 시장이 생기고, 재화에 대한 가격이 어떻게 결정되는지를 설명하려는 시도에서 만들어졌을 것이다(이것은 순전히 나의 생각으로서 옮긴이의 견해는 그러하지 않다). 그러다가 세상이 돌아가는 원리를 이렇게 바꾸면 모두가 번영하게 될 것이라는 믿음으로 바뀌고 만 것이라는 생각이 든다. 이제는 공학을 넘어서 일종의 '규범'과 같은 것처럼 변하고 말았다.
경제학은 우리가 알고 있는 바의 근대적 의미의 <과학>을 지향한 적이 없다... 다시 말해 18세기에서 19세기에 이르는 어느 시점에서 서유럽 문명에서 형성된 <공리주의적 인간관>, 즉 인간의 본성을 호모 에코노미쿠스로 파악하는 형이상학적·도덕적 관점이 실증 과학으로 변장하여 마치 자연과학과 같은 의미에서의 <과학>인 것처럼 행세하고 있다는 이야기다. - 옮긴이의 말 중에서
이 책이 경제학 자체를 비판한 것인지 혹은 자본주의를 비판한 것인지 명료하게 구별하기가 힘들 정도로 나의 지식 수준은 일천하다. 그러나 최근까지도 쏟아져 나오는 경제경영서를 나름대로 솔깃하게 귀를 기울이며 읽던 나에게 이 책은 큰 충격을 주었다. 결론 부분에서 저자의 글 일부를 인용해 본다.
경제학은 이 세계가 어떤 모습이 되어야 하는지에 대해서 무슨 전문적 지식에 대한 정답 같은 것을 댈 수 있는 학문이 아니다. 따라서 우리는 경제학의 도움 없이 우리 힘으로 여러가지의 선택을 이루어야 한다.
책장을 넘기는데 어려움이 없었던 것은 대중 저술이기도 하지만 한편으로는 번역가의 능력이기도 하다. 책을 다 읽은 뒤에 독후감을 쓰려고 표지를 살펴보니 홍기빈이라는 낯익은 이름이 보인다. 아... 그가 번역한 글을 이제 처음 읽어보는구나. 내가 하는 홍기빈은 정치경제학자이자 저술가이다. 그의 이메일 주소는 '몽양'으로 시작한다. 현실적인 정치경제학적 문제들에 대한 체계적 비판과 대안 제시라는 그의 관심 분야와도 잘 어울리는 주소이다. 물론 이 '몽양'은 누구나 상식적으로 다 아는 유명한 사람의 아호를 딴 것이라는 가정 하에서다.

나는 홍기빈과 고등학생 시절 일주일 동안의 인연이 있었다. 여러 고등학교의 학생들이 모인 수련회에서 같은 분임에 속했었고 홍기빈은 분임장이어서 장기자랑을 리딩해야 했다. 학생회 '간부'들이 교련복을 입고 모여서 합숙을 하는, 80년대 중반이라는 분위기에 어울리는 그런 딱딱한 수련회였다. 교육 내용은 충효정신을 강조하고 체제에 순응하는 미래 지도자를 길러내기 위한 그런 것이 주였을 것이다. 밤 늦은 시간의 교육에서 조명을 낮추고 부모님의 은혜를 떠올리게 하는 스피커 소리에 감성을 자극받다가 갑자기 단상에 설치된 태극기 주변에 불이 확 켜지는... 솔직히 고백하건대 이러한 감각적인 시청각적 연출에 10대의 나는 조금은 감동을 받았었다. 아마 지금의 보수층이 이 교육에 참관했더라면 무릎을 탁 치면서 '아, 그렇지. 이런 교육이 정말 필요해! 어떻게 지키고 만들어온 대한민국인데...'라고 했을지도 모른다.

내 기억이 맞다면 <서울교육원>이라는 이름의 그 교육원은 경복궁 근처 인왕산이 가까이 보이는 곳에 있었다. 교육 동기생들에게 나누어준 앨범은 이미 오래전에 잃어버렸지만 홍기빈이라는 이름만은 뚜렷이 기억을 하고 있었다. 고등학교 졸업 후 오랜 시간이 지나서 지금은 역사 속으로 사라진 kids 게시판(으와, 추억 '돋는다')에서 그의 글을 발견하고 어떤 일을 하는지 궁금하여 인터넷을 뒤져보았었다. 아마도 10년쯤 전이었던 것 같다. 당시 이메일을 한번 보냈지만 답장은 받은 기억은 없다. 그가 나를 지금도 기억하기를 기대하지는 않는다. 다만 이 어지러운 시대에 비판적인 지식인으로서 활발히 활동을 하는 모습을 보면서 과학자로서 사회 참여에 소극적인 나의 모습을 부끄러워할 뿐이다.

그 교육원의 프로그램에는 음악 시간도 있었다. 교육을 진행한 강사 중에서 유일하게 성함을 기억하는 분은 작곡가 신귀복 선생님이다. 가곡 '얼굴'을 작곡한 바로 그 분이시다(동그라미 그리려다 무심코 그린 얼굴...).

경제학 비판서 독후감을 쓰다가 주제가 널뛰기를 하여 kids BBS까지 이르고 말았다. 나무위키 덕분에 이제 고인이 된 스테어, 픽터, 시만두라는 전설적인 아이디를 다시 기억할 수 있었다. 물론 나는 키즈의 열혈 사용자는 아니어서 특정 게시판이나 회원의 글을 탐독하지는 않았다. 나는 오히려 아라(ara) 비비에스를 열심히 쓰던 사람이었다. 첫 중고 자동차 거래(1995년)도 아라의 vehicle 게시판을 통한 것이었으니까. Dima라는  ID를 쓰던 전정열 선배에게 프라이드 EF를 구입했었다.

내 게시글에 '좋아요(+1)'를 눌러주는 거의 유일한 친구 신정식(thanks!)은 아마 키즈와 아라를 잘 기억하고 있을 것이다. 신정식은 인터넷(특히 이메일의 초기 서비스)에서 한글의 손쉬운 활용을 위하여 지대한 공헌을 한 신화적인 인물이 아니던가. 이런 이들과 인연이 있다는 것이 나로서는 영광일 뿐이다.





2017년 9월 15일 금요일

최근 관람한 대전시향 공연

운좋게도 두 주일 연속으로 대전예술의전당에서 열리는 대전시립교향악단의 공연을 보게 되었다. 새로운 곡과 연주가를 만나는 것은 항상 즐겁고 설레는 일이 아닐 수 없다. 먼저 살펴볼 것은 9월 7일에 있었던 유망주 발굴 콘서트이다. 예술고등학교와 음악대학에 재학 중인 젊은 인재들의 연주를 아주 즐겁게 감상하였다. 기성 연주자만큼의 원숙한 모습을 기대하기는 어렵지만 의외로 훌륭한 연주를 들려주는 신인도 있었다. 평소에 듣기 어려운 새로운 곡을 듣는 것도 큰 기쁨이었. 8 명의 출연자 중에서 기억에 남는 연주를 정리해 본다. 홈스쿨링을 하면서 연주자의 길을 걷는 사람도 몇명 있었다.
  • 바이올린의 이은서. 미국 커티스 음악원 재학 중이다. 시벨리우스의 바이올립 협주곡 라단조(작품 47) 1악장 알레그로 모데라토. 대단히 강렬하고 안정적인 연주. 3악장은 간혹 들은 적이 있었지만 1악장은 처음 듣는 것 같다. 글을 쓰는 지금은 유튜브에서 장영주의 연주로 전곡을 듣고 있다.
  • 호른 양지명. 충남대학교 재학중이다. 글리에르의 호른 협주곡 내림나장조(작품 91) 3악장. 알레그로 모데라토-비바체. 호른은 오케스트라를 구성하는 악기 중에서 내가 가장 좋아하는 소리를 낸다. 마일스 데이비스를 들으면서 트럼펫에도 매력을 느끼고는 있지만 아직은 호른이 더 좋다.
  • 테너 김동현. 충남대학교 재학생이다. 도니제티의 오페라 '람메르무어의 루치아' 중 '세상이여 이제 안녕'을 불렀다. 김동현은 2년쯤 전에 충남대 정심화홀에서 있었던 음대 발표회에서 노래하는 것을 들은 적이 있어서 기억을 하고 있다. 약간 시무룩한 귀염둥이와 같은 둥글둥들한 외모에서 큰 성량이 터져나온다.
다음은 어제(9월 14일) 있었던 대전시향의 마스터즈 시리즈 9편 '전쟁과 갈등 속에 핀 조화와 승리를 만나다'. 레퍼토리는 모짜르트의 바이올린과 비올라를 위한 협주 교향곡(Sinfonia Concertante), 그리고 쇼스타코비치의 교항곡 7번 다장조(작품 60) 레닌그라드. 공연 부제가 이렇게 요란하게 붙은 것은 바로 두번째의 곡 때문이리라.

첫작품에서는 대전시향의 악장을 맡는 김필균(바이올린)과 폴 뉴바우어(비올라)가 협연을 하였다. 김필균은 대전시향 공연때마다 늘 보는 친숙한 사람이고 곡 역시 귀에 익은 밝고 명랑한 곡이다. 두 현악기가 마치 대화를 하듯이 연주를 이어나간다. 항상 음반으로만 듣다가 실제 공연을 보니 정말 흐뭇했다.

처음 듣는 곡인 교향곡 '레닌그라드'는... 정말 큰 규모의 곡이었다. 쉬는 시간이 지나고 연주자들이 입장하면서 무대를 가득 채운다. 나 같은 비전문가는 그저 눈에 뜨이는 악기의 수를 가지고 연주 규모를 짐작하는 수밖에. 하프가 두 대, 콘트라베이스는 여덟 대, 타악기 주자도 여럿이었다. 2차대전 중 나치군에 포위되어 있던 1941년 레닌그라드에서 작곡되었다고 한다. 쇼스타코비치도 가장 자랑스러워하는 작품이라고 하였다. 편성도 대규모였지만 곡의 길이도 상당히 길었다. 인터넷으로 찾아보니 연주시간이 무려 80분이나 된다고 한다. CD 하나에 담기 어려운 길이 아닌가? 앉아서 감상을 하는 내내 이런 생각이 들었다. '연주자, 지휘자 모두 참 힘들겠다...'

이 곡은 1악장이 모든 것을 다 말해주는 것 같다. 가장 인상 깊었던 것은 끊임없이 이어지는 스네어 드럼이었다. 라벨의 '볼레로'가 연상되는... 연주자에게는 미안하지만 저러다가 한번쯤 실수를 하지는 않을까 하는 걱정도 들었다. 다른 악기와 달리 트라이앵글이나 북소리는 박자가 어긋나면 금방 탄로가 나기 때문이다.

전쟁과 승리를 떠올리게 하는 장대한 분위기의 곡이었다. 연주가 끝나니 박수가 끝날줄을 모른다. 내 경험으로는 너무나 긴 곡을 마치고 나면 연주단이 앵콜에 응하지 않는 때가 종종 있었다. 시간도 많이 지체되고 또 본 연주의 연습에 몰두하느라 앵콜곡을 준비하기 힘든 경우도 있을 것이다. 관객들은 박수를 치며 앵콜을 요청했지만, 상임지휘자 제임스 저드는 두손을 모아 얼굴에 기대어 대면서 이제 그만 돌아가 쉬시라는 귀여운 제스쳐로 공연을 마무리하였다.

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는 같을까 다를까라는 글을 읽어보면 도움이 될 것이다. 이 글에 포함된 동영상을 보면 물을 부어서 커피가 추출되는 동안 커피를 휘젓는 일까지도 벌어진다. 핸드 드립 '교과서'에서는 도저히 있을 수 없는 방식이다. 하지만 커피를 내리는 방법에 정답이라는 것이 어디 있을까?