빅데이터분석

Google Genomic data BigQuery (1)

hongiiv 2014. 5. 8. 07:51
반응형
저번 포스팅에 구글의 Genomics API와 그들의 전략에 대해서 간단히 살펴보았다. 현재 진행중인 Google의 gonomics API는 하루가 멀다하고 새로운 기능들을 올라오고 있다. 오늘은 저번 포스팅에 있어서 추가할 내용들에 대해서 기술하도록 하겠다. 결론은 이제 genomics 연구자들은 google의 플랫폼에 대해서도 배워야 할 때가 다가왔다는 것이다. 

Dataset import 기능 - google storage로 부터 import는 아직 준비중,,,

genomics 데이터를 사용하기 위해서는 Datasets를 만들어야 한다. 이 datasets은 크게 Google storage, NCBI 그리고 Local 에 저장된 file을 각각 사용할 수 있다. Google의 storage를 활용하는 경우 google  storage에 데이터를 업로드 한 후 datasets과 readsets을 각각 만들어야 하는데 아직 dataset에 대한 API의 기능들이 워킹하지 않는다. 따라서 google이 sample로 넣어 놓은 datasets만을 사용이 가능하다. 

Google의 public dataset과 datasets ID



BigQuery와 만난 유전체 데이터

몇일전 구글은 BigQuery 관련 예제도 함께 올려 놓았다. 1000 genomes 데이터를  올려 놓아서 사용자는 이에 대해서 bigqyery를 수행할 수 있을 뿐만 아니라 다양한 예제를 통해 어떻게 genomics 데이터를 bigquery와 함께 사용해야 할지에 대한 힌트를 주고 있다. BIgQuery가 나온건 벌써 몇 해가 지났지만, genomics 분야에서 구체적으로 어떻게 BigQuery를 사용하는지에 대한 사례를 적어도 내가 알기에는 없었는데, 이번에 구글이 직접 그 예를 google API와 함께 내놓았다.

우선 BigQuery가 무엇인지에 대해서 알아보자

BigQuery는 Big Data를 실시간으로 분석할 수 있는 플랫폼으로 CSV  파일을 이용해 손쉽게 Data를 Import/Export할 수 있다. BigQuery는 MySQL과 같은 Relational DB가 아니며, 저용량의 수많은 테이블의 필드간의 관계에 의해 처리는 되는 데이터가 아닌 대용량의 Table 수가 소수인 Data에 적합하다. 또한 Update, Delete 의 데이터에 대한 처리가 지원되지 않고 Data의 분석만 가능하다.

BigQuery를 사용하기 위한 준비

앞선 Genomics API와 마찬가지로 BigQuery를 사용하기 위해서는 Google APIs Console을 사용하여 접근하여야 한다. 물론 Google 계정은 기본으로 가지고 있어야 함은 물론이다. 기본적으로 비활성화된 BigQuery API를 활성화(status on)하여야 한다. BigQuery를 사용하는 방법은 웹브라우저를 통한 BigQuery Browser Tool을 이용하거나 REST API, bq Command Line Tool 등을 이용하는 방법이 있으며 여기서는 "BigQuery Browser Tool"을 사용한다.

기본적으로 샘플 데이터셋 (publicdata:samples)을 몇개 제공하며 이중 미국인의 1969~2008년까지의 출생 데이터 (publicdata:samples.natality)를 이용해 보도록 하자. 아래와 같이 New Query를 통해 출생아의 인종이 한국인 (child_race=28)은 모두 17,225명임을 확인 할 수 있다. (CDC Birth Vital 통계정보 페이지로 바로가기)

 
또한 전체 데이터는 다음의 쿼리를 통해 약 1억건이 넘는 Big Data임을 확인 할 수 있다.



미국내 최고령의 산모는 54세이며, 아빠의 나이는 99세로 되어 있는데 이는 아마 몰름을 99로 처리한듯 하다. 99세인 아빠들이 너무 많음...


이제 Genetic Data를 살펴보아요.

현재 google이 제공하는 BIgQuery 데이터는 1000genomes와 PGP 데이터 입니다. Project Name은 google.com:biggene이구요. PGP는 아직 준비중입니다. 지금 당장 Query를 날릴 수는 없습니다. 조만간 공개한다고 합니다. 하지만, 예제 코드들과 실행 결과는 올려 놓았으니 살펴 보도록 하죠.

앞서서 BIgQeury를 사용하는 방법은 신생아 데이터로 살펴보았구요. 참 가격은 우선 데이터를 저장하는데에 $0.026 (per GB/month)입니다.
1000genome data가 대략 1 TB정도 된다는 군요.  그럼 한달에 1,000 GB*$0.026 = $26입니다. 와 저장하는데 엄청 저렴합니다. 그런데 문제는 저장이 아니라 query를 날려야 합니다. 이때 GB당 $0.005입니다. 즉 1000genome data에다가 대고 query를 한번 날릴때 마다 1,000 GB * $0.005=$5 되겠습니다. 그럼 1000genome 데이터를 처음 업로드하고 query를 100번 정도 날렸다고 합시다. 그럼 가격은 $25 + $5 * 100 = $525 한화로 58만원 정도 나오게 됩니다. 음 계산하고 보니까 만만치 않은 비용이네요. 넵 저장 비용은 싸지만,, 거의 무료나 다름 없지만, query마다 용량에 따른 과금이 책정되니 주의하셔야 합니다요. 자! 그럼 여기서의 교훈은 무엇일까요? 넵 한번 쿼리를 날릴때 잘 만들어서 날려야 한다는 거죠. 

Schema

1000genome data의 스키마는 볼 수 없습니다. 넵, 아직 일반인들에게 공개가 안되어있다고 이야기했기 때문에 table의 구조가 어떻게 되었는지 모릅니다.

Provenance

google genomics에 올라온 예제는 단순히 1000genomes 데이터만 있는게 아닙니다. 어떠한 데이터로 이루어져 있냐면 다음과 같이 3가지 type의 데이터로 이루어져 있습니다.

Variant Data
Phenotypic Data
  • 데이터 정보: 1000genomes data에 대한 Ethnicity, gender, family relationship에 대한 정보
  • 출처: http://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/working/20130606_sample_info/20130606_sample_info.txt
  • 출처: http://ftp.1000genomes.ebi.ac.uk/vol1/ftp/20131219.populations.tsv
  • 출처: http://ftp.1000genomes.ebi.ac.uk/vol1/ftp/20131219.superpopulations.tsv
  • 출처: http://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/working/20130606_sample_info/20130606_g1k.ped 
Annotation Data
다음 포스팅에서 실제 1000 genomes 데이터를 가지고 BIgQuery를 이용하여 의미있는 데이터를 가져 오는 예를 살펴보도록 하겠다.



 
반응형