zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    并发编程(贰):线程池浅析
    并发编程(壹):创建线程的三种方式及其对比
    Spring Boot使用@Async实现异步调用:自定义线程池
    parallel stream-不能随便使用
    Java 8新特性(四):新的时间和日期API
    Java 8新特性(三):Optional类
    Java 8新特性(二):Stream API
    Java 8新特性(一):Lambda表达式
    ES日期存储
    String,StringBuffer,StringBuillder的底层结构
  • 原文地址:https://www.cnblogs.com/bio-mary/p/14200174.html
Copyright © 2011-2022 走看看