[BioRuby-ja] 混合塩基

遠藤 大二 dendoh @ hotmail.co.jp
2006年 9月 7日 (木) 16:35:19 UTC


後藤さん

ありがとうございました。

>もしかして、アミノ酸配列から、可能な塩基配列をすべて生成するメソッドも
>あったほうがいいのでしょうか?

その通りです。そのようなメソッドが欲しかったのです。
。
> > 混合塩基から正規表現を生成するメソッドはあるようなのですが、正規表現から
複数
> > の塩基配列を生成するメソッドというのはないでしょうか。
> >
> > WATCRYGGG → [A,T]ATC[A,G][T,C]GGG → [AATCATGGG, AATCACGGG, .....]
>
>無さそうなので、まずは仮に作ってみました。
>IUPAC規定の曖昧な塩基を含む塩基配列(文字列)から、可能なすべての文字列を得る

>というメソッドです。なお、塩基変換用テーブルを自前で持つほうが楽だったの
で、
>下記スクリプトではBioRubyは使っていません(単なる文字列処理になります)。

大変ありがとうございます。
早速使わせていただきます。

結果が爆発的になるのに対する対策としては、混合塩基を含む配列を選択する段階
で、結果の場合の数が124通り以下になるような条件づきで選択をしていますので、
提案いただいたメソッドは、私には有効に使わせていただけるものと思います。

>
>たとえば、get_all_possible_seq("watcryggg") とすれば、
>[ "aatcacggg", "aatcatggg", "aatcgcggg", "aatcgtggg",
>   "tatcacggg", "tatcatggg", "tatcgcggg", "tatcgtggg" ]
>という結果を返します。
>
>なお、当然ですが、混合塩基を多く含む塩基配列に対しては、結果の数が爆発的に
増え、
>処理時間も長くかかる点には要注意です。
>
>#-----------------------------------------------------------
>   def get_all_possible_seq(str)
>     hash = {
>       'm' => %w( a c     ),
>       'r' => %w( a   g   ),
>       'w' => %w( a     t ),
>       's' => %w(   c g   ),
>       'y' => %w(   c   t ),
>       'k' => %w(     g t ),
>       'v' => %w( a c g   ),
>       'h' => %w( a c   t ),
>       'd' => %w( a   g t ),
>       'b' => %w(   c g t ),
>       'n' => %w( a c g t )
>     }
>     str = str.downcase.gsub(/u/, 't')
>     all = [ str ]
>     (0...(str.length)).each do |i|
>       nucs = hash[str[i, 1]]
>       if nucs and nucs.size > 1 then
>         all.collect! do |s|
>           nucs.collect do |n|
>             newstr = s.dup
>             newstr[i, 1] = n
>             newstr
>           end
>         end
>         all.flatten!
>       end
>     end
>     all
>   end
>#-----------------------------------------------------------
>
>あまりチェックしていないので、バグがあったらごめんなさい。
>
>--
>後藤 直久  ngoto @ gen-info.osaka-u.ac.jp
>大阪大学微生物病研究所 遺伝情報実験センター ゲノム情報解析分野(安永研)

_________________________________________________________________
ドコモ900i、901i、902iシリーズユーザーだけにお得な特典! 
http://promotion.live.jp/messenger/mobile.htm 




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