한국에서 23andMe 하는 과정

처음으로 대중적인 관심을 집중적으로 받은 오락유전체학 (entertainment genomics) 상품인 23andMe가 서비스를 시작한지 3년이 다 돼가고 있습니다. 언론과 학계의 관심 뿐만 아니라 사업적으로도 상당히 잘 되고 있다는 것이 제법 긍정적이죠. 이게 처음에 워낙 비싸서 정말 얼리어답터나 유전병에 관심이 많은 사람이 아니면 하기가 어려웠지만, 이제는 200달러에 비교적 쉽게 침을 한 번 뱉어볼 수 있는 정도가 됐습니다. 그래서 아 그래 나도 맨날 엄한 암세포나 대장균 유전자말고 내 유전자하고 좀 놀아보자 하고 마음먹고 해 보았지요~

이미 홍창범님김형용님께서 해 보셨기 때문에 조언을 얻어서 진행해 보았습니다. 미국에 막 부탁할 만한 지인이 없는 경우도 쉽게 할 수 있도록 최대한 지인활용을 배제하는 것을 원칙으로.. (?;;)

신용카드 결제하기

우선 23andMe 사이트에 가서 주문합니다. 그런데, 주문할 때 아주 큰 문제는 한국을 결제 주소로 쓸 수가 없고, 신용카드와 결제주소가 영 안 맞으면 결제가 거부되기 때문에, 이 부분에 한해서는 지인을 활용하여 외국 신용카드를 써야합니다. 미국 카드도 괜찮고 일본 카드도 되는데, 저는 일본에 계신 거친마루님께 제가 침을 좀 뱉어보고자 하니 결제 한 번만 해 주십시오 하여 대신 결제를 해 주셨습니다. ^_^ (감사!) 단, $99에 1년 서비스를 추가 결제해야되게 돼 있어서 여러 번 신세를 지지 않으려면 선물세트($207)로 사는 것이 더 편하겠습니다.

23andMe 키트

키트 배송 방법

침을 담아가는 키트를 받을 때 주소로 한국을 쓸 수 없어서 지인을 활용하거나 요즘 아주 많은 배송대행 업체를 써야 합니다. 배송대행도 요새 크게 비싼 편이 아니라서 배송대행을 하기로 하고, 가격도 비교적 싸고 잔문제가 별로 없었던 세븐존이라는 업체에 보냈습니다. 오레곤으로 보내면 미국 내 세금이 안 붙는 대신 좀 느리고, 캘리포니아로 보내면 순식간에 도착하는 대신 세금이 붙습니다. 키트가 워낙 가벼워서 배송비와 대행료를 합쳐서 13000원이면 충분했습니다.

국내 통관

통관용 물품신고를 배송대행업체에 신청할 때 작성해야하는데요, 여기서 얼마로 쓰느냐에 따라서 세금이 달라집니다. 보통 통관할 때 구입한 사이트와 똑같이 생긴게 가격도 같으면 빨리 된다길래 $99로 신고했더니만 관세가 꽤 붙어버렸네요. 2개 통관에 45590원 냈습니다. 그런데 나중에 확인해보니까 키트를 다시 받을 때 23andMe가 받는 가격이 $25라고 하니까, $25로 신고하면 관세도 안 붙고 좋을 것 같은데.. 다음엔 그 쪽으로 해 봐야겠네요;

침 뱉기

튜브가 도착하면 침을 모아서 잘 뱉으면 됩니다. 사용방법은 친절하게 써 있으니 그냥 그대로 하면 되고, 뚜껑에 모여있는 보존액이 충분히 침하고 섞어주고 열심히 흔들어서 DNA분해효소를 무력화하는 것이 중요합니다. 튜브는 DNA Genotek의 ORAGene-DNA OG-500의 OEM 제품이 옵니다. 자세한 정보는 매뉴얼에 안 써 있는데, 특허출원내용을 보면 뚜껑에 있는 보존액의 주성분은 Mg2+를 잡아서 DNase 활성을 막아주는 킬레이팅 에이전트 (EDTA일 확률이 높지만 CDTA, DTPA, DOTA, TETA 등도 언급되어 있음)와, 단백질 구조를 풀어서 DNase를 너덜너덜(;)하게 해 주는 환원제 (2-mercaptoethanol, DTT, dithionite, ascorbic acid 등 여러가지 중 하나), 항산화제 (항산화 비타민 등), pH 유지를 위한 버퍼 에이전트 (Tris, HEPES 등 중 하나)를 포함하고 있다고 합니다. 예상가능한 조합이지만 구체적으로 뭐라고 안 써놔서 실제로 받은 키트에 뭐가 들어있을지는 모르겠네요. DTT나 2-mercaptoethanol 특유의 냄새는 전혀 안 나는 걸 봐서는 보통 쓰는 조합은 아니거나 농도가 비교적 낮은 모양입니다.

침은 모두 2ml 뱉도록 되어있는데 최종적으로는 보존액 2ml과 합쳐서 4ml이 됩니다. 신기하게도 여기서 DNA를 뽑으면 무려 110µg 정도 얻을 수 있다는군요. (침에 DNA가 이렇게 많았다니!!)

미국으로 다시 보내기

23andMe에서 직접 샘플을 처리하는 것이 아니고 LA에 있는 National Genetics Institute라는 의료용 유전자진단 전문 회사가 처리합니다. 그래서 침도 여기로 보내도록 주소가 되어 있습니다. 23andMe에서 미국 내 반송용으로는 선불택배를 지불해 놓았지만, 한국에서는 보낼 수 없으니까 마찬가지로 지인 활용을 할 수도 있고, 직접 보내는 것도 사실 가격 차이는 없습니다. 특히 NGI가 LA공항 바로 옆에 있으니까 훨씬 빨리 가겠죠~ (그냥 상상;;) 우체국 EMS에서 2개를 반송하는데 22000원으로 생각보다 싸게 보낼 수 있었습니다. 통관물품신고는 저는 홍창범님이 하신 대로 Toy, $10으로 신고하고 조마조마 하고 있었는데, 나중에 보니 공항에서 받자마자 바로 통관되는 게 크게 까다로운 것 같지는 않네요. 정식으로 하자면 보존액처리된 침 샘플은 미국 항공안전규정에서 생물학적 규제 면제 품목에 해당돼서 법적으로 큰 문제가 없지만, 많은 배송업체들이 침 샘플을 다룬 경험이 거의 없어서 엉뚱하게 돌려보내는 경우도 있다고 하네요. 눈치껏 잘 하면 됩니다. ^^; 저는 EMS를 한국에서 발송하고 4일 만에 NGI에 도착했습니다.

결과

결과는 받고 나서 6주 후에 나온다고 하는데.. 전 아직 안 받아서 나중에 받으면~~ ^^;

댓글 2 개 | 트랙백 0 개 (보낼곳) | 태그 life


유전체에 연결된 실수형 자료 빨리 접근하기

유전체에 연관된 데이터는 매우 많고 타입도 다양합니다. 그 중에 실수형 데이터가 쫙 깔린 것도 몇가지 있는데, 대표적으로 보존도(conservation score), ChIP이나 RNA-seq, DNase-seq 등에서 나온 시퀀싱 데이터의 리드 수, 짧은 리드의 매핑 가능 정도, 예측된 유전자에 관련된 점수, GC 비율, RNA의 2차구조 안정성 같은 것들이 있겠죠.

예를 들어서, CLIP-seq로 얻은 단백질에 붙을 걸로 예측되는 부분의 리드 주변 보존도가 다른 부분에 비해서 진화 속도가 더 빠른지 보존이 잘 되는지, 구조적으로 안정한지, 크로마틴이 풀려있다거나, RNAPol II가 멈춰있는 근처에서 막 붙는지 그런 것들을 정량적으로 보려면, 이런 것들을 미리 정리해 놓은 데이터를 쉽게 가져오면 좋지요.

다행히도 UCSC느님께서 정리를 정말 잘 해두셔서 긁어오기만 하면 바로 짠 하고 쓸 수 있는데! 주로 bigWig 포맷으로 되어 있어서 파이썬에서 접근하려면 좀 번거롭죠. 다행히도 요새 전세계 실험생물학자들의 구세주로 떠오른 Galaxy가 파이썬으로 개발되면서 이런 대용량 포맷에 접근하는 모듈을 아주 깨끗하게 잘 만들어두었습니다~ 소스도 잘 공개되어 있어서 쉽게 깔 수 있구요. 다만 매뉴얼이 전혀 없다는 문제가 있는데.. 그래도 직접 다 만드는 것 보단..;

그래서 쓰는 방법은.. 이렇게 대충 할 수 있습니다. (Lin28의 3'UTR 일부에서 36nt short read의 매핑 가능 점수를 가져오는 코드)

from bx.bbi.bigwig_file import BigWigFile

crg36 = BigWigFile(open('crgMapabilityAlign36mer.bw'))

summarized = crg36.summarize('chr4', 133561496, 133561599, 133561599-133561496)
print summarized.size
print summarized.sum_squares

qresult = crg36.query('chr4', 133561496, 133561599, 10)
print qresult

댓글 0 개 | 트랙백 0 개 (보낼곳) | 태그 happyhacking


Tabix: 엄청 빠르게 탭으로 구분된 1차원 좌표계 검색하기

시퀀싱 데이터를 대량으로 뽑아놓고 후속 통계 처리를 하자면, 각 태그가 각각 어느 영역에 들어가는지 분류하는 과정을 거쳐야 합니다. 요즘 cufflinks 같이 자동으로 요약해주는 녀석들이 많이 나와서 그냥 단순히 RNA-seq이나 ChIP-seq에서 보통 많이 하는 분석만 하는 것은 간단해졌지만, CLIP-seq처럼 어디로 분석이 튈지 모르는 다른 대부분의 경우엔 매핑된 곳이 뭔지 대량으로 정확히 분류하는 것이 중요합니다.

예를 들어 생쥐 유전체 mm9 버전에서는 Igf2가 chr7의 149,836,673부터 149,845,394까지 있습니다. 사이에 인트론이 3개있고요. 여기서 만약에 14984050 근처에 어떤 태그 하나가 매핑되었다고 치면, 이게 어느 유전자인가 물어봐서 "Igf2의 2번째 인트론입니다"하는 대답하는 것을 수천만번 매우 빠르게 할 수 있어야 하는데요. 여기서 좀 더 복잡해지는 것은 Igf2 인트론에 mmu-mir-483이 껴 있듯이, 여러 주석이 겹쳐서 시작과 끝이 순서가 달라질 수 있어서, 단순히 정렬된 리스트의 이진 탐색이나 B+ tree같은 것으로는 인덱싱이 불가능합니다.

이 문제를 해결하려면 가장 간단하게는 SQLdb에 모두 집어넣어놓고 SELECT절에 BETWEEN을 써서 검색하는 것이겠는데, UCSC Genome Browser도 이 방법으로 MySQL에 넣고 쓰고, RNA-seq 초창기 분석 도구로 유명했던 ERANGE도 sqlite에 넣고 계속 SQL 질의를 보내서 해결합니다. 간단하긴 한데 써 보면 엄청나게 느려서 분석을 구경하는 사람들에게 NGS란 이렇게 오래걸릴 정도로 대단한거구나 하는 환상을 심어주기 쉬울 정도가 되죠.

그렇지만 물론 BETWEEN을 수천만번 하는 것 보다 훨씬 빠른 인덱스를 만드는 방법이 많이 있겠죠. 대표적으로 R+treekd-tree 같은 2차원 공간 탐색이 가능한 인덱스를 쓰는 것도 있겠고요. 겹치는 녀석들끼리 링크드 리스트로 묶어서 서로 안 겹치는 클러스터로 만든 다음, 클러스터를 이진 탐색하는 방법도 있습니다. 알고리즘은 전자가 훨씬 멋있지만, 실제로 벤치마크해보면 후자가 압도적으로 빠릅니다.;; 이 방법을 구현한 파이썬 라이브러리로 Pygr의 NLMSA가 널리 쓰입니다. 그런데 이 쪽 구현은 내부적으로 깔끔하게 구현하느라 그랬는지, 메모리 소모나 인덱싱 속도, 검색 속도 모두 생각보다 훨씬 많이 먹고 느리고 그렇습니다. 특히 인덱스 들고 있는 데에 파이썬 객체를 너무 많이 만들어내서... 물론 SQL쓰는 것보단 훨씬 빠르지만 말이죠.

그러다 괜찮은 것을 발견했습니다. +_+ 어느날 samtools 새 버전이 나왔으면 받으려고 갔는데, tabix라고 처음 보는 게 올라가 있길래 궁금해서 보니까 바로 이 기능을 하는 것이더군요! 이건 좀 더 범용으로 만들어서 탭으로 구분된 모든 텍스트파일을 인덱싱 가능하도록 만들었고, 게다가 원본 그대로 gzip한 다음에 원본에서 찾아주는 것이라 여러 도구에 쉽게 녹아들어갈 수 있게 만들었네요. (압축파일 안에서 랜덤액세스가 가능하도록 하는 도구도 물론 들어있습니다.)

써보니 속도도 상당히 빠릅니다. 매우 만족! 그래서 파이썬에서 쓰려면 어떻게 해야하나 보니까, 이미 펄, 파이썬, 자바 바인딩이 들어있더군용. 그러나 파이썬 바인딩이 ctypes를 쓰게 돼 있어서, 설치나 관리가 여러모로 번거롭고 속도도 (아주 약간) 느려지고.. 흐흐 예전부터 들어왔던 Cython을 배워볼 절호의 기회다! 하고 Cython으로 한참 다시 바인딩하는 작업을 해 봤는데, 아무리 찾아봐도 이터레이터 객체를 구현할 때 __next__에서 NULL을 리턴할 방법이 없어서 깔끔하게 만들어 줄 수가 없네요.. 결국은 그냥 포기하고 C 모듈로 만들었습니다. (tabix 0.2.3용 패치) 패치는 tabix 원저자에게 보냈습니다. 파이썬 2/3 겸용이죠. 호호호;

이렇게 쓸 수 있습니다~ 일단 인덱스 만들고 확인하기.

% head -3 lincRNAGuttman-mm9.bed
chr1        5072925 5073900 codingProm1131  181
chr1        6269675 6279350 K4-K36_0001     80
chr1        6277350 6277875 lincRNAProm0945 181
% bgzip lincRNAGuttman-mm9.bed
% tabix -p bed lincRNAGuttman-mm9.bed.gz chr1:6268000-6278000
chr1        6269675 6279350 K4-K36_0001     80
chr1        6277350 6277875 lincRNAProm0945 181

파이썬에서도 똑같이 접근하기.

% python3
Python 3.1.2 (release31-maint, Sep 17 2010, 20:27:33)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tabix
>>> tb = tabix.Tabix('lincRNAGuttman-mm9.bed.gz')
>>> print('\n'.join(tb.query('chr1', 6268000, 6278000)))
chr1        6269675 6279350 K4-K36_0001     80
chr1        6277350 6277875 lincRNAProm0945 181
>>> print('\n'.join(tb.querys('chr13:101348694-101656441')))
chr13       101513748       101515023       codingProm1885  251
chr13       101544973       101546323       codingProm1178  183
chr13       101601798       101603798       codingProm1377  194

원래 pygr.NLMSA쓰고 있던 곳을 요걸로 바꾸니까 거의 10배 이상 빨라졌네요. ^__^

댓글 3 개 | 트랙백 0 개 (보낼곳) | 태그 happyhacking


RNA 연구에서의 시퀀싱 활용 (시작)

대용량 시퀀싱(high-throughput sequencing; 다음부터 시퀀싱)이 폭발적으로 널리 쓰이기 시작하고도 이미 한참 지나서, 네이처 주요 논문들의 그림 구성, Affymetrix 주가, 학회장의 질문들 어느 것 하나 예전과 같은 게 없어졌습니다. 그래서 이제 논문 읽을 때 유전체학이나 전사체학 용어와 개념에 익숙하지 않고서는 읽기 힘든 논문이 한 둘이 아니게 됐는데...

시퀀싱의 주요 수요처인 유전체 DNA 시퀀싱은 워낙 뻔하고 여기 저기서 늘 얘기하고 있는 것이니 넘어가고, 역동성이 넘치는(-O-) RNA 분야에서의 시퀀싱 활용에 대해서 대략 정리해 볼까 합니다. 한꺼번에 다 올리면 읽기 압박이 있으니 여러 회로 끊어서 찔끔찔끔 올리겠습니다~ (히히)

순서는 모두 9번으로 나눠서,

  1. RNA 시퀀싱 기본 지식
    1. Illumina mRNA-seq 프로토콜 대충 보기
    2. Illumina SRA 프로토콜 대충 보기
    3. 여러가지 RNA/DNA ligase
  2. RNA 프로파일링
    1. RT하는 방법에 따라 다른 것
    2. 조각내는 방법에 따라 다른 것
    3. CAGE, SAGE에서 파생된 프로파일링 기법들
    4. 작은 RNA 프로파일링
  3. 번역효율 측정하기: ribosome profiling
  4. RNA와 단백질의 상호작용 보기
    1. RIP-seq
    2. CLIP-seq (UV cross-linking and immunoprecipitation), PAR-CLIP
    3. miRNA 타겟 보기: Ago HITS-CLIP
  5. RNA 간의 상호작용 보기: CLASH
  6. RNA 잘리는 부분 알아내기: degradome sequencing
  7. RNA 2차구조 보기: Kertesz et al.과 FragSeq
  8. RNA 5' 3' 끝 알아내기: High-throughput 5'/3' RACE와 PET
  9. mRNA 3' UTR 끝 알아내기: 3P-seq

로 올리도록 하겠습니다. ^__^

(다음 시간에 계속~)

댓글 2 개 | 트랙백 0 개 (보낼곳) | 태그 happyhacking


후배를 찾습니다~

몇 군데에 이미 전에 올린 적이 있어서 이미 보신 분들도 있겠지만, 좀 더 많은 홍보를 (;ㅁ;) 위해서 잠잠한 블로그에도 올려봅니다. ^.^;;

제가 공부하고 있는 실험실에 새로 석사과정, 통합과정 또는 박사과정 대학원생으로 참여할 대학원생을 모집합니다.

저희 실험실은 동물 RNA의 유전자발현 조절 분야를 주로 연구합니다. 특히 microRNA의 생합성 경로와 조절 경로의 주요 단백질들의 기작을 밝힌 것으로 많이 알려져 있습니다. (지도교수님 최근 기사와 인터뷰, 조금 오래된 인터뷰 참조)

이번에 찾고 있는 대학원생(1명)은 실험실에서 하는 분야 중 유전체학과 생물정보학 쪽을 주로 하도록 뽑을 예정이고요. 따라서, 학부나 석사 전공으로 컴퓨터과학, 통계학, 생물정보학 등을 전공하신 분을 기대하고 있습니다. 원하는 경우에는 실험도 배워서 스스로 데이터 만들어서 분석하는 요즘 유행하는 스타일로 공부할 수도 있습니다.

특히 유전자 발현 조절 분야는 대규모 전사체/유전체 실험으로 계속 커지는 추세라서 대용량 데이터를 정량적으로 다뤄서 생물 연구를 할 수 있는 기회가 계속 늘고 있습니다. 실험실에서 최근에 많이 하는 high-throughput 실험들을 많이 도입해서 하고 있고, 원하는 실험을 필요하다면 웬만큼은 부담이 되더라도 할 수 있을 정도의 여유는 되기 때문에 연구할 데이터와 기회가 풍부하고요. 실험실의 주요 연구분야가 아직 미지의 영역이 매우 많은 분야라서 머리를 쥐어짜서 연구분야를 찾아 헤멜 필요도 없어서 연구 측면에서는 국내에서 대학원 생활하기에는 아주 좋은 여건이 될 것입니다~

입학전공은 생명과학부, 생물정보학 협동과정, 유전공학 협동과정, 종양생물학 협동과정 중 하나를 선택할 수 있습니다. 2011년 후기 이후 입학 가능하며 입시 이전에 협의가 되어야하고, 연구원으로 미리 일할 수도 있으므로, 되도록이면 빨리 연락을 주시는 편이 좋습니다. (보통 1년 이전에도 많이 연락하는 편입니다.)

실험실에 관한 정보는 홈페이지를 참조하시고, 문의사항이나 지원에 관련된 것은 모두 저한테 자유롭게 보내주세요. 메일 주소는 제 자기소개 페이지 맨 끝에 있습니다. ^.^; 혹시 주변에 관심 있을 것 같은 학생이 있으면 알려주세요~ (나쁜 아저씨 아니에요~;;)

댓글 1 개 | 트랙백 0 개 (보낼곳) | 태그 life


이전 글 보기