#author("2022-05-18T06:34:44+00:00","default:admin","admin") #author("2022-05-18T06:35:00+00:00","default:admin","admin") [[BioRubyExample01]] * Ruby(BioRuby)プログラムの例 [#x7c3f627] ** 自動的に配列データを取得するプログラムの例 [#z9d5bbac] MEGA実習でやったデータを自動でNCBIから取得・整形するプログラムの例である。 BioRubyを使用している。 gem 'bio' require 'bio' ids = [ [ "NM_001100.2", "Homo sapiens ACTA1" ], [ "BC016045.1", "Homo sapiens ACTB" ], [ "NM_001614.2", "Homo sapiens ACTG1" ], [ "NM_001615.2", "Homo sapiens ACTG2" ], [ "NM_001613.1", "Homo sapiens ACTA2" ], [ "BC014877.1", "Mus musculus Acta1" ], [ "BC023248.1", "Mus musculus Actg1" ], [ "BC045406.1", "Danio rerio acta1" ], [ "AF057040.1", "Danio rerio beta-actin" ], [ "D87740.1", "Oryzias latipes OlMA1" ], [ "D89627.1", "Oryzias latipes OlCA1" ], [ "K00667.1", "Drosophila melanogaster actin" ], [ "L00026.1", "Saccharomyces cerevisiae actin" ], [ "D49830.1", "Pneumocystis carinii actin" ], [ "U37281.1", "Arabidopsis thaliana actin-2" ], [ "AB047313.1", "Oryza sativa Japonica Group actin" ], ] filename = ARGV[0] || File.basename(__FILE__, ".rb") + "-output.fst" w = File.open(filename, (File::WRONLY | File::CREAT | File::EXCL)) $stderr.puts "Output: #{filename}" ncbi = Bio::NCBI::REST.new ids.each do |a| id = a[0] desc = a[1] # fetch the sequence from NCBI txt = ncbi.efetch(id, {"db"=>"nucleotide", "rettype"=>"gb"}) #puts txt # parse the GenBank formatted text gb = Bio::GenBank.new(txt) $stderr.print gb.acc_version, " ", gb.definition, "\n" # pick up the first CDS region cds = gb.features.find { |f| f.feature == "CDS" } #$stderr.print "CDS ", cds.position.inspect, "\n" # get the sequence s = gb.naseq.splicing(cds.position) # output FASTA-formatted text w.print s.to_fasta(desc, 70) end w.close 上記をコピーペーストしてもよいが、以下からダウンロードもできる。 #ref(example01.rb) *** 事前準備 [#gf7fc3e0] BioRubyを使用しているため、最初に「Start Command Prompt with Ruby」から「gem install bio」にてBioRubyをインストールしておく。 BioRubyを使用しているため、事前に「Start Command Prompt with Ruby」から「gem install bio」にてBioRubyをインストールしておく。 *** このプログラムの使用方法 [#nba57c34] - ruby example01.rb のようにコマンドを入力する。 - ファイル名を特に指定しないと example01-output.fst というファイルに出力する。 - ruby example01.rb filename.fst のようにファイル名を指定すると、指定した名前のファイル名で出力ファイルを作成する。 - 出力ファイルが既に存在する場合はエラーになる(ようにプログラムを書いてある)。出力ファイルが存在する旨のエラーが出たら、そのファイルの名前を変えるか、出力ファイル名として別のファイル名を指定すること。(なお、他の多くのプログラムでは、既存のファイル名を指定すると黙って上書きされてしまうことが多い点には要注意。) MEGA で読み込む際は、「File」→「Open A File/Session」から、example01-output.fst (違う名前で保存した場合はそのファイル)を指定した後、「Analyze of Align File?」と聞かれるので、「Align」を押す。すると、PDFの4ページめ「2.配列データのアライメント」の画面になり、以降は同じ操作になる。 ** 応用 [#f956b03b] このプログラムの、配列データのIDとその説明の部分を書き換えれば、いろいろな配列データへの利用が可能である。(プログラムを書き換えた場合は「別名で保存」するのを忘れずに。) 配列データは、NCBI(https://www.ncbi.nlm.nih.gov/)などで検索してみる。 *** このプログラムの注意点 [#se68b1bc] - このプログラムは、CDSが1個だけある配列データにのみ適応可能である。CDSが無い場合はエラーになる。CDSが2個以上存在した場合は、先頭の1個だけを使用する。 ** 高度な応用 [#n429dd5a] このプログラムでは、ダウンロードするデータのID等をプログラム内に直接書き込んでいるが、それをファイルから読み込むように改造してみよう。(たとえばIDとデータの説明をタブ区切りのテキストファイル、またはCSVファイルから読み込むようにしてみよう。)