Module Bio::NucleicAcid::Data
In: lib/bio/data/na.rb  (CVS)

Methods

[]   na   name   names   to_re   weight  

Constants

NAMES = { 'y' => '[tc]', 'r' => '[ag]', 'w' => '[at]', 's' => '[gc]', 'k' => '[tg]', 'm' => '[ac]', 'b' => '[tgc]', 'd' => '[atg]', 'h' => '[atc]', 'v' => '[agc]', 'n' => '[atgc]', 'a' => 'a', 't' => 't', 'g' => 'g', 'c' => 'c', 'u' => 'u', 'A' => 'Adenine', 'T' => 'Thymine', 'G' => 'Guanine', 'C' => 'Cytosine', 'U' => 'Uracil', 'Y' => 'pYrimidine', 'R' => 'puRine', 'W' => 'Weak', 'S' => 'Strong', 'K' => 'Keto', 'M' => 'aroMatic', 'B' => 'not A', 'D' => 'not C', 'H' => 'not G', 'V' => 'not T', }   IUPAC code
WEIGHT = { # Calculated by BioPerl's Bio::Tools::SeqStats.pm :-) 'a' => 135.15, 't' => 126.13, 'g' => 151.15, 'c' => 111.12, 'u' => 112.10, :adenine => 135.15, :thymine => 126.13, :guanine => 151.15, :cytosine => 111.12, :uracil => 112.10, :deoxyribose_phosphate => 196.11, :ribose_phosphate => 212.11, :hydrogen => 1.00794, :water => 18.015, }

Public Instance methods

[Source]

# File lib/bio/data/na.rb, line 146
    def [](x)
      NAMES[x]
    end
na()

Alias for names

[Source]

# File lib/bio/data/na.rb, line 156
    def name(x)
      NAMES[x.to_s.upcase]
    end

backward compatibility

[Source]

# File lib/bio/data/na.rb, line 151
    def names
      NAMES
    end

[Source]

# File lib/bio/data/na.rb, line 160
    def to_re(seq, rna = false)
      replace = {
        'y' => '[tcy]',
        'r' => '[agr]',
        'w' => '[atw]',
        's' => '[gcw]',
        'k' => '[tgk]',
        'm' => '[acm]',
        'b' => '[tgcyskb]',
        'd' => '[atgrwkd]',
        'h' => '[atcwmyh]',
        'v' => '[agcmrsv]',
        'n' => '[atgcyrwskmbdhvn]'
      }
      replace.default = '.'

      str = seq.to_s.downcase
      str.gsub!(/[^atgcu]/) { |na|
        replace[na]
      }
      if rna
        str.tr!("t", "u")
      end
      Regexp.new(str)
    end

[Source]

# File lib/bio/data/na.rb, line 117
    def weight(x = nil, rna = nil)
      if x
        if x.length > 1
          if rna
            phosphate = WEIGHT[:ribose_phosphate]
          else
            phosphate = WEIGHT[:deoxyribose_phosphate]
          end
          hydrogen    = WEIGHT[:hydrogen]
          water       = WEIGHT[:water]

          total = 0.0
          x.each_byte do |byte|
            base = byte.chr.downcase
            if WEIGHT[base]
              total += WEIGHT[base] + phosphate - hydrogen * 2
            else
              raise "Error: invalid nucleic acid '#{base}'"
            end
          end
          total -= water * (x.length - 1)
        else
          WEIGHT[x.to_s.downcase]
        end
      else
        WEIGHT
      end
    end

[Validate]