Biopython SeqIO 讀取序列文件,讀取信息,寫入序列


Biopython

1.序列賦值 轉錄(反轉錄) 翻譯 反向互補
2.讀取序列文件,識別序列的屬性信息。

SeqRecord提供序列及其注釋的容器屬性:

seq :一條生物序列
id:基本ID,標識這條序列
name:常用分子的名稱
description:序列分子的描述
letter_annotation:是一個有給每個鹼基注釋的字典,鍵是注釋類型,值是每個殘基序列注釋的列表
annotations:序列附件信息的字典。鍵是信息的類型,值包含信息
features:是SeqFeature對象的列表


2.1 讀取序列文件 。
只包含一個序列條目的文件,Bio.SeqIO.read(文件句柄,序列格式)     #最新版都可以直接用文件,不過用with 句柄也可以更加規范 如:

>>> from Bio import SeqIO
>>> record = SeqIO.read("Fasta/f001", "fasta")
>>> print("%s %i" % (record.id, len(record)))


gi|3318709|pdb|1A91| 79


多條序列的文件,Bio.SeqIO.parse(文件句柄,序列格式),返回SeqRecord 對象迭代器如:

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)


還可以用next() 遍歷序列條目 


如:from Bio import SeqIO
record_iterator = SeqIO.parse("ls_orchid.fasta", "fasta")

first_record = record_iterator.next()
print first_record.id
print first_record.description

second_record = record_iterator.next()
print second_record.id
print second_record.description

 

保存為序列條目列表 list()即可
from Bio import SeqIO
records = list(SeqIO.parse("ls_orchid.gbk", "genbank"))

print "Found %i records" % len(records)

print "The last record"
last_record = records[-1]

 

2.2 提取序列條目信息
annotations 屬性 得到序列條目的注釋信息如:
print first_record.annotations

 

 

2.3 gzip文件提取,先gzip模塊得句柄,再操作
>>> import gzip
>>> from Bio import SeqIO
>>> handle = gzip.open("ls_orchid.gbk.gz", "r")
>>> print sum(len(r) for r in SeqIO.parse(handle, "gb"))
67518
>>> handle.close()

 

 

2.4 保存序列文件到字典,默認序列id作為key,value是序列的Seq對象


Bio.SeqIO.to_dict()內存占用大,每個條目以 SeqRecord 對象形式存儲在內存中,你修改這些條目。
Bio.SeqIO.index() 處於中間水平,類似於只讀字典,當需要時解析序列到 SeqRecord 對象。
Bio.SeqIO.index() ,工作原理上略有不同。盡管仍然是返回一個類似於字典的對象,它並不將所有的信息存儲在內存中。相反,它僅僅記錄每條序列條目在文件中的位置 - 當你需要讀取某條特定序列條目時,它才進行解析。注:index()只接受文件名,不接受句柄。如:
>>> from Bio import SeqIO
>>> orchid_dict = SeqIO.index("ls_orchid.gbk", "genbank")
>>> len(orchid_dict)
94

 

Bio.SeqIO.index_db() 也類似於只讀字典,但是將文件中的ID和文件偏移值存儲到硬盤(SQLite3數據庫),這意味着它對內存需求很低(請見第 5.4.3 節),但會慢一點。
如:>>> from Bio import SeqIO
>>> orchid_dict = SeqIO.to_dict(SeqIO.parse("ls_orchid.gbk", "genbank"))

 

 

2.5 來自 Bio.SeqIO.index() 的字典樣對象以 SeqRecord 對象形式返回序列條目。但是,有時候從文件中直接獲取原始數據非常有用。對於此種情況,使用 get_raw() 方法獲取文件原始數據,方便選擇序列再寫入

>>> from Bio import SeqIO
>>> uniprot = SeqIO.index("uniprot_sprot.dat", "swiss")
>>> handle = open("selected.dat", "w")
>>> for acc in ["P33487", "P19801", "P13689", "Q8JZQ5", "Q9TRC7"]:
... handle.write(uniprot.get_raw(acc))
>>> handle.close()

 

 

2.6 序列寫入,序列文件格式轉換
Bio.SeqIO.write() 輸出序列(寫入文件)。該函數需要三個參數:某些 SeqRecord 對象,要寫入的句柄或文件名,和序列格式

from Bio import SeqIO
records = SeqIO.parse("ls_orchid.gbk", "genbank")
count = SeqIO.write(records, "my_example.fasta", "fasta")
print "Converted %i records" % count
或:
from Bio import SeqIO
count = SeqIO.convert("ls_orchid.gbk", "genbank", "my_example.fasta", "fasta")
print "Converted %i records" % count

 

 

 

 

 

 

 

 

 

 

來源:https://www.cnblogs.com/koujiaodahan/p/8443992.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM