SeqRecord

BioPython の SeqIO で GenBank フォーマットあるいは FASTA ファイルなどを読み込んだ場合、1 エントリーの情報が 1 つの SeqRecord オブジェクトに保存される。このオブジェクトは以下のようなプロパティがある。

プロパティ
seq配列データ
idAccession 番号などの情報
nameLOCUS などに相当する配列の名前
description配列の補足説明
letter_annotations付加情報 マップ型 リスト、タプルなどを代入できる
annotations付加情報 マップ型
featuresSeqFeature オブジェクト(エクソン、イントロンなどのアノテーション情報など)
dbxrefs文献

SeqRecord オブジェクトは、以下のようにファイルを読み込むことで作成される。1 つのファイルの中に複数のエントリーが含まれる場合は、for 文を利用して 1 つずつ出力させることができる。

FASTA 形式のファイルを読み込む例。

from Bio import SeqIO
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord

# FASTA ファイル読み込み
fa = SeqIO.parse("sample.fa", "fasta")

# for 文を利用して 1 エントリーずつ出力
for seq_record in fa:
    print (seq_record.id)
    print (seq_record.seq)

Genbank 形式のファイルも SeqIO.parse を利用して同様に読み込むことができる。ただし、この場合、Features レコードは取得できない。エクソンの位置やコーディング領域などのアノテーションを取得する場合、SeqFeature を利用する。

SeqRecord オブジェクトを一から作成する場合は次のようにする。

from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord


# 配列のみからなる SeqRecord オブジェクトを生成
seq = Seq("ACCGGT")
seq_r = SeqRecord(seq)

seq_r.seq            # 配列が出力される
#Seq('ACCGGT', Alphabet())
seq_r.id             # ID がないため unknown となる
#'<unknown id>'
seq_r.description    # 説明情報がないため unknown となる
#'<unknown description>'


# 作成したオブジェクトに変更を与える
seq_r.id = "NC000001.1"
seq_r.description = "Sample sequence"
seq_r.annotation["evidence"] = "Bioinformatics, 64,2 210-233 (2012)"
seq_r.annotation["author"] = "K.Jeans, Z.Kavin"
seq_r.letter_annotations["phred_quality"] = [30,42,33,60]

seq_r.id             # ID が追加されたため出力されるようになった
#'NC000001.1'
seq_r.description
#'Sample sequence'


# 配列、ID、説明文からなる SeqRecord オブジェクト生成
seq = Seq("ACCGGT")
seq_r = SeqRecord(seq, id="AC00002.1", description="Sample sequence")
seq_r.id
#'AC00002.1'
seq_r.description
#'Sample sequence'