2018년 2월 23일 금요일

감동의 iTOL(Interactive Tree Of Life)

iTOL(http://itol.embl.de/)은 계통수를 시각화, 주석화 및 관리하는 도구이다. 웹 인터페이스로 구성되어 있어서 누구나 tree file을 올린 다음 다채로운 annotation을 할 수 있다. 계통수 곁에 배열할 데이터가 많거나 복잡하다면 데이터셋 파일을 올리면 된다. 탐색기에 있는 텍스트 파일을 마우스로 웹브라우저에 끌어다 넣으면 그만이다. 다중서열정렬부터 phylogenetic inference를 거쳐서 최종적으로 트리 작성까지를 GUI 환경에서 손쉽게 마칠 수 있는 도구로는 MEGA가 대표적이다. 하지만 내가 알기로는 트리 옆에 heatmap을 배열하는 등의 복잡한 시각화는 하기가 어렵다.

극지연구소에 근무하는 K모 박사의 말에 의하면 전문가들은 MEGA를 좋아하지 않는다고 했다. Phylogenetic analysis에 대한 깊은 지식 없이 의미도 모르는 트리를 무작정 그리게 만든다는 비평을 했던 것 같다. 다르게 표현한다면 이 분야에 대한 공부를 하려는 동기를 갖지 못하게 하는 간편한 도구라고나 할까? 그게 옳다고 해도 사전 지식이 너무나 부족한 초보자에게는 일단 어떻게 해서든 계통수를 자기 손으로 만들어 낼 수 있게 한다는 측면에서 충분히 의미가 있는 소프트웨어라고 생각한다.

난 아주 가끔 MEGA를 사용하지만 사용 빈도가 높지 않아서 그런지 사용자 인터페이스가 좀처럼 익숙하게 다가오지 않는다. 세션의 개념도 아직까지 잘 잡히지 않는다. 오히려 서열정렬은 별도로 실행한 뒤 FastTree나 요즘 익히기 시작한 RAxML에서 tree file을 만든 뒤 다른 도구에서 tree visualization을 하는 것이 더욱 편하다. 이렇게 하면서 Newick format 파일에 좀 더 익숙해졌고, 완전한 tree맹(盲)을 벗어나는데 오히려 도움이 된 것 같다.

트리를 그림으로 표현하는 도구로는 FigTree를 주로 사용하였고, Archaeopterix(실행파일은 forester.jar)를 좀 알아보려다가 이제는 iTOL로 완전히 정착하는 과정에 있다. 내가 iTOL을 본격적으로 쓰게 된 것은 다음의 글 때문이다. 능력이 된다면 python이나 R code를 직접 짜서 그려도 되겠지만 iTOL은 별로 어렵지 않게 publication quality의 그림을 만들게 해 준다.

Displaying data associated with phylogenetic trees [멜버른 대학의 Kat Holt가 2012년 작성]

계정을 생성하면 데이터를 보관하고 다른 사용자와 공유할 수도 있다. 그러나 계정을 만들지 않아도 트리를 그리는 데에는 문제가 없다. 단지 서버측에 저장이 되지 않을 뿐이다. 최근에 그린 그림(최종본이 아님)을 살짝 엿보자. 왼쪽의 그림은 Roray가 만든 core genome alignment를 FastTree에 투입하여 얻은 것이고, 오른쪽의 heatmap(정확히는 2 개)는 average nucleotide identity(pyani)와 LS-BSR의 결과물을 R로 처리한 것이다. 아래에서 보인 그림은 root의 위치를 다시 잡아야 하는데, 너무나 당연하지만 reroot를 하면 오른쪽에 보인 데이터도 이에 맞추어서 바뀐다. Tree annotation에 쓰이는 보조 자료를 dataset이라고 한다. 이 그림에서는 ANI와 LS-BSR에서 생성한 heatmap 자료가 두 건의 dataset에 해당한다. Dataset에는 binary, simple or multi-value bar chart, pie chart, text label, colored strip, colored gradient, connection, heatmap, boxplot, protein domain 등 다양한 유형이 있으며, help page에서 제공하는 템플릿 파일을 적용하여 만들면 된다.

웹사이트에는 동영상을 곁들인 사용 설명서가 있어서 익숙해지는데 큰 어려움은 없다. 한가지 힌트를 준다면 Node ID와 label을 별도로 관리하는 것이 좋다. Tree file에 수록된 node ID에 밑줄이 있다면 이는 공백으로 표현되는데, 이렇게 되면 추가할 데이터셋과 연결하기가 나쁘다. 따라서 tree 작성까지는 각자 심플한 문자열을 써서 node ID를 삼되, 나중에 실제로 표현할 label을 다음과 같이 텍스트 파일로 수록해 둔 마우스로 끌어다 놓으면 된다. 다음의 사례에서는 NCBI taxonomy ID를 node ID롤 사용하였다.
167,Escherichia coli
1423,Bacillus subtilis
...
특정 범위(아마도 clade라고 적는 것이 더 적합할 것이다)에 속하는 모든 node에 색을 입히려면 colored range라는 개념을 이해하는 것이 중요하다. 두 node를 같은 range에 포함시키면 아마도 last common ancestor에 속하는 것을 같은 색으로 입히는 것 같은데 아직 확인해 보지는 않았다. 개별 노드 단위로 색을 입히려면 colored strip 유형을 쓰면 된다.

2018년 2월 21일 수요일

[하루에 한 R] ANI 계산 결과 다루기 - column 혹은 row 이름을 통한 조작

R을 이용해서 '4차 산업혁명' '빅데이터' 시대에 걸맞는 거창한 일 - 말하자면 방대한 데이터 속에서 새로운 지혜를 발굴하는 - 을 해야 하는데, 아직까지도 기초 수준의 자료 작성 기법을 익히는데 머물고 있으니 어찌 한심하지 않겠는가!

기본적인 자료 조작을 할 줄 알아야 통계분석, 시각화 등등의 고급스런 일을 비로소 할 수 있다. 앞으로 더 멋진 일을 하기 위한 기초 소양을 쌓아나간다고 생각하고 오늘도 부끄럽지만 [하루에 한 R]을 기록해 나간다.

매트릭스 형태의 자료 파일(csv, txt, tab-delimited...)를 R에서 데이터프레임으로 읽어들인 다음에 어떤 일을 할 수 있을까? 그동안은 각 cell을 채운 자료 자체에 집중을 하는 편이었지만 요즘은 컬럼과 로우(한글로는 '로'인가 '로우'인가? '윈도'가 표준 표기법이니 '로'라고 하는 것이 맞겠지만 어색함을 떨치기 어렵다, '로우'라고 쓰자.)의 이름을 활용하는 것이 더 흥미가 있다.
  • key,value1(value2,value3...) 형태의 파일 여러개를 key 값 기준으로 합치고 싶다(key 값은 동일할 수도 있고 그렇지 않을 수도 있다).
  • 컬럼이나 로우의 이름을 기준으로 재배열하고 싶다.
  • 컬럼이나 로우의 이름을 일괄적으로 바꾸고 싶다(스트링 조작 혹은 외부 데이터 사용).
  • 컬럼이나 로우의 이름을 이용하여 데이터 프레임의 일부를 덜어내고 싶다(slicing).
  • 최대값(혹은 최저값)에 해당하는 컬럼 혹은 로우의 이름을 알아내고 싶다.
  • 특정 로우 그룹의 평균값, 최대값(혹은 최저값)을 추출하고 싶다.
내가 종사하는 생명과학 분야, 특히 유전체학과 관련한 분야에서는 microarray data, RNA-seq (expression value) data, OTL table, BLAST result(tabular format) 등 다양한 종류의 매트릭스 형태 데이터 파일을 접하게 된다. 대개 하나의 로우는 하나의 레코드에 해당하지만 생명과학 분야 데이터에서는 레코드가 컬럼 단위로 기록되는 경우가 많다. 따라서 hclust() 함수를 쓰거나 할 때 트랜스포즈를 미리 하는 등의 변환이 필요함을 염두에 두어야 한다.

아마 과거에 작성한 글에 이미 이에 대한 방법을 일부 기록해 놓은 것이 있을지도 모른다. 오늘 쓰는 글은 최종 정리판이라고 보면 된다. 사용할 데이터 파일은 pyani에서 만든 ANIb_percentage_identity.tab(다운로드 링크)이다. 어떻게 생겼는지 살짝 열어보자. OpenOffice를 사용해서 command line에서 이런 종류의 파일을 한 번에 스프레드시트로 열 수 있다(ooffice --calc ANIb_percentage_identity.tab). 


R에서 읽어들이려면 다음과 같이 하면 된다. 컬럼 및 로우 네임을 정확히 지정하는 것, 그리고 대각선을 중심으로 대칭이 되게 만드는 것이 관건이다. 이 경우에는 컬럼과 로우의 네임 순서가 정확히 같다는 것을 가정하고 있다.
> d = read.table("ANIb_percentage_identity.tab",sep="\t",header=T,row.names=1)
> d2 = t(d)
> d3 = (d + d2)/2
만약 컬럼과 로우의 이름 순서가 일치하지 않는다는 의심이 든다면 다음과 같이 하면 된다. 전처리가 끝난 데이터프레임의 이름은 d3임을 기억해 두자. 자료 유형이 데이터프레임인 경우 colnames()나 names()나 차이가 없다.
> d3 = d3[, order(names(d3))]
> d3 = d3[order(row.names(d3)), ]
다음으로는 컬럼/로우 이름이 너무 길다는 것이 불만이다. 전부 동일 종에서 유래한 서로 다른 스트레인의 유전체 정보를 사용한 것이니 종 이름을 남겨둘 이유가 없다. 이는 사용자 함수를 만들어서 적용하면 된다.
> a = names(d3)
> trim.species = function (x) sub("^Lactobacillus_rhamnosus_","",x)
> names(d3) = trim.species(a)
> rownames(d3) = trim.species(a)
row.names()와 rownames() 함수는 무엇이 다른가? 이것은 천천히 알아보자. colnames() 함수는 있는데 col.names() 함수는 존재하지 않는다(?col.names를 입력하면 아무런 문서도 나오지 않으므로 그렇게 생각하는 것이다). 데이터프레임의 외형을 다듬는 일은 전부 끝났다. 이번에는 특정한 이름을 갖는 컬럼 하나를 뽑아서 어떤 데이터가 들어있는지 보고싶어졌다. 방법은 다음의 두 가지가 가능하다.
> d3[, which(names(d3) == "DSM_20021_GCF_001435405.1")]
> d3[, which(names(d3) == "DSM_20021_GCF_001435405.1"),drop=F]
> d4 = d3[, which(names(d3) == "DSM_20021_GCF_001435405.1"),drop=F]
drop=F 파라미터를 하나 추가하는 것이 훨씬 바람직한 결과를 낳는다. d4의 구조를 살펴보라. 컬럼과 로우의 이름이 전부 지정된 상태이다.

컬럼의 이름을 완벽하게 지정할 필요도 없다. DSM_20021로 시작하는 이름을 갖는 컬럼을 골라내도록 하자.
> d3[, grep("^DSM_20021",names(d3)),drop=F]
컬럼이 여러 개 선택될 가능성도 염두에 두어야 한다. 다음으로는 뽑아낼 컬럼이 여러개인 경우를 생각해 보자. 해당되는 컬럼의 이름은 벡터에 미리 지정해 둔다. 정규식 패턴을 벡터에 저장하여 적용하는 것은 아마 어려울 것이다.
> vec = c("Pen_GCF_00207655.1","ATCC_8530_GCF_000233755.1","4B15_GCF_002158925.1")
> d3[, which(names(d3) %in% vec)]
다음으로는 특정 컬럼에 대해여 최대값이 들어있는 cell의 로우 네임을 뽑아보는 일을 해 보겠다. 쉽게 해서 특정 유전체에 대하여 ANI가 가장 높게 나오는 것은 누구인지를 찾아내자는 것이다. 그런데 조심할 것은 당연히 자기 자신에 대한 ANI가 가장 높으므로 이것이 출력되는 것을 배제해야 한다. JSpecies에서는 자기 자신에 대해서는 값을 계산하지 않지만 pyani는 정직하게 1을 산출해 놓는다. 이를 전부 NA로 바꾸어 놓자.
> d3[d3 == 1] = NA
각 컬럼에서 최대값을 갖는 것들의 row name을 찾아보자.
> names(d3)[apply(d3,1,which.max)]
이보다 미려한 출력을 만들고 싶다면 좀 더 연구를 해야 한다. 데이터 프레임의 컬럼 혹은 로우 네임을 named vector를 사용하여 일괄적으로 바꾸려면 http://genoglobe.kr/kribb/data_visualization 를 참고하도록 한다.

2018년 2월 19일 월요일

삼미 HA-165B60 스피커통의 개조 - 후면 개방형으로 바꾸어보다

삼미 HA-165B60 스피커 유닛(소위 6.5인치; 삼미스피커 주식회사의 제품소개 링크)는 Hi-Fi와는 거리가 먼 제품이다. 천장에 묻어서 구내 방송용으로 쓰거나, 게임기나 앰프 등에 수납할 용도로 제조되는 유닛이다. 능률이 높고 전 대역을 평탄하게 재생하는 특성이 있어서 적당히 인클로저에 수납하여 진공관 앰프 용도로 쓰는 사람이 간혹 있는 모양이다. 나도 이러한 용도로 쓰려고 이를 아세아전자상가에서 직접 구입했었다. 생애 최초로 주문제작하였던 전면 덕트형 단일 유닛용 스피커용 통은 소소한 개조는 물론 유닛을 이리저리 바꾸어가며 여러 테스트를 거쳤는데, 두번째이자 마지막(?) 시도였던 삼미 HA-165B60 유닛이라고 해서 월등한 소리를 내지는 못하였다.

[2016년 10월] 스피커를 5인치에서 6.5인치(삼미 HA-165B60)로 바꾸다.
[2016년 12월] 스피커 통 개조하기 - 이번에는 성공?

내부에 흡음재를 채우고, 각재를 모서리에 붙여서 보강을 하고, 나무토막을 넣어서 용적을 줄이고, 내벽에 스폰지를 붙이고, 덕트의 면적을 줄이고, 큰 유닛을 고정하기 위해 배플면의 구멍을 넓히고... 유닛 하나로 모든 영역을 재생하려니 고음과 저음이 부족한 것은 당연하게여기고 받아들이겠지만, 마치 동굴 속에서 소리가 울리듯이 나는 증세는 아무리 개조를 거듭하여도 달라지지 않았다. 마침 사무실에서 운용할 스피커가 더 늘어나면서(JBL FE-M2125, 링크) 자작 스피커통에 대한 관심은 더욱 가라앉게 되었다.

그러다가 지난주 이영건 선생님의 6J6 푸시풀 앰프를 주문하게 되면서 이 스피커통을 살려보자는 생각을 하게 되었다. 지금까지 해 보지 않은 개조를 시도하는 것이다. 후면 개방형으로 쓰면 어떨까? 뒷판을 열고 단자의 위치만 바꾸면 되는 매우 간단한 개조이다.  좀 더 완벽하게 개조하려면 통 내의 덕트 입구를 막는 일까지 해야 되겠지만 적당한 재료를 찾지 못해서 아직 여기까지는 시도하지 않았다.

돌아다니는 자작나무 합판 조각(원래는 트위터 거치대로 만든 것을 부수었음)을 통 내부에 고정하여 단자대로 삼았다.



컴퓨터에 연결한 USB DAC을 통하여 LM1876 앰프를 물려 놓았다. 좀 나아졌는가? 으음... 잘 모르겠다. 울림 자체가 많은 음악인 류트 연주곡을 틀어놓고 이에 익숙해지려고 노력하고 있다. 만약 팝이나 락을 재생한다면 아마도 잘 어울리지 않을 것이다.


효과가 진정으로 있는 개조였는지 아닌지 알기가 어렵다. 컴퓨터 바탕화면에서 날 지켜보는 스칼렛 조핸슨에게 위로나 받아야 되겠다. 날 노려보는 건가?

"어이~ 스피커는 그만 갖고 놀고 이제 일이나 하시지?"

2018년 2월 18일 일요일

R 코드를 위한 Syntax Highlighting

드디어 Syntax Highlighting을 사용하여 구글 블로거에서 R code를 예쁘게(?) 표현하는 방법을 찾았다. Perl과 Bash에 대해서는 쓰는 방법을 대충 알아낸 상태였었다.

나에게 도움을 준 페이지는 다음의 것이다.

블로거(blogger, blogspot)에서 R code block 추가 및 syntax highlighting

여기에 소개된 방법 중 두번째의 것인 '좀 더 복잡하지만 두고두고 써먹을 수 있는 방법'을 이용하였다. 블로거 테마 메뉴에서 html 소스 코드가 보이게 만든 다음 <\head> 태그 직전에 약간의 코드를 삽입하는 것이었다. 그 다음에는 HTML 모드에서 다음은 실제로 이를 적용하여 작성한 것이다.

a = c("alpha","bravo","charlie","delta")
a[1]

이상하다. 잘 작동하지 않는다. 다음의 것은 어떤가?
a = c("alpha","bravo","charlie","delta") a[1]
흠, 아직도 잘 모르겠다. 위에서 소개한 '두번째의 복잡한 방법'이라는 것은 Alex Gorbatchev가 개발한 Syntax Highlighter는 아니다. 이것은 코드 블록을 둘러싸는 태그의 형태도 약간 다르다.

my $var = 123;
print STDERR $var, "\n";

실제 코드 블록을 둘러싸는 방법은 다음과 같이 하면 된다. 어느 방법을 쓰든 글 작성 중이나 미리보기에서는 최종적으로 어떻게 보이는지 알 수는 없다.


2018년 2월 15일 목요일

무엇이 옳은가

일제 강점기가 끝나고 군정치하에서 남한이 단독으로 정부 수립을 준비할 때 일제에 부역했던 많은 사람들에 대한 청산이 이루어지지 못했음을 우리는 잘 알고 있다. 이러한 불행한 잔재는 지금까지도 고스란히 남아서 한국 사회 곳곳에서 아직 해소되지 않은 갈등의 불씨가 되고 있다. 정부 수립 과정까지의 복잡하고 짧은 기간 동안의 모든 책임을 당시 군정을 책임진 미군에 물을 수는 없을 것이다. 그러나 바로 직전까지 한국을 지배했던 계급을 그대로 이용한다는 것이 미군 입장에서는 효율면에서 가장 적합해 보였었을지도 모른다.

선진국이 후진국이나 개발도상국을 지원하면서 그 나라를 현실적으로 통치하고 있는 독재 정권과 손을 잡은 사례를 우리는 어렵지 않게 찾을 수 있다. 만약 그 나라의 국민 대다수가 고통을 받고 있고 현 독재 정부를 타도하기 위해 투쟁을 하는 조직이 있다고 하자. 그러면 이 국가를 지원하고자 하는 외국은 어느 경로를 통해서 도움을 주어야 하는가? 독재 정권? 지하에서 투쟁하는 조직?

평창 올림픽을 맞아서 모처럼 남북한 사이에 긴장 완화의 기운이 느껴지고 있다. 우리나라를 찾은 북한의 고위급 인사들은 마치 연예인이나 유명인사처럼 언론과 대중의 관심을 받고 있고, 선정적인 취재거리를 찾는 기자들은 어떻게 해서든 뉴스 거리를 만들어내려고 지나칠 정도의 경쟁을 벌이는 듯하다. 분명히 의미가 있는 사건이지만, <'백두혈통' 김여정이 한국에 온다>는 기사 제목은 좀 불편하다.

어떻게 보면 현재 북한을 통치하는 사람들은 북한 민중들의 고달픈 삶에 대한 큰 책임이 있다(이 고통이 모두 미국의 경제재제 때문이라고 주장할 수도 있을 것이지만). 현재 북한의 정권은 반드시 붕괴될 것이고, 또 그렇게 되어야만 한다고 생각하는 사람들은 우리 정부가 북한의 통치 계급과 협조하는 듯한 모습을 보이는 것이 매우 잘못된 것이라고 - 심지어 역사에 죄를 짓는 것이라고 - 강하게 주장한다.

무엇이 옳은지 나도 잘 모르겠다. 한반도의 긴장 완화를 위해서 할 수 있는 다른 대안이 별로 없다고 느껴진다. 고립이냐 대화냐의 두 가지 선택이라는 단순한 문제로 환원시켜 놓고 생각해 본다면 현재의 북한 지도부와 대화를 모색하는 것이 그나마 나은 방법이라는 것이 나의 생각이다.

냉전과 분단 체제가 너무나 오래 지속되다보니 이 현상을 유지함으로 인하여 이익을 얻는 집단의 목소리가 점점 커지는 것도 사실이다. 이는 옳지 않다고 본다. 군사적 긴장감을 완화하고 상호 협력하는 관계로 나아가야만 한다. 어떤 형태의 통일이어야 하는가에 대해서는 많은 고민이 필요하다. 하지만 정치적 통합을 이루기 전에 문화·경제적으로 협력하고 동질감을 찾는 것이 시급하다고 본다.

언젠가 남북이 화해를 하고, 김정은이 과거 6·25 전쟁을 일으킨 것에 대해서 사과를 하게 된다면 정말 좋을 것이다. 그러나 그게 가능할까? 북한에서는 남한이 먼저 북으로 침공한 것으로 국민들을 가르쳐 왔는데...

이영건 선생님이 제작한 6J6 푸시풀 앰프 앰프를 주문하다

소리전자 판매장터의 자작품 장터 게시판을 구경하다가 이영건 선생님께서 올린 소출력 앰프 판매 글을 접하게 되었다. 마침 사무실 책상 앞에서 잔잔하게 음악을 을려줄 TDA7265-LM1876의 뒤를 이을 '세번째'의 앰프를 찾는 중이었고, 기왕이면 진공관 앰프라면 더욱 분위기가 있을 것이라고 생각하고 있었다. 최근에 올린 글(LM1876 앰프 개조요즘의 책상-Fi 풍경, JBL FE-M2125 스피커를 얻다)에서 볼 수 있듯이 결코 사치를 부리지 않는 수준에서(내 생각일 뿐) 상당히 다채로운 구성으로 음악을 들으며 일을 하고 있다. 여기에 앰프를 또 추가할 생각을 하는 것이다!

사진 출처: 소리전자.

이영건 선생님이 이번에 제작하여 판매하는 앰프는 쌍삼극관인 6J6 4 개를 이용한 푸시풀 앰프로서 판매 수량은 8 대이다. 레벨 미터가 있는 것과 없는 것이 준비된 상태였는데 밤 늦은 시간에 게시판에 글을 올렸음에도 불구하고 문의가 폭주하여 그 다음날 모두 팔리고 말았다. 나는 운좋게도 글이 올라온 직후에 발견하여 빨리 주문을 할 수 있었다.

최근 수년 동안 진공관 오디오가 다시 조금씩 인기를 얻고 있다. 출력이나 수치로 표현되는 여러 측정치들이 반도체 앰프에 비하여 결코 월등하다고는 할 수 없으나 이를 넘어가는 그 '무엇'이 분명히 존재한다. 무겁고, 가끔 진공관을 교체해야 하고(그렇게 흔한 일은 아니다), 열도 많이 나지만 말이다. 중국에서 제조된 염가의 키트 혹은 완제품을 알리익스프레스와 이베이를 통해 누구나 쉽게 구입할 수 있게 된 것도 이러한 추세에 불을 붙였다. 국내에도 많지는 않지만 진공관 앰프 제작자가 있다. 공장에서 대규모로 만들 수가 없는 물건이라서 큰 규모로 사업을 하기는 어렵겠지만 홈페이지를 구축하여 적극적으로 영업을 하는 사람이 있는가 하면 소리전자 판매장터를 통해서만 꾸준히 판매하는 사람도 있다. 그리고 제조자(판매자)와 소비자가 명확하게 구분되지 않는 것도 진공관 앰프의 특징이다. 자작이 비교적 용이하기 때문이다. 

이영건 선생님은 내가 알기로는 별다른 광고를 하지 않고 순전히 알음알음으로만 자작품 오디오를 팔고 계신다. 소리전자 판매 게시판에 이 선생님이 직접 판매글을 올린 것을 본 것도 이번이 처음이다. 매우 드물게 주문을 받는다는 글을 올려서 성황리에 제작 및 판매가 종료되면 글을 지우시는지도 모른다(근거: 2009년에 작성된 글 '그냥 오디오 잡설'). 이번 6J6 앰프처럼 믿기 어려운 파격적인 가격에 제작품을 판매하셔서 나 같은 사람이 얼떨결에 혜택을 입게 만드시기도 한다. 나의 첫번째 진공관 앰프(14GW8 싱글 엔디드 슈퍼트라이오드결선 앰프)도 이영건 선생님의 작품이었다(글 링크). 그러나 이 선생님이 가격대비 성능이 극도로 우수한 입문자용 진공관 앰프를 주로 만드시는 것은 절대로 아니다. 어찌보면 이것은 주머니 사정이 가벼운 사람을 위한 '선물'과 같은 것이고, 요즘에는 고가품 위주로 작업을 하고 있다고 들었다. 아무튼 나에게 진공관 앰프의 세계를 소개하고 이 선생님과의 인연을 만들어준 친구 K가 늘 고맙다.

나의 첫번째 진공관 앰프(2014년 초 구입).
2018년 3월 3일에 추가한 글: 케이스를 수정하시느라 아직 보내시질 못했다고 한다. 다른 구매자의 것들은 이미 다 발송이 되었다는데... 기다림이 길어지니 기대도 커진다.

2018년 2월 13일 화요일

왜 GenBank에 존재하는 일부 bacterial genome이 RefSeq에는 존재하지 않는가?

요즘 Paenibacillus genus에 속하는 균주의 comparative genomics 분석을 수행하면서 천랩의 EZBioCloud를 많이 참고하고 있다. 여기에서는 GenBank에 공개된 유전체를 가져다가 자체적으로 QC를 실시하여 특정 species로 할당된 genome을 제공한다. 간단하게 설명하자면 type strain(표준 균주)와 ANI 측면에서 같은 종으로 묶이는 자료를 그 종의 카테고리에 실어 놓는 것이다. 비록 GenBank에 제출하면서 부여한 original label이 Paenibacillus polymyxa strain=XYZ라 하여도 EZBioCloud의 QC 결과에 따라서 다른 species candidate(여기에서는 CP000154_s와 같은 'phylotype'으로 취급)에 넣게 되는 일도 벌어진다는 뜻이다.

이 작업을 하는 도중에 GenBank에는 존재하지만 해당되는 자료가 RefSeq에 없는 것을 세 건 발견하였다. 원칙적으로 NCBI에는 assembly accession에서 접두어(GCA: GenBank, GCF: RefSeq)만 달리한 두 레코드가 존재해야 한다. 다음의 자료는 이에 해당하는 RefSeq 자료가 없다. 아래에 표시한 것은 GenBank assembly에 대한 링크이다. 여기를 클릭해 들어가면 왜 그러한지를 짐작할 수 있다.

https://www.ncbi.nlm.nih.gov/assembly/GCA_001447315.1
Excluded from RefSeq:
  • many frameshifted proteins
RefSeq assembly accession: 
n/a


https://www.ncbi.nlm.nih.gov/assembly/GCA_001874405.2

RefSeq assembly accession: 
GCF_001874405.1 (suppressed)

https://www.ncbi.nlm.nih.gov/assembly/GCA_001874425.2
RefSeq assembly accession: 
GCF_001874425.2 (suppressed)

뒤의 두 자료는 단지 'suppressed'라고만 적혀있다. 어떤 자료가 suppress될 운명에 처하는 것일까? Prokaryotic RefSeq Genome Re-annotation Project에 그 설명이 있었다.

Suppressed genomes: Several hundred RefSeq bacterial genomes that did not pass assembly or annotation quality validation have been suppressed. An FTP report file listing the most recent suppressions will be provided soon in the RefSeq FTP site.

RefSeq FAQ 페이지에서도 상세한 설명을 볼 수 있다. Suppressed accession에 대한 상세한 정보는 두 달에 한번 배포되는 RefSeq release(2018년 2월 현재 release86)의 README 파일을 참조하라. NCBI의 자료를 편하게 다운로드하여 쓸 생각만 했지 accession이 바뀌거나 사라진(임시 혹은 영구적) 경우까지 감안해야 할 줄은 몰랐다. 제출자에 의한 update 이상의 일이 벌어지고 있음을 비로소 깨닫게 되었다.

2018년 2월 11일 일요일

독서 기록 - [착한 기부 나쁜 기부] 외 다섯 권

약 2주 간격으로 지역 도서관에서 책을 빌려서 열심히 읽고 주말 저녁에는 컴퓨터 앞에 앉아서 독서 기록을 적는다. 주로 책을 빌려온 주에 집중해서 거의 다 읽어버리고 나머지 한 주는 잘 읽히지 않는 책을 붙들고 씨름을 한다. 요즘은 일부러 소설을 읽으려고 애를 쓰지만 항상 우선 순위에서 뒤로 밀린다. 이번에 빌린 책 일곱 권 중에서 SF 작가 필립 K. 딕의 단편소설집은 아직 1/3도 읽지 못했다.

이번 주는 지력(智力)이 달려서 그런지 주말을 맞아서는 전혀 지적인 일을 하지 않았고, 독서 기록을 쓰는 것도 왠지 버겁게 느껴진다. '읽는 것만 즐기고 기록은 하지 말까?'하는 간사한 생각이 잠시 머리를 스쳐 지나가지만 책을 반납하기 전에 포스트잇을 끼워둔 쪽을 다시 살피면서 짧게라도 기록을 하지 않으면 머릿속에 남는 것이 없다는 생각에 다시 생각을 다잡아 본다.


(인도주의의 눈으로 바라본) 착한 기부 나쁜 기부


신상문 지음. 기부가 항상 착한 것만은 아니며 인도주의적 시각을 함양하는 것이 필요하다. 각종 매체를 통해서 어려운 형편에 놓인 사람들이 소개되고, 월 몇만원이면 바로 그 사람이 수혜자가 된다는 기부 독려 광고를 요즘 많이 보게 된다. 이 광고는 기부자를 불러모으는 데에는 꽤 효과가 좋지만 어떤 면에서는 역효과를 불러 일으킨다. 왜냐하면 노출된 직접적 수혜자는 그 가족 혹은 집단에서 단순한 수입원으로 취급될 수도 있기 때문이다. 또 다른 문제는 '꼴찌의 함정'이다. 가장 어려운 대상을 선정하여 돕게 되면 그 대상자는 꼴찌를 면하게 되지만 결국 또 다른 새로운 꼴찌가 나타나게 된다. 지역사회의 동의와 공감이 없이 기부가 이루어지면 이런 문제가 생길 수 있다. 
신영복은 머리 좋은 것이 마음 좋은 것만 못하고, 마음 좋은 것이 손 좋은 것만 못하고, 손 좋은 것이 발 좋은 것만 못하다고 하였다. 관찰보다는 애정이, 애정보다는 실천적 연대가, 실천적 연대보다는 입장의 동일함이 더욱 중요하고, 입장의 동일함 그것은 관계의 최고 형태라는 것이다... 기부는 일방향의 행위가 아니라 쌍방향의 교류이고, 목적 자체는 동일함을 지향해야 한다(75쪽).
기부금을 받아 그것을 여러가지의 형태로 전달하는 과정에서는 비용이 든다. 그런데 기부자의 입장에서는 어떤 지역, 어떤 목적에 딱 맞추어서 자기가 기부한 돈이 그대로 전달되기를 바라고, 이미지 개선이나 세제 혜택에 좀 더 관심이 많은 기업 또는 단체의 경우 이러한 입장을 강하게 고수하려 한다. 그러면 특정히 사용처를 지정하지 않은 기부자들의 돈이 운영비로 주로 들어가거나, 혹은 그런 용도의 매칭 기부자를 대리 기관이 만들어야 하는 불합리한 일이 벌어지기도 한다. 이는 내가 이 책을 읽기 전에는 전혀 알지 못하던 것이다. 또한 우리가 도와주려는 지역이 지금 우리의 기준에서 낙후되어 있으니 문명화를 시켜야 한다는 생각을 버려야 한다. 이 문제에 대해서는 저자가 소해한 조현범의 [문명과 야만: 타자의 시선으로 바라본 19세기 조선]이라는 책을 다음 기회에 읽어보아야 되겠다. 기부자는 익명성과 무대가성을, 대리기관은 전문성과 투명성을, 수혜자는 자립과 역량강화에 힘써야 인도주의에 입각한 올바른 기부 문화가 형성될 것이다.

세계화와 그 불만(부제: 전세계은행 부총재 스티글리츠의 세계화 비판)

조지프 스티글리츠 지음/송철복 옮김

노예의 길(부제: 사회주의 계획경제의 진실)

프리드리히 A. 하이에크 지음/김이석 옮김

두 책은 서로 상반된 내용을 다룬 책이다. 스티글리츠는 새'케인즈학파'의 경제학자이고, 그보다 앞세대의 사람인 하이에크는 케인즈와 치열한 대립 관계에 있던 자유주의적 경제학자이다. 두 저자 전부 노벨 경제학자를 받은 석학이기도 하다. 하이에크가 이 책을 출판했던 1944년의 시대적 상황을 이해할 필요가 있다. 그에게는 전쟁으로 이어진 실수를 피하는 것이 가장 중요했다. 당시 독일은 사회민주주의를 표방하면서 국가 체제를 일사불란하게 가동하고 있었고, 독일과 대결 중이었던 영국에서도 이러한 사회주의적인 이상에 대한 인기가 높아가는 것을 막아야 하겠다는 것이 그의 신념이었다. 즉, 전시라는 특수한 상황에서 조직화된 사회·경제 체제를 평화시에도 도입하는 것이 바람직할 것이라는 기대가 퍼지는 것을 크게 우려했던 것이다. 하이에크는 개인의 자유를 위한 정책이 유일한 진보적 정책이라는 것을 일관되게 주장하고 있다. 독점, 계획 경제(명령 경제)는 불합리하다. 개인주의는 이기주의와는 다르다. 개인주의 입장의 본질은 바로 개인을 자기 자신의 목적에 대한 최종적 재판관으로 인식하라는 것이다. 이 책은 개인적으로 대단히 읽기 힘들었다. 번역이 너무 딱딱했기 때문이다. 원작의 표현을 지나치게 직역한 데서 온 문제라고 생각한다.

먼저 짚어보아야 할 것은 우리가 '자유'라고 번역하는 단어는 freedom과 liberty로 분명히 나뉘며 그 뜻도 다르다는 점이다(Freedom과 Liberty의 차이를 아시나요?). 자유주의, 신자유주의, 자유민주주의의 '자유'는 liberty이지만 우리나라에는 유독 freedom(억압과 속박이 없는 상태)의 뜻으로 자의적으로 해석되어 왔다. 이에 대해서는 나중에 좀 더 공부를 할 필요를 느낀다. 민족이라는 단어에 대해서도 나중에 기회가 되면 좀 더 알아볼 생각이다.

개인이나 단체가 자유롭게 경제적 행위를 하는 것이 큰 범주에서는 세계화 또는 자유화로 불릴 수 있을 것이다. 이것이 개발도상국의 어려운 처지에 있는 사람들을 풍요롭게 만드는 잠재력이 있다고 많은 사람들은 믿는다. 하이에크가 믿은 대로 세상이 돌아갔다면 스티글리츠의 책은 나오지 않았을 것이다. 하지만 지극히 예외적인 국가를 제외하면 국가간의 장벽을 제거하는데 노력했던 여러 국제무역협정, 그리고 세계화 진행을 위해 개발도상국에게 가해졌던 정책이 오히려 이들 국가를 황폐하게 한 현실을 바로 보아야 한다. 저자는 다음과 같은 사항에서 개혁이 필요함을 주장하였다.

  1. 자본시장 자유화의 위험 인정
  2. 파산개혁과 지불정지
  3. 구제금융에 대한 의존 축소
  4. 은행규제의 개선
  5. 위험관리 개선
  6. 안전망의 개선
  7. 위기관리 개선

성장 없는 번영(부제: 협동조합과 사회적 경제를 위한 생태거시경제학의 탄생)


팀 잭슨 지음, 전광철 옮김. 이번에 읽은 책들은 굴곡진 현대사를 살아오면서 우리의 마음 속에 자리잡은 고정관념에 대한 심각한 질문을 던지는 것이 많았다. 네번째 책도 그러하다. 경제적 성장이란 그 누구도 부정할 수 없는, 어느 사회도 의심할 여지 없이 반드시 추구해야 할 목표라고 누구나 당연하게 생각해 왔다. 조지프 슘페터는 경제적 성장을 촉진하려면 혁신 과정, 즉 신상품('창조적 파괴')이 필수적이라고 하였다. 궁극적으로, 성공적인 기업조차 단지 비용 최소화를 통해서는 살아남을 수 없다는 것이다. 더글러스 부스가 말했듯이 '신상품과 지위 추구형 소비자와 독점 추구형 기업가는 서로 뒤얽히며 장기적인 경제성장의 토대를 구축'한다고도 하였다. 신상품에 대한 욕구는 소비주의 사회논리를 강화 → 소비주의 사회논리는 다시 신상품에 대한 욕구를 강화시키는 무한 사이클이 지금까지 경제성장을 부추겨왔다.

하지만 자원은 유한하다. 세계 인구가 90억 명이 되는 시점에 모두가 OECD 국가에서 기대하는 만큼의 풍요로움에 도달한다면 , 2050년까지 지금보다 15배 이상, 금세기말에 가서는 40배 이상의 경제 규모가 되어야 한다는 것이다. 이것이 과연 가능할까?  새 시대를 주도할 새로운 경제 파라다임이 필요한 시점이 되었다. 새로운 경제에서는 다음과 같은 특징 때문에 성장 속도가 둔화될 것임을 예측하였다.
  1. 생태 한계의 부과
  2. 경제가 서비스 기반 활동으로 구조적 이행을 하면서 지금까지의 생산성 향상 속도가 근본적으로 지속가능하지 않음
  3. 생태투자가 실행된 부분으로 상당한 규모의 자원이 이동
결론적으로 새로운 경제에서는 다음과 같은 거시경제 정책이 필요하다는 결론을 내리고 있다.
  1. 서비스 기반 활동으로의 구조적 이행
  2. 생태적 자산에 대한 투자
  3. 안정화 메커니즘으로서의 노동시간 정책
이 책은 좌파적 경제학자가 개인 의견을 전제로 쓴 책이 아니다. 영국의 지속가능개발위원회가 지속가능성과 경제성장 사이의 관계에 대해 진행한 연구의 결산에 해당한다. 부록에 의하면 이 연구는 위원회가 '번영 다시 정의하기'를 출간한 2003년에 착수되었다고 한다. 우리 정부가 한국형 녹색 뉴딜을 내세워서 전국적인 삽질을 시작한 4대강 사업을 시작한 것이 2008년이었다. 반면 영국 지속가능위원회에서는 2009년에 <성장 없는 번영> 보고서를 출간하였다. 우리가 삽질을 하는 동안, 영국에서는 번영을 다시 정의하고('Redefining Prosperity') 경제적 영향을 줄이며 구조에 맞서고 잘 사는(물질이 아닌 정신적 만족) 문제를 다루고 토론했던 것이다.

지성만이 무기다(부제: 읽기에서 시작하는 어른들의 공부법)


시라토리 하루히코 지음/김해용 옮김. 성인이 독서를 통해서 공부하는 방법을 설명한 책이다. 단순히 교양을 쌓거나 시험에 통과하기 위한 공부가 아니라 지성을 갖춘 인간이 되기 위하여 공부하는 방법을 다루는 것이다. 이를 위해서 가장 강력한 무기는 바로 '독서'이다.  하지만 쇼펜하우어는 이렇게 말했다 한다.
독서에만 전념하는 한, 사실 우리의 머리는 타인의 사상이 뛰노는 운동장에 불과하다. 그 때문에 거의 통째로 하루를 다독에 허비하는 부지런한 사람은 스스로 생각하는 힘을 잃어간다(131쪽).
그러면 어떻게 해야 하는가? 다양한 종류의 책을 두루 섭렵하면서 특정 책의 논리를 곧이곧대로 받아들이지 않도록 해야 한다. 세상의 평가 기준을 자신의 평가 기준으로 삼지 말고, 사회성 편중의 압력에 굴복하지 말아라. 그리고 연구비를 받으면서 전문이라는 '가늘고 긴 구멍'속에서 여유있게 사는 소위 전문가가 되지 말고 - 현대는 전문가라는 것이 학자로서의 장사 도구가 되었다 - 구멍 밖의 밝은 지표에 있는 제너럴리스트가 되어라.

그럼 무엇을 배워야 할까? 외국어, 철학사상, 그리고 종교에서 시작하라. 그리고 공부에는 절대적으로 시간이 필요하다. 시간을 어떻게 늘릴까? 좀 과격하지만 저자는 다음과 같이 주장하였다. (1) 취미를 버려라. (2) 망상을 버려라. (3) 시간 계획을 세우지 않는다. 심지어 주변 관계와의 일시적 격리(일주일 중 주말 이틀 동안이라도)라는 결단이 필요할 수도 있다.

하마터면 깨달을 뻔(부제: 인지심리학자가 본 에고의 진실게임)


크리스 나이바우어 지음/김윤종 옮김. 원제는 <신경증 환자를 위한 깨달음 회피하기 지침서(The Neurotic's Guide to Avoiding Enlightment)>이다. 표지에는 참선 중인 부처가 한쪽 눈만 감은 채 다른쪽 눈을 빤히 뜨고 있는 모습을 우스꽝스럽게 그려 놓았다. 마음을 통제해서 무엇인가를 이루고자 하는 것은 애초에 불가능하다. 좌뇌라는 해석기가 얼마나 기만적인지를 보여주는 60년대 마이클 가자니가(Michael Gazzaniga)의 연구를 소개하는 것으로 이 책은 시작한다. 정상인의 좌뇌와 우뇌는 뇌교(pons)라는 신경섬유 다발로 연결되어 있다. 만약 이를 절단할 경우 두 반구는 서로 독립적으로 작동한다. 왼쪽 눈을 비롯하여 신체 왼쪽을 통하는 모든 입출력은 우뇌로 연결되고, 나머지 절반은 반대이다. 하지만 정상인에게서는 뇌가 하나의 전체적인 그림으로 정보를 처리하기 때문에 이처럼 반씩 나뉘는 과정은 전혀 느껴지지 않는다. 가자니가 박사는 뇌교를 부득이하게 절단한 'split brain' 환자에게 좌뇌로는 닭발을, 우뇌로는 눈이 덮인 경치를 각각 보게 하였다. 그리고 본인이 보았던 영상에 가장 부합하는 그림을 고르도록 하였다. 우뇌는 (왼손을 사용하여) 눈 치우는 삽을, 좌뇌는 (오른손을 이용하여) 닭의 그림을 골랐다. 여기까지만 본다면 뇌의 각 반구는 자기가 입수한 초기의 시각적 정보에 충실한 두번째 그림을 고른 셈이다. 그런데 이 환자에게 아주 단순한 질문을 던졌다. "당신의 왼손은 왜 삽을 골랐나요?" 언어중추는 좌뇌에 속하는 기능이다.

(정직한 좌뇌라면) 어, 글쎄요. 우뇌랑 이야기한지 너무 오래 되어서 왜 우뇌가 그런 선택을 했는지 모르겠네요.
(실제 대답) 오, 그건 간단하죠. 닭발은 당연히 닭과 연관이 있고요. 삽은 닭똥을 치울 때 쓰는 거니까 역시 닭과 연관이 있지요.

좌뇌의 대답은 실제 상황과는 매우 다르다. 그러나 매우 그럴싸한 설명을 만들어내는 '해석기' 역할을 하고 있는 것이다. 모든 문제는 여기에서 시작된다. 자아를 찾고 깨달음을 얻고자 하는 노력은 어차피 부질없는 일이다. 저자는 이러한 노력이 덧없음을 누누이 지적해 왔고, 이를 반-자기계발 운동(anti-self-help movement)라 부르고 싶어한다.
오직 좌뇌만이 규칙을 필요로 한다. 에고적 마음에 투자할수록 더 많은 규칙이 필요해지고, 그로 인해 우리는 더 점점 피곤해진다. 반면 에고적 마음의 규칙을 줄이면 규칙의 필요성도 함께 감소한다(271쪽).
해석하는 마음, 그리고 그로부터 발생하는  모든 괴로움의 면면은 단순히 본연의 모습이 아닌 척하고 있는 우주일 뿐이고, 대립성 법칙에 따라 작동하는 좌뇌는 이 놀이를 위해 설치된 것이다. 겉으로 보기는 우주의 유순하고 자애로운 드라마와 그 배후에 있는 우주의 장난기 넘치고 악동 같은 본성은 서로 조화를 이루고 있다(275쪽).
에크하르트 톨레(Eckhart Tolle)와 앨런 왓츠(Alan Watts)라는 새로운 인물을 알게 되었다. 다음번 읽을 책을 고를 때 참고해야 되겠다. 그리고 '자아'에 대한 공부를 곁들여서.

2018년 2월 10일 토요일

칼을 갈다

흔히 '칼을 간다'고 하면 비장하게 복수의 날을 기다리며 준비를 하고 있음을 뜻한다. 오늘 칼과 가위를 갈았다. 은유적인 표현이 아니라 정말로 칼과 가위를 갈았다는 것이다. 집에 있는 숫돌로 일반인 수준에서 대충 간 것이 아니라 전문인에게 맡겨서 날을 세웠다. 이렇게 칼을 갈아본 것은 이번이 처음이다. 아내가 날이 무뎌져서 칼을 쓰기 힘들다고 하면 가끔 집에서 갈아주고는 했는데 이것 역시 기술 없이 아무나 하는 일이 아니라서 결과는 늘 만족스럽지 못하였다.

말 그대로 서슬이 퍼렇다.

카센터에 타이어 공기압을 보충하러 가다가 동네 어귀에 트럭을 몰고 가끔 찾아오는 칼갈이 어르신을 만났다. 전화번호는 010-4408-6440(참고로 여기는 대전임). 칼갈이들은 대부분 이동하면서 일을 하므로 필요한 순간에 만나는 일은 쉽지 않다. 인터넷을 찾아보면 출장 칼갈이도 있다. 단체급식소, 병원, 미용실, 조리사 단체시험을 준비하는 학원 등을 대상으로 한다. '칼갈이'이라고 써 놓으니 마치 이 직업을 비하하는 표현처럼 들리는 듯해서 조심스럽다.  '간호원'이 '간호사'가 되고 '때밀이'가 '목욕관리사' 혹은 '세신사'가 되면 여기에 종사하는 사람들의 지위가 향상되는 것일까? 그러면 '칼갈이'는? 순우리말은 한자어에 비해서 격이 떨어진다는 생각이 바뀌어야 한다고 믿는다.

명절을 앞두고 무뎌진 부엌칼을 갈려는 주부가 많을 것이다. 식칼 두 개와 과도, 그리고 지난번에 어렵게 녹을 제거했던 재단 가위(링크) 두 개까지 들고 나갔다. 식칼 하나의 날을 가는 표준 가격은 3,000원이고 두 개는 5,000원이다. 어르신께서는 쉼없이 맡겨진 칼을 갈고 있었다. 한 시간을 기다려 총 다섯 점의 칼과 가위를 가는 비용은 9,000원. 1만원 지폐를 내고 거스름돈은 받지 않았다.


4차 산업혁명을 맞아 대량 실업이 발생해도 살아남는 직업은 무엇이 있을지 가끔 생각해 본다. 대량의 지식을 이용하여 정확한 판단을 해야 하는 지능적이고 고도한 일은 오히려 인공지능이 더 잘 할 것이다. 그러나 사람의 손으로 직접 할 수밖에 없는 직업은 영원히 살아남을 것이다. 배관공, 전기 설비 기사, 이·미용사 등. 칼갈이도 그러할 것이다.

2018년 2월 8일 목요일

병원 배관에 항생제 내성 세균이 우글우글

오늘 아침에 받은 GenomeWeb 시퀀싱 섹션에 실린 기사이다. mBio에 실린 논문 "Genomic analysis of hospital plumbing reveals diverse reservoir of bacterial plasmids conferring carbapenem resistance(링크)"를 소개한 것이다.


카바페넴은 베타-락탐 계열의 항생제 중 적용 대상균의 스펙트럼이 가장 넓은 항생제이다. 최근 카바페넴내성 장내세균속(carbapenem resistant Enterobacteriaceae, CRE)이 전세계적으로 확산되어 큰 문제가 되고있다. 우리나라에서도 2010년 첫 CRE 감염자가 보고된 이래 전국적으로 확산되는 추세이다. CRE는 주로 병원을 통해서 전파된다. 장기간 입원하면서 면역력이 떨어진 사람에게 지속적으로 항생제를 투여하게 되는데, 이때 카바페넴 내성을 지닌 감염세균은 더욱 창궐할 수 있는 기회를 맞는다. 소위 병원내 감염(nosocomial infection)의 원흉이 되는 것이다.

카바페넴을 무력화시키는 효소인 carbapenemase 중에서 특히 NDM-1(New Delhi metallo-beta-lactamase)가 유명하다. 이 효소의 유전자를 지닌 박테리아가 드디어 superberg라는 이름으로 언론에서 오르내리게 된 것이다. 이게 전부가 아니다. Klebsiella pseumoniae carbapenemase(KPC)도 둘째 가라면 서러운 cabapenemase이다. 이들 효소의 유전자는 수평적 전파를 통해서 장내세균속 및 Acinetobacter baumanii와 같은 프로테로박테리아에게 쉽게 전달되어 내성을 퍼뜨리게 된다. 각 효소 단백질을 암호화하는 유전자를 각각 blaKPC, blaNDM이라 부른다.

오늘 소개하는 이 논문에서는 미국 베데스다 지역의 NIHCC (National Institute of Health Clinical Center) 병원에서 2년간 수집한 미생물 샘플 108종의 유전체 서열 해독을 통해 카바페넴 내성 세균의 존재와 다양성을 밝힌 것이다. 변기, 배관, 외부의 맨홀 등이 샘플 채집 장소였다. 이러한 환경은 carbapenemase를 만드는 미생물에게는 vast, resilient reservoir였던 것이다. 이 병원은 2011년  carbapenemase-positive, carbapenem-resistant Klebsiella pneumoniae outbreak가 일어난 곳이기도 하다. 당시 연구에서는 환자의 감염뿐만 아니라 난간, 송풍구, 싱크 배수구, 입원실 벽 등 다양한 곳에서 내성 세균이 검출되었었다(Science Translational Medicine 논문 링크). 당시에도 whole-genome sequencing이 중요한 연구 기법이었다.

감염된 환자와 주변 환경에서 발견된 미생물 종 다양성과 항생제 감수성 프로필은 달랐지만, 두 집단 간의 plasmid backbone에는 공통점이 있었다. 이는 환경 reservoir에 있는 내성 유전자가 mobile element를 통하여 공유됨을 시사한다.

병을 고치러 입원한 병원에서 오히려 약도 듣지 않는 '슈퍼버그'에 감염되어 더 큰 위험에 처한다면 이 얼마나 모순되는 일인가? 작년 12월에 있었던 이대목동병원 신생아 집단 사망 사건이 떠오른다. 희생된 아기들에게서 발견된 Citrobacter freundii는 내가 알기로는 심각한 내성 감염의 원인세균으로 취급되지는 않는데, 면역력이 약한 신생아에게 혈관 주사 등으로 많은 개체가 감염되었다면 치명적일 수 있었을 것이다. 이 사건의 결론이 어떻게 내려졌는지는 모르겠다. 이것은 내가 보기에는 부주의에 의한 사건이라는 생각이 든다.

인간과 감염성 세균과의 싸움은 군비 경쟁과 같다. 우리가 항생제라는 무기를 들면 세균은 내성을 키워서 맞대응한다. 최소한 현상 유지를 하려 해도 새로운 항생제 개발이 필요하다. 그러나 항생제는 제약회사에게 큰 수익을 가져다주지 못하기 때문에 연구개발에 힘을 쏟지 않게 되고, 이에 따라 1987년 이래 새로운 항생제가 개발되지 못했다. 그러다가 2015년 미국 노스이스턴 대학의 Kim Lewis 연구팀에서 teixobactin이라는 항생물질을 자연계에서 발견하면서 30년만의 항생제 발견이라고 하여 크게 주목을 받았었다(당시 Nature 논문 링크).

세균에 맞서는 무기('항생제')를 계속 개발해는 것이 정답일까? 엘크의 뿔, 공작새의 꽁지처럼 남들보다 조금 더 나은 모습이 생존에 유리하게 작용하다가(배우자 후보의 마음에 잘 들게 되므로) 어느 수준 이상이 되면 오히려 생존에 불리해지듯, 항생제를 무기로 한 전쟁에도 결국은 한계가 있지 않을까?


Usearch 맛보기

소프트웨어 이름을 표기할 때 첫글자만 대문자로 써야 하는지(Usearch), 전체를 대문자로 써야 하는지(USEARCH)를 아직도 잘 모르겠다. 만약 소프트웨어의 이름이 acronym이라면 전부 대문자로 쓰는 것이 옳을 것이다.

어쨌든 usearchLS-BSR의 기본 클러스터링 도구이다. 다른 대안으로는 vsearch, cd-hit 등이 있다. 서열 클러스터링은 왜 하는가? 유사한 서열을 묶어서 데이터 분량을 줄이는 것이 주된 목적 중의 하나이다. Non-redundant sequence set을 작성하거나, 방대한 metagenome read를 처리하여 그 분량을 줄이는 것이 주된 application이다. 묶인 서열 클러스터에 대하여 하나씩의 대표 서열(representative sequence; usearch에서는 "centroid"라는 표현을 쓰는 것 같다)을 선정하거나, 혹은 consensus sequence를 만들어낼 수 있다. 아니면 클러스터에 속하는 모든 멤버 서열들을 그냥 나열하는 것도 가능하다.

그동안 상습적으로 blastclust를 써 왔는데 왠지 시대에 뒤떨어진 것 같다는 느낌이 들어서 오늘은 usearch를 살짝 사용해 보았다. 나와 비슷한 생각을 가진 사람이 또 있었는지 Biostars에 다음과 같은 글이 있다. 현재의 blast+ 패키지에는 blastclust가 빠져 있으니 그럴 생각이 들 만도 하다.
Questions: Blastclust has been deprieciated. Does anyone know why? (depreciated를 deprecated로 읽었다)
Usearch는 high-througput search & clustering 도구로서 Robert C. Edagr 박사가 개발하였다(웹사이트; usearch home 링크). 원래 그는 입자물리학 전공자로서 기업을 거쳐 2001년부터는 독립 과학자('independent scientist')로 일하고 있다. Usearch는 32 비트 버전의 경우 비상업적 용도로는 무료(소스 코드는 비공개), 64 비트 버전은 유료이다. 다중서열정렬 프로그램으로 유명한 muscle도 그가 개발하였다.

Usearch는  몇 가지의 클러스터링 알고리즘을 내장하고 있는데, 그중에서 usearch -cluster_fast 혹은 usearch -clust_smallmem 명령으로 기동되는 uclust에 대해서 좀 더 알아보자. 다음 그림은 uclust의 알고리즘을 한 눈에 잘 들어오게 보여준다(UCLUST algorithm). 웹사이트의 설명을 인용하자면 "A cluster is defined by one sequence, known as the centroid or representative sequence"이다. Ucluster는 단백질의 경우 identity ~50% 이상, 핵산의 경우 ~75% 이상인 서열에 적용하는 것이 바람직하다. Usearch가 제공하는 클러스터링 관련 모든 방법은 여기를 참고하라. Uclust는 2010년 Nucleic Acids Research에 "Searching and clustering orders of magnitude faster than BLAST"라는 논문으로 발표된바 있다(링크). 논문의 저자는 Robert C. Edgar 1인이다. 곳곳에서 'I'를 주어로 시작하는 문장이 보인다. 멋지지 않은가? 2002년 Genome Research에 실렸던 W. James Kent의 "BLAT-The BLAST-Like Alignment Tool" 논문(링크)도 그렇다.

https://www.drive5.com/usearch/manual/uclust_algo.html

클러스터 set는 다음과 같은 기준으로 만들어진다.
  1. 모든  centeroid의 서로에 대한 similarity는 T보다 작다.
  2. 클러스터 내 멤버 서열의 similarity는 centroid에 대하여 T와 같거나 크다.
OTU(operational taxonomic unit) clustering은 특별한 문제를 야기한다고 한다. Length sort를 하게되면 biological outlier를 centroid로 만드는 부작용이 유발되고, 종과 속을 다른 클러스터로 쪼개어서 alpha diversity를 뻥튀기하는 현상이 생긴다. 상세한 내용은 매뉴얼  페이지 혹은 2010년도 Bioinformatics에 실린 논문 "Search and clustering orders of magnitude faster than BLAST"를 참조하라.

Usearchf를 이용한 클러스터링의 기본 실행법은 다음과 같다(USEARCH command line).
usearch -cluster_fast seqs.fasta -id 0.9 -centroids nr.fasta -uc clusters.uc
화면으로 출력되는 메시지를 살펴보자.

00:00  42Mb  100.0% Reading HB03_20180914.ffn
00:00 8.7Mb Pass 1...2408 seqs, 2393 uniques, 2382 singletons (99.5%)
00:00 367Mb Min size 1, median 1, max 3, avg 1.01
00:00 370Mb done.
00:00 370Mb Sort length... done.
00:18 399Mb  100.0% 2391 clusters, max size 3, avg 1.0
00:18 399Mb  100.0% Writing centroids to HB03_nr.fasta
00:18 399Mb  100.0% Writing clusters                  
                                    
      Seqs  2393
  Clusters  2391
  Max size  3
  Avg size  1.0
  Min size  1
Singletons  2378, 99.4% of seqs, 99.5% of clusters
   Max mem  400Mb
      Time  18.0s
Throughput  132.9 seqs/sec.

두번째 줄에 표시된 수치는 이해하기가 좀 어렵다. 메시지 후반에 나온 확정된 수치를 참고하거나, 혹은 클러스터를 FASTA file로 출력하여 직접 서열의 수를 세는 것이 더 확실할 것이다. 2393개의 (unique) sequence라는 것도 어떻게 계산된 것인지 잘 모르겠다. Singleton이라 하면 클러스터링 후 멤버가 하나인 서열을 의미하는 것일텐데, 이것과 unique는 무엇이 다른 것일까?

-cluster_fast는 command, -centroids는 output option이다. 입력 FASTA file은 -cluster_fast 바로 뒤에 와야 한다. 클러스터 정보는 clusters.uc 파일에 기록된다. 이 파일의 포맷은 ucluster의 매뉴얼을 참조하라(링크). 클러스터를 구성하는 서열을 얻고 싶다면 다음과 같이 -cluster 옵션을 주어야 한다(cluster_fast에서만 작동). 그러면 cluster_dir 아래에 c_0, c_1, c_2...과 같은 서열 파일이 생긴다. 각 파일은 하나의 클러스터를 의미하며, 파일 내의 첫번째 서열이 바로 centroid가 된다. cluster_dir 디렉토리는 usearch 실행 전에 만들어 두어야 한다.
usearch -cluster_fast seqs.fasta -id 0.9 -clusters cluster_dir/c_
Usearch는 기본적으로 입력 파일에 존재하는 서열의 순서에 따라서 일을 한다. Fragment를 포함시키는 속성에 의하여 이것이 centroid로 쓰이게 되면 결과적으로는 매우 바람직하지 못하다. 따라서 -sort length 옵션을 적용하는 것이 좋다(UCLUST sort order). 다른 sort 옵션으로는 abundance가 있다. 정렬 순서는 큰 것에서 작은 순이다.

그러면 2016년에 발표된 vsearch(논문 링크; GitHub)는 무엇인가? 소스코드가 공개되어있지 않고 알고리즘 설명이 빈약한 usearch를 대신하고자 만든 open source tool이라고 한다.

마지막으로 CD-HIT를 빼놓을 수 없다(GitHub). 거대한 분량의 데이터를 초고속으로 다루는 cd-hit에는 다양한 핵심 프로그램과 스크립트가 포함되어 있다.

추가 작성: 2018년 10월 23일


위의 내용은 2018년 10월 23일에 대폭 수정되었다. 더불어서 새로 조사한 사항도 추가하고자 한다. 2011년도에 발표된 SiLiX 패키지라는 클러스터링 도구가 있었는데(링크) 크게 인기를 얻지는 못한 것 같다. 이를 개발한 프랑스에서는 꾸준히 사용되는 것 같다. 논문에서는 usearch나 uclust를 언급하지는 않았다.

프로그램 실행 방법을 소개한 리뷰 글 "How to cluster protein sequences: tools, tups and commands"도 소개해 둔다(링크).

2018년 2월 7일 수요일

일루미나 iSeq 100을 처음 접하다

지난 월요일부터 오늘까지 2박3일 동인 강원도 홍천에서 열린 제14회 한국유전체학회 동계 심포지엄에서 일루미나가 새롭게 출시한 iSeq 1000 Sequencing System을 접하게 되었다. 기존의 benchtop sequencing system으로는 MiSeq 제품군이 있지만 이보다 더 소형화를 이룸은 물론 단지 버튼을 누르듯이 간편하게 작동시킬 수 있도록 만들어졌다고 한다. iSeq이라는 이름은 아이폰이나 아이패드, 아이맥을 연상시킨다. 국문 소개 페이지는 여기에 있다. 캐치프레이즈는 "Your new lab partner"이다.



사진 속의 장비는 실제 작동이 되는 것은 아닌 일종의 mock-up이다. 터치식 화면은 실제 작동 상태를 흉내내고 있다. 손에 들고 있는 카트리지에는 시퀀싱을 위한 모든 시약이 이미 들어있다. Flow cell을 끼우고 사용자가 제작한 라이브러리를 로딩하면 끝이다. 러닝 시간은 9-17.5 시간이며 2 x 150 bp의 read를 약 1.2 Gb(4백만 read)를 생산한다. 일루미나 시퀀싱 장비의 비교표는 여기에서 볼 수 있다.

가격대는 qPCR machine 정도로 책정될 예정이라서 누구나 실험실에서 필요한 순간에 라이브러리를 만들어서 즉시 시퀀싱을 하게 만들자는 취지로 개발된 것으로 보인다. Throughput은 그렇게 높지 않아서 응용 분야는 제한되어 있지만 충분히 쓸모있고 흥미로운 장비가 아닐 수 없다. Oxford Nanopore Technologies의 MinION을 겨냥한 것일까?

심포지엄이 열린 비발디파크 메이플동 1층 전시실에서 만난 미술작품. 작가와 작품명은... 모르겠다. 벽을 향해서 한껏 스트레스를 날린 모습이다. 파파파팍!


NCBI PGAP이 생성한 공개 전 GenBank file을 Roary에 사용할 수 없는 이유

Pan genome 분석 파이프라인인 Roary는 유전체 서열 및 유전자(translated) 서열을 내부에 갖고 있는 GFF3 파일을 입력물로 받아들인다. 이를 위해서는 Prokka로 predictiongks GFF3 파일이나 NCBI에서 다운로드한 GenBank 파일을 bp_genbank2gff3.pl 스크립트(BioPerl에 포함)로 전환하여 사용하면 된다.

요즘 Paenibacillus polymyxa 및 이와 연관된 미생물 균주의 유전치 비교 분석에 힘을 쏟고 있다. 우리 연구그룹에서 유전체를 해독하여 NCBI의 PGAP으로 주석화를 하였지만 아직 공개가 되지 않은 것이 두 건 있어서 미공개 상태의 GenBank file을 genome submission portal에서 내려받은 후 bp_genbank2gff3.pl로 처리하여 GFF3 파일을 만들었다. 이를 다른 공개된 유전체 정보에서 전환한 GFF3와 한데 섞어서 Roary를 실행하였다.

그런데 core gene이 하나도 생성되지 않는 것이 아닌가. 처음에는 적절하지 않은 균주의 유전체 자료가 섞여 있어서 그러한 것이라 생각했었다. 나머지 것들과 너무나 거리가 먼 균주가 단 하나라도 섞여 있다면, 이들 전체를 아우르는 core gene이 나오지 않을 것임이 너무나 명백하다. 실제로 그러한지 확인을 하기 위하여 roary2svg.pl 스크립트로 gene_presence_absence.csv 파일을 처리하여 SVG(scalable vector graphics) 파일을 만든 다음 웹브라우저에서 열어보았다.


그게 아니었다. 비공개 GenBank file에서 생성한 GFF3가 제대로 쓰이지 못하고 있었다. 이 두 개의 유전체는 여러개의 contig로 구성된 것이다. 그게 Roary 작동에 문제를 초래하지는 않는다. GFF3 파일을 열어보니 contig 서열 ID가 있는 곳이 전부 '>noname'으로 표시된 것을 발견하였다. Contig가 몇 개이든 관계없이 전부 동일한 ID를 달고 있는 것이었다. 왜 그런 것일까? GenBank file의 앞부분으로 가 보았다. 하나의 contig에 대해서 다음의 정보가 나타나고(feature와 sequence를 포함), '//'를 구분자로 하여 다음 contig에 대해서도 LOCUS로 시작하는 새로운 정보가 이어진다.
LOCUS       <생략>
DEFINITION  Paenibacillus sp. F4, whole genome shotgun sequence.
ACCESSION
VERSION

DBLINK      BioProject: PRJNA429493
            BioSample: SAMN08348193
ACCESSION과 VERSION 난이 비어있다는 것이 원인일 것 같았다. 간단한 Perl 스크립트를 작성하여 이 부분을 LOCUS 값으로 채워 보았다. 비로소 정상적인 결과가 나왔다. 가까운 몇 개의 species에 속하는 균주의 데이터를 50개 가량 투입하여 분석한 것이라 core gene은 1070개 정도로 그 수가 조금 적다. 사소한 문제이지만 해결을 하니 속이 다 시원하다.

2018년 2월 3일 토요일

원핵생물의 subspecies는 어떻게 제안되는가

미생물의 학명에는 Bacillus subtils와 같이 속+종으로 구성된 학술적인 명칭 이외에도 var(variety), serovar, pathovar, subspecies(subsp.) 등의 정보를 뒤에 붙이고 있는 것이 많다. 이들 중에서 공식적인 명칭의 일부로 인정을 받는 것은 오직 subspecies 뿐이다. 그래서 subsp. 뒤에 오는 이름은 이탤릭체로 쓰는 것이 옳다.
Bacillus subtilis subsp. subtilisBacillus thuringiensis serovar israelensis
원래 ~var.는 끝에 약자임을 알리는 점(.)을 찍어야 하는데 잘 지켜지지 않는 것 같다. Variety는 변종을 의미한다. 원래 식물학, 원예학 등의 분야에서 이러한 용어의 정의가 만들어져 왔을 것으로 생각된다.  미국 아이오와 주립대 사이트에서 Cultivar versus variety라는 제목의 글을 발견하여 링크를 남긴다. 이 개념을 미생물 분류학 세계에 그대로 적용하는 것은 쉽지 않을 것이다.

미생물 분류학에 관련된 웹 자료는 이상하게 찾기가 힘들다. 오히려 수의(獸醫)미생물학과 관련한 곳에서(Nomenclature of bacteria) 읽기 쉬운 자료를 찾아내었다. 다른 종으로 보기에는 너무 유사하고, 동일 종으로 보기에는 너무 먼(가깝고도 먼?) 미생물에 대하여 학명 뒤에 subspecies epithet를 뒤에 붙이게 된다. Epithet란 별명 또는 형용어구를 의미한다. Genome sequence를 사용하여 두 균주가 동일 종인지 아닌지를 비교적 객관적으로, 그리고 재현성있게 판별할 수 있게 됨에 따라서 과거에는 어느 종의 subspecies로 여겨졌던 것이 완전히 다른 종으로 독립해 나가는 경우도 흔하다.
When you divide a species into several subspecies, the original species always gets the same subspecies epithet as the species epithet.
이는 무슨 말인가? 어떤 종을 몇 개의 subspecies로 나누게 될 경우, 원래의 종은 종소명을 species epithet로 갖게 된다. 예를 들어 설명하자. Bacillus subtilis에 subsp. spizizenii가 새로 제안되었다고 하자. 그러면 기존의 Bacillus subtilis는 Bacillus subtilis subsp. subtilis가 된다는 뜻이다.

여기서 잠시 종소명(種小名; specific name 또는 species epithet)에 대해 설명을 해야 되겠다. 린네가 제안한 이명법에서는 속명과 종명을 이탤릭체로 나란히 배열한다고 누구나 알고 있다. 그러면 Escherichia coli 중 Escherichi = genus, coli = species라고 생각하기 쉽다. 하지만 정확히 말하자면 coli는 종소명이다. 종(species)명은 언제는 Escherichia coli인 것이다.

FZB42(T)가 Bacillus amyloliquefaciens subsp. plantarum가 된 스토리

이틀 전 작성한 미생물 분류학 토막글 - (later) heterotypic synonym이란 무엇인가에서 한때 Bacillus amyloliquefaciens subsp. plantarum으로 불리던 FZB42 균주가 B. velezensis로 편입된 과정을 설명하였다. 지금은 더 이상 유효하지 않지만, FZB42 균주에게 plantarum이라는 subspecies epithet를 처음으로 제안하게 되었던 2011년 Rainer Borriss의 논문을 살펴보고자 한다.
Relationship of Bacillus amyloliquefaciens clades associated with strains DSM 7T and FZB42T: a proposal for Bacillus amyloliquefaciens subsp. amyloliquefaciens subsp. nov. and Bacillus amyloliquefaciens subsp. plantarum subsp. nov. based on complete genome sequence comparisons. [PubMed]
독일 브란덴부르크의 사탕무 토양(식물병이 창궐했던)에서 FZB13, FZB24, 그리고 FZB42라는 균주가 발견되어 학계에 보고된 것은 1998년이었다. 이 균주들이 식물의 성장을 촉진하는 것이 알려지면서 주목을 끌게 되었다. 이러한 성질은 plant-associated rhizobacteria가 나타내는 전형적인 특성 중 하나이지만 Bacillus subtilis DSM 10과 Bacillus amyloliquefaciens DSM 7(둘 다 type strain임)은 그렇지 않았다. 파지 감수성 실험에 의하면 B. amyloliquefaciens와 가깝다는 것이 확인되었지만 16S rRNA genes sequence, ribotype pattern, SfiI macrorestriction profile 등에서는 B. amyloliquefaciens DSM7(T)와 구별되는 특징을 보였다. 특히 FZB42는 전체 유전체의 8.5%이 다양한 secondary metabolite를 합성하는데 관여하고 있음이 밝혀졌는데, 이는 DSM7의 두 배를 능가하는 것이었다. DDH 실험에서도 63.7-72.1%의 DNA-DNA related value를 보여서 두 균주를 완벽하게 다른 종으로 구별하거나 한 종으로 간주하기에도 애매한 상황이다(2017년 논문에서 DSM7과 FZB42의 ANI 값은 94.61%로 발표함). 그래서 새로운 B. amyloliquefaciens subsp. plantarum을 제안하고 FZB42를 type strain에 위치시킨 것이다. 
"우리가 아는한 Bacillus 속 안에서 전통적인 미생물 분류법과 whole genome comparison을 이용하여 새로운 subspecies를 제시한 것은 이번이 처음이다."

2018년 2월 1일 목요일

미생물 분류학 토막글 - (later) heterotypic synonym이란 무엇인가

Bacillus amyloliquefaciens subsp. plantarum FZB42라는 균주가 있었다. 왜 '있었다'라는 과거형으로 표현하였는가? 지금은 전세계 어디에도 이 균주를 보관하는 culture collection이 없거나, 지구상에서 멸종을 했다는 뜻인가? 그런 문제는 다행히도 아니고, 공식 명칭이 바뀐 것이다.

분류학은 생명과학의 여러 분야 중에서 매우 독특한 학문이다. 생물체의 특성(해부학적, 생화학적, 유전체학적 등)을 주의깊게 관찰하고 체계화하는 것은 일반적인 과학의 단계와 같다. 가설을 입증하기 위해 통제된 조건에서 실험을 하지는 않는다는 것(분석 실험은 많이 하지만)이 조금 다르고, 가장 심하게 다른 것은 매우 엄격한 규칙에 의존한다는 것이다. 물론 이 규칙은 새로운 지식이 발전하면서 계속 변한다.

나는 분자생물학이 국내에 맹렬하게 도입되던 시기에 공부를 하였기에 분류학에 대한 체계적인 교육을 받지 못하였다. 분자생물학·생화학은 모든 생명체를 아우르는 중심 원리에 집착한다. 반면 분류학은 거시적인 관점을 중요시하고, 동물·식물·미생물(아, 너무나 초보적이고 편견이 가득한 생명체의 분류 기준이여!)에 대해서 적용할 수 있는 방법이 천차만별이다. 현미경으로 겨우 보이는 세균에 손발이나 얼굴, 머리카락이 있는 것이 아니기 때문이다.

요즘 환경보호 이슈뿐만 아니라 각 국가가 고유하게 보유한 생물종의 전략자원화 추세에 따라 다시 분류학이 중요한 분야로 떠오르는 것 같다. 예전에는 정말 돈이 안되는 연구였다고 해도 과언이 아니니까 말이다. 어느 지역에 자생하는 어떤 식물에 혁신적인 신약 후보 물질이 있다고 하면, 그 식물을 제대로 구별해낼 수 있는 사람의 몸값이 올라갈 것이다. 학문적인 중요성이 아니라 경제적인 판단 기준에 의해서만 인정을 받으면 좀 아쉽긴 하다. 분류학 자체는 당연히 중요한 학문이다.

오늘 아침, Paenibacillus 종의 유전체 비교 분석을 하기 위한 바깥쪽 기준으로서 Bacillus amyloliquefaciens subsp. plantarum FZB42을 선택하여 그 서열 정보를 NCBI에서 찾아보았다. 이 균주는 식물체에 붙어서 사는(plant-associated bacterium을 이렇게밖에 표현하지 못하겠다) 그람 양성 세균으로서 식물의 성장을 촉진하며 항생물질로 활용할 수 있는 다양한 이차대사산물을 만들어낸다. 이미 다양한 미생물 비료 제품으로 만들어져 시판되고 있으며, 전체 유전체가 완전히 해독되어 2007년에 Nature지에 보고가 되었었다(논문 링크). 이 연구를 주도한 사람은 독일 훔볼트 대학에 근무하는 Rainer Borriss(ResearchGate)로서 현재 Bacillus와 Paenibacillus의 분류 및 comparative genomics 연구에 집중하고 있다. 연구 관심사가 나와 매우 유사하다. Bacillus는 16S rRNA gene seuqencing가 워낙 비슷해서 전통적인 방법으로 종을 구분하기가 까다롭기로 유명하다. 그래서 논문들을 추적하다보면 수시로 균주들이 이 종에서 저 종으로 옮겨다니게 만드는 제안을 많이 접하게 된다.

그런데 NCBI genome page에서 Bacillus amyloliquefaciens subsp. plantarum FZB42가 보이지 않는 것이었다. Bacillus amyloliquefaciens에 속하는 균주의 유전체 목록에 FZB42가 나타나지 않았다. 이게 도대체 어찌된 일인가? 몇년 전에 분명히 다운로드하여 잘 활용했었는데? 검색을 거듭한 결과 Bacillus velezensis로 명칭이 바뀐 것을 알 수 있었다. 그래서 이를 대신하여 B. amyloliquefaciens의 type strain인 DSM 7(free-living soil bacterium)의 유전체를 내려받아 사용하였다.

균주의 재분류 혹은 신종 보고 등에 관한 논문은 주로 International Journal of Systematics and Evolutionary Microbiology(줄여서 IJSEM이라 부른다)에 실린다. 여기에 실려서 공인을 받아야 비로소 어떤 균주의 명칭을 '공식적'으로 쓸 수 있고, 예전에 명명한 이름을 바꾸는 것도 이를 통해야 한다. 박테리아의 공인된 명칭 목록(approved list of prokaryotes)는 독일의 DSMZLSPN bacterio.net에서 확인 가능하다. 공인되기 전까지는 "Bacillus gaemokensis"처럼 따옴표로 둘러쳐야 한다. 정확하게 표기하려면 이탤릭으로 표시해야 함은 물론이다. 여담이지만 요즘은 균주, 유전자, 유전자형, 표현형, 학명 등을 쓸 때 예전만큼 엄격하게 규칙을 지키지 못하는 것 같다.

FZB42가 다른 종 명칭으로 갈아타게 만든 근거가 된 논문은 2016년도에 IJSEM에 실린 다음의 논문이었다.

[1] Bacillus velezensis is not a later heterotypic synonym of Bacillus amyloliquefaciens; Bacillus methylotrophicus, Bacillus amyloliquefaciens subsp. plantarum and ‘Bacillus oryzicola’ are later heterotypic synonyms of Bacillus velezensis based on phylogenomics. (논문 링크)

분류학에 익숙하지 않은 사람(나를 포함하여)은 무슨 뜻인지 알기 어려운 제목이다. Bacillus velezensis는 B. amyloliquefaciens의 later heterotypic synomym이 아니라고 한다. 그러면 그 과거에는 later heterotypic synonym이었던 적이 있었나보다. 정말 그렇다!

[2] Bacillus velezensis is a later heterotypic synonym of Bacillus amyloliquefaciens. (2008년 논문 링크)

그리고 이 복잡한 관계를 정립하는 것으로 보이는 최근 논문이 2017년도에 나왔다. 역시 Borriss가 참여하였다.

[3] Bacillus amyloliquefaciens, Bacillus velezensis, and Bacillus siamensis Form an “Operational Group B. amyloliquefaciens” within the B. subtilis Species Complex. (논문 링크; PubMed가 아니라 PMC가 좋은 점은 논문 원문을 읽을 수 있다는 것이다)

자, 그러면 Bacillus를 둘러싼 복잡한 내력은 조금 뒤에 알아보는 것으로 하고, (later) heterotypic synonym이라는 가슴에 잘 와닿지 않는 용어를 공부해 보기로 하였다. 서울대학교 식물분류학연구실 장진석 교수님의 웹페이지에는 식물 분류와 관계된 자료를 많이 서비스하고 있다. 여기에서 용어 설명 페이지(링크)를 찾아가 보았다.

  • synonym 이명. [미정의] 같은 분류군에 적용되는 복수의 학명 중 1개(이형이명, 동형이명 참고)
  • homotypic synonym 동형이명(명명법상 이명). 학명이 다르지만 같은 기준표본에 근거한 학명(제14.4조); 국제동물명명규약과 국제세균명명규약(세균규약)에서는 각각 객관적 이명(objective synonym)으로 불림(제14.1조 각주)
  • heterotypic synonym (taxonomic synonym) 이형이명(분류학적 이명) 같은 분류군을 나타내는 학명과는 서로 다른 기준표본에 근거한 학명(제14.4조). 국제동물명명규약과 국제세균명명규약(세균규약)에서는 각각 주관적 이명(subjective synonym)으로 불림(제14.4조 각주)
실제 조항은 조류, 균류와 식물에 대한 국제명명규약(멜버른 규약 2012 번역 링크)을 참조하면 된다. 박테리아에 관한 규약은 어디에 있을까? NCBI Bookshelf에 있다(링크).

국문으로 된 자료를 접했다고 해서 '이형이명'이 쉽게 이해되는가? 영 그렇지 못하다. 자연계에서 순수하게 분리한 박테리아 표본이 있다고 가정하자. 이를 서로 다른 연구자가 별도의 과정을 통해서 나름대로 이름을 붙인 경우 그 중 하나가 동형이명이 되는 것으로 생각된다. 그렇다면 이명이형은? 그리고 'later' 이형이명은? 


가장 최근 논문인 [3]의 서론 부분을 읽어보았다. 2004년 Reva 등이 식물 혹은 토양에서 일곱가지의 B. subtilis group 균주를 분리하였다. 이들은 근권에서 잘 정착하여 자라면서(rhizosphere colonization) B. amyloliquefaciens의 표준 균주인 DSM7과는 다른 특성이 있었다. 여기에는 GB03과 FZB42가 있었다. GB03은 2014년 우리 연구그룹에서 유전체를 해독하여 짧은 보고를 한 적이 있다(링크). 새로운 종인 Bacillus velezensis는 1년 뒤인 2005년 신종으로 보고되었다(링크).

즉 FZB42는 B. amyloliquefaciens에 속하는 하나의 균주로 학계에 보고되었고 1년 뒤에 별도의 과정을 거쳐서 B. velezensis라는 종이 보고되었다는 것이다. B. amyloliquefaciens species가 제안된 것은 1943년인데, 실제로 공인된 것은 훨씬 뒤인 1987년이었다. 그런데 추후에 두 종의 type strain을 가지고 실험을 해 보니 "high DNA-DNA similarity and lack of phenotypic distinctive characteristics"에 의해서 B. velezensis를 B. amyloliquefaciens의 "later heterotypic synonym"이 되어야 한다고 주장한 것이 논문 [2]이다. B. velezensis BCRC 17467(T)와 B. amyloliquefaciens BCRC 11601(T) DNA 유사도(DDH 실험 결과)는 74%여서 다른 종으로 보기 어려웠다는 중요한 근거 중 하나가 되었다.

만약 B. amyloliquefaciens의 기준 표본(type strain과 동의어로 보아도 무방할 것이다)을 가지고 연구하던 사람이 이를 B. velezensis라고 명명했다면 아마도 homotypic synonym이라고 부르게 되지 않을까? 나는 최소한 이렇게 이해하였다.

그러면 다음의 어느 표현이 맞을까? 둘 다 맞을까, 아니면 어느 하나만 맞을까?

  1. Bacillus velezensis (syn. Bacillus amyloliquefaciens subsp. plantarum) (syn. Bacillus methylotrophicus) (syn. Bacillus methylotrophicus subsp. plantarum) (syn. Bacillus oryzae) 
  2. Bacillus amyloliquefaciens (syn. Bacillus velezensis) 
NCBI taxonomy 사이트에는 오직 (1)의 방식으로만 표기되어 있음을 알 수 있다(링크). 만약 (1)과 같이 표기한다면 먼저 공인된 종 명칭인 B. amyloliquefaciens가 매우 섭섭할 것이다. 그러나 아직 두 표기 형태 중 어느 것이 올바른지는 확신이 서지 않는다. 심지어 B. velezensis는 syn. B. oryzicola, 그리고 syn. B. methlotrophicus이기도 하다. 이는 논문[1]의 내용 중 하나이기도 하다.

왜 논문[1]에서는 B. velezensis가 B. amyloliquefaciens의 later heterotypic synonym이 아니라고 했을까? 저자들은 DDH 실험이 아니라 genome sequencing을 그 건거로 삼았다. B. amyloliquefaciens DSM7T에 대해서는 dDDH(digital DDH, 즉 genome sequence에 의한 계산; Genome-toGenome Distance Calculator 링크)가 55.5%에 불과한 반면, B. amyloliquefaciens (subsp. plantarum) FZB42T에 대해서는 85.8%였다. Sequencing에 의한 계산이 실제 DDH 실험을 이긴 셈이다.

어차피 B. amyloliquefaciens DSM7과 B. amyloliquefaciens (subsp. plantarum) FZB42T의 dDDH 계산수치는 56.2% 수준이었다. 이 논문으로 말미암아 B. velezensis는 B. amyloliquefaciens의 synonym을 벗어났고, 대신 B. amyloliquefaciens subsp. plantarum은 Bacillus velezensis의 later heterotypic synonym이 된 것이다. 또한 B. methylotrophicus와 'B. oryzicola' 역시 B. velezensis의 later heterotypic synonym이 되었다.

이제 논문[3]을 음미하면서 오랜만에 길게 쓴 글을 마무리하고자 한다. DSM7과 유사한 66개의 genome을 내려받아 비교한 결과(rpoB 유전자와 core genome sequence 사용) 이들은 (1) B. amyloliquefaciens, (2) B. siamensis, (3) a conspecific group(B. amyloliquefaciens subsp. platarum, B. velezensis, 그리고 B. methylotrophicus의 type strain을 전부 포함)의 세 개 그룹으로 묶을 수 있었다(근거로는 TETRA와 AAI). Monophyletic clade에 속하는 이 세 개의 그룹은 너무나 유사하여 종의 약간 상위에 존재하는 "operational group B. amyloliquefaciens"를 제안하였다. 비록 이들이 요즘 점점 중요성이 강조되고 있는 분석 기법인 ANI나 dDDH로는 한 종의 범주에 넣기에는 다소 곤란하다고 해도 말이다. 또한 이그룹은 식물과 더불어 살아가는 라이프스타일을 계쏙 발전시켜나가고 있는 중이며, 그러한 과정이 유전체에 남아있는 것이다.