Skip to content

Google Genomics MapReduce Python #

Find similar titles

6회 업데이트 됨.

Edit

Structured data

Category
Programming

Google Genomics 서버스는 MapReduce를 이용하여 분산작업을 처리하는 것이 사용의 핵심이다. 구글은 유전체 분석을 MapReduce로 실행하는 예제를 Java, Python 코드로 제공한다. 본 문서는 Python으로 MapReduce 분석을 수행하는 방법을 간략히 소개한다. (mapreduce-python in Github)

내 컴퓨터에 설치하기 #

먼저 본인 컴퓨터에 Google App Engine 환경을 설치해야 한다. OS X 사용자라면 Homebrew를 통해 다음처럼 바로 설치할 수 있다.

brew install google-app-engine

Google Genomics MapReduce Python은 Github를 통해 소스가 관리되고 있다. 변경이 필요하면 바로 포크해서 사용할 수 있다. 예제를 바로 돌려보기 위해 다음처럼 설치하고 테스트해 볼 수 있다.

git clone https://github.com/googlegenomics/mapreduce-python.git
cd mapreduce-python

다음으로 구글계정으로 로그인한 뒤 Google Developers Console에서 "Genomics API" 프로젝트를 새로 생성한 후, Client ID를 발급받는다. 이때 발급받은 정보는 .p12 파일로 다운로드된다. 이 파일을 현재 디렉토리로 복사한 후, 다음 명령을 수행하면 .pem 파일이 생성된다.

cat privatekey.p12 | openssl pkcs12 -nodes -nocerts -passin pass:notasecret | openssl rsa > private-key.pem

또한 Google Developers Console에서 "Public API access"를 선택하여 서버용 API_KEY를 발급받을 수 있다. 이 키는 복사하여, 현재 경로의 app.yaml 파일의 API_KEY 설정부분에 복사한다. 그리고 다음 명령을 수행하여 로컬 서버를 구동한다.

dev_appserver.py --appidentity_private_key_path private-key.pem --appidentity_email_address XXX@developer.gserviceaccount.com

위의 이메일 주소 부분은 Client ID를 설정할 때 받은 메일 주소이어야 한다. XXX 부분만 바꾸면 된다. 그리고 웹브라우저에서 "http://localhost:8080"을 입력하면 MapReduce를 구동하기 위한 웹 UI가 표시된다.

Image

"default"를 웹 UI가 표시된다.

Image

Submit을 선택하면 바로 작업이 제출된다. 본 작업은 20번 염색체의 일부 영역에 대한 Coverage Statics를 분산하여 작업한 후 결과를 표시한다.

예제 코드 이해 #

본 코드는 다음과 같은 파이썬 라이브러리를 이용한다.

  1. cloudstorage
  2. httplib2
  3. mapreduce
  4. oauth2client

다음과 같은 주요 소스코드가 있다.

  1. genomicsapi.py: 쿼리를 Genomics API에 제출한다.
  2. input_reader.py: App Engine MapReduce input reader class를 구현한다. 주어진 쿼리를 어떻게 쪼갤것인지를 결정하고 파이프라인을 위한 데이터를 제공한다.
  3. pipeline.py: 파이프라인 설정을 포함한다. 유전체 영역에 대해 Read coverage를 계산하고 결과를 GoogleCloudStorage에 쓴다.
  4. main.py: 웹 인터페이스를 제공한다.

활용 #

본 예제코드를 확장하여, 자신만의 원하는 기능을 pipeline.py에 별도로 구현할 수 있다. 앞으로는 많은 분석들을 클라우드에서 진행하게 될 것이다. 구글은 이 방식을 거의 처음으로 소개했으며, 자원을 늘려가며 MapReduce를 구현하는 방식을 통해 새로운 분석을 수행할 수 있다.

Incoming Links #

Related Bioinformaticses #

Suggested Pages #

0.0.1_20231010_1_v71