LoginSignup
0
0

More than 5 years have passed since last update.

fastaのデスクリプションを変更するスクリプト

Last updated at Posted at 2017-04-05

Descriptionが別ファイルになっているfasta問題

一部のデータベースではfastaにはIDだけを記述し、そのIDに対応するDescriptionは別ファイルになっていることがある。

<例>
http://genome.jgi.doe.gov/Creinhardtii/download/_JAMO/585473eb7ded5e78cff8c450/Creinhardtii_281_v5.5.annotation_info.txt?requestTime=1491367905

これは便利な事もあるが
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を出力

0
0
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
0
0