循环处理fq格式基因 并将其转录翻译及biopython第四章阅读笔记
from Bio import SeqIO
from Bio import SeqIO
with open("input.fq") as inp, open("output.fasta", "w") as out:
for record in SeqIO.parse(inp, "fastq"):
rc_record = record.reverse_complement(id=record.id+"_rc")
rc_record.letter_annotations = record.letter_annotations
protein_record = rc_record.translate(id=rc_record.id+"_translated")
SeqIO.write([rc_record, protein_record], out, "fasta")
4.1 SeqRecord对象
SeqRecord (Sequence Record) 类包含在 Bio.SeqRecord 模块中。该类是 Bio.SeqIO 序列输入/输出交互界面 (详见第 5 章)的基本数据类型。可以把identifiers 和features等高级属性与序列关联起来 (参见第 3 章)。
4.2 创建 SeqRecord
使用 SeqRecord 对象非常简单,因为所有的信息都存储在该类的属性中;通常不必手动新建,用 Bio.SeqIO 从序列文件读取即可(见第 5 章)。 当然新建 SeqRecord 也不
4.3. SeqFeature对象
序列特征是描述一条序列不可或缺的部分。抛开序列本身,你需要一种方式去组织和获取关于这条序列的 “抽象” 信息。 尽管设计一个通用的类囊括序列的所有特征看似是不可能的,但是Biopython的 SeqFeature 类试图尽可能多的囊括序列的所有特征。Biopython主要依据 GenBank/EMBL 特征表来设计相应的对象,认识到这一点,将有助于你更快更好的理解Biopython SeqFeature 对象。
SeqFeature 对象的关键目的在于描述其相对于父序列(parent sequence,通常为 SeqRecord 对象)所处的位置(location), 通常是介于两个positions间的一个区域(region)
4.4 References
对一条序列的注释还包括参考文献(reference),Biopython通过 Bio.SeqFeature.Reference 对象来储存相关的文献信息。
References属性储存了 期刊名 、 题名 、 作者 等信息。此外还包括 medline_id 、 pubmed_id 以及 comment 。
通常reference 也有 location 对象,便于文献涉及研究对象在序列中的定位。该 location 有可能是一个fuzzy location(见第 4.3.2 节)。
文献对象都以列表储存在 SeqRecord 对象的 annotations 字典中。 字典的键为 “references”。reference对象也是为了方便处理文献而设计,希望能满足各种使用需求。
4.5 格式化方法
SeqRecord 类中的 format() 能将字符串转换成被 Bio.SeqIO 支持的格式,如FASTA:
4.6 SeqRecord切片
通过切片截取 SeqRecord 的部分序列可得到一条新的 SeqRecord 。此处需引起注意的是per-letter annotations也被取切片, 但新序列中的features保持不变 (locations相应调整)。
4.7 SeqRecord对象相加
SeqRecord 对象可相加得到一个新的 SeqRecord 。注意:per-letter annotations也相加, features (locations 调整);而其它annotation 保持不变(如id、name和description)。
4.8 反向互补SeqRecord对象
为消除序列反向互补后annotation改变带来的困难,Biopython 1.57 SeqRecord 对象加入了 reverse_complement 方法。这也成为Biopython 1.57的新特性之一。
序列用Seq对象中的reverse_complement方法反向互补。Features随location而改变,strand也被重新计算。复制并反转per-letter-annotation(通常情况下这种做法比较合适,如对质量分数注释的反转)。然而多数annotation的转变却存有问题。
-annotation(通常情况下这种做法比较合适,如对质量分数注释的反转)。然而多数annotation的转变却存有问题。