2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Biopythonでgenbankファイルにfeatureを追加する、削除する

Posted at

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")
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?