[BioRuby-ja] Bio::ClustalWの使い方

GOTO Naohisa ngoto @ gen-info.osaka-u.ac.jp
2004年 10月 30日 (土) 07:05:13 EDT


後藤といいます。

On Thu, 28 Oct 2004 18:23:19 -0400
Takeshi Honda <moecho21 @ yahoo.co.jp> wrote:

> 本多といいます。
> 
> アミノ酸配列のアライメントを行いたく、ClustalWを使おうとしています。
> biorubyにもClustalWクラスがあるようなので、試してみたのですが、チュート
> リアルには情報がなく、Blastのサンプルをまねして次のようなコードを書いて
> みましたが、
> 
> cw = Bio::ClustalW.remote('clustalw');
> p cw;
> 
> ./alignment:9: undefined method `remote' for Bio::ClustalW:Class (NoMethodError)
> 
> というエラーが出て来ました。

今のところ、Bio::ClustalWクラスは、UNIX(またはそれに類する)マシンの
ローカルでの実行しかサポートしていません。

> 簡単なサンプルでよいので、ClustalWでアライメントを行う方法を教えて頂けな
> いでしょうか?

幸いなことに、DDBJがウェブサービスとしてClustalWを提供しており、
それをサポートするクラス Bio::DDBJ::XML::ClustalW も存在するので、
これを利用してリモートのClustalWを実行します。

以下は、ファイルを読み込み、DDBJに接続してClustalWでアライメントし、
結果をFastaフォーマットで表示するサンプルプログラムです。
(ローカルで実行する場合とはまったく別のプログラムになります。)

ただし、残念なことに、短い配列なら問題ないのですが、ちょっとでも長い配列
を与えると、時間切れ(タイムアウト)になり、エラーが発生してしまいます。
今、解決方法を調べているところなので、しばらくお待ちください。

######################################################################
#!/usr/bin/env ruby

require 'bio'

# ファイルを読み込み、DDBJ WebサービスのClustalWでアライメントし、
# 結果をFastaフォーマットで表示する

# クエリーのファイルを読み込み、Fastaフォーマットに変換
$stderr.print "========== query sequences ==========\n"
query = ''
Bio::FlatFile.auto(ARGF) do |ff|
  ff.each do |entry|
    fst = entry.seq.to_fasta(entry.definition, 70)
    $stderr.print fst
    query << fst
  end
end

$stderr.print "========== end of input sequences ==========\n"

# サーバへの送信準備
serv = Bio::DDBJ::XML::ClustalW.new

# サーバに Fastaフォーマットのデータを投げる
begin
  result = serv.analyzeParam(query, '-OUTORDER=INPUT')
rescue Timeout::Error =>evar
  $stderr.print evar.inspect, "\n"
  $stderr.print evar.backtrace.join("\n"), "\n"
  exit(1)
end

# 結果の表示
$stderr.print "========== result ==========\n"

if /^\-{10}\r?\n^(CLUSTAL W .*?)^\-{10}$/m =~ result then
  report = Bio::ClustalW::Report.new($1)
  print report.to_fasta
else
  raise 'parse error'
end

######################################################################

なお、現在、Bio::ClustalW::*, Bio::MAFFT::*, Bio::Alignment を含めた
アライメント関係のクラスについては、大幅な仕様の見直しを検討している
ところですので、将来変更されてしまう可能性が大である点はご了承願います。

-- 
後藤 直久  ngoto @ gen-info.osaka-u.ac.jp
大阪大学 遺伝情報実験センター  ゲノム情報解析分野 (安永研究室)
         (理学研究科 生物科学専攻 D3)


BioRuby-ja メーリングリストの案内