2017년 10월 21일 토요일

독서 기록

일주일 동안 총 다섯 권의 책을 읽었고 지금은 여섯 번째의 책 <이주하는 인간, 호모 미그란스>를 읽는 중이다. 왼쪽 위부터 시계 방향으로 간단히 느낀 점을 적어본다


나와 세계 Comparing human societies

<총, 균, 쇠>로 유명한 제레드 다이아몬드의 저서이다. 왜 어느 국가는 부유하고 어떤 국가는 가난한가? 개인의 위기가 국가의 위기와는 어떻게 다른가? 사회과학의 매력과 중요성 그리고 어려움을 일곱 부분으로 나누어 설명한 책이다. 우리 사회가 직면한 세 가지 유형의 문제로서 저자가 제시한 것은 지구의 기후변화, 불평등, 그리고 인간에게 중요한 위치를 차지하는 환경자원의 관리 문제이다. 특히 청소년에게 꼭 추천하고 싶은 책이다.

섹스, 폭탄 그리고 햄버거 Sex, bombs, and burgers

부제는 '전쟁과 포르노, 패스트푸드가 빚어낸 현대 과학기술의 역사'이다. 지난 9월에 읽었던 <휴먼 3.0: 미래 사회를 지배할 새로운 인류의 탄생(독서 기록)>의 저자인 과학기술 전문기자 피터 노왁이 2010년에 낸 책이다. 한국어판은 2012년에 나왔다. 포르노르래피, 전쟁, 패스트푸드 등 인류가 만들어낸 것 중에서 그다지 칭송하고 싶지 않은 것들이 이제 우리에게 없어서는 안될 기술로 자리잡게 된 경위를 재미있게 서술하였다. 특히 맥도날드의 창립과 발전 과정은 영화 <파운더(감상 기록)>을 이미 보았던 터라 더욱 흥미있었다. 바비 인형이 기원은 원래 여자 아이들과는 상관이 없었다는 것을 누가 알았겠는가? B급 SF 영화에 관심이 많은 아들에게 추천하고 싶다. 126쪽을 인용해 보자.
(B급 영화라는) 용어는 1920년대와 1930년대 장편 극영화에 덧붙인 부가 영상을 가리키는 말이었다. 그러다 1950년대에 할리우드 아웃사이더들이 만드는 저예산 영화와 동의어가 되었다. 그들은 대개 군에서 촬영 기법을 배운 사람들로서 전시에 개발된 기술을 사용했다. B급 영화로 인기를 얻은 첫 번째 장르는 공상과학물과 공포물이었다.

하얀 석탄

부제는 '지진·미세먼자가 두려운 시민 필독서/바른 에너지 정책을 위한 국민 교양서'이다. 저자는 소설가 이대환이다. 문재인 정부가 들어서면서 탈원전을 향하여 에너지 정책에 중대한 전기가 마련되는가 싶더니 신고리 5·6호기 공론화위원회에서는 바로 어제 공사 재개를 정부에 권고하기로 했다. 온실가스와 미세먼지 발생의 주범으로 많은 사람들이 외면하고 있는 석탄이지만 최신 기술을 접목하면 미래 에너지원으로서 - 사실은 가장 역사가 깊은 에너지원 중 하나이지만 - 가치가 있을 것이라는 주장이다.

슈퍼피셜 코리아

스탠포드대학교의 사회학과 교수인 신기욱의 저서이다. 부제는 '화려한 한국의 빈곤한 풍경'이다. 우리나라는 불안을 원동력 삼아 질주하는 사회요, 관계의 범위를 넓혀가는 네트워킹이 아니라 출신, 학벌, 배경 등 공통 관심사를 찾아내면서 폐쇄적인 관계로 오히려 범위를 좁혀 나가는 수퍼 네트워크 사회이다. 되는 일도 없고 안 되는 일도 없는, 하면 안되는 일을 최소로 금지하는 것이 아니라 할 수 있는 일이 규정에 있지 않으면 못하는 답답한 사회이다. 트럼프 미국 대통령이 5월에 동북아 3국을 방문하면서 한국에서 1박만을 한다고 왜 그렇게 호들갑인가? 그렇다. 저자의 주장대로 미국은 한국에 그렇게 큰 관심이 없다고 보는 것이 맞을지도 모른다. 우린 더 이상 고래 사이에 낀 새우가 아니며, 충분히 '돌고래' 수준의 독자적인 행동을 해도 될 수준의 나라이다. 어찌되었든 우리가 지금까지 꾸려왔고 또 후손들에게 물려주어야 할 나라 아닌가? 이 사회를 활기와 창의가 넘치는 사회로 만들 수 있는 가능성은 얼마든지 있다.

대한민국을 위한 겸손한 제안

80년대 초반 MBC 카메라 출동 기자로 언론인 생활을 시작한 이상로의 저서이다. 부제는 '부유하고 강한 나라가 되는 비결'이다. 약간은 자유주의적 시각에서 더 부유한 대한민국을 만들기 위한 파격적이고도 엉뚱한 제안을 실은 책이다. 예를 들자면 실 거주 목적과 투기적 목적으로 부동산을 보유하는 것을 구별하지 말고, 투기적 목적으로 큰 이익을 실현했다면 여기에 합당한 세금을 매겨서 공공의 목적으로 쓰면 된다는 것이다. 쌀 과잉 공급 문제를 대처하기 위하여 논을 국가가 매입하여 골프장 등으로 운영하되 식량이 부족해질 때를 대비하여 1년 이내에 논으로 되돌릴 수 있게 하자는 것(과연 가능한 일인지는...) 등.

오늘 오후 나의 모습이다. 던킨 도너츠 테라스에서 쿨라타를 마시기에는 조금 쌀쌀하였다.

정해영. 2017년 10월 21일 KAIST에서.




2017년 10월 20일 금요일

Strain, clone and species

어제 Bacillus에 속하는 세균 한 건의 BioProject/BioSample/Genome/SRA 4종 세트를 NCBI에 등록하였다. 매번 느끼는 일이지만 submission portal에 접속을 해보면 사용자 인터페이스가 아주 조금씩 바뀐 것을 알 수 있다. 정보 등록 작업에서 만날 수 있는 여러 상황들을 배려하면서 - 하지만 그러한 이유로 결코 복잡해지지는 않는다 - 웹 인터페이스가 능률적으로 변하고 있는 것이다. 한두 번 경험해 보면 다른 설명자료는 필요가 없이 그 웹페이지 안에서 어떻게 입력을 하고 다음 단계로 넘어가야 하는지 충분히 이해할 수 있다. 별다른 정보는 하나도 없으면서 일단 상단에 이미지부터 띄우고 보는 우리 주변의 웹사이트는 반성을 좀 해야 된다.

예전에는 제출자가 만든 annotation 정보가 없다 하더라도 command line tool을 이용하여 .sqn file을 만들어서 SequinMacroSend에서 파일을 전송해야 했다. 하지만 지금은 submission portal에서 FASTA file을 올리고 필요한 부가 정보를 제공하면 끝이다. 새로운 등록 시스템이 서비스를 개시하여도 과거의 인터페이스(SequinMacroSend)를 즉각 폐쇄하지 않는다는 것 역시 좋은 점이라 생각한다.

등록한 미생물의 BioProject 페이지를 방문해 보았다. taxonomy link를 클릭하니 rank는 species로 나타난다. no rank, 즉 strain이 되어야 하는 것 아니었나? 아마도 BioProject의 target 등록 창에서 스트레인 이름 없이 'Genus species'로만 입력을 해서 그런 것으로 생각되었다. 입력창의 형식은 다음과 같다. 맨 위의 Organism name 창에는 최하위 레벨로는 species까지만 적도록 되어있다. 만약 여기에 Genus species strain_name 또는 Genus species strain:strain_name으로 기재했다면 자동으로 NCBI TaxID 역시 strain 수준에 맞추어 발급되지 않았었을까?


그래서 bioprojecthelp로 이메일을 보내어 이를 strain level로 만들어 달라고 요청하였다. 그랬더니 strain level의 TaxID는 더이상 발급하지 않는것으로 정책이 바뀌었다는 답장이 왔다. 하긴 너무나 많은 개별 (미생물) strain의 유전체 정보 등록 요청이 쇄도하닌 그럴 수밖에 없었을 것이다.
Regarding your request to assign the organism name and TaxID at the strain level, NCBI policy has changed and strain-level TaxIDs are no long assigned, as long as the species is designated. If you are uncertain of the species, our Taxonomy team will assign a TaxID for organism name "'Bacillus sp. P-10"; otherwise, it will remain as currently assigned.
이렇게 정책이 바뀐 것에 대한 공지가 있었지 않았을까? 구글링을 해 보니 2014년도 Standard In Genomic Sciences에 Toward richer metadata for microbial sequences: replacing strain-level NCBI taxonomy taxids with BioProject, BioSample and Assembly record라는 글이 실린 것을 발견하였다. 초록 전문을 인용해 보자.
Microbial genome sequence submissions to the International Nucleotide Sequence Database Collaboration (INSDC) have been annotated with organism names that include the strain identifier. Each of these strain-level names has been assigned a unique ‘taxid’ in the NCBI Taxonomy Database. With the significant growth in genome sequencing, it is not possible to continue with the curation of strain-level taxids. In January 2014, NCBI will cease assigning strain-level taxids. Instead, submitters are encouraged provide strain information and rich metadata with their submission to the sequence database, BioProject and BioSample.
그렇다! 이미 3년 전부터 이렇게 바뀐 제도를 실행하고 있었던 것이다. Strain 수준의 생명체 샘플에 대해서는 더 이상 taxID를 부여하지 않되(어차피 여기에 딸린 정보량도 많지 않다) 대신 BioProject와 BioSample 등록을 통해서 풍부한 메타데이터를 제공받겠다는 뜻이렸다. 주목할만 한 사실은 정책이 새로 바뀌었어도 기존에 있던 자료는 건드리지 않는다는 것이다. 즉 과거에 strain 수준으로 이미 발급된 taxID를 전부 없애거나 상위 랭크의 species로 변경하지 않음을 의미한다.

Strain인가 isolate인가?

Different isolates can be the same strain, but different strains can not be the same isolate. (참고 사이트)
만약 자연계에서 어떤 미생물을 분리했다면 적당한 isolate 이름을 붙이게 된다. 이는 이미 보고된 해당 생명종의 어느 strain에 속할 수도 있고, 새로운 strain에 속할 수도 있다. 사실은 isolate 이름에 해당하는 식별자를 strain에 갖다붙이는 일이 대단히 흔한데, 엄밀하게 따지자면 strain은 taxonomy 관점에서 붙이는 체계이다. Bergey's manual에서는 'A strain is made up of the descendants of a single isolation in pure culture and usually is made up of a succession of cultures ultimately derived from an initial single colony'라고 정의하였다.

Strain, clone and species: comments on three basic concepts of bacteriology

이것은 구글 검색을 통해 찾은 논문의 제목이다. Genomics의 시대가 도래하면서 유성생식을 하지 않는 원핵생물의 species 구별 방법에 대해서 많은 진전이 있었다. 이 논문은 2000년도에 발표된 것이라서 이러한 사항을 수용하고 있지는 못하지만, strain의 개념이 역사적인 맥락에서 어떻게 형성되어 왔는지, 또 taxonomy sense의 strain과 자연계에서의 strain에 대해서도 충실히 설명하고 있는 자료이다. 본 논문에서 예로 든 것은 전부 clinical bacteriology에 해당하는 것이지만, 다른 분야의 미생물학에도 그대로 적용될 수 있다.

2017년 10월 18일 수요일

새롭게 공부하는 RNA-seq data analysis

늘 세균의 genome(sequencing & analysis)만 편식하다가 인체 세포주에서 유래한 RNA-seq data를 건드릴 기회가 생겼다. 아주 드물게 진핵생명체의 RNA-seq data를 다룬 경험이 있지만 워낙 빈도가 적어서 기법을 숙달할 만한 수준에는 조금 부족했었다. 좋은 기회라고 생각하고 데이터를 들여다보기 시작하였다.

라이브러리 제작과 시퀀싱, 기초 분석은 (주)이바이오젠에서 수행한 것이다. Lexogen이라는 회사의 QuantSeq 3' mRNA-seq library prep kit(workflow 그림 설명)를 사용하여 시퀀싱 라이브러리를 만든 뒤 Illumina NextSeq 500(data sheet PDF file)에서 75nt SE 시퀀싱을 한 것이다. 둘 다 내게는 생소한 키트요, 장비가 아닐 수 없다. 왜냐하면 늘 TruSeq 라이브러리 제작 키트를 사용하면 만든 genomic library를 HiSeq 2500 아니면 MiSeq으로 시퀀싱을 한 결과를 받아서 이용했기 때문이다. 그것도 아니면 PacBio RSII였으니까.

2016년 3월에 있었던 이바이오젠의 QuantSeq 실험분석 할인행사 광고를 보자. 이것이 일루미나의 TruSeq standard total RNA에 비교하여 어떤 장점이 있을까? 3'-end를 좀 더 능률적으로 잡아낸다는 것(그래서 gene counting에 유리), 그리고 단편화된 mRNA도 시퀀싱이 가능하다는 것, 비용이 저렴하다는 것 등이다. Transcript의 3'-end에 집중하므로 alternative splicing/isoform을 검출하지는 못하지만, 발현체의 정량적 분석에서는 매우 좋은 키트라고 한다. 일루미나의 TruSeq 키트에서는 stranded mRNA kit가 아닌 경우에는 poly(A) tail을 활용하지 않는다(그림 설명 - 일루미나의 공식 웹사이트는 아니지만 친절하게 잘 설명함). 따라서 한 transcript에 대하여 여러 fragment가 생기고, 이는 발현값을 결정하는데 어려움으로 작용한다.

일루미나의 NextSeq 500은 또 무엇인가? NextSeq 시리즈는 벤치탑 형태의 시퀀싱 장비이다. 웹사이트에 따르면 "The first high-throughput benchtop sequencer"라고 자랑스럽게 소개하였다. 그러면 MiSeq은 benchtop sequencer가 아닌가? 현존하는 일루미나의 benchtop sequencer 3 종(MiniSeq, MiSeq, 그리고 NextSeq)을 비교한 웹사이트를 둘러보면 그럭저럭 이해는 간다. Throughput 측면에서 MiSeq은 진핵생물의 유전체/전사체 시퀀싱을 할 수준이 안된다. 지금 내가 매만지고 있는 QuantSeq 라이브러리의 시퀀싱 결과물은 총 6개의 fastq 파일인데 전부 합치면 10,099,183,772 bp / 132,883,997 seqs; 76.0 bp average이다. 약 10 기가베이스페어, 1억3288만 read나 된다. HiSeq이라면 모르겠지만 MiSeq으로는 감당이 될 수준이 아니다. 그래서 미생물과 진행생물의 시퀀싱을 골고루 서비스하려는 회사에서 선택한 장비인 것으로 생각된다. HiSeq은 아무래도 production scale sequencer로서 가격이 비싸기 때문일 것이다. 그런데 재미있는 것은 benchtop sequencer와 production-scale sequencer 양쪽 카테고리에 NextSeq이 전부 걸쳐있다. 앞으로 내가 시퀀싱 장비를 직접 구입할 일은 없겠지만, 응용 분야에 맞추어 일루미나 장비를 고르고 싶다면 sequencing platform comparison tool 웹사이트를 방문하면 된다.

2014년에 NextSeq 시리즈(500)가 HiSeq X Ten과 같이 출시되었을 때 이를 MiSeq 및 HiSeq과 비교한 글이 있어서 소개하고자 한다.

How dose NextSeq 500 compare with MiSeq and HiSeq?

반면에 7 reasons why the NextSeq 500 is a strange choice라는 글도 있었다. 이 글이 씌여진 것은 2014년이니 이미 3년이나 지난 지금은 상황이 어떻게 변했는지 살펴보는 것도 재미있을 것이다.

우연하게 접한 일이 돌이켜보니 많은 의미가 있던 것으로 평가를 내리게 되는 일이 적지 않게 생긴다. 그래서 내가 '기회'라는 말을 참 좋아한다.

Fold change를 표현하는 방법

생명과학 연구에서 유전자 발현량을 두 조건에 대하여 서로 비교하고자할 때 fold change(FC)를 많이 이용한다. 이 수치는 DEG(differentially expressed gene)을 찾는데 매우 중요한 의미를 갖는다. FC의 정의는 비교 조건(treatment)의 값을 기준 조건(control)의 값으로 나누는 것이다.
FC = treatment / control
두 조건의 값이 같으면 당연히 FC = 1이다.

그런데 두 발현량의 비율을 FC로 표현하는 것에는 몇가지 불편한 점이 따른다. 첫째는 기준 조건의 값이 0일 경우이다. 수학에서 분모가 0인 것은 대단히 좋지 못한 상황이 된다. 만약 FC를 엑셀에서 계산한다면 어떻게 할 것인가? researchgate, seqanswers, biostars 등에는 이에 대한 질문과 꽤 심도있는 대답이 오고가기도 한다. 0을 실험에서 나올 수 없는 값으로 보는 견해도 있고(따라서 아주 작은 숫자로 치환한다든지), 아예 높은 값을 대입하는 사람도 있다고 한다. 실제 세계에서는 모든 조건의 값에 0을 더한 뒤(나중에 log2 transform을 해야 할 일도 있으므로) 모든 조건의 값을 합했을때 일정 값에 미치지 않는 row(=gene)을 제거해버리기도 한다. 예를 들어서 9개 조건의 RNA-seq 데이터를 매트릭스 형태로 합친 다음, 동일 row의 값을 다 더했을때 6이 되지 않으면 그 유전자는 제거하는 것이다.

FC = treatment/control라는 수식을 그대로 따르면 1을 기준으로 너무나 비대칭적인 값을 얻게 된다는 것도 문제이다. 즉 control < treatment이면 FC는 1보다 큰 값을 가지며 그 범위도 매우 넓다. 그러나 control > treatment 이면? 0 < FC < 1이 되어 너무 좁은 범위에 FC가 분포하게 된다. 이를 해결하는 방법 중 하나는 FC를 그대로 쓰지 않고 log2(FC)로 전환하는 것이다. 단 FC = 0인 것은 적절히 제거를 하든지 전처리를 해야 한다.

FC에 밑이 2인 log를 씌우면 대칭적인 값을 얻음과 동시에 음수(-)가 나올 수도 있다. 설명하자면 다음과 같은 것이다.

log2(FC) = 1, 2, 3이면 control에 비하여 treatment가 2배, 4배(22), 8배(2).
log2(FC) = 0이면 control과 treatment는 같다.
log2(FC_ = -1, -2, -3이면 control에 비하여 treatment가 1/2배, 1/4배(2-2, 1/8배(23).

2, 3...이면 22배, 23배로 표현되는 것이 불편한가? 숫자 그대로 2배, 3배를 원하는가? 이런 사람에게는 다른 방식으로 FC를 표현하면 된다. control < treatment이면 FC의 원래 정의(treatment/control)를 그대로 따른다. 그러나 control > treatment라면 새로운 FC, 즉 new FC = - 1/FC를 쓰는 것이다. 이렇게 정의하면 new FC = -2, -3, -4는 control이 treatment에 비하여 2배, 3배, 4배 많다는 뜻이다. 굉장히 자연스럽고 직관적인 표현이다.  대신에 이렇게 정의한 FC는 -1 .. 0 .. 1 범위의 값은 갖지 않는다. 정확히 말하자면 control = treatment일 때에 FC = 1이 되겠지만, 여러 replicate의 값을 normalize한 뒤 평균을 구하면 각 조건 그룹의 값이 완전히 똑같아지는 일은 잘 일어나지 않는다.

CLC Genomics Workbench에서는 FC를 바로 이런 방식으로 표현한다. 매뉴얼의 원문을 그대로 인용해 본다.
  • Fold Change (original values). For a two-group experiment the 'Fold Change' tells you how many times bigger the mean expression value in group 2 (treatment) is relative to that of group 1 (control). If the mean expression value in group 2 is bigger than that in group 1 this value is the mean expression value in group 2 divided by that in group 1. If the mean expression value in group 2 is smaller than that in group 1 the fold change is the mean expression value in group 1 divided by that in group 2 with a negative sign. Thus, if the mean expression levels in group 1 and group 2 are 10 and 50 respectively, the fold change is 5, and if the and if the mean expression levels in group 1 and group 2 are 50 and 10 respectively, the fold change is -5. Entries of plus or minus infinity in the 'Fold Change' columns of the Experiment area represent those where one of the expression values in the calculation is a 0. For experiments with more than two groups, the 'Fold Change' column contains the ratio of the maximum of the mean expression values of the groups to the minimum of the mean expression values of the groups, multiplied by -1 if the group with the maximum mean expression value occurs before the group with the minimum mean expression value (with the ordering: group 1, group 2, ...). (원문 링크)

2017년 10월 17일 화요일

RStudio Cheat Sheets

사오 년쯤 전에 KOBIC 차세대생명정보교육을 통해서 처음으로 R을 배우기 시작했을 때, 작은 종이에 R 활용 시 유용하게 쓸 수 있는 팁을 인쇄하여 배포한 것을 받은 기억이 있다. R을 아주 가끔씩 사용하지만 절대적인 빈도가 높지는 않은 편이라 기본적인 사용법을 종종 잊어버려서 불편함을 느낄 때, 이 쪽지가 남아있었으면 참 좋겠다는 생각을 하고는 했다.

그것과 똑같은 것은 아니지만 인터넷을 돌아다니다가 RStudio Cheat Sheet라는 것을 발견하였다. 잘 알려진 콩글리시로 말하자면 '컨닝 페이퍼'에 해당하는 셈이다. 여러 상황에서의 R 사용법을 요약하여 그림과 함께 PDF 파일로 만든 것이다. Apply 함수, 데이터 임포트, 데이터 시각화 등 빠르게 참조하여 실무에 활용하기에 매우 좋은 주제를 알기쉽게 설명한 자료인 것이다.


독학, 교습, 단기강좌 등을 통해서 체계없이 R을 공부한 결과는 대단히 만족스럽지 못하다. 이제는 R Cookbook과 같은 자료를 참고하여 내가 원하는 분석을 할 수 있을 것으로 자부하면서도 때로는 너무나 기본적인 활용법에 무지함에 스스로 놀라기도 한다. 어쩌면 더욱 중요한 것은 문법이나 라이브러리의 사용법이 아니라 데이터 구조 및 처리/통계적 분석/시각화에 대한 확고한 개념일지도 모른다. 이번에는 도서관에서 교양서적을 빌리면서 국문으로 된 신간 R 입문서도 한 권 빌렸다. 한번에 처음부터 끝까지 훑으면서 내가 미처 파악하지 못했던 기본적인 활용법을 정리하기 위함이다.

내가 주로 활용하는 R 관련 자료들을 펼쳐 보았다. 인터넷에서 돌아다니는 PDF 파일을 인쇄한 것이 대부분이다. 간혹 O'Reilly 등에서 단행본으로 나오던 책의 PDF 파일이 통째로 인터넷에 돌아다니는 것을 보게 되는데, 이를 다운로드하여 다른 곳에 배포하지 않고 개인적으로 활용하는 것이 현행법에 혹시 저촉되는 것은 아닌지 모르겠다.


R에서도 권장하는 스타일이 있을 것이다. assignment operator(할당 연산자)로서 =와 <- 1.4.0="" p="">

2017년 10월 16일 월요일

가장 흔하게 오마주되는 시계들

오마주 시계는 디자인과 로고까지 그대로 빼다박은 모조품(가짜, 짝퉁, 짭, 짜가, 레플리카, 이미테이션...), 즉 의도적으로 정품 시계와 같은 물건처럼 보이도록 만든 제품과는 분명히 다른 도덕적 우위에 있다고 말할 수 있다. 그래도 시계 관련 포럼에서는 늘 회자되는 뜨거운 주제임에는 틀림없다. 오마주 시계를 사느니 세이코나 시티즌의 경제적인 모델(독자적인 디자인)을 구입하겠다는...

오랜 기간 동안 오마주 대상이 된다는 것은 그만큼 디자인적으로 완벽하다는 뜻이 아닐까? 예를 들어 우리나라에서 유달리 인기가 높은 롤렉스 서브마리너를 생각해 보자(관련 뉴스: 롤렉스 서브마리너는 왜 스테디셀러일까?). 국내에서 이 모델은 '섭마'라는 애칭으로도 불린다. 1953년에 처음 출시된 서브마리너는 아직까지도 그 기본 디자인으로부터 그다지 변하지 않았으며(참고: 롤렉스 시계의 역사: 1953-1967) 원래 목적에 맞게 이것을 차고 바닷속 깊이 잠수를 하든, 캐쥬얼한 복장을 하든, 정장을 하든 어떤 상황에서도 무난하게 잘 어울리는 스타일로서 수많은 다이버 시계의 원형이 되었다. 그래서 '최고의 다이버 워치 10선(the 10 best affordable diver watches of 201X, best affordable dive watches, best dive watches under $1000...)'류의 글을 검색하면 롤렉스 서브마리너와 유사한 시계가 줄줄 나온다. 롤렉스 서브마리너는 남자라면 누구나 한번쯤 갖고싶어하는 유려한 스타일의 명품 시계지만 정품의 가격은 너무나 비싸다. 그래서 이를 오마주한 시계가 시중에는 수도 없이 많고, 오마주까지는 아니더라도 롤렉스 서브마리너의 스타일을 따른 시계는 더욱 많다.

https://www.flickr.com/photos/hypophyse/4356626643
롤렉스 서브마리너 5512(재사용 가능 이미지)
모든 남성이 한번쯤은 입맛을 다시는 롤렉스 서브마리너는 1천만원을 훌쩍 넘는 고가의 시계라서 나 같은 서민은 꿈도 꾸기 어렵다. 미도, 오리스, 티쏘, 프레드릭 콘스탄드, 또는 해밀턴처럼 현실 범위 내의 시계는커녕 앞으로 내 일생에 실구매가가 30만원을 넘는 시계를 사게 될 날이 올 것 같지는 않다. 대신 10만원-20만원 수준의 오마주 시계를 한두 개 구입하여 호기심을 충족시키기는 것은 충분히 가능할 것이다. 그러다가 누적 금액이 30만원을 넘길지도 모른다! 그러니 앞의 다짐은 이렇게 바꾸면 어떨까?

앞으로 내 일생에 2년 누적 시계 관련 지출이 30만원을 넘기지 않도록 한다.

이렇게 선언하면 굉장히 소박한 수준의 취미생활이 되고 만다. 물론 이를 빠져나갈 방법은 얼마든지 있다. 이 규정의 실행 개시 일자를 계속 뒤로 미루면 된다.

best (or top) homage watches라는 키워드 조합으로 구글을 검색해 보았다. 검색 결과 중 가장 마음에 드는 두 사이트를 고른 뒤 어떤 시계가 순위에 올라왔는지를 인용해 본다. 각각에서 공통적으로 제시한 시계 4개는 굵은 글씨로 표현하였다.

Top 5 Watches & Their Homage Alternatives
Five Famous watches and their Homage Alternatives

  • Rolex Submariner Date
  • Audemars Picuet Royal Oak
  • Omega Seamaster
  • Breitling Navitimer
  • Rolex Daytona
  • Panerai Luminor
이렇게 역사적으로 유명한 시계의 저렴한 오마주를 파는 곳은 어디일까? 또 어떤 브랜드 명칭을 달고 있을까? 심심풀이로 조사를 해 보았다. 다음은 홈페이지를 통해서 직접 구매가 가능한 오마주 시계의 사이트들이다. 여기서 저렴하다는 말의 의미는 150달러 내외에서 고를만 한 제품을 갖추었음을 뜻한다. 세계의 공장인 중국이란 나라가 없었으면 이런 가격에 이 정도 품질의 기계식 시계를 만나는 것은 쉽지 않다. 가격대가 높은 높은 Steinhardt와 Christopher Ward는 이 범주에 넣지 않았다. EPOSDeep Blue도 마찬가지이다. 모든 오마주 시계, 특별히 롤렉스 서브마리너와 유사한 것들의 종합 조사를 하려는 목적이 아니니 말이다.

Parnis

이런 류의 시계 제조에서는 매우 잘 알려진 곳이다. 특히 파네라이의 오마주인 Parnis Manina Militare 47mm PVD 1950이 두번째 링크에 소개되었다.

Alpha

오메가 씨마스터의 오마주 제품이 괜찮은 듯. 별로 흔하지 않은 롤렉스 익스플로러의 오마주도 꽤 갖추고 있다. 혹시 오메가를 압도하기 위해 알파라는 이름을 지은 것은 아닌지?

Phoibos

2016년에 사업을 시작한 신생 브랜드. 1천미터 다이버 워치와 같은 고품질의 제품을 판매. 150 달러 미만의 것은 300M dive watch 카테고리의 쿼츠 제품분이다.

Tiger Concept

커스터마이제이션용 부품도 판매함.

dajiwatch

여기는 Corguet, Debert, Parnis, BLIGER, Ossnar, Neiton, GARTON 등 다양한 브랜드 제품과 부품을 판매한다. 어디까지가 오마주이고 어디부터가 고유 디자인인지는 잘 모르겠다.

Tisell

국내 브랜드. 부품을 중국에서 직접 조달하여 검수 후 제작하여 판매하는 곳으로 알고 있다. 국내외에서 꽤 호평을 받았지만 유달리 안티도 많은 듯.

기타 브랜드(ebay, aliexpress, amazon에서 구입 가능)

Invicta, Reginald, Steel Bagelsport 등. 인빅타를 이런 시계와 같은 등급에 놓는 것은 실은 적합하지 않다.

사면 안되는 것

Winner의 서브마리너. 이십 몇 달러의 오토매틱 시계가 국내로 수입되는 과정에서 설명서와 함께케이스에 담기면서 72,800원에 팔린다. 케이스는 스테인리스 스틸이 아니고 크롬(혹은 니켈?)을 도금한 황동이라서 날카로운 것에 긇히면 벗겨진다. 구입처 홈페이지에는 스테인리스 스틸이라고 기재해 놓았다.

이상의 것 중에서 특별히 관심을 갖고 있는 것은 Alpha(Rolex Explorer homage, 국내의 사용기; 또는 Omega Plane Ocean homage black bezel or orange bezel), Tiger Concept의 62630 (Rolex Daytona Homage, Epson 쿼츠 무브먼트 사용, 국내의 사용기), Debert(at http://dajiwatch.com/)의 나일론 스트랩을 끼운 예쁜 Omega Seamaster homage(item code DT-024 or DT-025, 아마존의 상품평) 정도이다. 전부 Miyota 무브먼트를 사용하였기에 성능은 그런대로 만족할 만한 수준이 될 것으로 생각한다. 단 방수성능이나 마감에 대해서는 지나치게 큰 기대를 하지 않는 것이 좋을지도 모른다. 다이버 시계로서 전반적인 품질에 만족하려면 여기에 나열한 오마주 시계가 아닌 최소한 세이코 SKX007/009/013이나 오리엔트 Mako/Ray 정도는 되어야 할 것이다.

2017년 10월 12일 목요일

FASTQ 파일에서 목록에 없는 read를 추출하기

수십만 read 이상이 수록된 Fastq 파일에서 특정 read만을 추출하고 싶을 때가 있다. 추출해야 할 read의 ID가 별도의 텍스트 파일(read.list)에 들어있다면 seqtk을 사용하여 다음과 같이 실행하면 된다.
seqtk subseq in.fastq read.list > out.fastq
이번에는 반대의 경우를 생각해 보자. read.list에 없는 read만을 in.fastq 파일에서 추출하려면? read.list를 읽어서 read ID를 key로 삼는 해쉬를 만든 뒤, in.fastq를 읽어들여서 존재하지 않는 read ID를 만나면 이것을 4줄 단위로 출력하는 펄 스크립트를 짜야 하나? 일단은 검색에 의존해 보기로 했다. 역시 누군가는 앞서서 나와 비슷한 고민을 했고, 성실한 네티즌들은 이에 대한 해결책을 이미 제시하였다.

[Biostars] How to remove a list of reads from fastq file?

질문자는 매우 기본에 충실한 방법으로 이 문제를 해결하고 있었다. 우선 fastq 파일로부터 read ID를 추출하여 목록 파일을 만든다.
zcat in.fastq.gz | awk 'NR%4==1' | sed 's/@//' > in.fastq.readsID
그러고 나서 in.fastq.readsID에 해당하지 않는 read의 ID를 추출한다. grep에서 -v 옵션을 주면 match가 되지 않는 라인을 출력한다(all lines but those matching are printed). 나는 부끄럽게도 이 기능을 아직까지 전혀 모르고 있었다! 미련하게도 이런 종류의 일에서는 늘 Perl의 해쉬를 사용하려고 했었으니...
grep -f reads-remove-list in.fastq.readsID -v > remaining.list
마지막으로 seqtk subseq를 사용한다.
seqtk subseq in.fastq.gz remaining.list | gzip - > remaining.fastq.gz
손이 많이 가는 방식이지만 기본에 매우 충실하다. awk를 사용하여 4줄마다 한번씩 줄을 출력하고, sed를 써서 서열 ID 앞부분의 '@'를 제거하고, 마지막으로 grep으로 match되지 않은 라인을 출력하고... 인스턴트 커피 가루와 프리마, 설탕을 티스푼으로 정성스럽게(그러나 취향에 맞게) 떠서 커피를 타듯이 처리를 한 것이다. 질문자는 이렇게 하는 것이 너무 번거롭다고 생각하여 믹스커피 봉지를 뜯듯이 좀더 쉽게 파일 처리를 하는 방법을 물은 것이다.

제시된 해결방법 중 가장 마음에 드는 것은 BBMap의 filterbyname.sh 스크립트를 이용하는 것이다. BBMap은 미국 Joint Genome Institute에서 일하는 Brian Bushnell이 만든 종합선물세트 비슷한 것이다. 지금은 BBTools라는 확장된 패키지로 불리는 것 같다. filterbyname.sh가 좋은 점은 fastq file pair를 동시에 다룰 수 있다는 점이다. seqtk subseq를 사용하려면 infile_1.fastq와 infile_2.fastq에 대해서 각각 작업을 해야 된다. 맨 뒤의 include=f가 바로 목록에 있는 것을 제외하고 출력하게 만드는 스위치인 셈이다.
filterbyname.sh in=infile_1.fq in2=infile_2.fq out=outfile_1.fq out2=outfile_2.fq names=readID.list include=f
단, 오래전에 시퀀싱한 결과물이나 ART로 생성한 simulated read pair를 다룰 때에는 조심해야 한다. read ID의 끝부분에 /1 또는 /2의 tag가 붙어있기 때문이다. 요즘의 일루미나 시퀀싱 결과물에서는 read ID와 공백을 두고 direction tag이 존재하므로 read ID 목록 파일을 이용하여 원본 fastq 파일을 다루기에 좋다.

(old style) @HWI-EAS390_0001:7:120:12431:20961#0/2
(ART style) @chromosome_ST307PT01-2132000/1
(new style) @M00220:56:000000000-AML1R:1:1101:12360:1835 1:N:0:5

2017년 10월 11일 수요일

SeqKit: a cross-platform and ultrafast toolkit for FASTA/Q file manipulation (PLoS One 2016)



FASTQA/Q 서열 파일 조작용 유틸리티인 seqtk와 이름이 흡사해서 자칫 잘못하다가 그냥 지나칠 뻔하였는데, 자세히 살펴보니 2016년도에 PLoS One에 발표된 매우 '신선한' 프로그램이었다. 다른 프로그램과 기능을 비교한 표를 인용하여 본다. 못하는 일이 없다!



논문의 제목에도 표현이 되었듯이 SeqKit의 특징을 요약하자면 cross-platform과 ultrafast로 표현할 수 있다. 대부분의 생명정보학 프로그램이 리눅스 혹은 Mac에서 돌아가는 것을 생각한다면 Windows에서도 실행 가능하다는 것은 매력이 아닐 수 없다.

하지만 명령행 방식의 application을 실제 Windows에서 실행하기에는 매우 불편하다(나만 그런가?). 리눅스의 command line 환경(Shell)에 너무 익숙해진 상태라서 그럴 것이다. 환경변수의 개념이 윈도우에서는 어떻게 구현되는지 나는 아직도 잘 모른다. 리눅스 shell이 제공하는 직관적인 편집 기능 또한 윈도우에서는 커맨드 창에서는 먹히질 않으니 더욱 그러하다. Mac을 쓰는 사람은 리눅스의 터미널 창과 거의 흡사한 환경을 이용하게 되니 이야기는 달라진다.

많은 기능을 갖는 super tool이 나온다 해도 과거에 쓰던 프로그램을 다 버리고 새 도구로 전적으로 갈아타는 일은 잘 벌어지지 않는다. 새 도구는 특정 기능이 필요한 때에만 사용하게 되고, 기존에 익숙하게 쓰던 도구를 계속 쓰는 것이다. 그만큼 습관이란 무서운 것. 그리고 아무리 고차원적인 도구가 나온다 할지라도 shell script와 awk, 그리고 sed는 버릴 수 없는 것과 마찬가지이다.

Paired fastq file에서 subsampling을 하는 예제

다른 것들에 비해서 사이즈가 비정상적으로 큰 fastq file의 쌍으로부터 30%의 샘플을 취하는 예제이다. 이보다 더 좋은 방법이 있다면 알려주시길!
seqkit sample -p 0.3 ../ABA59_1.fastq > subABA59_1.fastq
seqkit seq --name --only-id subABA59_1.fastq > id.txt
seqkit grep --pattern-file id.txt ../ABA59_2.fastq > subABA59_2.fastq

쿼츠 손목시계가 망가지는 대표적인 원인

충격

손목시계에 고장을 일으키는 가장 흔한 원인일 것이다. 충격의 정도가 약하면 케이스나 유리에 흠집이 나는 정도로 그치겠지만 심한 충격을 받으면 시계바늘이나 인덱스가 떨어져 나간다. 다이얼을 고정하는 핀이 부러지는 일도 생긴다. 다음은 복합적인 문제가 일어났던 내 손목시계의 사진이다. 처음에는 시침이 빠져서 정렬이 틀어진 것만 인지하고 있었다. 그러나 수리점에 가서 더 큰 문제가 있음을 발견하였다. 사진에서 빨강색 네모로 표시한 곳을 보라. 바늘의 축이 서브다이얼 정중앙에 있지 않다. 시계를 분해해보니 다이얼을 고정하는 핀 두 개 중에서 하나가 부러져서 다이얼이 옆으로 밀린 것이었다. 정식 서비스센터로 보냈더라면 사용자 부주의로 꽤 비싼 수리 비용을 물었을 것이고, 다이얼도 새것으로 교체했을지도 모른다. 그러나 동네 시계방에는 부품이 없으니 다이얼을 무브먼트에 접착하는 방식으로 수리를 해 주었다. 다이얼 자체는 앞으로 고장날 일이 거의 없고 변색이 될 재질도 아니니 이렇게 수리를 해도 별다른 문제는 없을 것이다.

쿼츠 무브먼트 내에도 움직이는 작은 부품이 있지만 워낙 작고 가벼워서 시계를 떨어뜨린다 해도 이 부품들이 이탈할 가능성은 높지 않다. 그렇게 되기 전에 바늘이나 다이얼이 떨어지는 일이 벌어질 것이다.

간혹 용두가 부러지는 일도 생긴다. 부러진 용두를 잃어버리면 정말 난감하다! 용두를 갖고 있다 하여도 남아있는 심을 제거하는 일이 남는다. 남은 심의 길이가 제법 된다면 돌려서 빼면 되겠지만, 용두 내에 쏙 들어간 상태라면 선반에 물려야 한다나?

시침이 똑바로 정렬하지 못한 것이 문제가 아니라. 다이얼 자체가 고정이 되지 않은 것이 더 큰 문제이다. 이*트 시계점에서 가죽줄로 교체를 하다가 내가 보는 앞에서 시계 본체를 바닥에 심하게 떨어뜨린 것이 이 고장을 일으킨 원인으로 생각하고 있다. 그 즉시 클레임을 제기하지 못한 것이 안타까울 뿐이다.

수분 침투

시계의 방수 성능이 아무리 좋다고 한들 용두가 열린 상태에서는 물이 들어갈 수 있다. 전지 교체 후 뒷뚜껑을 제대로 닫지 않았거나 개스킷이 노후한 상태라면 그리로도 수분이 침투할 수 있다. 침투된 수분은 금속 부품에 부식을 일으켜 못쓰게 만든다.

배터리 누액

수명이 다 된 배터리는 내부 압력이 높아지면서 전해액이 밖으로 스며나오기 시작한다. 전해액은 부식성이 매우 높아서 내부 부품에 치명적인 손상을 입힌다. 수분에 의한 녹은 닦아낼 수라도 있지만 배터리 누액은 심각한 부식을 일으킨다. 따라서 배터리가 다 된 손목시계가 있다면 즉시 새 것으로 교체를 하는 것이 현명하다. 무브먼트에 따라서는 배터리가 소모된 경우 1초 간격이 아니라 2초(혹은 그 이상?)에 한번씩 크게 움직여서 교체할 때가 되었음을 알리는 기능도 있다.

국내 시계 시장은 세계 7위 규모로 급성장하였는데...

국내 시계 '산업'은 점점 쪼그라들고 있다. 80년대만 하더라도 국내 시계 산업은 꽤 큰 규모를 유지하고 있었다. 그러나 중국산 저가품과 명품 시계에 밀려서 사람들은 더 이상 국산 브랜드의 시계를 찾지 않는다. 어떤 사람은 무브먼트를 자체 제작하지 못하는 기술력을 탓하지만, 매우 복합적인 원인이 있을 것이다. 

위에서 사진으로 소개한 시계의 줄을 갈러 이*트에 갔을 때의 경험이다. 그곳은 시계 '판매'로만 계약이 된 점포라서 수리를 하면 안된다고 한다. 시계줄 교체는 수리의 영역이고, 배터리 교체는 허용이 되는 것인지? 어쨌든 나는 두 가지 서비스를 다 받았고, 배터리 교체 비용은 카드로, 시계줄 교체 비용은 현물로(?) 결제하는 희한한 경험을 했다. 설명을 하자면 시계점 주인이 필요로 하는 물건을 이*트 매장에서 골라서 내가 결제만 하고 물건을 넘겨주는 방식으로 말이다.

이해하기 힘든 방식이었다. 시계를 다루는 솜씨가 너무나 서툴러서 손님이 보는 앞에서 몇번이나 공구와 자재를 떨어뜨리지를 않나, 게다가 앉아서 일하는 작업대가 없이 서서 일을 하게 되니 얼마나 불안한가! 그리고 이해가 되지 않는 결제 방식... 만약 내가 근거가 필요하여 영수증을 발급해 달라고 하면 어떻게 되었을까? 이에 대해 이*트에 제보를 하면 이 시계점은 계약 위반으로 곤란을 겪게 되는 것인가?

시장의 규모는 커진데 반하여 일선 시장에서는 이런 상식 이하의 일이 벌어지고 있다. 얼마 전 시계 관련 인터넷 커뮤니티에서 이런 글을 읽은 적이 있다. 손님이 맡긴 수천만원짜리 카르티에 시계를 시계방 주인이 저녁때 모임이 있다면서 차고 외출을 했다고 한다. 어차피 폴리싱을 맡겼으니 차다가 흠집이 나도 상관이 없다면서... 

2017년 10월 10일 화요일

블로그를 운영한다는 것

열흘에 이르는 긴 연휴를 보내면서 휴대폰을 만지작거리고 주변 나들이를 한 것 말고는 지적(知的) 활동을 전혀 하지 않았다. 책은 거의 읽지 않았고 글씨도 전혀 쓰지 않았다. 몇 편의 영화를 본 것은 그저 시간 때움에 불과하다. 극장에서는 킹스맨: 골든 서클을 보았고 넷플릭스로는 배트맨 비긴즈, 맨 오브 스틸, 세렌디피티, 레볼루셔너리 로드를 보았다. 바로 어제 보았던 레볼루셔너리 로드는 정말 충격적이었다. 그저 심각한 갈등이 포함된 드라마라고 생각했었는데 그게 아니었다. 길 이름이 제목이었던 영화 <선셋 대로>를 떠올리게 했다.

이렇게 긴 기간을 푹 쉬고 있으려니 당연히 블로깅도 게을리하였다. 다시 무엇인가를 써야 하겠다는 생각에 앞어서 나는 왜 블로그를 운영하는가라는 물음을 던져 보았다. 연재소설 작가처럼 새 글이 올라오기를 기다리는 독자가 있는 것도 아니요, 이를 통해서 개인 홍보를 하거나 수익을 올리는 것도 아니다. 샘물이 흐르듯, 업무와 일상 생활을 하면서 자연적으로 넘쳐나는 생각과 정보, 경험을 기록으로 남기고 싶다는 욕구에 충실하기 위해서다.

여기서 주의해야 할 점이 하나 있으니, 인터넷 공간은 일기장이 아니라는 것이다. 개인적인 사항이 지나치게 공개되면 본의아니게 피해를 당할 수도 있고, 이를 읽는 다른 사람에게 좋든 나쁘든 영향을 미칠 수 있다. 더 중요한 것은 단순한 화풀이를 고발 정신과 착각해서는 안된다는 것이다. 개인 차원 혹은 자신이 속한 커뮤니티에서 충분히 자정작용이 일어나서 개선될 수 있을 문제를 너무나 쉽게 공론화를 시키게 된다는 것이다. 긍정적인 면이 없는 것은 아니지만 이는 사회적인 피로를 불러 일으킨다. 예를 들어서 여러 형태의 갑질 논쟁이 있다. 손님은 손님대로, 자영업자는 자영업자대로 갑질을 하는 '진상' 손님 혹은 어처구니없는 영업주를 공개하여 비난하기에 바쁘다. 거래 관계로 얽힌 경우 자신이 지불한 요금에 대한 정당한 서비스를 요구하는 목소리를 낼 수 있고, 사업주 또는 다양한 형태의 감정 노동자 역시 자신의 억울함을 정당하게 호소할 수 있다. 그런데 여기에서 그치는 것이 아니라 길을 가다가 만난 사람, 아파트 주자장에 삐딱하게 차를 세운 사람, 식당에서 만난 옆자리의 불쾌한 손님 등 고발할 일이 너무나 많다는 것이 문제이다. 다들 분노의 대상을 찾아서 칼을 갈고 있는 것처럼 매섭기만 하다. 인터넷이라는 존재가 긍정적인 역할을 하는 고발의 창구 역할을 하는 것인지, 단지 나쁜 감정(특히 혐오)을 쏟아붓는 쓰레기통인지 요즘은 알 수가 없다.

이런 글들이 주로 올라오는 커뮤니티 사이트는 묘한 중독성이 있어서 바깥 세상에 어떤 일들이 돌아가는지 알아보겠다는 핑계로 자꾸 들여다보게 된다. 참으로 부끄러운 일이다. 이러한 글들에 대해서 가벼운 관심을 가질 것이 아니라, 나의 주관과 철학을 갖고서 세상이 돌아가는 것을 바라보아야 할 것이다. 어제는 은행동에 나갔다가 알라딘 중고서점에서 존 스토셀의 <왜 정부는 하는 일마다 실패하는가>(리디북스 무료요약)를 만지작거리다가 말았다. 촛불혁명에 의해 새 정부가 들어서면서 정부가 나서서 많은 일들을 해결해주기를 기대하는 요즈음 생뚱맞게 작은 정부 옹호론이라니. 물론 이러한 시각에 내가 찬성한다는 것은 아니며, 정부가 나서서 모든 일을 해결해 주리라는 기대의 한계는 어디까지인지를 알아보고 싶은 것에 다름아니다. 아마도 곧 책을 구입하게 될 것만 같다.

마침 2017년 노벨 경제학상(보다 정확히 말하자면 '알프레드 노벨을 기리는 스웨덴 중앙은행 경제학상')은 <넛지(nudge)-똑똑한 선택을 이끄는 힘>의 공저자로 잘 알려진 미국 시카고대의 리처드 H. 탈러에게 돌아갔다는 소식이 들린다. 고전 경제학적 관점에서는 인간은 완벽하게 합리적인 경제적 판단을 내릴 것으로 기대하지만 실제로는 그렇지가 않다. 그리고 아무리 그런 의도를 갖고 있다고 해도 결과는 기대한 것과 영 딴판으로 나올 수도 있다. 정부가 하는 일마다 실패하는 것도 이와 어느 정도는 일맥상통하는 면이 있다. 좋은 지도자가 나와서 단칼에 모든 문제(적폐?)를 청산하고 합리적인 사회를 건설한다는 것은 어쩌면 영원한 신화인지도 모른다. 그러나 그렇게 하기 위한 노력은 필요하지 않을까? 정부가 나서서 뭘 해도 어차피 잘 안되기 마련이니 그냥 자유롭게 놔두라는 것은 더욱 무책임한 일이 될 것이다.


2017년 10월 9일 월요일

긴 연휴의 끝

기록적인 10월 연휴가 모두 끝나간다. 개천절, 추석연휴 3일, 대체공휴일, 임시공휴일(10월 2일) 한글날, 그리고 두 차례의 주말을 합치면 총 열흘을 쉰 셈이다. 앞으로 50년 내에 이런 날이 또 올까? 온다고 해도 내가 그때까지 생존해 있을지 알 수가 없다.


별다른 여행 계획을 갖고 있지 않았기에 연휴 직전 퇴근을 하면서 집에서 보려고 논문 인쇄본등을 챙겨서 왔지만 주말이면 거의 항상 그랬듯이 지금까지 가방을 열어보지도 않았다. 만년필 잉크도 잘 나오지 않아서 수돗물에 적셔서 잘 나오게 만들어 두었다. 휴대폰을 만지작거린 것을 제외하면 책도 한 권 읽지 않고 완벽한 휴식을 취한 셈이다. 오늘은 공식적인 휴일이지만 아마 연구소 주차장은 밀린 일을 하러 나온 사람들로 북적이고 있을 것이다. 아, 괜히 불안해진다.

긴 연휴 동안 멀지 않은 당일치기 나들이를 하면서 남긴 사진을 정리해 본다. 9월 30일 대전 롯데백화점 갤러리부터. 백화점 갤러리가 고마운 점은 미술작품을 촬영하는 것에 대해서 매우 관대하다는 것이다. 남성으로서는 알 길이 없는 여탕의 분위기를 재미있게 묘사하였다.




10월 2일 갑사. 가을은 갑사가 가장 아름답게 보이는 계절이다. 감이 빨갛게 익어가는 모습은 정말 예쁘다. 계절을 잊는 나비가 부도밭 사이를 노닐고 있었다. 모든 법당과 석조약사여래입상을 거치면서 절을 올리는 어떤 남성이 있었다. 무슨 사연이 있을까?



팔이 짧아서 셀카는 늘 찍기 어렵다.

10월 4일 추석 당일에는 조부모님과 아버님이 모셔진 대한성공회 서울대성당.



10월 6일에는 남대문과 명동. 원래는 숭례문 수입상가에서 커피 용품(모카포트)을 둘러볼 생각이었는데 문을 열지 않았다. 그러나 시장 길가의 점포는 대부분 영업을 하였다. 명동 거리는 외국인 관광객들로 발 디딜 틈이 없었다.



마지막으로 10월 8일은 익산을 거쳐서 전주. 익산 미륵사지의 서탑은 복원이 거의 막바지에 이르러서 이번 11월이면 완성을 앞두고 있다고 한다. 전주에는 얼마나 많은 관광객이 왔는지 치명자산 주차장이 꽉 차고 셔틀버스를 타는 데에도 한참을 기다려야만 했다. 그래도 추석 연휴때에 비하면 관광객이 적은 편이라고 했다. 전주를 워낙 자주 가다보니 이제는 인파에 휩쓸리지 않고 차분하게 돌아다닐 수 있는 나만의 코스를 만들게 되었다. 전주시의 노력으로 무료 셔틀버스도 운행이 되고 쓰레기도 잘 치워지는 편이지만 쓰레기 봉투 사이로 삐죽 솟아난 꼬치 막대기를 보면 섬찟하다. '한옥 거리'가 '길거리 음식 거리'로 전락하지 않도록 업소나 방문객 모두의 노력이 필요한 시점이다.

미륵사지에는 두 개의 연못이 있다. 가람의 연못은 극락을 상징한다고 하였다. 복원 중인 서탑 앞쪽의 연못.

현대적(?)으로 복원한 동탑에 대해서는 말이 많다.

한옥마을과 풍남문 건너편에 위치한 카페 JB Blue. 강력 추천함. 넓고 가격도 저렴한 편이다. 내부를 장식한 미술품 역시 예사롭지 아니하다.
미륵사지에 관한 정보를 찾다가 이런 뉴스를 발견하였다.


섣부른 복원은 후대에 연구할 기회를 빼앗는다는 주장이 가슴에 와 닿는다. 폐허 위에 역사적 상상력이 깃들 여지가 있다. 미륵사지 석탑(동탑)과 부여 백제문화단지의 능사(오층 목탑) 모두 원형을 알 수 없는 상황에서 만들어진 것이다. 그러나 미륵사지 동탑은 원래의 탑이 있던 그 자리에 지어버렸다는 것이 문제이다.


2017년 9월 28일 목요일

SMALT aligner (Sanger Institute)

감염균 유전체의 대용량 분석에 관한 논문을 보다가 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년 PierJ에 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 논문은 bioRxive에만 공개된 상태이니 만약 전문 학술지에 정식으로 게재가 되면 성능 개선이 이루어질지도 모르는 일이다.

2017년 9월 21일 목요일

손목시계 줄 바꾸기

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

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

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

Archimedes V-Revolution AW0063

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

'이거 방간 맞나요'

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

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

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

2012년 10월에 집에서 쓰려고 구입했던 델 인스피론 660s에 이어서 또다시 인스피론 데스크탑 컴퓨터를 구입하였다. 이번의 모델명은 3668이다. 2006년 2개월 반의 국외 출장을 위해 XPS 노트북을 산 것까지 포함하면 델의 제품을 세번째 구입한 것이다. 인스피론 660s 전에는 2008년에 Shuttle XPC SG335G5 베어본을 사용했었는데 불안정한 하드웨어와 윈도우 비스타는 정말이지 '최악'의 조합이었다. 따져보니 가정용 컴퓨터의 구입 주기는 대략 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가 적당할 것이다.