옥스포드 나노포어 12월 제품 업데이트

2007년 스티브 잡스 발표 기억하시나요? 화면에 전화기, 터치스크린 아이팟, 인터넷 장비 셋을 띄워놓고 빙글빙글 돌리면서 “Are you getting it?” 하다가 아이폰을 뿅! 하고 발표한 그 맥월드 키노트 말이죠. 이 키노트 이후로는 IT에 크게 관심 없는 사람도 애플이 신제품에 대해 발표를 할 때마다 괜히 설레며 새벽에 보기도 하고, 아침에 기사 검색도 해 보곤 합니다. 요새 바이오텍 업계에서 그런 회사가 하나 등장했습니다. 바로 DNA시퀀서를 만드는 옥스포드 나노포어 (ONT)입니다. 이 회사에서 제품 업데이트를 발표할 때마다 수천 명이 라이브스트림으로 보고, 트위터가 떠들썩해집니다. 아직 엔드유저 제품도 아닌 걸 고려하면 굉장한 반응입니다.

ONT는 보통 분기당 한 번씩 제품 업데이트를 발표하고 있습니다. 업데이트가 너무 빨라서 관심을 기울이고 있어도 따라가기 힘들 지경인데요. 신제품 소식을 듣고 주문하고 받아서 실험하고 잠깐 분석 좀 하다가, 다음 실험을 위해 또 주문하려고 가 보면 전에 주문했던 버전은 벌써 단종되고 없을 정도입니다. -.- 얼마 전 12월 2일까지 뉴욕에서 열린 NanoporeConf에서도 아주 재미있는 소식을 많이 발표했습니다. 간단히 요점만 줄여서 소식 전해드립니다.

PromethION

ONT의 가장 큰 시퀀서 제품인 PromethION이 드디어 첫 고객들한테 발송됐습니다. 역시 첫 고객들은 충성스러워서 다들 트위터에 자랑하고 돌려보기도 전에 벌써 대단한 데이터를 얻은 것처럼 흥분했더군요. ㅎㅎ 새로 공개된 스펙은 다음과 같습니다. 플로우 셀 수는 48개가 됐고요. 플로우 셀 마다 6000 채널 시퀀싱이 가능합니다. 현재 MinION 플로우셀은 512채널에 2048웰 이니까, 플로우 셀 기준으로 비교하면 대략 MinION의 최대 600배 쓰루풋을 낸다고 보면 되겠습니다. 그리고, 이 정도 채널 수가 되면 USB 3.0으로는 도저히 수용 불가능해서, 내장 컴퓨터가 들어가 있습니다. 여기에는 FPGA기반 베이스콜링 가속기가 포함된다고 하는군요. 그리고 가격은 연간 사용료 15000달러로 정했다고 합니다. 얼마 전에 ONT에서는 MinION은 기계 값은 완전 무료, PromethION은 기계 값은 무료로 하고 사용료만 받겠다고 발표했었습니다.

새 시퀀싱 케미스트리: 1D²

지난 3월에 CsgG 포어를 도입하면서 정확도가 드디어 제정신으로 쓸 수 있는 수준까지 올라왔는데요. 그 후에도 CsgG 뮤턴트를 계속 만들면서 더 정확하고 빠르게 개선하고 있다고 합니다. 지금 시험 중인 뮤턴트 하나는 기존 R9 포어보다 거의 5배 정도 더 잘 DNA가 들어간다고 하는군요. (지나가는 속도는 그대로이고 포어가 비어있는 시간이 줄어 듦)

기존의 1D, 2D 시퀀싱에 새로 1D² 시퀀싱이 추가됐습니다. 원래 헤어핀 어댑터를 이용해서 끝에서 한 바퀴 휙 돌아 2번 시퀀싱 하는 2D가 2번째 가닥의 시퀀싱 품질이 매우 안 좋았었는데요, 양쪽 모두 기존에 1D에서 쓰던 Y 어댑터를 쓰면서 모터 단백질과 테더링을 개선해서 첫 번째 가닥을 읽고 다 읽은 가닥이 떨어져 나간 뒤에 바로 반대쪽 상보 가닥이 들어가도록 했다고 합니다. 원래 2D에서 90-97%까지 정확도가 왔다 갔다했던 게, 1D²에서는 95-97% 정도로 아주 고르게 나오게 됐습니다. 따로 언급은 안 됐지만 라이브러리 프렙도 1D와 거의 같을 것이기 때문에 시간도 절약되고, 손실도 줄고, 그동안은 2D에 쓸 수 없었던 tagmentation 기반의 간단한 프렙 장치들도 쓸 수 있게 될 것 같네요.

베이스콜링 업그레이드: 긴 호모폴리머

올해 초까지 HMM을 쓰다가 RNN으로 바뀐 뒤 성능이 크게 올라갔었는데요. 구조상 HMM이나 RNN 기반 베이스콜러 모두 5nt 초과 호모폴리머는 베이스콜링이 불가능했습니다. 이 문제를 대폭 개선한 새로운 Transducer라는 베이스콜러가 처음 소개됐습니다. 일루미나 시퀀싱 베이스콜러 중에 베이스콜링이 어려운 라이브러리들을 잘 처리해줘서 유명했던 AYB를 만든 Tim Massingham이 ONT에 가더니만 결국 전공을 살렸네요. ㅋㅋ 10nt 정도 되는 homopolyer를 시험해 본 결과 30% 정도 길이가 짧아지는 경향은 있지만 거의 선형적으로 비례관계가 있도록 재고는 있다고 합니다. 조금 더 개선 되면 일반 배포한다고 하네요.

새로운 저가형 플로우셀: Flongle

MinION이 기계는 공짜인데, 플로우셀이 너무 비싸죠. 그래서 전자장치를 모두 계속 쓸 수 있는 어댑터로 빼 버리고, 막과 단백질, 플라이스틱만 남겨놓은 소형 플로우셀을 새로 만들었다고 합니다. 휴대전화용 시퀀서인 SmidgION 플로우셀과 똑같은 거라고 하네요. 가격은 클로닝할 때 플라스미드 시퀀싱 하는 가격과 비교할 수 있을 정도로 맞춘다고 하니, 쓰루풋이 반 정도로 낮긴 하지만 기존의 MinION 플로우셀을 완전히 대체할 수도 있을 것 같습니다.

피를 넣으면 라이브러리가 돼서 나오는 필터 팁: Zumbador

지난 5월 런던콜링에서 엄청 떠들썩하게 발표됐던 Zumbador가 좀 더 구체적인 모습을 드러냈습니다. 라이브러리 프렙 전 과정을 실온에서 할 수 있다고 하고요. Tagmentation기반 1D 프로토콜로 만든다고 합니다. P1000 팁보다도 작은 크기로, 위에 피를 떨어뜨리면, 아래로 라이브러리가 나옵니다. ㅎㅎㅎ 그리고, 피 외에 다른 곳에서도 DNA나 RNA를 뽑을 수 있도록 bead beater라는 초소형 장치를 또 새로 공개했습니다. 식물 잎이나 씨앗, 섬유 같은 곳에서 아무 것도 없이 물만 더 있으면 DNA를 뽑아서 바로 Zumbador에 넣어서 라이브러리를 만들 수 있다고 하네요. 낯선 곳에 갔는데 뭔가 의심스러운 것이 있으면 바로 시퀀싱 해보고 안심(?)할 수 있다고 하는군요. ㅎㅎ 음식점에 가서 원산지를 믿을 수 없거나 청결을 믿을 수 없는 음식 먹기 전에 시퀀싱 해 보는 사람도 나올 것 같습니다. -o-;

선택적 시퀀싱

지난번에 공개했던 Cas9 기반 enrichment가 좀 더 구체적으로 공개됐습니다. 효소 활성이 없는 Cas9에 붙여서 이 Cas9을 가지고 면역침전이나 비슷한 방법을 이용해서 정제하는 것이 기본 아이디어인데요. 이번에 공개한 결과를 보면, Cas9가 붙은 채로 플로우셀에 들어가도 모터 단백질이 그냥 밀고 지나가서 전혀 시퀀싱에 문제 없다고 합니다. 그래서 tagmentation과 동시에 Cas9을 처리할 수 있고 그 후 정제도 단순하다 보니 기존의 다른 키트들보다 훨씬 간단하게 돼 버렸네요. 1시간 이내에 DNA부터 시작해서 enriched 라이브러리가 나오게 돼 버렸습니다.

리드를 조금 읽다가 rRNA같이 안 읽어도 되는 시퀀스다 싶으면 바로 반대로 전기를 걸어서 뱉어내 버리는 Read Until도 약간 소개했는데요. 자세한 것은 이미 전에 다 공개됐던 것이고, API를 통해서 사용자 프로그램이 직접 MinKNOW에 연결해서 돌게 된다고 하네요. 그런데 그 이후로 모터 단백질이 450bps로 속도가 올라가는 바람에.. 이제 한 10kbp정도는 돼야 좀 뱉어도 뱉는 것 같지 짧은 건 프로그램에서 뱉어내라고 하면 웬만하면 “이미 다 지나가고 없는디? =.=”하고 포어가 당황하게 생겼어요.

최초의 ~~~~ 지놈: Cliveome

ONT 제품 업데이트 발표 때마다 카리스마를 발산하고 있는 ONT의 간판스타 Clive Brown이 자기 지놈을 시퀀싱 해서 공개했습니다. 인류 최초로 “자기” 피에서 DNA를 뽑아서 스스로 라이브러리를 만들어서, 시퀀싱해서, 어셈블리해서 공개하는 개인 유전체라고 하네요. James Watson이나 Craig Venter도 피만 줬지 자기 손으로 시퀀싱하고 라이브러리 만들지는 않았죠. ㅎㅎ

MinION 36개 플로우셀로 150Gb를 뽑아냈고, 25kb이상 long read가 30Gb 나왔다고 합니다. haplotype assembly를 만들려면 이 정도는 돼야 하겠지만.. 지금 시퀀스 정확도로 잘 될지는 의문이네요. 그래도 다른 시퀀서에서는 할 수 없었던 시그널 수준 취합이 가능하니까 앞으로는 꽤 괜찮아질지도 모르겠네요. 트잉여답게 피 뽑는 순간 부터 자기 피 뽑는다고 긴장된다고 트위터에 엄살 생중계를.. ㅋㅋ; 앞으로도 자기 VDJ지역 대상으로 time-course immunoprofiling을 꾸준히 해서 계속 공개한다고 하고요. Zumbador, Cas9 enrichment 등등 새로 제품 개발되는 것마다 나오면 다 시험삼아 다 해 보고 Cliveome을 꾸준히 업데이트하겠다고 하네요. 데이터는 어제 GitHub에 모두 공개되었습니다.

이 외에도 direct RNA sequencing과 또 다른 여러 응용 분야에 대해 재미있는 발표가 많이 올라왔습니다. 관심 있는 분은 https://vimeo.com/user5318092 여기에서 살펴보세요~

계산생물학자를 위한 맥 키보드 레이아웃

생물학 텍스트를 쓸 때 자주 쓰는 부호 몇 개가 키보드에 없다. 맥 U.S. 키보드 배치에서 옵션 키 조합으로 몇 가지 쓸 수 있다. ˚C의 ˚는 Opt-K로, µl의 µ는 Opt-M로 누를 수 있어서 편리하다. 하지만 기본 바인딩으로 충분하지 않아서 항상 입력기 문자표를 띄워두고 클릭해서 넣어야 하는데, 여간 불편한 것이 아니다.

3′ end, 5′ end 할 때의 ′ (프라임)은 한 문장에도 여러 번 쓰기도 하고, 그리스 알파벳 α, β, γ 등도 단백질 이름이나 분자구조 명칭에서 자주 쓰지만 단축키가 없다. 계산생물학 텍스트는 좀 더 문자표에 의존하게 된다. TeX을 쓸 정도로 수식, 기호 조판이 필요하지는 않지만 (저널들도 TeX을 별로 좋아하지 않고), 그래도 간단한 산술/비교 연산자 (×, ·, ≪, ≫), 논리 및 집합 연산자 (¬, ∩, ∪, ∧, ∨ 등)를 자주 쓰게 되는 경우가 많다.

오늘도 열심히 문자표를 띄워놓고 프라임을 입력하다가, “아 이제 더 이상 안 되겠다.” 싶어 열심히 검색해서 키 바인딩을 만들었다. 자주 쓰는 것들 대부분을 포함하려고 우선 생각나는 것은 다 넣었지만 빠진 것이 있을 수도 있다.

Layout-Opt
옵션 조합
Layout-OptShift
옵션+시프트 조합

이렇게 하면 설치할 수 있다.

  1. 이 파일을 받아서 압축을 푼다. MacKeyCompBiol-r1.zip
  2. 풀린 파일 중에 English (Computational Biology).bundle을 ~/Library/Keyboard Layouts/ 에 넣는다. 이 디렉토리가 없으면 만들어서 넣는다.
  3. 로그아웃 하고 다시 로그인하거나 컴퓨터를 껐다가 다시 켠다.
  4. System Preferences – Keyboard – Input Sources 에 들어가서 +를 누르고 English (Computational Biology)를 추가한다.
  5. 화면 오른쪽 위의 메뉴바에서 새로 추가한 입력기를 선택한다.

이 방법으로 추가하면 원래 쓰던 영문 키보드 레이아웃과 한글에 더해서 입력기가 3개가 돼서 입력기 선택이 상당히 불편해지는데, 다음과 같이 하면 영문 키보드를 없앨 수 있다. (GUI에서 없애기가 힘들다.)

  1. 로그아웃하고 다시 로그인하거나 컴퓨터를 껐다가 다시 켠다.
  2. 터미널을 띄우고, 다음 명령어로 입력기 설정을 고칠 수 있게 변환한다.
  3. 11번 라인 근처에 AppleEnabledInputSources 딕셔너리들이 주욱 있는데, U.S. English 또는 지우고 싶은 키보드를 없앤다. <dict>부터 </dict>까지 지워야한다.
  4. 로그아웃하고 다시 로그인하거나 컴퓨터를 껐다가 다시 켠다.
  5. 위 키보드 레이아웃을 보고 뿌듯하게 5′ 을 눌러 본다.

레이아웃에 개선할 점이 있는 분들은 알려주시면 다음 버전에 반영하겠습니다! 😁

TAIL-seq 두 논문 뒷 이야기

올해는 어떻게 하던 일이 잘 풀려서 (작년에 리젝을 하도 많이 당해서 쭉 밀려서) 논문을 두 편 냈다. 하나는 poly(A) 꼬리 길이를 재는 방법을 만든 논문이고, 하나는 새로 만든 그 방법을 연구실에서 관심 많았던 주제에 적용한 논문이다. 많은 분들이 “왜 얘네들은 하던 miRNA말고 갑자기 뜬금없이 poly(A) 꼬리 길이를 쟀을까?” 궁금해 하시기도 하고, 멋쟁이 논읽남 박사님의 추천도 있고 해서, 독자들이 궁금해 할 (지도 모르는) 것들을 혼자 묻고 답하고 해 본다. ㅎ;

Poly(A) 꼬리 길이는 도대체 왜 재기 시작한 거냐?

제대로 있었던 그대로 설명하자면 얘기가 꽤 길다. 원래, 우리 랩은 miRNA의 전구체인 pre-miRNA와 pri-miRNA를 만지는 단백질들을 주로 연구해 왔다. 그러다가 2008-9년에 pre-miRNA의 3′끝에 U를 붙이는 단백질인 TUT4를 발견했고, 2012년엔 그렇게 U가 붙으면 생성과정이 더 잘 돌아가는 일부 pre-miRNA들을 발견했다. pre-miRNA만 열심히 들고 파던 중, RBP에 눈이 달려서 붙일 놈 사이즈를 대충 보고 덤비는 것도 아니고, 분명히 다른 RNA도 어떤 건 3′만 나왔다 하면 냅다 붙이는 현상이 분명히 있을 것이라고 얘기가 나왔다.

그러던 중, 2012년 U를 붙일 pre-miRNA를 물색해 주는 역할을 하는 LIN28A라는 단백질이 mRNA에 잘 붙는다는 논문을 내면서, “마음씨 착한” 리뷰어 중 한 명이 “논문 내용은 잘 모르겠고, LIN28A하면 TUT4, TUT4하면 U, 그러면 mRNA에도 U 붙이는 거 아니야?”라고 창의적 드립을 쳐서, “님, 그건 좀 너무 나가신 것 같지만, 너무 좋은 코멘트이니 감사합니다. 그거 하다가는 이 논문 안 끝나니 다음으로.. ㅈㅅ”  답장을 쓰고 일단 논문은 나왔다.

LIN28A가 붙는 곳이 3′ 끝 근처도 아니고 mRNA 전역에 흩어져 있다보니 당시엔 아주 진지하게 생각해 보지는 않았다. 그런데 지저분한 세포 안 세상엔 LIN28A 아니라도 뭐라도 순진한 poly(A) 끝에 뭔가 붙여줄 녀석이 있을 거라는 생각이 계속 들었고, 2013년 2월. 결국 이번 연구를 같이 했던 임재철군이 본격적으로 poly(A)뒤에 있는 것을 시퀀싱해서 알아내자는 프로젝트를 시작했다.

나는 한편 2012년 논문을 끝내고 다음 일은 뭐할까~ 물색하던 중 당시에 논문이 몇 개 연속으로 나왔던 적혈구의 일주기(circadian rhythm) 시스템에 완전 꽂혀서 한참 보다가, RNA조절쟁이들의 원수! 전사조절이 없으니 뒤벼보나마나 poly(A) 길이로 translation 조절이 엄청 중요한 것이 몇 개는 있을 것이다 하는 가설을 세우고서는, 그 가설과 사랑에 빠져버리고 말았다. ☞☜.. 그래서, 당시에 거의 없는 것이나 마찬가지였던 poly(A) 대량 길이재기를 어떻게든 해 보려고, 몇 가지 실험을 디자인했는데… 당장 싱싱한 적혈구를 대량으로 구하기도 힘들고, 일주기 실험하다가는 폐인을 면치 못한다는 여러 문제로 일단 다른 하던 일을 하면서 마침 마찬가지로 poly(A)가 통째로 시퀀싱 라이브러리에 들어있는 재철이의 라이브러리가 내용이 너무 궁금해서 분석을 도와주면서 엉뚱했던 poly(A) 길이 재기가 시작하게 됐다.

Poly(A) 꼬리 길이 재는 건 그냥 seq.count(‘A’)하면 되는 거 아닌가?

이게 우리 첫 논문의 핵심인데, 454던 일루미나던 증폭과정이 들어가 있는 모든 2세대 시퀀서들은 똑같은 염기가 반복되는 패턴에 매우 약하다. 454보다는 낫다고는 하지만, 일루미나도 20bp만 넘어가도 제 정신을 못 차린다. phasing과 pre-phasing이라고 부르는 문제와 polymerase jumping/skipping이라고 부르는 문제가 겹쳐서 그런 것인데 자세한 것은 링크 참조. 그래서 30nt만 해도 오차가 5nt 정도 나고, 60nt정도 되면 40-60nt이상 오차가 나기 시작해서, 150nt 정도 되면 아예 측정이 불가능하다. (시퀀스 가지고 아무리 좋은 오류 모델을 세워도 오차가 200nt 이상 난다.)

마침, 재철이와 나는, 많은 생물정보학 커뮤니티에서 “다들 필수라지만 현실에 있긴 있는거야?”라고 의심하는 “실험 설계 과정에서부터 공동 설계”를 진짜로 실천한 덕에, 어떻게 해석해야 할 지도 모르게 이상하게 나온 첫 데이터를 보고 바로 방향을 제대로 잡을 수 있었다. 이후 단계로 진행할 수 있었던 가장 중요했던 첫 실험 설계 포인트 몇 가지는 다음과 같다.

  • Poly(A)길이를 진짜로 잘 잴 수 있는지 테스트해 보려고 긴 poly(A)를 화학적으로 합성해서 넣어서 같이 시퀀싱했다. 그 덕에 얼마나 진짜로 안 되는 건지 알 수 있고, 다른 대안 알고리즘들을 시험해 볼 수 있었다.
  • Homopolymer가 시퀀싱이 잘 안 된다는 사실을 미리 어느 정도는 소문을 들어 알고 있었기에, basecalling을 다른 프로그램으로 해 보려고 형광신호를 정량한 원데이터인 CIF파일들을 저장해두어서 다행히도 나중에 자세히 들여다 볼 수 있었다. (CIF는 기본 옵션에서는 자동으로 시퀀싱 도중에 지워지게 되어있고, MiSeq에서는 심지어 공식 GUI에 없는 은밀한 방법을 써야 저장할 수 있다.)
  • 여러 필터 옵션을 끄고 시퀀싱과 분석을 했다. poly(A)가 껴 있으면 read quality가 낮다보니 basecalling 과정에서 QC하다가 빠져서 FASTQ에서 이미 거의 대부분 없어져 있고, 그나마 남은 것들도 보통 많이 적용하는 quality filter에서 다 없어져버린다. 우리는 현실을 있는 그대로 한 번 열심히 봐 보자! 하고 필터를 모두 끄고 본 덕에 poly(A)가 나오기는 나왔다는 사실을 알게 돼서 거기서 힌트를 얻어서 이후 분석을 시작할 수 있게 됐다.

일단 신호를 본 뒤로는 전형적인 GMHMM쓰면 쉽게 해결될 만한 모양이라, 대략 이틀 만에 알고리즘 구성과 테스트가 끝나버렸다.  하지만 더 간단하고 멋진 방법이 있을 것 같다는 생각에 다른 것도 해 보다가 그 이후 3주일을 뻘짓했다. ;ㅁ;

첫 번째 논문은 뒤가 왠지 허전한데 무슨 일 있었나?

알고리즘도 거의 완성하고 한창 재미있게 논문에 살을 붙이던 2013년 6월, 스위스 다보스에서 열렸던 RNA Society Meeting 2013에서 David Bartel 랩에서 poly(A) 길이를 시퀀싱으로 재는 방법을 발표했다. 두 번째 리비전을 얼마 전에 받았다는 걸 봐서는 accept가 머지 않은터라 우리는 완전 비상상황이 돼 버렸다. 사실 Bartel랩에서는 2012년에 이미 poly(A) 길이를 재는 걸 시도했었는데 본문에서 2페이지 가까이 되는 내용을 쓰고서도 초록에는 한 글자도 언급이 안 될 정도로 poly(A) 길이 재는 것 자체는 완전 망한터라 그냥 안 하려나보다 하고 있었는데, 오랫동안 쭉 진행하고 있었다고 했다. 그래서…. 열심히 달려서 우선 기술 자체에만 집중해서 서둘러서 논문을 준비해 9월에 첫 투고를 했다. 그 뒤로 1달 주기로 3연속 출판 거절ㅋ (어딘지는ㅋㅋ). 그러다가 결국 공개된 날짜 기준으로는 1달 정도 늦었지만, accept 날짜로는 크게 뒤지지는 않게 논문이 나왔다.

Bartel 랩에서 만든 방법하고는 어떤 차이가 있나?

Bartel 랩 방법 (PAL-seq)이 그냥 커피라면 우리 방법 (TAIL-seq)은 TOP.. (먼산)

목적은 비슷하지만 방법은 완전히 다르다. PAL-seq은 시퀀싱 방법 자체를 수정해서 poly(A) 길이에 비례하게 primer extension으로 biotin을 넣도록 한 다음에 streptavidin-fluorophore를 붙여서 한 방에 정량한다. 반면에 우리 방법인 TAIL-seq은 그냥 전통적인 paired-end 시퀀싱을 그대로 매우 오랫동안 한 사이클에 1nt 씩 합성해서 감지한다. 그래서 자연적으로 PAL-seq은 오차가 누적되지는 않기 때문에 긴 poly(A) (주로 150nt이상)를 잘 재는 편이고, TAIL-seq은 오차 누적효과가 있지만 신호의 양이 많고 1 nt단위로 신호가 나오기 때문에 150nt보다 짧은 것들을 잘 잰다.

무엇보다 큰 차이는 PAL-seq은 시퀀싱 과정 자체를 교체해버리기 때문에, 시퀀서를 직접 가지고 아주 모험적인 프로토콜을 공들여서 하는 사람들이 아니면 직접 써 보기 어렵지만, TAIL-seq은 그냥 세계 어디서나 일루미나 기계만 갖고 있으면 할 수 있기 때문에 굉장히 만만하다. citation은 우리꺼야 냠냠

그래 됐고, 얻은 결론은 뭔가?

두 논문에서 우리가 발견한 것을 요약하면 다음과 같다.

  • mRNA poly(A)뒤에 U가 생각보다 많음. 특히 짧은 poly(A)에 몰려 있다.
  • 의외로 poly(A) 길이는 mRNA translation과 전반적으로는 별 관련이 없다.
  • mRNA poly(A)뒤에 G도 제법 있는데, 이건 기능도 모르고 누가 붙이는 지도 모름. 아마도 mRNA를 보호하는 효과가 있지 않을까 예상.
  • poly(A) 뒤에 U 붙이는 것은 TUT4와 TUT7이 하는데, 두 단백질이 다 없어지면 세포가 죽는다.
  • TUT4와 TUT7을 줄이면 mRNA가 전반적으로 오래 사는 걸 봐서, U가 붙는건 mRNA decay에 관련있는 듯.
  • TUT4와 TUT7은 내재적으로도 짧은 poly(A)를 선호하고, poly(A)에 PABP까지 붙으면 그 경향이 더 뚜렷해진다.

베스트샷 하나만 꼽는다면?

TAIL-seq 자체에 대한 앞 논문 Fig. 1번도 좋아하긴 하지만 (ㅋㅋ 쑥스..), 미관상 이번 논문의 아이스크림 막대기 모양 그림이 마음에 든다. 보기만 해도 좀 달달하고 좋지 않나? ㅎ;;;

mRNA-urid-fig6-original

그럼 다음엔 뭐하나?

우선 우리가 원래 가장 궁금했던 TUT4와 TUT7의 mRNA꼬리에 U붙이기 문제는 이번 논문으로 해결했고, 다음에 뻔히 나올 수 있는 여러 분야에 적용하고 있는 중이다. poly(A)가 조절되는 걸 가지고 할 수 있는 후속 연구란 너무 뻔해서 비밀이라고 해도 다 예상이 가능할 것 같다. =.=

그리고, TAIL-seq 첫 논문에서 알고리즘에 대해서는 자세히 언급됐지만, 프로그램이 아직 공개되어 있지 않다. 프로그램은 지금 사람과 쥐가 아닌 다른 종에도 쉽게 적용할 수 있도록 아주 단순한 범용 프로그램으로 새로 만들고 있다. 기존 프로그램은 계산량이 워낙 많아서 클러스터 없이는 분석이 힘들었지만, 이번에 필요없는 계산을 많이 제거하고 Julia로 주요 부분을 거의 교체했다. 다른 일이 많이 겹쳐 있어서 늦어지고 있지만, 아마도 2015년 2분기 중에는 공개할 수 있을 것 같다.

연구에 참여한 사람과 사사

전체 연구 계획과 설계, 진행은 김빛내리 교수님, 장혜식, 임재철, 하민주 박사가 했습니다. TAIL-seq 기술은 장혜식, 임재철이 공동으로 설계하고 개발했습니다. 두 논문 모두 주요 생화학 실험은 임재철, 하민주 박사가 수행했습니다. 두 번째 논문 (Uridylation..)에는 권성철 박사, Dr. Dhirendra Simanshu가 실험을 도왔습니다. 이 연구는 기초과학연구원(IBS)의 연구비 지원으로 진행되었습니다.

BGZF 파일 여러 개 합치기

  • bed 파일에 2억 줄 짜리 데이터가 들어있다.
  • 대충 파이썬으로 계산할 걸 만들어보니 1번 염색체 처리에만 싱글 프로세스로 하루 정도 걸렸다.
  • 이런 데이터가 하나만 있는게 아니라 계속 나온다.

자 이런 상황이 있으면 예전 같으면 “C로 잘 짠다”라던지 “파일을 나눠서 클러스터에 넣는다.” 정도가 답이다. GNU parallel 같은 것 써보려고 노력을 해 볼 수도 있고.

전에도 블로그에서 소개한 적이 있는데, 이런 일에 tabix를 쓰면 웬만한 문제는 단번에 풀린다! 오오 위대하신 Heng Li 느님… 텍스트를 압축해 놓고 중간부터 랜덤 액세스가 가능해져서 파일을 나눌 필요가 없다보니, 파일을 나누거나 parallel을 쓸 때 엄청나게 낭비되는 I/O 시간이 절약된다. 물론 결과도 tabix에서 쓰는 bgzf로 미리 압축해서 저장하면, 그냥 이어붙이기만 하면 아무 문제 없이 다시 다음 과정도 또 분산해서 처리가 가능해진다. 포맷도 bed만 되는게 아니라 탭으로 구분된 데이터를 정렬하기만 하면 된다.

그런데 이게 이론적으로는 그냥 이어붙이기만 하면 잘 돼야하지만, 의외로 잘 안 된다. 어떻게 이어 붙여도 첫 번째 파일만 인식하고 나머지는 무시한다. 그래서 압축을 풀었다가 다시 압축을 하는 방법으로 구질구질하게 해 봤지만, 멀티쓰레드 지원하는 pbgzip은 랜덤한 버퍼 에러가 수시로 난다. (고치려고 해봤지만 실패 orz)

그래서 이리 저리 고민을 해 보다가, tabix를 패치하자니 EOF블럭이 중간에 들어있는 파일은 좀 변태같기도 하고 나이가 드니까 패치하고 올리고 하기도 귀찮고 해서 그냥 EOF 블럭을 빼고 파일을 합치는 툴을 하나 만들었다.

여기 –> bgzf-merge.py

요걸로 bgzf 합치면 짠! 하고 깔끔하게 tabix나 기타 bgzf 입력 받는 툴들이 제대로 돈다. 물론 속도는 풀었다가 다시 합치는 것하고는 비교가 안 된다. ㅋㅋ

요렇게~

아. 이것은 어디까지나 평소에 놀고 있는 클러스터가 옆에 있을 때 얘기다. 없으면…… 그냥 C로 고고 -ㅇ-;;