유전자정보분석

Genomics & Cloud (1) - Galaxy를 이용한 SNP 분석

hongiiv 2010. 12. 7. 21:57
반응형
오늘은 클라우드 컴퓨팅과 지노믹스 첫 번째 시간으로 Galaxy라는 웹 기반의 Genomic 데이터 분석 툴을 가지고  SNP 분석에 대해서 알아본 후 두 번째 시간에는 아마존의  EC2 서비스를 통해서  Galaxy를 아마존에 EC2  클러스터에서 사용하는 방법에 대해서 알아보겠습니다.
우선 Galaxy (스마트폰 아님 -.-;;)에서는 많은 기능을 제공하고 있는데 여기서는 SNP 데이터를 기반으로 작업하도록 하겠습니다. 오늘 분석은 Exon 상에 존재하는 이미 알려진  SNP을 찾아내고 많은  수의 SNP 을 가지고 있는  Exon 순으로 소팅하도록 하겠습니다.

Galaxy를 통해서  UCSC의 Exon 데이터 가져오기

UCSC  Browser는 브라우저상에 보여지는 내용을 Galaxy로 내보내는 기능 (UCSC Table Browser를 사용) 을 가지고 있기 때문에 이 기능을 사용해서 우선 원하는 염색체의 exon 부분을 가져오도록 하겠습니다.
galaxy의 좌측메뉴에서 Get DataUCSC Main table browser를 선택한 후 genome에서 Human을 선택하고, assembly를 2006년도의 NCBI36/hg18을 선택(현재 최신의 Human Reference는 hg19로 자신이 원하는 버전을 선택) 합니다.
우리가 원하는 것은 유전자의 Exon 부분이기 때문에 group에서는 Genes and Gene Prediction Tracks를 선택하고 track에서는 UCSC Genes을 선택한다. position에서는 원하는 영역을 선택하는데 여기서는 "chr11"을 입력하여 11번 염색체의 모든 유전자를 가져오도록 하겠습니다. 마지막으로 output format은 "BED를 선택하고 get output 버튼을 클릭합니다. 이때 반드시 Send output to에 Galaxy가 체크 되어야 Galaxy로 해당 데이터를 가져오게 되니 잊지 마시기 바랍니다.

이제 화면이 바뀌고 BED 포맷에서 원하는 정보만 선택하는데, 우리는 유전자의 Exon만을 사용할 것이므로 Create one BED record per:에서 Coding Exons를 선택하고 "Send query to Galaxy" 버튼을 클릭합니다.

우측을 보시면 UCSC로부터 가져온 Exon 데이터를 보실 수 있습니다. 눈 모양의 아이콘을 클릭하면 화면 중간부분에 11번 염색체의 Exon 영역을 확인하실 수 있으며, 각 라인은 하나의 엑손을 의미하며 염색체번호, Exon의 시작위치, Exon의 끝위치, Exon의 이름 순으로 하나의 라인이 구성되어 있습니다.

dbSNP으로부터 SNP 정보 가져오기

Exon 데이터를 가져온것과 마찬가지로 dbSNP으로부터 11번 염색체에 존재하는 SNP정보를 가져오도록 하겠습니다. 마찬가지로 galaxy의 좌측메뉴에서 Get Data의  UCSC Main table browser를 선택한 후 genome에서 Human을 선택하고, assembly를 2006년도의 NCBI36/hg18을 선택합니다. 이번에는 group에서 variation and repets를 선택하고 track에서 원하는 dbSNP의 버전을 선택하는데, 여기서는 SNPs129(dbSNP Build 129버전)을 선택합니다.  이렇게 선택된 SNP은 염색체번호, SNP의 시작위치, SNP의 끝위치, SNP의 이름(RS번호) 순으로 한라인에 하나의 SNP 정보를 표시하게 됩니다. JOIN을 통한 Exon 영역에 해당하는 SNP 찾기 이제 해야할일은 SNP들 중에서 Exon 영역에 포함되는 SNP만을 선별하여야 하는데, Exon과 SNP처럼 Genome상의 위치에 따른 작업을 수행할때에는 Operate on Genomic IntervalsJoin the intervals of two queries side-by-side 기능을 사용합니다. Join은 서로 다른 두개의 영역에 대해서 서로 합하는 기능을 하는데, 여기서는 Exon과 SNP을 서로 join하게 되어 Exon에 포함하는 SNP의 리스트를 얻을 수 있습니다.
위 그림처럼 Join에서는 1번의 Exon 데이터를 with에서는 2번의 SNP을 각각 선택하면 다음과 같이 Exon에 속하는 SNP의 리스트를 얻을 수 있습니다. 블록을 지정한 것과 같이 Exon은 하나였지만 Join 후에는 하나의 Exon에 다수의 SNP이 포함되어 Join된 것을 확인하실 수 있습니다.

Exon별로 SNP 그룹화하기 이제 하나의 Exon에 속하는 SNP의 갯수를 세기 위해서 Exon 단위로 그룹화하고 Exon에 속하는 SNP의 갯수를 세어보도록 하겠습니다. 을 선택하고 하위메뉴에서 Group data by a column and perform aggregate operation on other columns를 선택한 후 아래와 같은 화면처럼 설정합니다. Group by column에서 Join한 데이터의 c4 즉 Exon의 이름별로 그룹화한 후 Operation에서 Count를 선택하여 Exon별로 그룹화된 데이터의 갯수를 세면 각 Exon별 SNP의 갯수를 알아낼 수 있습니다.


결과를 보면 Exon의 이름 다음에 해당 Exon에 속하는 SNP의 갯수(그룹화된 Exon의 갯수를 카운트)가 나오는 것을 확인하실 수 있습니다.


SNP 갯수로 Sort하기

Exon에 속한 SNP의 갯수가 많은 순으로 Sort해 보겠습니다. Filter and Sort 메뉴를 선택한 후 하위메뉴의 Sort data in ascending or descending order를 선택한 후 다음과 같이 설정합니다. 마지막 데이터(4:Group on data3)의 c2 컬럼(해당 Exon의  SNP 수) 컬럼으로 Sort를 수행합니다.

10개 이상의 SNP을 가진 Exon만 필터링하기

마지막으로 필터링 과정을 거쳐서 앞서 Sort된 데이터를 가지고 이 중 10개 이상의 SNP만을 가진 Exon만 추려내보도록 하겠습니다. Filter and Sort 메뉴의 Filter data on any column using simple expressions울 선택하여 Sort된 데이터의 c2 컬럼에 대해서 이라는 필터를 적용하여 SNP 갯수가 10개 이상인 Exon만을 선택합니다.

이상으로 galaxy에서의 기본적인 operation에 대해서 살펴보았습니다. 1. UCSC로부터 공개된 Exon, SNP 정보를 가져오는 방법 2. Join, Group, Sort, Filter의 기본적인 Galaxy의 operation
지금까지 분석은 아마도 Bioinformatics를 하시는 분들이라면 자신이 좋아하는 스크립트언어(Perl, Python, Java 등) 언어를 통해 작업을 수행했었겠지만 Galaxy를 사용함으로써 언제 어디에서든지 실행할 수 있을뿐만 아니라, History 기능과 Workflow 기능등을 통해서 체계적으로 사용할 수 있다는 장점이 있습니다. 또한 간단한 분석을 원하는 실험자들에게 알려줌으로써 Bioinformatics 연구자들이 흔히 실험하시분들로부터 받는 자잘한? 업무에서 해방될 수 있겠습니다. 오늘 기술한 내용은 Galaxy의 screencast에 나와 있는 내용으로 이를 응용한다면, 프로모터의 region의 SNP만을 뽑아내거나, 특정 유전자에 위치한 SNP만을 추출한다는 등의 작업을 손쉽게 하실 수 있습니다.

문제는 Galaxy 서버가 공개된 서버이기 떄문에 1) 사용자가 많거나 혹은 2) 웹페이지가 다운된 경우 3) 보안이 신경 쓰이는 Private한 데이터를 분석하는 경우 4) 컴퓨팅 파워가 많이 필요로 하는 작업의 경우를 대비해서 아마존의 클라우드 컴퓨팅을 사용해서 원하는 컴퓨팅 파워만큼 Galaxy를 설치해서 사용하는 방법에 대해서 알아보도록 하겠습니다.
연습문제) 11번 염색체에서 가장 많은 SNP을 가진 Exon은 염색체상의 어디(start, end position)이며 몇개의 SNP을 가지고 있을까요? 정답은 댓글로... 정답은 비밀댓글로 받으며 선착순 5명의 정답자에 한하여 소정의 상품을 제공하도록 하겠습니다. ^.^;; 
반응형