biopython笔记 -- 创建SeqRecord()

来源:互联网 发布:php采集 编辑:程序博客网 时间:2024/06/07 23:39

Sequence Record

– 来自biopython中文版笔记: biopython-创建SeqRecord

  1. 直接使用SeqRecord()创建序列:
>>> from Bio.Seq import Seq>>> myseq = Seq("GATC")>>> myseqSeq('GATC', Alphabet())>>> from Bio.SeqRecord import SeqRecord>>> myseq_record1 = SeqRecord(myseq)  # SeqRecord传入由Seq类创建的序列myseq>>> myseq_record1SeqRecord(seq=Seq('GATC', Alphabet()), id='<unknown id>', name='<unknown name>', description='<unknown description>', dbxrefs=[])>>> myseq_record1.seq  # 返回序列本身, 与myseq返回的结果相同Seq('GATC', Alphabet())

SeqRecord类的其他属性:
.id, .name, .descirption, .annotation, .letter_annotation (更多参数说明: help(SeqRecord))
这些属性未赋值时则默认为”unknown”, 它们可在初始化时赋值:

>>> myseq_record2 = SeqRecord(myseq, id="AB12345", name="myseqname")>>> myseq_record2SeqRecord(seq=Seq('GATC', Alphabet()), id='AB12345', name='myseqname', description='<unknown description>', dbxrefs=[])  # id, name, description属性为字符串类型>>> myseq.id'AB12345'

也可初始化之后再赋值:

>>> myseq_record2.description = "Made up sequence I wish I could write a paper about"  >>> myseq_record2.annotations["evidence"] = "None. I just made it up."  # 属性annotation是以信息名为键, 信息内容为值的字典 >>> myseq_record2.letter_annotations["phred_quality"] = [40,40,38,30]  #  letter_annotations是对序列每个碱基(字母)注释, 注释信息的名称为字符串, 注释内容可以为列表, 元组, 或字符串, 且序列长度应该与注释内容的元素个数相同>>> myseq_record2.letter_annotations["phred_quality"] = (40,40,38,30)>>> myseq_record2.letter_annotations["phred_quality"] = "F<FA"
  1. 根据fasta/Genbank文件创建SeqRecord

    biopython上作为练习的fasta文件:NC_005816.fna 和 genbank文件: NC_005816.gb

1) 读取文件: 由Bio.SeqIO模块中的Bio.SeqIO.read()函数读取,第一个属性为fasta/Genbank文件名,第二个属性为文件类型(fasta/genbank);

>>> from Bio import SeqIO>>> record_fa = SeqIO.read("filename.fasta", "fasta")  # 一个序列?多个序列?>>> record_gb = SeqIO.read("filename.gb", "genbank")

2) 获取序列本身, id, name等:

>>> record_fa.seq  # 注意: 对于fasta文件, Bio.SeqIO默认为通用字母表, 若已知fasta文件序列类型可自定义Seq('TGTAACGAACGGTGCAATAGTGATCCACACCCAACGCCTGAAATCAGATCCAGG...CTG', SingleLetterAlphabet())>>> record_gb.seq  # 注意: 对于genbank文件, Bio.SeqIO自动识别序列类型Seq('TGTAACGAACGGTGCAATAGTGATCCACACCCAACGCCTGAAATCAGATCCAGG...CTG', IUPACAmbiguousDNA())>>> record_fa.id>>> record_gb.name>>> record_fa.annotations  # 文件不含注释内容时, 返回空{}>>> record_gb.annotations  # 含注释时, 返回字典形式的注释内容