안녕하세요
한주현 입니다.
오늘은 바이오파이썬으로 할 수 있는 일들에 대해서 말씀드리겠습니다.
시작하며
바이오파이썬은 생물학자들이 컴퓨터로 작업을 할 때 도움이 될 만한 파이썬 라이브러리 들의 모음입니다.
그래서 바이오파이썬을 하기 위해서는 파이썬을 기본적으로 다루실 수 있어야 합니다.
물론 파이썬 언어를 다루는 능력이 엄청난 실력자는 아닐지라도 대략 기본적인 파이썬의 문법이나 자료구조정도만 아셔도 앞으로 진행하게 될 강좌를 따라가실 때 무리는 없습니다.
바이오파이썬을 사용하시려면 우선 설치는 하셨겠지요?
설치를 하시지 않으셨다면 이전 강좌를 참고하시면 됩니다.
http://korbillgates.tistory.com/70
Sequence 작업
바이오파이썬으로 가장 먼저 다뤄볼 부분은 Sequence입니다.
Sequence는 생물정보학 프로그래밍에서 기본이 되는 객체입니다.
파이썬을 실행시키고 프롬프트 화면으로 가보죠.
>>>
다음과 같이 입력합니다
>>> from Bio.Seq import Seq >>> my_seq = Seq("AGTACACTGGT") >>> my_seq Seq('AGTACACTGGT', Alphabet()) >>> print(my_seq) AGTACACTGGT >>> my_seq.alphabet Alphabet()
my_seq 이라는 이름으로 Seq 객체를 만들어 보았습니다.
alphabet 은 다음 강좌에서 더 자세히 다루도록 하겠습니다.
Sequence의 상보서열(complement sequence) 구하기
Seq객체에 complement 라는 메소드를 호출하면 Seq객체에 맞는 상보서열이 결과로 나오게 됩니다.
Sequence의 역상보서열(reverse complement sequence) 구하기
>>> from Bio.Seq import Seq >>> my_seq = Seq("AGTACACTGGT") >>> my_seq Seq('AGTACACTGGT', Alphabet()) >>> my_seq.complement() Seq('TCATGTGACCA', Alphabet())
Seq객체에 reverse_complement 라는 메소드를 호출하면 Seq객체에 맞는 역상보서열이 결과로 나오게 됩니다.
Seq 객체는 어떠한 메소드를 가지고 있을까요?
Seq 객체가 어떤 메소드를 가지고 있는지 살펴보기 위해서 다음과 같이 입력합니다.
>>> from Bio.Seq import Seq >>> my_seq = Seq("AGTACACTGGT") >>> dir(my_seq) ['__add__', '__class__', '__contains__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__',
'__len__', '__lt__', '__module__', '__ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_data',
'_get_seq_str_and_check_alphabet', 'alphabet', 'back_transcribe', 'complement', 'count', 'endswith', 'find',
'lower', 'lstrip', 'reverse_complement', 'rfind', 'rsplit', 'rstrip', 'split', 'startswith', 'strip', 'tomutable',
'tostring', 'transcribe', 'translate', 'ungap', 'upper']
일반적인 string에 대한 메소드들과 함께 Seq객체 특이적으로 나오는 메소드들이 있습니다.
바로 위에서 사용하였던 complement, reverse_complement 가 있으며, 이 tomutable, transcribe, translate 등이 Seq객체 특이적 메소드 입니다.
자세한 내용은 이후의 강좌들에서 자세히 다뤄보도록 하겠습니다.
파일 파싱(parsing)
생물정보학(bioinformatics) 을 하면서 생물학 데이터 파싱(parsing)은 가장 많이 접하게 될 일 입니다.
파싱(parsing) 이란 데이터에서 필요한 부분을 가져오는 작업을 뜻합니다.
생물학 데이터를 파싱 해오기 위해서,
첫째로는 데이터가 어떠한 형식(format)으로 이루어져있는지 이해가 있어야 하며,
둘째로는 파싱할 프로그래밍 능력이 필요합니다.
그냥 기본적인 프로그래밍으로도 생물학 데이터 파일을 파싱 할 수는 있겠습니다만,
바이오파이썬 라이브러리를 이용하면 일이 훨씬 더 간결해 집니다.
실습으로는 Bio.SeqIO 모듈을 사용하여 FASTA파일과 GenBank파일을 파싱해보겠습니다.
FASTA 파일 파싱하기
Bio.SeqIO 모듈로 FASTA파싱을 하기 위해 아래의 예제 파일을 준비하겠습니다.
https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/ls_orchid.fasta
파일 내부를 보시면 94개나 되는 많은 수의 record를 볼 수 있습니다.
FASTA의 헤더인 ">" 를 기준으로 잘라 sequence를 가져오는 스크립트를 작성 할 수 도 있고,
아래와 같이 바이오파이썬 라이브러리를 사용 할 수도 있습니다.
다음과 같이 스크립트를 작성합니다.
from Bio import SeqIO for seq_record in SeqIO.parse("ls_orchid.fasta", "fasta"): print(seq_record.id) print(repr(seq_record.seq)) print(len(seq_record))
실행을 해보면,
gi|2765658|emb|Z78533.1|CIZ78533
Seq(’CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC’, SingleLetterAlphabet())
740
...
gi|2765564|emb|Z78439.1|PBZ78439
Seq(’CATTGTTGAGATCACATAATAATTGATCGAGTTAATCTGGAGGATCTGTTTACT...GCC’, SingleLetterAlphabet())
592
와 같은 결과를 얻을 수 있습니다.
SeqIO 모듈을 사용하여 간편히 FASTA 파일을 파싱했습니다.
GenBank 파싱하기
Bio.SeqIO 모듈로 GenBank파싱을 하기 위해 아래의 예제 파일을 준비하겠습니다.
https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/ls_orchid.gbk
파일 내부를 보시면 NCBI에서 검색 결과 화면이 텍스트로 담겨져서 나와있습니다.
예제로 한 개만 보여드리자면 다음과 같습니다.
LOCUS Z78533 740 bp DNA linear PLN 30-NOV-2006
DEFINITION C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA.
ACCESSION Z78533
VERSION Z78533.1 GI:2765658
KEYWORDS 5.8S ribosomal RNA; 5.8S rRNA gene; internal transcribed spacer;
ITS1; ITS2.
SOURCE Cypripedium irapeanum
ORGANISM Cypripedium irapeanum
Eukaryota; Viridiplantae; Streptophyta; Embryophyta; Tracheophyta;
Spermatophyta; Magnoliophyta; Liliopsida; Asparagales; Orchidaceae;
Cypripedioideae; Cypripedium.
REFERENCE 1
AUTHORS Cox,A.V., Pridgeon,A.M., Albert,V.A. and Chase,M.W.
TITLE Phylogenetics of the slipper orchids (Cypripedioideae:
Orchidaceae): nuclear rDNA ITS sequences
JOURNAL Unpublished
REFERENCE 2 (bases 1 to 740)
AUTHORS Cox,A.V.
TITLE Direct Submission
JOURNAL Submitted (19-AUG-1996) Cox A.V., Royal Botanic Gardens, Kew,
Richmond, Surrey TW9 3AB, UK
FEATURES Location/Qualifiers
source 1..740
/organism="Cypripedium irapeanum"
/mol_type="genomic DNA"
/db_xref="taxon:49711"
misc_feature 1..380
/note="internal transcribed spacer 1"
gene 381..550
/gene="5.8S rRNA"
rRNA 381..550
/gene="5.8S rRNA"
/product="5.8S ribosomal RNA"
misc_feature 551..740
/note="internal transcribed spacer 2"
ORIGIN
1 cgtaacaagg tttccgtagg tgaacctgcg gaaggatcat tgatgagacc gtggaataaa
61 cgatcgagtg aatccggagg accggtgtac tcagctcacc gggggcattg ctcccgtggt
121 gaccctgatt tgttgttggg ccgcctcggg agcgtccatg gcgggtttga acctctagcc
181 cggcgcagtt tgggcgccaa gccatatgaa agcatcaccg gcgaatggca ttgtcttccc
241 caaaacccgg agcggcggcg tgctgtcgcg tgcccaatga attttgatga ctctcgcaaa
301 cgggaatctt ggctctttgc atcggatgga aggacgcagc gaaatgcgat aagtggtgtg
361 aattgcaaga tcccgtgaac catcgagtct tttgaacgca agttgcgccc gaggccatca
421 ggctaagggc acgcctgctt gggcgtcgcg cttcgtctct ctcctgccaa tgcttgcccg
481 gcatacagcc aggccggcgt ggtgcggatg tgaaagattg gccccttgtg cctaggtgcg
541 gcgggtccaa gagctggtgt tttgatggcc cggaacccgg caagaggtgg acggatgctg
601 gcagcagctg ccgtgcgaat cccccatgtt gtcgtgcttg tcggacaggc aggagaaccc
661 ttccgaaccc caatggaggg cggttgaccg ccattcggat gtgaccccag gtcaggcggg
721 ggcacccgct gagtttacgc
//
이렇게 생긴 텍스트 파일에서 염기서열만 가져오는 스크립트를 작성하는것은 꽤나 성가신 일 입니다.
다음과 같이 스크립트를 작성합니다.
from Bio import SeqIO for seq_record in SeqIO.parse("ls_orchid.gbk", "genbank"): print(seq_record.id) print(repr(seq_record.seq)) print(len(seq_record))
실행을 해보면,
Z78533.1
Seq(’CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC’, IUPACAmbiguousDNA())
740
...
Z78439.1
Seq(’CATTGTTGAGATCACATAATAATTGATCGAGTTAATCTGGAGGATCTGTTTACT...GCC’, IUPACAmbiguousDNA())
592
와 같은 결과를 얻을 수 있습니다.
SeqIO 모듈을 사용하여 간편히 GenBank 파일을 파싱했습니다.
이외에도..
이외에도 바이오파이썬으로 파싱 할 수 있는 많은 데이터 들이 있습니다.
NCBI의 Entrez 와 ExPASy, SCOP 등이 있습니다.
자세한 내용은 향후 강좌에서 만나실 수 있습니다.
다음 강좌는 Sequence 객체에 대해 말씀드리겠습니다.
그럼 다음강좌에서 만나요~
--- 2019.03.13
안녕하세요 여러분~ 한주현입니다!
제가 BJ퍼블릭 출판사와 함께
"바이오파이썬으로 만나는 생물정보학"
을 출판하였습니다.
여러 예제들과 함께 준비하였습니다 ㅎㅎ
자세한 내용은 아래 링크로 ㅎㅎ
생물정보학자 블로그 링크
https://korbillgates.tistory.com/211
출판사 링크
https://bjpublic.tistory.com/324
감사합니다!!
'생물정보학 > Biopython (바이오파이썬)' 카테고리의 다른 글
[바이오파이썬] 4.2 Sequence Record 객체 - FASTA, GenBank 파일로 부터 생성하기 (6) | 2017.10.30 |
---|---|
[바이오파이썬] 4.1. Sequence Record 객체 (0) | 2017.10.29 |
[바이오파이썬] 03. Sequence 객체 (8) | 2017.04.09 |
[바이오파이썬] 01. 바이오파이썬 설치 (23) | 2017.04.07 |
[공지] Biopython (바이오파이썬) 으로 만나는 생물정보학 (10) | 2017.04.07 |
댓글