Re: [BioRuby-ja] bioruby の.naseq メソッド

Toshiaki Katayama ktym @ hgc.jp
2004年 2月 3日 (火) 05:04:42 EST


どうも。

On 2004/02/03, at 17:49, takeshi kawashima wrote:
> Tutorialのサンプルメソッド
> ====================================================================
> seq=Bio::Sequence::NA.new("atctatacgtgatcgtagctagtcgatcgtagctagcta")
> i = 1
> remainder = seq.window_search(60, 60) do |subseq|
>   puts subseq.to_fasta("segment #{i}", 60)
>   i += 1
> end
> puts remainder.to_fasta("segment #{i}", 60)
> =====================================================================

この引用がチュートリアルそのままではないのですが、おかげで1つバグが見つかりました。
seq.window_search(window_size, step_size) は seq が window_size より短いと
エラーになっていました。

このエラーは CVS で修正しておきますが、その場合も何を返すべきかはちょっと悩みます。
(現状では nil になりますが self を返す方が使いやすそう?)

> m = Bio::FlatFile.new(Bio::FastaFormat, ARGF)
> m.each_entry do |x|
>   i = 1
>   remainder = x.naseq.window_search(60, 60) do |subseq|
>     puts subseq.to_fasta("segment #{i}", 60)
>     i += 1
>   end
>   puts remainder.to_fasta("segment #{i}", 60)      #####<=ここ
> end
>
> とすると、ループの最後の putsの行でエラーがでてしまいます。
>
> remainderがStringクラスだからのようですが、
> うまい回避方法はないでしょうか?

こちらは再現条件がまだわからないのですが、remainder が nil なわけではないんですねぇ。
String を返すとすると ruby のバージョンに依存するような気もするので、
以下の2点をまず教えていただけますでしょうか?

(1) エラーの場合はエラー表示をそのまま載せていただけた方が良いです。

(2) Ruby のバージョン、BioRuby のバージョンも書いてあった方が良いので
      ruby -v -r bio -e 'p Bio::BIORUBY_VERSION'
    の結果を載せて下さると助かります。

2通目の方はよくわからなかったのでこちらに返答させていただきました。

よろしくお願いします。

片山





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