Descriptionが別ファイルになっているfasta問題
一部のデータベースではfastaにはIDだけを記述し、そのIDに対応するDescriptionは別ファイルになっていることがある。
これは便利な事もあるが
AHRD (https://github.com/groupschoof/AHRD/blob/master/README.textile)
などをつかったアノテーションの最適化には不適当なので、
二つのファイルを融合する以下のスクリプトを書いた。
fasta_annotation_merge.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#fasta_id項目をkeyにして、アノテーション情報を変更する
import sys
from Bio import SeqIO
import csv
fasta_in = sys.argv[1] #1番目の引数には、変更したいfastaファイルを指定する。
changer_in = sys.argv[2] #2番目の引数に タブ区切りされた keyID \t Annotationを記述したファイルを指定
for q in open(changer_in, "r"): #アノテーション情報ファイルを開く
change = q.split('\t') #タブで区切ってchangeリストにいれる
for record in SeqIO.parse(fasta_in, 'fasta'): #fastaファイルを開くSeqIOを使ってパースする(1項目づつ読み込む)
id_part = record.id #fastaのID部分を読み込む
seq = record.seq #fastanの配列部分を読み込む
if id_part == change[0]: #fastaファイルのidとchanger項目のid部分が一致したら。。
fasta_seq = '>' + id_part + ' '+ change[1] + '\n' + seq + '\n' #fasta形式に整えて
print(fasta_seq) #標準出力にfastaを出力