Bio::GenBank なオブジェクトをファイルに書き出す
bioruby で起動したシェルでは、 getent したデータを savefile することができる。
biopython だと SeqIO.write() で書き出すことができる。
しかし、 bioruby ではなく Ruby のプログラム内で Bio::NCBI::REST::Efetch で取得し、パースして Bio::GenBank になったオブジェクトをファイルに書き出したかったので調べた結果を記録する。
できた方法
Bio::DB に実装されている tags() と get() を使う。
obj = ... # Bio::GenBank のオブジェクトが入っている
File.open("sample.gbk", "w") do |f|
obj.tags.each do |tag|
f.puts obj.get(tag)
end
end
Ruby の Hash は登録順で key と value が保持されているようなのでこれでもとの gbk に復元できる。
できなかった方法
to_s
obj = ...
File.open("sample.gbk", "w") do |f|
f.puts obj.to_s
end
"#<Bio::GenBank:...>" がファイルに書き出されてしまう。