파이썬 으로 메 타지 놈 기본 프로파일링 따라 하 기 
 Posts 파이썬 으로 메 타지 놈 기본 프로파일링 따라 하 기 # 
 2015 - 05 - 21 20 : 33 : 24 ( rev . 15 ) 
 2015 - 03 - 14 13 : 48 : 42 ( published ) 
 메타 지 놈 ( Metagenomics ) NGS 데이터 가 있 다 . 이 를 파이썬 pandas 로 간단 하 게 프로파일링 ( 어 노테이션 ) 하 는 스크립트 를 만들 어 보 았 다 . 어셈블리 ( Sequence assembly ) 한 후 컨 티그 ( contig ) 로 분석 할 수 도 있 지만 , 생물 종별 유전자 별 프로파일링 한다는 의미 로 각 리드 ( read ) 들 을 직접 BLAST 해 보 고자 한다 . 생물 정보 분석 초심자 들 에게 도움 을 주 고자 알 기 쉽 게 정리 해 보 았 다 . 
 파이썬 과 관련 모듈 설치 
 NGS 데이터 받 기 
 BLAST 구동 하 기 
 생물 종별 유전자 별 프로파일링 
 전략 # 
 FASTQ 데이터 를 FASTA 로 변환 한 뒤 , 곧바로 BLAST 구동 하 고 , 생 물종 식별 번호 와 함께 표 형태 로 출력 한다 . pandas 로 이 표 를 읽 어 생물 종별 , 유전자 별 로 groupby 하 고 데이터 현황 을 살핀다 . 
 파이썬 과 관련 모듈 설치 # 
 파이썬 은 최신 버전 3 . 4 . 2 를 쓴다 . Python 3 도 이젠 충분히 쓸 만 한 시대 다 . 더 이상 관리 되 지 않 는 파이썬 2 는 이제 그만 . HTSeq 이 Python 3 을 지원 하 지 않 는 점 이 맘 에 걸리 지만 , 내 가 만드 는 코드 가 2 . 7 에 도 구동 될 수 있 도록 프로그래밍 하 면 그만 이 다 . 
 OS X 사용 자 라면 파이썬 도 Homebrew 로 설치 해 쓰 는 것 이 좋 다 . 
 파이썬 모듈 설치 는 pip 를 쓰 는 것 이 제일 좋 다 . 필요 하 면 pyvenv ( virtualenv ) 와 조합 하 여 별도 의 독립 환경 안 에서 사용 할 수 도 있 다 . Homebrew 에선 Python 3 용 pip 를 pip 3 이 란 이름 으로 관리 한다 . pip 3 으로 pandas 를 설치 해 보 자 . 
 Downloading pandas - 0 . 15 . 2 - cp 34 - cp 34 m - macosx _ 10 _ 6 _ intel . macosx _ 10 _ 9 _ intel . macosx _ 10 _ 9 _ x 86 _ 64 . macosx _ 10 _ 10 _ intel . macosx _ 10 _ 10 _ x 86 _ 64 . whl ( 6 . 8 MB ) 
 100 % | # # # # # # # # ########################| 6 . 8 MB 43 kB / s 
 100 % | # # # # # # # # ########################| 479 kB 479 kB / s 
 Downloading numpy - 1 . 9 . 2 - cp 34 - cp 34 m - macosx _ 10 _ 6 _ intel . macosx _ 10 _ 9 _ intel . macosx _ 10 _ 9 _ x 86 _ 64 . macosx _ 10 _ 10 _ intel . macosx _ 10 _ 10 _ x 86 _ 64 . whl ( 3 . 7 MB ) 
 100 % | # # # # # # # # ########################| 3 . 7 MB 88 kB / s 
 Downloading python _ dateutil - 2 . 4 . 1 - py 2 . py 3 - none - any . whl ( 188 kB ) 
 100 % | # # # # # # # # ########################| 188 kB 420 kB / s 
 Successfully installed numpy - 1 . 9 . 2 pandas - 0 . 15 . 2 python - dateutil - 2 . 4 . 1 pytz - 2014 . 10 six - 1 . 9 . 0 
 위 명령어 한방 에 의존 성 있 는 모듈 NumPy , pytz , python - dateutil , six 가 모두 설치 된다 . 
 NGS 데이터 받 기 # 
 직접 실험 한 NGS 데이터 도 있 겠 지만 , 이 예제 에선 공개 된 데이터 를 써 보 자 . 공개 된 시퀀싱 원본 데이터 는 국제 적 으로 공인 된 기관 의 SRA 서비스 를 통해 받 아 볼 수 있 다 . 나 의 NGS 데이터 도 특별 한 절차 를 거쳐 등록 할 수 있 다 . NCBI , EBI , DDBJ 각 기관 에서 GenBank 처럼 공유 하 여 서비스 한다 . NCBI 에선 특히 SRA Toolkit 이 란 프로그램 을 제공 하 며 , 이 를 통해 명령 행 에서 쉽 게 NGS 데이터 를 관리 할 수 있 다 . 
 OS X 를 사용 한다면 이 역시 Homebrew 로 쉽 게 설치 할 수 있 다 . 
 $ brew install sratoolkit 
 SRA Toolkit 을 설치 하 면 바로 fastq - dump 프로그램 을 쓸 수 있 다 . SRA 식별 번호 를 입력 하 여 해당 FASTQ 파일 을 내려 받 는다 . 이 예제 에선 2010 년 공개 된 SRX 019702 : Metagenomics of human microbiome 를 이용 해 보 자 . SRX 019702 는 SRR 04165 ~ 7 4 개 의 Run 정보 로 구성 되 어 있 다 . 
 $ fastq - dump SRR 041657 -- split - files -- fasta 60 
 SRR 041657 _ 1 . fasta SRR 041657 _ 2 . fasta 
 위 명령 은 Run 데이터 SRR 041657 를 FASTA 형식 으로 받 는다 . "-- split - files " 옵션 은 pair 별로 파일 을 분리 하 라는 의미 이 다 . 이 명령 이 수행 되 면 pair 별로 파일 이 생성 된다 . 
 BLAST 구동 하 기 # 
 입력 용 FASTA 파일 이 준비 됐으니 , 이젠 BLAST 를 수행 해 보 자 . NCBI BLAST + 도 Homebrew 로 설치 된다 . 생물 정보 분석 하 기 매우 편해 지 는 시대 . 예전 에 매번 NCBI FTP 사이트 들어가 서 다운 받 았 던 기억 이 . .. 
 $ brew install blast 
 아 , BLAST 검색 용 DB 는 물론 NCBI FTP 사이트 들어가 서 찾 아야 한다 . 이번 예제 에서 는 정리 된 단백질 데이터베이스 인 SWISS - PROT 을 써 보 자 . 이 DB 는 한참 예전 에 UniProt 이름 으로 통합 됐 는데 , NCBI FTP 에선 여전히 swissprot 이 란 이름 으로 사용 된다 . 
 $ wget ftp : / / ftp . ncbi . nlm . nih . gov / blast / db / / swissprot . tar . gz 
 $ tar zxvf swissprot . tar . gz 
 BLAST 실행 은 다음 명령 을 이용 한다 . 
 $ blastx - db swissprot - max _ taget _ seqs 1 - evalue 0 . 001 - outfmt ' 6 std sgi staxids ' < SRR 041657 _ 1 . fasta > SRR 041657 _ 1 . blout 
 중요 한 옵션 들 이 있 다 . "- max _ target _ seqs 1 " 옵션 은 베스트 매치 ( 1 등 ) 만 쓰 겠 다는 의미 이 다 . 프로파일링 목적 이 므로 베스트 매치 만 쓰 고자 한다 . "- outfmt ' 6 std sgi staxids " 옵션 은 6 번 출력 용 기본 std 와 GenBank id 인 gi , NCBI Taxon id 를 함께 출력 하 겠 다는 의미 이 다 . ( 자세 한 사용법 은 " blastn - help " 명령 으로 알 수 있 다 . ) 
 생물 종별 유전자 별 프로파일링 # 
 간략 한 프로파일 스크립트 는 다음 과 같 다 . 
 argparse 모듈 로 명령 행 도움 말 도 바로 출력 해 볼 수 있 다 . 
 $ python 3 metagenome _ profiler . py - h 
 usage : metagenome _ profiler . py [ - h ] fasta 
 fasta input FASTA file 
 FASTA 파일 리드 수 는 아무래도 꽤 큰 파일 이 다 보 니 파이썬 에서 직접 읽 기 꺼려 진다 . Stack Overflow 답변 들 을 보 니 " wc - l " subprocess 가 가장 나 아 보인다 . 위 코드 의 len _ fasta 함수 는 " cat fastafile | grep '>' | wc - l " Shell 명령 을 파이썬 으로 구동 한 것 이 다 . 
 파이썬 으로 파일 라인수 세기 가장 맘 에 드 는 건 “ wc - l ” 을 subprocess 로 http : / / t . co / Qpz 2 ct 633 q 
 — Hyungyong Kim ( @ yong 27 ) 2015 년 3 월 13 일 
 ( 뭔가 검색 해서 알아내 면 트윗 하 는 습관 . ..) 
 생물 종별 프로파일링 은 다음 한 줄 이 다 . 
 pandas 가 없 었 다면 이 부분 을 어떻게 만들 어야 했을까 싶 다 . 생물 종 id 로 groupby 하 고 갯 수 를 세어 높 은 것 부터 정렬 한다 가 직관 적 으로 한 줄 로 표시 된다 . pandas 만세 ! 
 위 스크립트 파일 을 실행 한다 . 실행 인수 로 FASTA 파일 을 적 어 주 면 FASTA 파일 에서 전체 리드 수 를 확인 하 고 , ". blout " 파일 을 읽 어 프로파일 데이터 를 출력 한다 . 
 $ python 3 metagenome _ profiler . py SRR 041657 _ 1 . fasta 
 Number of reads : 163642 
 Number of annotations : 1574 
 Number of taxons : 361 
 Top 10 taxons 
 - id 226186 has 304 reads 
 - id 435590 has 174 reads 
 - id 272559 has 118 reads 
 - id 224308 has 71 reads 
 - id 295405 has 57 reads 
 - id 83333 has 55 reads 
 - id 435591 has 28 reads 
 - id 242619 has 26 reads 
 - id 3702 has 23 reads 
 - id 71421 has 21 reads 
 Number of genes : 1190 
 - id 81740756 has 32 reads 
 - id 597502304 has 8 reads 
 - id 33301170 has 7 reads 
 - id 81315088 has 7 reads 
 - id 37538299 has 6 reads 
 - id 1709284 has 5 reads 
 - id 54035840 has 5 reads 
 - id 55976660 has 5 reads 
 - id 81444500 has 5 reads 
 - id 61227671 has 5 reads 
 위 데이터 는 맛 배기 로 ". blout " 의 일부 만 출력 한 것 이 므로 실제 결과 와 다르 다 . 이 예제 를 그대로 돌리 면 BLAST 만 도 꽤 오래 걸린다 . 큰 서버 에서 별도 의 분산 작업 계 획하 에 돌려 보 길 추천 한다 . 여러 샘플 데이터 가 있 으면 각각 프로파일링 수행 후 , 서로 간 에 얼마나 다른지 비교 해 볼 수 있 겠 다 . 
 그나저나 저 사람 장속 에 현저 하 게 많이 발견 되 는 생 물종 은 Bacteroides thetaiotaomicron VPI - 5482 ( 226186 ) 과 Bacteroides vulgatus ATCC 8482 ( 435590 ) 이 며 , 많이 발견 되 는 유전자 는 저 1 번 생물 종의 SUSC _ BACTN ( Starch - utilization system protein C ) 이 다 . 사람 마다 저 패턴 이 얼마나 많이 다를지 심히 궁금 해 지 는 대목 이 다 . 
 0 . 025 May 17 
 0 . 025 April 23 
 0 . 025 High - throughput sequencing 
 0 . 025 Apple Inc . 
 0 . 025 DNS 
 newer 대한민국 SNS 이용현 황 그림 다시 그리 기 
 older 빛 의 속도 에 가깝 게 우주 여행 한다면