genbankは比較的汎用性の高いDNA情報の保存形式である。
genbankは必要に応じて編集加工する必要がある場合、biopythonを用いて一括して行うことができる。
複数のgenbankファイルをまとめて加工したい場合、pythonのBiopythonを利用すると便利である。
biopythonのSeqFeature moduleを利用する。
https://biopython.org/docs/1.76/api/Bio.SeqFeature.html
まず、biopythonのインストールを行う。
pip install biopython
featureの追加
まず必要なmoduleをインポートする#moduleのインポート
from Bio import SeqIO
from Bio.SeqFeature import SeqFeature
from Bio.SeqFeature import FeatureLocation
次にファイルを開封します。
#genbankファイルの開封
record = SeqIO.read("file_name.gb", "genbank")
次に追加したいfeatureを作成する。
#featureの開始位置
start_bp = 100
#featureの終了位置
end_bp = 200
#featureの向きを指定する。
#1, 0, -1のいずれかを記入する。
st_no = -1
#featureの作成
my_feature = SeqFeature(FeatureLocation(start_bp,end_bp, strand = st_no), type="music_feature")
#nameという情報をfeatureに追加する。他の情報も同様に追加することができる。
my_feature.qualifiers["Name"] = "BLAST hit"
次にfeatureを開いたgenbankファイルに追加する。
record.features.append(my_feature)
以下の方法でfeatureが追加されているか確認することができる。
for i in record.features:
print(i)
確認できたらファイルを保存する。今回は同じファイル名にした。この場合、上書きされます。
別のファイル名にすることで別のファイル名として保存することができます。
SeqIO.write(record, "file_name.gb", "genbank")
featureの削除
次に、featureを削除する方法を説明します。 仮にtype = "CDS"のfeatureを全て削除することを考えます。 まず、先ほどと同様にmoduleをインポートします。 次に同様にgenbankファイルを開きます。#genbankファイルの開封
record = SeqIO.read("file_name.gb", "genbank")
以下の操作で開いたgenbankファイルのもつfeatureのtypeを出力することができます。
for i in record.features:
print(i.type)
さらに以下の方法でfeatureのtypeがCDSのfeatureの情報だけを出力できます。
for i in record.features:
if i.type == "CDS":
print(i)
これを書き換え、まず削除したいfeatureのリストを作成します。
#del_listに削除したいfeatureのlistを格納する。
del_list = []
for i in record.features:
if i.type == "CDS":
del_list.append(i)
次に以下の操作でdel_listにあるfeatureを全て削除します。
#del_listにあるfeatureの削除の実行
for i in del_list:
record.features.remove(i)
先ほどと同様にfeatureが削除されているか確認します。
for i in record.features:
print(i)
最後にファイルを保存します。
SeqIO.write(record, "file_name.gb", "genbank")