Google Genomics
MapReduce Python
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Programming
Google Genomics 서버스는 MapReduce를 이용하여 분산작업을 처리하는 것이 사용의 핵심이다. 구글은 유전체 분석을 MapReduce로 실행하는 예제를 Java, Python 코드로 제공한다. 본 문서는 Python으로 MapReduce 분석을 수행하는 방법을 간략히 소개한다. (mapreduce-python in Github)
Table of Contents
내 컴퓨터에 설치하기 #
먼저 본인 컴퓨터에 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가 표시된다.
"default"를 웹 UI가 표시된다.
Submit을 선택하면 바로 작업이 제출된다. 본 작업은 20번 염색체의 일부 영역에 대한 Coverage Statics를 분산하여 작업한 후 결과를 표시한다.
예제 코드 이해 #
본 코드는 다음과 같은 파이썬 라이브러리를 이용한다.
- cloudstorage
- httplib2
- mapreduce
- oauth2client
다음과 같은 주요 소스코드가 있다.
- genomicsapi.py: 쿼리를 Genomics API에 제출한다.
- input_reader.py: App Engine MapReduce input reader class를 구현한다. 주어진 쿼리를 어떻게 쪼갤것인지를 결정하고 파이프라인을 위한 데이터를 제공한다.
- pipeline.py: 파이프라인 설정을 포함한다. 유전체 영역에 대해 Read coverage를 계산하고 결과를 GoogleCloudStorage에 쓴다.
- main.py: 웹 인터페이스를 제공한다.
활용 #
본 예제코드를 확장하여, 자신만의 원하는 기능을 pipeline.py에 별도로 구현할 수 있다. 앞으로는 많은 분석들을 클라우드에서 진행하게 될 것이다. 구글은 이 방식을 거의 처음으로 소개했으며, 자원을 늘려가며 MapReduce를 구현하는 방식을 통해 새로운 분석을 수행할 수 있다.