2019년 8월 23일 금요일

2019 CJ R&D Global Conference "생명공학 기술로 만드는 우리의 미래"

2019년 8월 22일(어제), 작년에 이어서 CJ 블로썸 파크에서 열렸던 2019 CJ R&D Global Conference(프로그램연사)에 다녀왔다. 파견 근무지에서 걸어서 갈 수 있는 위치라서 별 부담 없이 다녀올 수 있었다.





오랜만에 만난 신수안 미래기술연구소장 겸 부사장님이 세션 I 좌장을 맡았다. 이분에게 암실에서 흑백 사진 인화를 배웠던 기억이 난다.

작년에 이어서 올해에도 microbiome에 대한 발표가 큰 비중을 차지하고 있어서 관련 업(학?)계에 있는 나로서는 관심을 갖지 않을 이유가 없다. 인간의 장내 미생물이 면역이나 대사에 관련하여 중요한 역할을 함은 잘 알려져 있는데, 신경정신과적 질환에도 연관이 있음을 시사하는 연구 결과가 최근 많이 발표되고 있다. Plenary lecture에서 첫번째로 발표(제목: The gut microbiome and neurological disorders)를 한 캘리포니아 공과대학(Caltech)의 Sarkis K. Mazmanian은 이러한 연구 분야의 선두 주자라 할 수 있다. 강연에서는 장내 미생물이 만드는 아밀로이드 단백질에 신경세포로 들어가서 파킨슨병을 유발하는 인자로 작용할 수 있음을 시사하는 결과를 보여주었다. Mazmanian 연구실의 In the News 웹사이트를 방문하면 언론에 소개된 관련 연구 성과가 나온다. 2017년 Immunity에 실렸던 리뷰 논문을 읽어봄직하다.

http://dx.doi.org/10.1016/j.immuni.2017.05.011

Plenary lecture의 두번째 연사는 합성생물학 분야의 대가로 잘 알려진 UC 버클리의 Jay Keasling은 'Engineering biology for sustainable development'라는 제목으로 미생물의 게놈 엔지니어링과 인류를 위협하는 문제(건강, 에너지, 자원 고갈 등)를 극복해 나가는 사례를 발표하였다. 말라리아 치료제로 잘 알려진 artemisinin, 맥주원료 홉을 대신할 GM 미생물, 바이오플라스틱 등의 주제는 물론 이를 어떻게 사업화로 이어가고 있는지를 소개하였다. 맥주 이야기에 관심이 있다면 Brewing hoppy beer without the hops를 참조하라.

신생학문인 미생물 내분비학(microbial endocrinology)란 무엇인가? 아이오와주립대 수의학과 교수인 Mark Lyte가 주창한 이 용어는 미생물이 숙주에 영향을 미칠 수 있는 신경전달물질을 인식하거나 만드는 능력을 연구하는 분야를 말한다(Microbial endrocrinology and the microbiota-gut-brain axis, PubMed). 인간의 체내에서 작용하는 신경전달물질은 사실 자연계에도 널리 존재하며, 따라서 진화적인 관점에서 이를 다루어야 한다는 것이다("Understanding the role of microbial endocrinology in the microbiome"). 또한 항생제가 아닌 약물이 미생물에 어떤 영향을 미치는지에 대해서는 잘 알려져있지 않은데, EMBL의 구조 및 바이오인포매틱스 그룹장인 Kiran Raosaheb Patil은 잘 설계된 실험을 통해서 대규모의 drug-bacteria interaction을 연구한 최신 결과를 발표하였다("How drugs impact our bugs"). 비록 인도식 영어 억양이라서 알아듣기가 매우 어려웠다는 것이 아쉬움으로 남는다. 이럴 거라면 나도 동시통역기를 대여하여 들어볼 것을.

학술행사와 더불어 석박사 학위 취득자(예정자 포함)를 대상으로 하는 채용/직무 상담도 동시에 진행되었다. 사전에 온라인으로 신청한 지원자들이 이날 오후 개별적으로 미팅을 하여 당일 서류전형 결과를 확인하는 독특한 방식이었다. KRIBB에 재직하던 시절부터 알던 반가운 사람들을 이 자리에서 많이 만날 수 있었다. 개방형 연구혁신을 통해 외부 아이디어를 모집하여 지원하고(CJ제일제당 블로썸 아이디어랩 1기 개최, 뉴스 링크), 국외에서도 직접 인재를 찾기 위해 사장단이 LA까지 총출동하는 등(CJ 글로벌데이 개최, 뉴스 링크) 미래를 준비하기 위해 전사적으로 힘을 쏟는 모습이 인상깊었다. 문득 대덕연구단지에 있는 선후배·동료 연구자들이 생각이 난다. 아직도 우리는 더 많은 지원을 요구하는 목소리만 내는 수준으로 머물러 있는 것은 아닐까?

논문 심사 후 거절 의견을 보내면서

연구자로서 누구나 논문을 써서 좋은 학술지에 출판하기를 원하지만 리뷰어로서 논문 심사 부탁을 받는 것은 참 성가신 일이다. 분야에 잘 맞는다면 봉사를 한다는 의미에서 심사를 수락하는 것이 바람직하지만 말이다. 내가 힘겹게 작성한 논문이 게재 승인(보통 accept가 되었다고 표현한다)을 받았다는 것은 담당 편집인(editor)과 리뷰어가 뒤에서 숨은 수고를 했다는 뜻이 되니 내가 반대로 리뷰어의 입장이 되었을 때는 되도록이면 응하는 것이 옳을 것이다. 현재 대부분의 학술지가 따르는 동료 심사(peer review)가 항상 완벽한 것은 아니지만 말이다.

요즘 주로 메일함을 어지럽히는 것은 리뷰 요청보다는 듣도 보도 못한 출판사에서 논문을 금방 실어줄테니 원고를 보내달라는 메일이다. 돈벌이를 목적으로 하는 이런 수준 이하의 '약탈적' 출판사 혹은 학회의 실상에 대해서는 국내에서도 큰 문제가 되었던 WASET 학회 사태를 통해 이제 잘 알려진 상태이다. 이를 방지하기 위해 한국연구재단에서도 2018년 9월 약탈적 부실 학술지 및 학술대회 피해를 예방하기 위한 가이드를 배포하였다.

부실 학술지 및 학술대회 피해 예방 관련 해외자료 소개

이야기가 좀 다른 곳으로 흘렀다. 오늘 글을 쓰려는 것은 부실 저널이나 학회에 관한 것이 아니라 심사 의뢰를 받은 매우 부실한 국외 논문에 관한 것이다. 리뷰어는 자신이 심사한 논문의 내용에 대해서 기밀을 유지해야 하므로 저자나 논문 내용을 특정할 수 있는 민감한 사항을 제외하고 이 문제를 짚어보고자 한다.

심사 요청을 받은 논문은 어떤 미생물 균주 4건의 유전체 해독 및 분석에 관한 내용을 다루고 있었다. 영어를 모국어로 쓰지 않는 사람이 원고의 영어 수준에 대하여 왈가왈부한다는 것이 대단히 적절치 않음은 잘 알지만, 워드프로세서에서 기본적으로 제공하는 맞춤법 검사 기능도 전혀 작동시키지 않은 듯 철자 오류가 너무나 많았다. 요즘 출판되는 유전체 논문의 수준에도 한참 못미치는 분석 방법과 해석 방법도 문제였다.

하지만 정작 나의 뚜껑(?)을 열리게 한 것은 다른 곳에 있었다. 이 논문에서는 미생물 균주를 배양하여 유전체 해독을 한 것이 주된 내용의 하나였다. 균주를 어디에서 입수했는지에 대한 기본 정보조차 쓰지 않은 것은 일단 논외로 하자. 당연히 NCBI에 유전체 염기서열을 제출하여 받은 accession number도 원고에 기재가 되어 있었다. 그런데 구글을 검색해 보니 똑같은 유전체 데이터를 사용하여 만들어진 논문이 이미 2018년에 다른 저널에 출판되어 있었다. 그 논문을 보면 NCBI에서 genome data를 '입수'하여 분석을 한 것처럼 기술하였다. 균주 배양, DNA 분리, 라이브러리 제작, 시퀀싱 및 어셈블리는 마치 저자들과 관련이 없는 것처럼 보였다. 하지만 2018년 논문과 이번에 내가 심사한 논문의 저자는 교신 저자를 포함하여 총 세 명이 일치한다.

이건 정상이 아니다. 게다가 2018년에 논문에는 어떤 유전자군의 분석 결과를 실었는데, 이번 논문에는 그 유전자군의 한 서브셋을 가지고 또 비슷한 그림을 그려 놓았다. 내가 보기에 이는 내용상 자기 표절에 가깝다.

두 개의 논문이 별도의 논문으로 존재해야 할 타당한 이유를 도저히 느낄 수가 없었다. NCBI에 유전체 정보를 등록하여 accession number가 발급되었다고 하자. 그렇다고 해서 sequencing and annotation에 해당되는 논문이 반드시 시기적으로 먼저 나와야 한다는 법은 없다. 하지만 동일 연구자 그룹이 생산하여 등록한 데이터를 마치 공개된 유전체를 입수하여 분석만 한 것처럼 첫번째 논문을 내고, 일년이 지나서 유전체 시퀀싱을 주된 내용으로 하는 논문을 별도로 낸다는 것은 이해할 수가 없다. 더군다나 두 논문의 교신 저자도 같다. 만약 두 논문이 내용적으로 별도의 논문으로 출판되기에 충분히 독립적인 일이라 한다면(균주 세트는 동일하다 해도), 두번째 논문은 첫 논문을 참고문헌으로서 인용하는 것이 자연스럽다. 하지만 이번 논문에서 2018년의 논문을 인용하는 것은 심각한 자기 모순에 빠지는 결과를 낳는다.

왜 그런가? '우리는 이미 2018년 논문에서 이 세균 균주들의 유전체 해독을 했었다'라고 할 수는 없다. 왜냐하면 2018년 논문에서는 유전체 서열을 NCBI에서 입수해서 썼다고 했고, 유전체 해독은 이번 논문의 주된 결과 중 하나인 것으로 기술했기 때문이다. 그리고 2018년 논문을 누군가 본다면 '어라? 같은 유전자를 가지고 그때 이미 그림을 그렸었네?'하고 눈치를 챌 것이 뻔하다. 저자 역시 2018년 논문에 대해서는 이번 원고에서 전혀 언급하지 않았다. 이는 다분히 의도적인 것이라 생각된다.

문제의 2018년 논문 URL을 여기에 공개해버리고 싶은 열망이 부글부글 끓어오르지만, 리뷰어의 도의상 기밀은 지켜야 하므로 참기로 하였다. 단박에 reject의견을 날렸다. 한국의 학술단체에서 출판하는 논문이라 해서 우습게 알고 이런 수준 이하의 논문을 보낸단 말인가?

2019년 8월 20일 화요일

여름 쇼핑 - 손목시계를 하나 더 구입하다

약간의 여유 자금이 생겨서 카시오 에디피스(Edifice) 브랜드의 표준 크로노그래프 손목시계 EFR-S567D-2AV(2019년 신모델)를 구입하였다. 일본산 제품에 대한 불매 운동이 한창 벌어지고 있는 요즘 상황에 비추어 볼 때 적절치 않은 구매 행위라는 소리를 들어도 어쩔 수 없다.

이 시계는 커다란 초침이 없다. 보통 크로노그래프 시계는 큰 초침이 스톱워치용 초 단위를 나타내는데(평소에는 12시 방향에 멈추어 있음), 이 시계는 12시 방향의 서브다이얼의 바늘이 그것을 대신한다. 시계가 잘 가고 있는지를 확인하려면 9시 방향의 파랑색 작은 바늘을 보아야 한다.



아직까지 나에겐 파란 다이얼의 시계가 하나도 없었기에 이것을 골랐다. 아내에게 줄 팔찌형 시계는 타임메카에서 오늘 배송될 예정이다.

2014년까지만 해도 나는 결혼 예물 시계를 그야말로 '닳도록' 차고 다녔었다. 간간이 실용적인 전자시계를 코팅이 전부 벗겨질 정도로 차기도 했었다. 시계에 대한 관심이나 욕심은 전혀 없었고, 흠집이 나지 않게 아껴서 차야겠다는 생각도 갖고 있지 않았지만 중학생이 되면서부터 시계를 차던 버릇은 휴대폰이 보편화된 지금까지 없어지지 않았다.

2014년 당시 보유 시계. 2014년 7월 맨 왼쪽의 포체 손목시계를 시작으로 시계가 조금씩 늘어나게 되었다. 세번째 타이맥스 시계는 밴드를 분리하여 요리용 스톱워치가 되었다. 출처 링크.
오늘의 글에서 사진으로 보인 것 말고도 다섯 개의 시계가 더 있다. 그중에는 오토매틱 시계에 대한 관심 때문에 구입했던 저급의 중국산 시계도 하나 포함된다. 이런 시계를 샀었던 것을 밝히고 싶지 않은(그러나 블로그에 기록은 했었다), 지금 생각하면 이런 물건을 왜 샀나 싶을 정도로 한심한 제품이었다.

시계가 점점 많아지니 지금은 거의 차지 않는 예전 시계의 관리가 문제다. 소모된 배터리를 제때 교체하지 않으면 액이 흘러나와 무브먼트를 망치게 된다. 아예 배터리를 빠 놓아야 할지, 아니면 계속 새것으로 교체를 해야 될지 고민스럽다. 현재는 서툴게 시계줄을 조정하거나 교체하는 정도만 하고 있는데, 뒷뚜껑을 열고 배터리를 직접 교체하는 수준까지 직접 해 볼 것인가?

고만고만한 시계를 사 모으지 말고 아예 한 방에 제대로 된 시계를 장만하는 것이 정석이라는 말도 흔히 듣게 된다. 나의 선택은? 모른다.

2019년 8월 19일 월요일

잘 쓴 글씨로 좋은 평가를 받으면 특혜인가?

바꾸어 말하자면 글씨를 못쓴다고 불이익을 받으면 편견이고 차별인가? 오늘 경향신문 인터넷판에 실린 기사를 소개해 본다.

글씨마저도 스펙 시대...'지렁이체 바꿔야 산다'

이 사진의 저작권은 누구에게 있는지 나는 모른다. 오늘(2019년 8월 19일) 경향신문에 입력된 기사(위의 링크 참조)에 딸린 이 사진에는 출처에 대한 아무런 정보가 없다. 놀랍게도 같은 신문 2005년에 11월 10일에 실린 기사 '[피플] 악필, 너는 내 운명인가?'에도 같은 사진이 쓰였었다. 보고서 표지의 제출일은 2005년 11월이다. 이것이 실제 과제물로 제출한 보고서를 촬영한 사진인지(허락은 받았을까) 혹은 기사의 이해를 위해 연출한 것인지를 나도 모른다. 만약 실제 존재하는 보고서를 촬영한 것이라면, 보고서를 쓴 사람에게 어떤 허락을 받아야 하나? 얼굴을 찍은 것은 아니니 초상권은 아니고, 그렇다면 저작권인가? 그것도 아닐지도 모른다. 물론 이름(성은 살짝 가렸지만)과 학번이 노출되었으므로 개인정보를 무단으로 공개한 것일 수도 있겠다. 어쩌면 기자는 이런 보고서 표지를 그냥 찍어서 기사에 곁들이기 방식으로 사용한다 해도 법적 책임은 없다는 것을 이미 알고서 사용했는지도 모른다. 이러한 상황이 꽤 많이 있다는 글을 본 적이 있다.
기사의 내용만을 보면, 시험 답안을 악필로 써서 점수가 깎인 법학전문대학원 학생이 글씨 교정학원에 등록하면서 이렇게까지 해야 하는지 부당함을 토로하는 것으로 시작한다. 가뜩이나 취업도 안되고 '스펙'을 쌓느라 시간과 금전적 부담을 져야 하는 요즘 사람들에게 글씨까지도 예쁘게 잘 쓰라고 은연중에 강요하는 사회가 되었음을 비판하는 의도로 쓰여진 기사이다.

만약 옷 매무새나 목소리로 사람을 평가한다면 그건 틀림없이 차별이라고 비난받아 마땅하다. 그러나 글씨라면? 요즘은 책장을 넘겨가며 정보를 습득하는 일도 과거에 비해서는 월등히 줄어들었고, 손으로 글씨를 쓰는 일도 마찬가지로 줄었다. 쉽게 말해서 계약서나 카드 결제기에 서명을 하는 정도 외에는 글씨를 전혀 쓰지 않아도 일상 생활에 불편함이 거의 없는 시대에 잘 쓴 답안에 더 높은 점수를 부여하고, 심지어 입사 지원 서류 중 하나로 자필 자기 소개서를 쓰게 하는 것은 부당하다고 주장할 수도 있겠다. 사실 입사 시험을 보는 그 자리에서 자필 서류를 쓰게 하지 않으면 얼마든지 대필도 가능한 세상이다. 글씨를 얼마나 잘 쓰는지의 여부로 편견을 가지면 안되니 앞으로는 평가 등을 위해서 절대 손으로 쓴 글씨를 내서는 안되게 해야 한다고 약간 급진적인 주장을 할 수도 있을 것이다.

하지만 내 생각은 좀 다르다. 글씨는 일단 정보의 전달이 주된 목적이다. 정보 전달이 심각하게 어려울 정도의 필체라면 고쳐야 한다. 이는 취업때에 임박해서 학원을 찾아다니면서 해결할 것이 아니라, 초등학교 및 중고등학교 때 어느 정도는 훈련이 되었어야 한다는 이야기이다.

각종 과제나 답안지 등을 손글씨가 아니라 손글씨로 인쇄하여 냄으로써 손글씨를 못쓰는 사람에 대한 차별을 없애고 배려하는 효과가 있다면 워드 혹은 파워포인트에 온갖 현란한 장식을 넣어서 현혹함으로써 나타나는 부작용도 분명히 존재한다. 손글씨 학원 못지 않게 파워포인트를 '그리는' 기술을 익히는 것도 경제적으로 부담이 되는 행위니까 말이다. 그럴 것이라면 손가락에 굳은살이 박히도록 지나치게 많은 분량을 요구하지 않는 수준에서 정성들여 손으로 쓴 과제나 답안지를 제출하도록 하는 것이 더욱 심플하다.

만약 사법시험 2차시험 답안을 컴퓨터로 쓴다면 어떨까? 이러한 요구는 이미 오래 전부터 있었다고 한다(2002년 기사 링크). 그러나 당시의 기준으로는 외국에서도 이러한 사례가 아직 없고, 아마 시험장에서 컴퓨터로 쳐서 답안을 입력하게 된다면 예상치 못한 부작용이 생길 것이다. 예를 들어 잘 작성된 답안이 흘러나와서 학원가를 돌아다닐 수도 있고, 전산화된 자료를 몰래 들고와서 시험장의 컴퓨터에 입력하려는 시도가 이어질 것이 뻔하다.

나는 식구들 중에서 가장 글씨를 못쓰는 사람이었다. 아니, 정확히 말하자면 글씨를 못쓴다고 지적을 받는 사람이었다. 그래서 글씨에 대해서는 늘 자신감이 없었다. 교회에서 학생회 활동을 하던 고등학생 시절, 행사 계획서를 손으로 작성하여 장소 섭외를 위하여 찾아간 곳의 책임자(나의 작은아버지)께서 하셨던 말씀이 아직도 기억이 난다.

"야, 너희는 타자기도 없니?"

교회의 공식 업무에서는 타자기를 쓰던 시절이었지만 학생회에서 만드는 보고서나 계획서는 모두 손으로 쓰던 시절이었다. 물론 나는 이 일로 좌절하지는 않았다. 오히려 나의 글씨가 개성이 있고 잘 쓴다고 칭찬을 하는 사람은 나의 아내였다.

잘 쓴 글씨를 타인에 대한 예의라고 생각하면 이는 평가의 기준이 되고 권력이 작용하는 대상이 되고 만다. 쉽게 말해서 글씨가 그게 뭐냐고 한 마디를 하면 요즘 널리 쓰이는 표현을 빌리자면 꼰대질을 하는 셈이다. 그러나 글씨의 기능성을 생각하면 효과적인 내용 전달을 위해서는 어느 수준의 필체는 되어 주어야 한다고 생각한다. 우리가 두려워할 것이 있다면 AI가 글씨체를 평가하는 시대가 아닐까?

Pan-genome analysis tool에서 산출한 strain-specific gene의 활용에 조심해야 하는 이유

여러 미생물 유전체를 모아서 pan-genome 분석을 하면 각 균주에만 특이적으로 존재하는 유전자 정보를 얻게 된다. 이는 그 균주의 존재 여부를 검출하는 특이적 마커로 유용하게 쓰일 수 있다. 몇 번의 프로젝트를 통해서 특정 균주에만 존재하는 특이적 염기서열(꼭 유전자 단위일 필요는 없지만)을 찾아서 이것이 정말 쓸만한 것인지를 점검하는 과정에서 이상한 현상을 종종 발견하게 되었다. 즉, 해당 단백질 서열을 다시 비교 대상에 쓰인 모든 유전체들에 대하여 blast로 점검하면 identity가 95%를 훨씬 넘는 match가 다른 유전체에서 발견되는 것이었다. 이는 내 상식으로는 이해할 수 없는 일이었다. 오직 LS-BSR만 이런 문제를 보이지 않았고, roary, orthoMCL, 그리고 최근 설치하여 활용 가능성을 알아보고 있는 panX 모두 그러하였다. 유전자 단위가 아니라 유전체 단위로 분석을 실시하는 panseq의 novel region finder 기능에서만 이러한 이상 현상이 발견되지 않았다.

Pairwise similarity를 클러스터링하는 알고리즘의 특성인가? 내 수준으로는 이 레벨에서 벌어지는 일들을 이해하기 어렵다. 단서를 찾기 위해 panX 웹사이트를 뒤적거리다가 눈에 뜨이는 항목을 하나 발견하였다.

panX advanced options: Resolve unclustered genes

유사도가 매우 높지만 클러스터를 이루지 못하는 유전자들을 해결하기 위한 옵션이다. panX는 클러스터를 구성하는 유전자들의 길이 분포를 스무스하게 만들기 위해 점검을 실시한다는 뜻으로 풀이된다. 즉 기본 동작 조건에서는 유사도가 높지만 길이에 큰 차이가 있는 유전자를 분리시키는 것으로 보인다.

blast 결과를 점검해 보았다. 균주 특이적 유전자로 분류된 것 중 다른 균주에 존재하는 것과 similarity가 매우 높게 나왔던 것은 유전자 길이에서 큰 차이가 있었다. 즉 match가 이루어진 유전자 쌍 중에서 어느 하나에게는 full length match이지만, 다른 쪽에게는 절반이거나 혹은 그 이하의 영역에 대해서만 match였었다. Roary 웹사이트에는 이런 예외적 현상에 대한 설명이 없었고, 나 역시 paralog를 분리하는 문제에만 관심을 갖고 있었다. 당연히 직면할 수 있는 문제임에도 불구하고 이를 미처 인지하지 못했다니 부끄럽기만 하다. blast score ration를 기반으로 클러스터를 만들지 말지를 결정하는 LS-BSR에서는 이런 문제가 나타나지 않음을 쉽게 이해할 수 있다.

온전한 유전자(A)가 sequencing error로 인하여 길이가 유사한 두 개의 CDS(C + D)로 예측되었다고 가정하자. 다른 genome에 존재하는 A의 homolog는 C와 D 모두에 대해서 높은 similarity를 보이겠지만, 길이 분포의 문제로 인하여 이를 하나의 클러스터로 모으지는 못한다. A는 또 다른 genome에 존재하는 유사한 길이의 A', A'', A''' 등과 클러스터를 형성할 수는 있으나 모든 비교대상 genome을 아우리는 core genome의 일원은 되지 못할 것이고, C와 D는 균주 특이적 유전자로 취급될 것이다. 만약 C나 D를 그 균주의 특이적 마커로 판단하여 PCR primer를 고른다면 당연히 원하는 결과를 얻는 길에서 멀어질 것이다.

panX 파라미터를 건드려서 이러한 짧은 유전자를 억지로 클러스터에 포함시키는 것은 바람직하지 못하다. 아니, 짧은 유전자가 반드시 클러스터에서 소외되리라는 것은 편견이다. 대부분이 짧은 형태이고 유난히 긴 것이 하나 있다면 그것이 클러스터에서 제외될 것이다. 균주 특이적 마커 염기서열을 찾는 것이 주된 목적이라면, 아예 유전체 서열을 기본으로 움직이는 panseq를 사용하거나 또는 기존의 도구를 통해서 얻어진 unique gene을 전체 유전체에 대하여 최종 검색을 하여 점검하는 것이 바람직할 것이다.

2019년 8월 15일 목요일

6LQ8 푸시풀 앰프의 출력 트랜스 교체

6J6 푸시풀 앰프의 덮개를 열고 66 코어 트랜스 두 개를 꺼내고야 말았다. 이영건 선생님, 죄송합니다...


오른쪽은 그동안 출력트랜스 대용으로 써 왔던 전원트랜스.
스피커처럼 즉각적으로 바꾸어 연결해 가면서 소리를 비교할 수 있는 부품이 아니니 교체를 통해서 얼마나 소리가 좋아졌는지를 냉정하게 판별하기가 어렵다. 만약 파형발생기와 오실로스코프가 있었다면 매우 객관적으로 음질을 비교 평가할 수 있었을 것이다. 하지만 귀가 느끼는 세계는 계측과는 또 다른 차원이다. 제대로 만들어진 진공관 앰프용 출력 트랜스이니 당연히 음질은 더 좋을 것이다. 코어의 재질, 샌드위치 감기, 코어의 크기 등.

교체를 한 상태에서 소리를 들어보았다. 더 나아졌을 것이라는 기대감이 더 크게 작용하고 있으니 왠지 더 좋은 소리가 나는 것 같다. 볼륨 조절기의 본체에 접지선을 연결하고 NFB를 연결하는 것으로 마무리를 하였다.




6J6 푸시풀 앰프는 일년 반 정도 사용하였는데 벌써 부품용으로 전락하였다니 아깝다는 생각이 든다. 출력이 매우 낮고 마이크로포닉 노이즈가 심하다는 고질적인 문제점이 있었다. 앞으로 부품용 및 연구용으로 충분히 쓰일 수 있으리라 믿는다.

앞으로는 케이스를 개선하는 연구를 더 해야 되겠다.

2019년 8월 17일 업데이트

상판(나무 도마) 아래에 나무젓가락을 붙여서 앞뒤 좌우로 미끄러지지 않게 하였다.

다음으로는 적당히 구멍을 뚫어서 상판과 플라스틱 상자 부분을 케이블타이로 붙들어 묶을 생각이다. 구멍을 뚫기 위하여 핀바이스를 주문해 놓았다. 나무 또는 플라스틱에 작은 직경의 구멍을 뚫으려고 전동 드릴을 들이대기는 너무 거추장스럽다.

며칠 동안 들어본 결과를 말하자면, 제대로 제작한 푸시풀 출력 트랜스로 교체를 했다는 기대감 때문인 것일까? 지금까지 내가 사용한 그 어떤 진공관 앰프보다 소리가 좋다는 느낌이 강력하게 든다. 혹시 플라시보 효과는 아닐까? 정류회로쪽의 발열이 심하고 - 캐패시터와 저항류를 너무 가깝게 붙여 놓았고, 저항도 와트 수가 큰 것을 사용하는 것이 나았을 것이다 - 외관이 허름하다는 것 말고는 문제점을 찾기가 어렵다.

2019년 8월 21일 업데이트

핀바이스로 구멍을 뚫어서 상판과 플라스틱 상자를 케이블타이로 연결하였다. 상판이 두꺼워서 그런지 핀바이스를 쓰는 것이 쉽지 않았다. 돌리는 과정에서 자꾸 드릴날 고정부분이 풀어진다. 중국산 저가 수공구라 그런 것인지, 혹은 공구를 용도에 맞지 않게 쓰는 것인지?


섀시를 완전히 새로 꾸미지 않는다면 현재 거의 완성된 상태라 볼 수도 있을 것이다. 그러나 세부적인 모습을 들여다본다면 아직 부족한 모습이 많다. 플라스틱 상자 내의 기판(정류회로 및 리플 필터)은 서포트만 달아 놓았을 뿐 고정이 되지 않은 상태이며, 전원트랜스 역시 고정을 하지 않았다. 워낙 무거운데다가 주변이 기판으로 꽉 막혀 있어서 움직이지 않을 뿐이다.

내 귀가 간사한 때문일까? 출력 트랜스를 교체한 이후로 제법 소리가 좋다고 느껴진다.

2019년 8월 11일 일요일

진공관 앰프용 출력 트랜스의 임피던스 알아내기

6J6 푸시풀 앰프가 작동 중인 모습. 전자액자에 보이는 것은 조반니 파올로 파니니의 로마 판테온 내부(1734).

이영건 선생님이 제작신 6J6 푸시풀 앰프를 파견 근무지 숙소로 가지고 왔다. 최근에 만든 6LQ8 푸시풀 앰프와 비교를 해 보고 싶었기 때문이었다. 내가 만든 앰프는 일반 전원트랜스를 출력트랜스 대신으로 사용한 것이라서 음질이 불리할지도 모른다는 생각을 늘 하고 있었다.

막상 비교 청취를 하니 6LQ8 PP 앰프가 음질이 나쁘다고 할 근거를 찾기 힘들었다. 출력은 당연히 6LQ8 앰프가 크다. 파형발생기와 오실로스코프가 있어야 왜곡이 일어나기 전의 정확한 출력이 몇 와트인지를 측정할 수 있다.

6J6 앰프에 쓰인 출력트랜스의 임피던스 비율은 얼마일까? 제작자에게는 죄송한 이야기지만, 이를 적출하여 다른 앰프에 쓸 수도 있지 않을까? UL탭은 없으며 코어 사이즈는 66 mm이다. 제작자에게 예전에 전화로 문의한 적은 있는데 정확히 기억이 나지 않는다.


출력트랜스는 커버 없이 코어가 노출된 상태이며 내부의 베이클라이트판에 케이블타이와 순간접착제로 고정되었다. 볼륨 조절기가 왜 이렇게 뻑뻑한가 했더니 모터가 달린 전동 가변저항이었다(이런 물건).

6J6은 오디오용 진공관이 아니라서 이를 이용한 앰프의 회로를 인터넷에서 구하기는 힘들다. 검색된 정보는 다음이 전부이다.

[1] 위상반전회로 https://mysite.du.edu/~etuttle/electron/elect33.htm


[2] 1.2W 6J6 하이브리드 앰프 https://ibb.co/B4hRSyv https://youtu.be/3k8jxa0s788 (동영상) 'Ra-a = 16K+16K'라 한 것은 무슨 의미인지를 모르겠다. 유튜브 링크에는 'The video OPT is incorrect the OPT is 20Ka-a , the circuit require 32Ka-a and the B+ voltage is 300V is higher then design voltage. This is the power transformer is for temporary testing use.'라 하였다. 내가 알고 있기에는 32K 트랜스포머의 중간에 탭을 내면 양단과 중간 사이의 임피던스는 절반이 아니라 1/2, 즉 4K가 되는데(임피던스비는 권선비의 제곱에 비례하므로)...




[3] 6J6 PP 앰프 http://diyaudioprojects.com/Forum/viewtopic.php?t=5598
[2]와 [3]에서는 B 전원을 위해 voltage multiplier를 사용하였다. 늘상 접해왔던 (2)배전압을 능가한다.

6J6 PP 구성의 경우 16K:8 출력트랜스를 썼다는 글은 간혹 보인다. 위에 소개한 것 중 [3]번이 그러하다. 미지의 출력트랜스가 있을 때, 임피던스 비율을 알아낼 방법은 없을까?  만약 트랜스 1차에 220V를 연결하여 2차 전압을 재면, 권선비를 알 수 있다. 이를 제곱하면 임피던스 비율이 나온다.

6J6 PP 앰프는 매우 단순한 구성이라서 negative feedback도 걸려있지 않다. 따라서 출력관을 소켓에서 빼면 출력트랜스의 1차와 2차는 전기적으로 완전히 분리된다. 이런 상태에서 220V를 1차에 연결한 뒤 2차 전압을 측정하여 보았다. 9.3V가 나온다. 이번에는 2차에 5W 시멘트 저항 두 개를 16.4옴으로 만들어 연결하여 다시 측정을 해 보았다. 이번에는 8.95~8.96V 정도가 걸렸고, 부하저항에서 소모되는 전력은 계산상으로는 4.98W 정도가 된다. 처음에는 2.2옴 저항 하나를 연결하였었는데 열이 너무 많이 나서 즉시 전원을 끊었다. 전압비는 곧 권선비이므로 24.6이 되고, 제곱을 하면 605.16이다. 이를 환산하면 4.81K:8이 된다. 대충 5K:8의 매우 흔히 쓰이는 출력트랜스가 된다.

출력트랜스 1차 양단에 220V를 공급하기 위해 만든 케이블. 한번 만들어 두면 쓸모가 많다. 잠시 착각을 하여 클립을 납땜한 다음에 절연 외피를 씌우느라 애를 먹었다. 납땜을 하기 전에 수축 튜브 등의 다른 자재를 미리 관통시켜 놓는 것을 잊는 수가 가끔 있다. 머리가 나쁘면 늘 손발이 고생이다.

내가 만든 6LQ8 앰프 PCB에 6J6 앰프의 출력트랜스를 조합하면 가장 좋은 음질이 나올까? 이는 해 보기 전에는 알 수 없다. 출력트랜스를 재활용하기 위해 6J6 앰프를 완전히 분해해 버린다? 그것 역시 쉽게 결정을 내리기 어려운 일이다.

위험한 실험?

하루가 지나서 생각을 해 보니 출력트랜스에 상용전원 220V를 직결한 것은 다소 위험한 실험이었다고 느껴진다. 출력트랜스의 센터탭에 가해지는 수백 볼트의 직류를 생각한다면 전압 자체는 유사하지만, 뽑아낼 수 있는 전류는 비교 불가하기 때문이다. 좀 더 안전한 실험을 위해서는 다른 트랜스포머를 하나 거쳐서 연결하는 것이 나았을 것이다. 꼭 1차에 220V를 연결할 필요도 없을 것이다.

2019년 8월 10일 토요일

하루에 위 내시경 검사 두 번 받은 사연

건강이 좋지 않으셨던 아버지께서는 정기적인 위 내시경 검사를 무척 싫어하셨던 것으로 기억한다. 검사일이 다가오면 며칠 전부터 몹시 신경을 쓰시고 힘들어 하셨다. 그 모습을 봐 왔던 나는 직장에서 처음 내시경 검사를 하면서 자연스럽게 수면 내시경 검사를 선택하게 되었다. 그러다가 일반 내시경을 처음으로 받게 된 일이 생겼으니 사연은 이러하다. 가벼운 위궤양 증세가 있다고 하여 약 처방을 받고 2주 정도의 투약 치료가 끝난 뒤 재검을 하기로 했는데 담당자는 아주 간단하게 '일반 내시경 하실 거죠?'하면서 접수를 해 버렸다.

이런, 드디어 내가 일반 내시경을 하는구나. 

무척 긴장을 하고 검사대에 올랐는데 생각보다 많이 힘들지는 않았다. 그래서 그 이후로는 계속 일반 내시경으로만 검사를 받았다. 3년 전에는 대장 내시경을 같이 하느라 수면 내시경 검사를 했고, 2년 전에는 일반 검사를 받는데 십이지장쪽을 검사하는데 구역질을 좀 많이 했다. 그래서 작년에는 오랜만에 편하게 받아보자고 수면 검사를 택했다. 

일년에 한 번, 마치 숙제를 제출하듯 올해에도 건강검진 날짜는 다가왔다. 이번에는 또 무슨 방식으로 할까? 간편하게 빨리 끝나고 검사 후 맘대로 운전을 해도 되는 일반 방식이냐, 돈이 좀 들지만 편하게 치를 수 있는 수면 방식이냐. 일단 일반 방식으로 접수를 하고 당일날 마음이 바뀌면 수면 방식으로 하겠다고 이야기를 해 두었다.

검사날(오늘)이 되어 아침 일곱시 반도 되기 전에 병원에 도착하였다. 일반 내시경으로 접수를 했지만 수면 내시경으로 하고 싶다고 했더니 일단 변경이 되는지 알아보겠다면서 접수 직원은 검사실로 전화를 돌렸다. 추가로 내야 하는 비용은 4만원. 적은 금액은 아니었다. 그런데 검사실에서는 아직 전화를 받지 않았고, 일반 내시경으로 해야 빨리 끝나기 때문에 아침 일찍 오시라고 연락을 했다는 것이었다. 

그렇다면 일반 내시경으로 하지 뭐.

원래 접수했던 방식으로 검사를 받겠다고 했더니, 접수창구 직원은 내시경을 제일 먼저 하는게 어떻겠냐고 했다. 뭐라고? 지금까지 십수 년 건강검진을 받으면서 내시경은 항상 마지막 코스였다. 검사 항목 중에서 가장 힘든 것이니 그렇게 배치를 하는 것이 자연스럽기도 했고, 위 내시경을 먼저 받으라고 권장을 받은 적도 내 기억으로는 단 한 번도 없었다.

에라, 모르겠다. 뭐 그렇게 하지요.

그래서 옷을 갈아입고 내시경 검사실로 행햤다. 시각은 오전 8시가 갓 넘었고, 검사실에서는 8시 15분쯤에 검사가 시작되므로 다른 항목부터 먼저 받고 계시면 부르겠다고 하였다. 그래서 한 층 아래로 내려가 다른 검사를 먼저 받았다.

곧 호출을 받고 내시경 검사실로 향했다. 깨끗하게 소독된 기구를 오늘 내가 처음 쓰는 사람이구나! 가스가 빠지는 약을 받아 삼키고 검사실로 들어갔다. 목 마취용 약을 뿌리고 검사대에 누웠다. 오래 전에는 목 마취용 약을 입에 머금고 10분 이상을 기다리게 하였었다. 그러고는 약을 삼킨 다음 별도의 마취제를 또 검사 직전에 목에 뿌렸던 것으로 기억한다. 그때는 약을 입 안에 물고서 이리저리 움직이면 혀까지 마비가 되어서 검사가 다 끝나고도 한참 동안 감각이 돌아오지 않아서 식사를 하기 힘들었었는데, 언젠부턴가는 마취약을 목에 뿌린 즉시 검사를 하니 세상이 참 편해지긴 했다.

검사는 생각보다 매우 수월하게 끝났다. 내가 생각하기에도 매우 편안했고, 의사도 너무 잘 받는다고 칭찬(?)을 하면서 계속 사진을 찍었다. 별 문제가 될 소견은 없다면서 검사를 끝낸 뒤 찍은 사진을 보여주려는 찰나, 모니터에는 보이는 이미지가 없다. 내시경 카메라를 입 속에 넣기 전에 찍힌 것 하나만 덜렁 남아 있는 것이 아닌가.

'어머, 사진이 왜 안 넘어왔지?'

이런 일이 생기기도 하는구나. 별 이상이 없으니 그냥 이대로 마칠 것인가? 그래도 기록은 남겨야 하지 않는가? 결론은 내시경을 다시 한 번 더 받는 것으로 모아졌고 - 잘 참는다고 칭찬을 받은 것이 잘못이다! - 담당 직원들은 매우 미안해했다. 나도 별 불만을 제기하기 않고 그러라고 했다. 목 마취는 다시 할 필요가 없다고 했다. 다시 입에 기구를 끼우고 검사대에 옆으로 누웠다. 오, 이런...

두번째 검사는 조금 더 힘들었다. 이미 한 번 훑어 보았으니 담당 의사도 먼젓번보다는 신속하게 검사를 끝냈다. 거듭 미안하다는 말과 함께... 이런 일을 겪는 것이 내가 처음이냐고 물었는데 그건 아니라고 했다. 솔직히 말하자면 채혈을 위해 주삿바늘을 찔렀는데 혈관이 잘 잡히질 않아서 다른 곳을 또 찌르는 것보다 더 힘들지는 않은 정도라고나 할까? 폐암이라고 해서 왼쪽 폐를 절제했는데 나중에 수술을 마치고 났더니 실제 잘라내야 할 폐는 오른쪽인 것을 나중에 알게 된 것에 비하면 덜 황당무계한 일 아니겠는가?

내 자신이 별로 힘들지 않았고, 대단한 일이라 생각하지 않았기에 문제를 제기하지는 않았다. 어찌보면 두 번 겪기 힘든 경험 아닌가. 하지만 위 내시경 검사를 매번 할 때마다 봅시 힘들어하는 사람이라면 어떻게 했을까? 아마 몹시 화를 내고 다시 하지 않겠다고 할 것이다.

아마 내년부터는 위 내시경 검사를 하기 직전에 항상 카메라 작동이 잘 되냐고 묻는 버릇이 생길 것 같다. 그리고 일반 내시경으로 할지 혹은 수면 내시경으로 할지 망설이는 일도 줄어들 것이다.


2019년 8월 7일 수요일

SAM flag에 대해서 좀 더 알아보자 - mapping 여부에 따른 read 추출하기

SAM/BAM 파일로부터 properly paired (mapped) read를 꺼내려면 -f 0x03 flag를 쓰면 충분하다. 더욱 간단하게는 두번째 비트가 1이면 된다. -f 0x02의 의미가 proper pair이기 때문이다. 그러나 paired read가 쓰인 경우 항상 0x01과 따라다니게 되므로 -f 0x03이 더욱 바람직하다.

이토록 간단한 flag이지만, 실제 매핑이 이루어진 read의 입장에서 4가지의 경우로 세분한다면 이해의 폭을 더욱 넗힐 수 있다. Paired fastq file(I & II)을 이용하여 매핑을 하였을 때 하나의 참조서열 내부에서 정상적인 pair를 이루는 모든 경우는 다음이 전부이다. 화살표는 참조서열 위에 매핑일 이루어진 read를, 별표(*)는 fastq 파일에 수록된 상태의 서열을 reverse complementary로 전환해야 함을 의미한다. 내가 알기로 first 및 second는 _1 및 _2 파일을 의미한다. pair를 이루는 시작(left)과 끝(right) read를 의미하는 것이 아니다.

First           Second        Second           First
-------▶......◀-------     -------▶......◀-------
from I         from II*       from II         from I*
  [A]            [B]            [C]            [D] 

(아, 도대체 html로는 부등호 기호를 써서 화살표를 표현하기가 어려우니...)

A-B의 네 가지 read는 단 한번씩만 mapping되어서 SAM 파일 내에서 하나의 alignment record로 존재한다고 가정하자. 그러면 각각의 alignment는 어떤 flag을 갖게 될 것인가? flag의 설명은 samtools flag 명령으로 표시되는 것과 SAM flag decorder에서 쓰이는 용어가 조금 다르지만 편의상 후자의 것을 쓰기로 하자.

기본적으로 여기에 보인 네 가지 alignment는 전부  웹사이트기본적으로 read paired(0x01)와 read mapped in proper pair(0x02)를 만족하므로 0x03을 기본값으로 깔고 있다. 다음으로 생각할 것은 이 read가 pair 중 첫번째 혹은 두번째 read인가, 그리고 이 read와 mate 중 어느 것이 참조서열에 대하여 reverse로 존재하는가의 여부이다. 이는 다음과 같이 4가지의 flag으로 표현된다.

  • 0x10: read reverse strand
  • 0x20: mate reverse strand
  • 0x40: first in pair
  • 0x80: second in par
A는 mate reverse strand(0x20), first in pair(0x40)이다. 따라서 0x03 + 0x20 + 0x40 = 0x63 = 99
B는 read reverse strand(0x10), second in pair(0x80)이다. 따라서 0x03 + 0x10 + 0x80 = 0x93 = 147
C는 mate reverse strand(0x20), second in pair(0x80)이다. 따라서 0x03 + 0x20 + 0x80 = 0xa3 = 163
D는 read reverse strand(0x10), first in pair(0x40)이다. 따라서 0x03 + 0x10 + 0x40 = 0x53 = 83

99/147, 그리고 163/83은 NGS read alignment를 다루는 사람이라면 잊어서는 안되는 숫자가 되겠다. samtools view -f 99로 추출한 read는 -f 147로 얻은 것과 mate 관계이고, -f 163과 -f 83 역시 같은 관계이다. 이렇게 얻은 모든 파일을 합치면 -f 0x03으로 추출한 read 세트와 동일한 것이 된다. 혹시 내가 전개한 이론이 맞지 않다고 생각하는 독자가 계시다면 언제든지 연락 주시길!

Unmapped read에 대해서는?

read unmapped는 0x04(0x4, 또는 십진수로 4라고만 써도 되는데 버릇이 되어서 계속 두 자리 16진수로 표현하고 있다), mate unmapped는 0x08이므로 이를 적절히 조합하면 unmapped pair와 어느 한쪽만 mapping이 된 pair를 찾을 수 있다. 내가 생각하는 가장 간단한 flag 값은 이러하다. 
  • both unmapped: -f 12 (0x04 + 0x08, 16진수로는 0x0c)
  • read mapped, mate unmapped: -f 0x08 -F 0x04
  • read unmapped, mate mapped: -f 0x04 -F 0x08
그런데 Novocraft의 웹사이트(Extracting unmapped reads from a BAM file produced by NovoAlign)에서는 좀 더 복잡한 flag 값을 제시한다.
  • both unmapped: -f 12 -F 256
  • read mapped, mate unmapped: -f 8 -F 260
  • read unmapped, mated mapped: -f 4 -F 264
숫자 단위가 큰 flag은 무엇을 의미하는지 알아보자.
  • 256(0x100): not primary alignment
  • 260: 256 + 0x04(read unmapped)
  • 264: 256 + 0x08(mate unmapped)
이것을 -F로 적용하니 직관적으로 이해를 하기가 좀 어렵다. 테스트를 해 보면 내가 제시한 flag로 하는 것과 결과에 차이가 없다. 이로써 이틀에 걸친 SAM flag 공부하기를 마치고자 한다. SAM and BAM filtering one-liner도 참고하기에 좋다.



2019년 8월 6일 화요일

samtools flagstat로 출력되는 숫자를 재현하기

samtools flagstat는 SAM/BAM 파일에 수록된 read alignment 정보를 출력해 주는 매우 유용한 프로그램이다. 그러나 출력되는 정보는 기본적으로 read가 아닌 'alignment'라서 직관적으로 이해하기 어려울 때가 많다. 특히 하나의 read가 reference 서열에 존재하는 반복 서열에 의해 여러 곳에 매핑될 경우 계산이 잘 맞지 않는 것처럼 느껴진다. 이것을 명확하게 이해하기 위하여 samtools view -f (또는 -F) INT 명령의 flag를 잘 조합하여 samtools flagstat로 표현되는 수치와 같은 값이 나오게 만들어 보았다.

솔직하게 고백하자면 나는 거의 항상 CLC Genomics Workbench에서 NGS data를 다루기 때문에 SAM/BAM 파일을 다룰 일은 없다고 해도 과언이 아니다. 하지만 데이터 조작의 기본 원리를 이해하거나 사용 프로그램을 접하기 어려운 사람에게 설명을 하려면 CLC Genomics Workbench만을 고집할 수는 없다. 그래서 IGV(Integrated Genomics Viewer)도 가끔은 만들어야 한다.

미생물 유전체 서열로부터 64780 x 2(129560 reads, 2x150 nt)개의 가짜 fastq file을 만들었다. 사용한 시뮬레이터는 ART MountainRainier이다. 레퍼런스 서열은 read를 만들어낸 원본 read와 가까운 유전체를 대략 같은 간격의 약 500개의 조각(크기는 1 kb)으로 나눈 것이었다. 매핑에는 bowtie2를 사용하였다.

$ samtools view -H mapping.sam # 헤더 정보만 보여줌
$ samtools view -b mapping.sam > mapping.bam
$ samtools view -b mapping.sam -o mapping.bam # 같은 결과
$ samtools flagstat mapping.bam 
[1] 131900 + 0 in total (QC-passed reads + QC-failed reads)
[2] 2340 + 0 secondary
[3] 0 + 0 supplementary
[4] 0 + 0 duplicates
[5] 21390 + 0 mapped (16.22% : N/A)
[6] 129560 + 0 paired in sequencing
[7] 64780 + 0 read1
[8] 64780 + 0 read2
[9] 15554 + 0 properly paired (12.01% : N/A)
[10] 15710 + 0 with itself and mate mapped
[11] 3340 + 0 singletons (2.58% : N/A)
[12] 122 + 0 with mate mapped to a different chr
[13] 105 + 0 with mate mapped to a different chr (mapQ >=5)

그러면 각 줄번호에 해당하는 숫자를 재현해 보자. 0만 표시된 것은 제외하였다. alignment의 수가 필요한지(samtools view -c), 혹은 이로부터 read name에 해당하는 것을 뽑아낼 것인지를 명확히 해야 된다.

[1]은 read의 수가 아니라 alignment의 수이다. 다음과 같이 하면 된다.

$ samtools view -c mapping.bam
131900

[2]는 primary와 secondary mapping을 이해해야 한다. 256을 16진수로 표현하면 0x100이다. 따라서 -f 0x100이라고 써도 된다.

$ samtools view -c -f 256 mapping.bam
2340

수치가 나오지 않은 [3,4]는 생략하자. [5]는 mapped read의 alignment 수를 의미하므로, SAM/BAM flag의 0x04(unmap)의 반대, 즉 -F 0X04를 쓰면 된다.

$ samtools view -c -F 0x04 mapping.bam
21390

만약 properly paired read에 대한 것만을 추출하고 싶다면 -f 0x03(1 for paired, 2 for proper_pair)으로 설정해야 한다.

[6]은 매핑 결과와는 관계없이 최초 read에 들어있던 read의 수를 의미한다. 이는 이미 알고 있는 숫자이다. 그러나 BAM 파일에서 굳이 구하고 싶다면 다음 계산에서 나온 수치에 2를 곱하면 된다. BAM file에서는 simulated read name 끝부분의 /1 또는 /2가 제거된 상태라서, uniq 명령을 거치고 나면 그 수가 절반으로 줄기 때문이다. sort는 꼭 하지 않아도 된다.

$ samtools view mapping.bam | cut -f1 | sort | uniq | wc -l
64780

[7]과 [8]은 fwd 및 rev read file에 들어 있는 read의 수이므로 서로 동일하며, 이미 알고 있는 값이므로 넘어간다. 전체 read 수의 절반임은 당연하다.

[9]는 조금 어렵다. Properly paired를 의미하는 flag은 0x02인데, 이는 반드시 0x01(paired)과 같이 쓰인다. 따라서 -f 0x03을 주어서 read의 수를 계산한 다음, pair를 만들기 위해 2를 곱하면 된다. samtools view -c -f 0x03 mapping.bam이라고 명령을 내리고 싶은 강렬한 욕구가 느껴지지만, 그렇게 하면 안된다. 왜냐하면 proper pair를 이룬 상태로 reference 내의 여러 곳에 결합할 수도 있기 때문이다. 실제로 이렇게 계산하면 15554가 아니라 16760이 나온다.

$ samtools view -f 0x03 mapping.bam | cut -f1 | sort | uniq | wc -l
7777

[10]은 read 쌍이 둘 다 매핑이 된 것을 의미한다. Read 쌍의 거리와 방향이 적정한지는 중요하지 않다. 이것은 어떻게 flag를 정해야 할까? read도 unmapped가 아니고(-F 0x04), 그의 짝도 unmapped가 아니여(-F 0x08)! 따라서 -F 0x12를 하여 계산되는 read의 수에 2를 곱한다.

$ samtools view -F 12 mapping.bam | cut -f1 | sort | uniq | wc -l
7855

다음으로 [11]은 꽤 까다롭다. sinlgeton, read pair의 한쪽만 mapping이 된 것을 산출하는 것이다. 여기에서는 -f 0x04 -F 0x08을 하거나 -f 0x08 -F 0x04를 하면 된다. 두 명령어를 따로 실행해서 합쳐야 할 것 같은 생각이 들지만, read name을 각각 추출하여 비교해 보면 똑같다. 이것은 read pair를 산출하는 것이 아니므로 곱하기 2를 하면 안된다.

$ samtools view -f 0x04 -F 0x08 mapping.bam | cut -f1 | sort | uniq | wc -l
3340

[12,13]은 아직 정확한 flag 조합을 찾지 못하였다. SAM/BAM flag의 의미를 파악하려면 매SAM/BAM speficiation 파일이나 samtools flags 명령어, 또는 SAM flag 디코더를 적절히 활용해 보라.

Paired read, 즉 [5]와 singleton[11]은 후속 분석에서 유용할 때가 많다. 특히 11번에 해당하는 read의 pair를 추출해 놓으면 read pair에 의한 연결 부위를 찾는데 활용할 수 있다. 이상에서 살펴본 바와 같이 SAM/BAM flag을 자유롭게 쓸 수 있게 되면, samtools bam2fq 명령을 이용하여 BAM 파일에서 조건에 맞는 read를 직접 추출할 수도 있다. pair가 깨진 상태라면 BBmap의 repair.sh 및 관련 명령어(Repair Guide)를 적절히 활용하면 매우 편리하다.

2019년 8월 5일 월요일

GenoGlobe.kr, 새롭게 시작하는 블로그

기존에 사용하던 웹호스팅 서버에 DokuWiki를 새로 설치하고 블로그 플러그인을 깔았다. 설정을 약간 매만져서 https://genoglobe.kr/이라고만 치면 곧바로 연결이 되게 만들었다. 보통 DokuWiki를 설치하면 http://mydomain/path/to/installation/doku.php?id=start가 기본 접속 주소가 된다. 지금 보이는 이 웹사이트는 구글 블로그에 기반한 것으로서 GenoGlobe.com  도메인을 사용한다.

아래에 소개한 GenoGlobe.kr의 로고는 인터넷에서 찾은 지구 이미지(수정후 비상업적 용도로 재사용 가능한 것, 링크)에 Century Gothic 글꼴의 G 문자와 CGView를 이용하여 내가 직접 그린 E. coli genome image(링크)를 겹친 것이다. 그래픽 소프트웨어를 쓸 줄 아는 것이 없으니 작업은 그저 단순하게 파워포인트에서! 글꼴은 가능하다면 원형에 가깝게 G가 표현된 것을 골랐다. 어찌보면 구글 로고의 첫 글자를 연상시킬지도 모르지만 전혀 의도한 바는 아니다.

GenoGlobe.kr의 로고(링크).

가장 최근의 구글 로고에서 'G'자가 디자인적으로 완벽하지 않다는 논란이 있어서 이를 소개해 본다. 글 제목은 별로 마음에 들지 않는다.

논란의 'G'! 구글 로고 변경의 G 로고 디자인은 '실수' 범벅이다? 아니다? 정답은!


파비콘은 몇 번을 새로 만들었는데 썩 마음에 들지는 않는다. 기본 개념은 GenoGlobe의 'G'에 이중 나선을 결합한 것이다(링크).

아마도 올해 안에 GenoGlobe.kr로 내 블로그를 완전히 이전하게 될 것 같다. 그 이후에는 GenoGlobe.com 도메인을 더 이상 유지하지 않는 것도 비용 절감 차원에서 고려해볼 수 있으나, 나의 통일된 '브랜드' 유지 차원에서 그냥 둘 수도 있다.