2024. 9. 13. 11:56ㆍBioinformatics
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 |