biorubyのスクリプトに苦戦

そもそもrubyを理解せずに、h-kondoさんが書いて下さったスクリプトをそのまんま動かしただけなのですが、、、

  • ATGCソフトウェアはこんなemblフォーマットの配列ファイルを吐き出しました。(仮にファイル名はICI-M48.embl)

ID
XX
SQ Sequence 600 BP; 157 A; 155 C; 140 G; 148 T; 0 other;
CCTCAGAGAT CCTGATGCAG AACTGGGAAG CTGCCATGGA GGACCTCACC CGCCTGAGGG 60
AGACTATCGA TAACAATACA GTAAGTTCTC CTCTTCAGTC TCTCCAGCAA AGGACTTGGC 120
TGATCCACTG GTCTCTCTTT GTGTTCTTCA ACCACCCCAA AGGGAGAGAC AACATCATCG 180
            ------中略-----------
GTATGCTTGC CGATAAGCTG AATATGACTC CCCGAGGAGG CAGAAAGATG GATTGTCACC 600
//

  • で、こんなファイルを10個くらい試しに使ってスクリプトを走らせたのですが、いずれも空のgb.annotation.txtとgb.fastaになりました。

実際のスクリプトは(一部のコメント行/部分を省いています。)

#!/usr/bin/env ruby

require 'rubygems' #ruby-gem経由でbiorubyをインストールした場合必要。
require 'bio' #biorubyを読み込む。

#書き出しファイルの設定
output1 = File::open("gb.annotation.txt", "w")
output2 = File::open("gb.fasta", "w")

ff = Bio::FlatFile.auto(ARGF)
ff.each_entry do |entry|
#annotation fileを作る。
#配列名は取りあえずファイル名になるようにしてあります。
output1.print(ARGF.filename, "\t", "source", "\t",'1..', entry.seq.length, "\t", "clone", "\t",ARGF.filename, "\n")
output1.print("\t\t\t", "organism", "\t", "Cyprinus carpio", "\n") #Species name
output1.print("\t\t\t", "mol_type", "\t", "mRNA", "\n")
output1.print("\t\t\t", "tissue_type", "\t", "Intestine", "\n") #Tissue
output1.print("\t\t\t", "ff_definition", "\t", "Cyprinus carpio mRNA, clone: @@[clone]@@", "\n")

#fastaファイルを作る。登録には終末子(//)が必要。
#filenameを配列名にしています。適宜変更してください。
output2.puts entry.seq.to_fasta("#{ARGF.filename}", 60)
output2.puts('//')
end

エラーメッセージは、

NakaoMBP:rb_test mikimnakao$ ./embl2list.rb *.embl
/Library/Ruby/Gems/1.8/gems/bio-1.2.1/lib/bio/io/flatfile.rb:601:in
`next_entry': file format auto-detection failed?
(Bio::FlatFile::UnknownDataFormatError)
from
/Library/Ruby/Gems/1.8/gems/bio-1.2.1/lib/bio/io/flatfile.rb:654:in
`each_entry'
from ./embl2list.rb:11

最終行の「from ./embl2list.rb:11」の11は embl2list.rb中の行番号ですよね。
実際のスクリプト中では11行目は ff.each_entry do |entry| のことです。

emblフォーマットというのを調べると、各配列行の末尾に塩基番号は付いてないようでしたので、それをエディターで削除して試しましたが同じエラーとなりました。emblファイル中の改行コードはUNIX用のLF。文字コードshift_jisUTF-8のどちらでも同じでした。さて、どうしたものかなぁ、と呻吟しています。このスクリプトでemblフォーマットを自動で認識できていない、ということでしょうか。
h-kondoさんがおっしゃるように(でも実はautoメソッドで呼び出しているので、genbankだろうがfastaだろうが読み込みできる)ということなら、いくつかfastaに直して喰わせてみようかな。FASTAにすると塩基長データが無くなりますかね。DDBJへの登録(アノーテーションファイル)には塩基長が必要なので無くなるのは不便だな。genbankフォーマットを試すべき? embl→fastaとか、embl→genbankとかを一括処理するプログラム(スクリプト)がbiorubyにあるんでしょうね。あるいはemboss? うーん、全然勉強が追いつかない。