From dendoh @ zpost.plala.or.jp Sat Dec 2 22:00:18 2006 From: dendoh @ zpost.plala.or.jp (Daiji Endoh) Date: Sun, 3 Dec 2006 12:00:18 +0900 Subject: [BioRuby-ja] =?iso-2022-jp?b?GyRCSiM/dCVVJSElJCVrPWc8IUZJJF8bKEI=?= =?iso-2022-jp?b?GyRCOX4kXxsoQg==?= Message-ID: <005101c71687$29eca880$030ba8c0@ehome2006> 酪農学園大の遠藤と申します。 以前に、Hotmailのアドレスで登録させていただき、可能なコドンの読み枠全てをリ ストアップする方法について教えていただきました。その際には、せっかくのご教示 を生かすことができず、申し訳ありませんでした。 その後、Hotmailへのアクセスがなぜかできなくなってしまい、自宅のプロバイダー のアドレスで登録しなおしました。またよろしくお願いします。 今度は、大変に基本的でお恥ずかしい質問ですが、どうしても必要なのに対し、全く できないもので、質問させていただきます。 今、20個の複数(10-1000)のレコードを含むGenbankファイルをMySQLに取り込んで処 理しようとしております。 ff=Bio::FlatFile.new(Bio::GenBank, ARGF) ff each_entry …. というチュートリアルにある方法で処理していますが、今後もファイル数が増えそう なので、ファイルのリストを配列かなにかで記録しておき、自動的に取り込むように したいのです。 このARGFのところはオブジェクトと考え、 filename=File.open(“hoge.gb”) filename=File.read(“hoge gb”) ff=Bio::FlatFile.new(Bio::GenBank, filename) としてみましたが、うまくいきません。 あまりにも初歩的な質問で申し訳ありませんが、なにとぞやり方を教えてください。 よろしくお願いします。 From ngoto @ gen-info.osaka-u.ac.jp Sun Dec 3 03:58:20 2006 From: ngoto @ gen-info.osaka-u.ac.jp (GOTO Naohisa) Date: Sun, 3 Dec 2006 17:58:20 +0900 Subject: [BioRuby-ja] =?iso-2022-jp?b?GyRCSiM/dCVVJSElJCVrPWc8IUZJJF8bKEI=?= =?iso-2022-jp?b?GyRCOX4kXxsoQg==?= In-Reply-To: <005101c71687$29eca880$030ba8c0@ehome2006> References: <005101c71687$29eca880$030ba8c0@ehome2006> Message-ID: <200612030858.kB38wHkD017605@idns103.gen-info.osaka-u.ac.jp> ARGFは、Rubyインタプリタが予め用意している特別なファイルオブジェクトで、 コマンドライン引数に指定したファイルを簡単に読むためのものです。 Rubyのリファレンスマニュアルの説明 http://www.ruby-lang.org/ja/man/?cmd=view;name=ARGF Bio::FlatFile.openの2番目の引数はファイル名またはファイルオブジェクトを取るので、 ファイル名の一覧をRubyの配列から取りたければ、 filenames = [ 'test1.fst', 'test2.fst', 'test3.fst' ] filenames.each do |fn| ff = Bio::FlatFile.open(Bio::GenBank, fn) ff.each do |entry| #処理内容 end ff.close #closeするのを忘れずに! end みたいな感じでしょうか。 close忘れを根本的に予防したいなら、filenames.each の中の繰り返しを Bio::FlatFile.open(Bio::GenBank, fn) do |ff| ff.each do |entry| #処理内容 end end のように、Bio::FlatFile#openにブロックを渡してください。 応用として、ファイルをコマンドラインから指定したければ、 filenames = ARGV 1行に1ファイル名ずつ書いたテキストファイルから指定するなら、 fllenames = File.readlines('list.txt').collect{|x| x.chomp} # 注: この場合ファイル一覧を全部一気にメモリに読み込むので、 # ファイル数が数万個に達する場合は、別の方法のほうがよいです。 みたいな感じで。 On Sun, 3 Dec 2006 12:00:18 +0900 "Daiji Endoh" wrote: > 今、20個の複数(10-1000)のレコードを含むGenbankファイルをMySQLに取り込んで処 > 理しようとしております。 > > > > ff=Bio::FlatFile.new(Bio::GenBank, ARGF) > > ff each_entry …. > > > > というチュートリアルにある方法で処理していますが、今後もファイル数が増えそう > なので、ファイルのリストを配列かなにかで記録しておき、自動的に取り込むように > したいのです。 > > > > このARGFのところはオブジェクトと考え、 > > > > filename=File.open(“hoge.gb”) > > filename=File.read(“hoge gb”) > > > > ff=Bio::FlatFile.new(Bio::GenBank, filename) > > > > としてみましたが、うまくいきません。 -- 後藤 直久 ngoto @ gen-info.osaka-u.ac.jp 大阪大学微生物病研究所 遺伝情報実験センター ゲノム情報解析分野(安永研) From dendoh @ zpost.plala.or.jp Sun Dec 3 11:59:33 2006 From: dendoh @ zpost.plala.or.jp (Daiji Endoh) Date: Mon, 4 Dec 2006 01:59:33 +0900 Subject: [BioRuby-ja] =?iso-2022-jp?b?GyRCSiM/dCVVJSElJCVrPWc8IUZJJF8bKEI=?= =?iso-2022-jp?b?GyRCOX4kXxsoQg==?= Message-ID: <000701c716fc$6839b310$030ba8c0@ehome2006> 後藤様 遠藤です ご教示いただき、ありがとうございました。 ウイルス科ごとに既知のゲノム配列を読み込む作業がうまくいきました。 下記のスクリプトで動作を確認できました。 重ねてお礼申しあげます。 ******************************* #!/usr/bin/env ruby require 'bio' require "mysql" fnames=["Arena", "Arteri", "Astro", "Birna", "Borna", "Bunya", "Calici", "Circo", "Corona", "Delta", "Filo", "Flavi", "Hepe", "Noda", "Orthomyxo", "Paramyxo", "Picorna", "Reo", "Retro", "Rhabdo", "Roni", "Toga"] def ARGF.pos; 0; end fnames.each do |fn| vfam=fn+".gb" p vfam ff=Bio::FlatFile.open(Bio::GenBank, vfam) ff.each do |gb| begin gi=gb.gi gino=gi.sub("GI:","").to_i ac=gb.accession de=gb.definition.gsub(/\'/,"").to_s sp=gb.organism.gsub(/\'/,"").to_s tax=gb.taxonomy.gsub(/\'/,"").to_s seq=gb.naseq.upcase! len=seq.length rescue break end end end From dendoh @ zpost.plala.or.jp Sun Dec 3 03:00:18 2006 From: dendoh @ zpost.plala.or.jp (Daiji Endoh) Date: Sun, 3 Dec 2006 12:00:18 +0900 Subject: [BioRuby-ja] =?iso-2022-jp?b?GyRCSiM/dCVVJSElJCVrPWc8IUZJJF8bKEI=?= =?iso-2022-jp?b?GyRCOX4kXxsoQg==?= Message-ID: <005101c71687$29eca880$030ba8c0@ehome2006> 酪農学園大の遠藤と申します。 以前に、Hotmailのアドレスで登録させていただき、可能なコドンの読み枠全てをリ ストアップする方法について教えていただきました。その際には、せっかくのご教示 を生かすことができず、申し訳ありませんでした。 その後、Hotmailへのアクセスがなぜかできなくなってしまい、自宅のプロバイダー のアドレスで登録しなおしました。またよろしくお願いします。 今度は、大変に基本的でお恥ずかしい質問ですが、どうしても必要なのに対し、全く できないもので、質問させていただきます。 今、20個の複数(10-1000)のレコードを含むGenbankファイルをMySQLに取り込んで処 理しようとしております。 ff=Bio::FlatFile.new(Bio::GenBank, ARGF) ff each_entry …. というチュートリアルにある方法で処理していますが、今後もファイル数が増えそう なので、ファイルのリストを配列かなにかで記録しておき、自動的に取り込むように したいのです。 このARGFのところはオブジェクトと考え、 filename=File.open(“hoge.gb”) filename=File.read(“hoge gb”) ff=Bio::FlatFile.new(Bio::GenBank, filename) としてみましたが、うまくいきません。 あまりにも初歩的な質問で申し訳ありませんが、なにとぞやり方を教えてください。 よろしくお願いします。 From ngoto @ gen-info.osaka-u.ac.jp Sun Dec 3 08:58:20 2006 From: ngoto @ gen-info.osaka-u.ac.jp (GOTO Naohisa) Date: Sun, 3 Dec 2006 17:58:20 +0900 Subject: [BioRuby-ja] =?iso-2022-jp?b?GyRCSiM/dCVVJSElJCVrPWc8IUZJJF8bKEI=?= =?iso-2022-jp?b?GyRCOX4kXxsoQg==?= In-Reply-To: <005101c71687$29eca880$030ba8c0@ehome2006> References: <005101c71687$29eca880$030ba8c0@ehome2006> Message-ID: <200612030858.kB38wHkD017605@idns103.gen-info.osaka-u.ac.jp> ARGFは、Rubyインタプリタが予め用意している特別なファイルオブジェクトで、 コマンドライン引数に指定したファイルを簡単に読むためのものです。 Rubyのリファレンスマニュアルの説明 http://www.ruby-lang.org/ja/man/?cmd=view;name=ARGF Bio::FlatFile.openの2番目の引数はファイル名またはファイルオブジェクトを取るので、 ファイル名の一覧をRubyの配列から取りたければ、 filenames = [ 'test1.fst', 'test2.fst', 'test3.fst' ] filenames.each do |fn| ff = Bio::FlatFile.open(Bio::GenBank, fn) ff.each do |entry| #処理内容 end ff.close #closeするのを忘れずに! end みたいな感じでしょうか。 close忘れを根本的に予防したいなら、filenames.each の中の繰り返しを Bio::FlatFile.open(Bio::GenBank, fn) do |ff| ff.each do |entry| #処理内容 end end のように、Bio::FlatFile#openにブロックを渡してください。 応用として、ファイルをコマンドラインから指定したければ、 filenames = ARGV 1行に1ファイル名ずつ書いたテキストファイルから指定するなら、 fllenames = File.readlines('list.txt').collect{|x| x.chomp} # 注: この場合ファイル一覧を全部一気にメモリに読み込むので、 # ファイル数が数万個に達する場合は、別の方法のほうがよいです。 みたいな感じで。 On Sun, 3 Dec 2006 12:00:18 +0900 "Daiji Endoh" wrote: > 今、20個の複数(10-1000)のレコードを含むGenbankファイルをMySQLに取り込んで処 > 理しようとしております。 > > > > ff=Bio::FlatFile.new(Bio::GenBank, ARGF) > > ff each_entry …. > > > > というチュートリアルにある方法で処理していますが、今後もファイル数が増えそう > なので、ファイルのリストを配列かなにかで記録しておき、自動的に取り込むように > したいのです。 > > > > このARGFのところはオブジェクトと考え、 > > > > filename=File.open(“hoge.gb”) > > filename=File.read(“hoge gb”) > > > > ff=Bio::FlatFile.new(Bio::GenBank, filename) > > > > としてみましたが、うまくいきません。 -- 後藤 直久 ngoto @ gen-info.osaka-u.ac.jp 大阪大学微生物病研究所 遺伝情報実験センター ゲノム情報解析分野(安永研) From dendoh @ zpost.plala.or.jp Sun Dec 3 16:59:33 2006 From: dendoh @ zpost.plala.or.jp (Daiji Endoh) Date: Mon, 4 Dec 2006 01:59:33 +0900 Subject: [BioRuby-ja] =?iso-2022-jp?b?GyRCSiM/dCVVJSElJCVrPWc8IUZJJF8bKEI=?= =?iso-2022-jp?b?GyRCOX4kXxsoQg==?= Message-ID: <000701c716fc$6839b310$030ba8c0@ehome2006> 後藤様 遠藤です ご教示いただき、ありがとうございました。 ウイルス科ごとに既知のゲノム配列を読み込む作業がうまくいきました。 下記のスクリプトで動作を確認できました。 重ねてお礼申しあげます。 ******************************* #!/usr/bin/env ruby require 'bio' require "mysql" fnames=["Arena", "Arteri", "Astro", "Birna", "Borna", "Bunya", "Calici", "Circo", "Corona", "Delta", "Filo", "Flavi", "Hepe", "Noda", "Orthomyxo", "Paramyxo", "Picorna", "Reo", "Retro", "Rhabdo", "Roni", "Toga"] def ARGF.pos; 0; end fnames.each do |fn| vfam=fn+".gb" p vfam ff=Bio::FlatFile.open(Bio::GenBank, vfam) ff.each do |gb| begin gi=gb.gi gino=gi.sub("GI:","").to_i ac=gb.accession de=gb.definition.gsub(/\'/,"").to_s sp=gb.organism.gsub(/\'/,"").to_s tax=gb.taxonomy.gsub(/\'/,"").to_s seq=gb.naseq.upcase! len=seq.length rescue break end end end