python读取序列5之后的数据_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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值