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:...>"
がファイルに書き出されてしまう。