[BioRuby-ja] 混合塩基

GOTO Naohisa ngoto @ gen-info.osaka-u.ac.jp
2006年 9月 7日 (木) 11:53:19 UTC


後藤@阪大です。

On Tue, 05 Sep 2006 01:09:21 +0900
遠藤 大二 <dendoh @ hotmail.co.jp> wrote:

> 酪農学園大学の遠藤と申します。
> オルソローグをHomologeneから入手して、共通のアミノ酸配列からプライマーを設計
> するためのスクリプトを作成しています。
> 共通のアミノ酸配列を選択して、コドンテーブルに基づいて混合塩基を予測するとこ
> ろまではできましたが、

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

> その混合塩基を含む配列のmRNA上の局在を決定する段階で問題が生じました。
> HomologeneではProtein, mRNAともにFASTAフォーマットでのみダウンロードが可能で
> あるため、ORFの位置を決めることが私にはできません。
> それで、
> 混合塩基を含む配列をキーとして、mRNA配列上での局在位置を検索したいと思いま
> す。
> 混合塩基から正規表現を生成するメソッドはあるようなのですが、正規表現から複数
> の塩基配列を生成するメソッドというのはないでしょうか。
> 
> WATCRYGGG → [A,T]ATC[A,G][T,C]GGG → [AATCATGGG, AATCACGGG, .....]

無さそうなので、まずは仮に作ってみました。
IUPAC規定の曖昧な塩基を含む塩基配列(文字列)から、可能なすべての文字列を得る
というメソッドです。なお、塩基変換用テーブルを自前で持つほうが楽だったので、
下記スクリプトではBioRubyは使っていません(単なる文字列処理になります)。

たとえば、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
大阪大学微生物病研究所 遺伝情報実験センター ゲノム情報解析分野(安永研)



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