[BioPython] FASTA,FASTQ,GENBANK : SeqIO,Entrez

2024. 9. 13. 11:56Bioinformatics

0. SeqIO를 이용하면, SeqRecord 객체가 만들어진다.

 

■ 단순히 시퀀스만  handling 할 때는 Seq 객체를 생성하고, 추가적인 정보(ID , name)등을 이용하여야 할 때는 SeqRecord 객체를 생성해 준다. SeqRecord 객체를 만드는 방법은 3가지다. 첫 번째, Seq() 객체를 만든 후, SeqRecord(Seq 객체)를 해준다. 두 번째, fasta파일을 SeqIO.read()를 이용해서 만든다. 세 번째, genbank파일을 SeqIO.read()를 이용해 만든다. 

 

Entrez는 NCBI에서 온라인으로 데이터를 받아올 때 사용한다.

# Entrez 사용방법 
from Bio import SeqIO 
from Bio import Entrez 
Entrez.email = 본인 이메일 입력 
with Entrez.efetch(db = db 이름, rettype = 데이터 형식, retmode = 반환 형식, id = 아이디) as handle: 
	seq = SeqIO.parse(file path or file을 연 객체, file 형식) 
    for s in seq:
    	print(s)

 

1. HeatShockProtein을 Entrez를 이용해 탐색

from Bio import Entrez
from Bio import SeqIO
Entrez.email = "본인 이메일"
with Entrez.efetch(db = "protein",rettype="fasta",retmode="text",id = "686630421") as handle:
    seq = SeqIO.parse(handle,"fasta")
    print(type(seq))
    for s in seq:
        print(type(s))
        print(s)
## output
<class 'Bio.SeqIO.FastaIO.FastaIterator'>
<class 'Bio.SeqRecord.SeqRecord'>
ID: XP_009307656.1
Name: XP_009307656.1
Description: XP_009307656.1 heat shock protein [Trypanosoma grayi]
Number of features: 0
Seq('MMRRVSQRVAREAFSRSTPSSRLAVAVAFNALAAAPSRSHVAALATSMRFCSTT...ADK')

 

2. ubuntu에서 원격으로 NCBI 데이터 가져오는 법 

esearch -db protein -query <Protein_Accession_ID> | efetch -format gb > <파일명>.gb
##ex 
esearch -db protein -query NP_000257.3 | efetch -format gb > NP_000257.3.gb

 

 

esearch가 설치 안되어있다면, 설치한 후, 다음과 같은 명령어를 실행하면 된다. 이때, 찾고자 하는 data가 nucleotide라면, db = nuccore를 입력해 주면 된다. 

 

3. SeqIO.parse vs SeqIO.read 

SeqIO.parse는 record가 2개 이상 있을 때, 사용한다. parse를 이용하면 iteratable 한 generator 가 객체로 생선 된다. 

반면, SeqIO.read는 record가 1개 있을 때, 사용한다. read를 이용하면 단일 SeqRecord 객체가 만들어진다. 

 

4. SeqIO.parse method를 이용해 FASTQ 파일 읽기 

from Bio import SeqIO 

seq = Seq("sample.fastq","fastq")

for s in seq:
	print(s)

 

하지만, 실무에서 사용되는 fastq파일은 압축된 형태가 대부분이라고한다. 따라서, GNU Zip으로 압축되어있는데, 이 압축파일을 풀기위해서는 다음과 같이 코드를 작성하면 된다. 

import gzip 
from Bio import SeqIO 
with gzip.open("sample.fastq.gz","rt") as handle:
	seq = SeqIO.read(handle,"fastq") 
    for s in seq:
    	print(s.seq)

 

'Bioinformatics' 카테고리의 다른 글

[M/O] Akkermansia muciniphila  (0) 2024.09.20
[BioPython] Entrez  (0) 2024.09.19
[BioPython] BLAST  (0) 2024.09.18
[BioPython] wget을 이용해 github 데이터를 다운받을때  (0) 2024.09.12
[BioPython] 1. Seq 객체를 생성  (1) 2024.09.11