Module: Bio::AminoAcid::Data

Included in:
Bio::AminoAcid, Bio::AminoAcid
Defined in:
lib/bio/data/aa.rb

Constant Summary collapse

NAMES =
{

  'A' => 'Ala',
  'C' => 'Cys',
  'D' => 'Asp',
  'E' => 'Glu',
  'F' => 'Phe',
  'G' => 'Gly',
  'H' => 'His',
  'I' => 'Ile',
  'K' => 'Lys',
  'L' => 'Leu',
  'M' => 'Met',
  'N' => 'Asn',
  'P' => 'Pro',
  'Q' => 'Gln',
  'R' => 'Arg',
  'S' => 'Ser',
  'T' => 'Thr',
  'V' => 'Val',
  'W' => 'Trp',
  'Y' => 'Tyr',
  'B' => 'Asx', # D/N
  'Z' => 'Glx', # E/Q
  'J' => 'Xle', # I/L
  'U' => 'Sec', # 'uga' (stop)
  'O' => 'Pyl', # 'uag' (stop)
  'X' => 'Xaa', # (unknown)
 
  'Ala' => 'alanine',
  'Cys' => 'cysteine',
  'Asp' => 'aspartic acid',
  'Glu' => 'glutamic acid',
  'Phe' => 'phenylalanine',
  'Gly' => 'glycine',
  'His' => 'histidine',
  'Ile' => 'isoleucine',
  'Lys' => 'lysine',
  'Leu' => 'leucine',
  'Met' => 'methionine',
  'Asn' => 'asparagine',
  'Pro' => 'proline',
  'Gln' => 'glutamine',
  'Arg' => 'arginine',
  'Ser' => 'serine',
  'Thr' => 'threonine',
  'Val' => 'valine',
  'Trp' => 'tryptophan',
  'Tyr' => 'tyrosine',
  'Asx' => 'asparagine/aspartic acid [DN]',
  'Glx' => 'glutamine/glutamic acid [EQ]',
  'Xle' => 'isoleucine/leucine [IL]',
  'Sec' => 'selenocysteine',
  'Pyl' => 'pyrrolysine',
  'Xaa' => 'unknown [A-Z]',

}
WEIGHT =

AAindex FASG760101 - Molecular weight (Fasman, 1976)

Fasman, G.D., ed.
Handbook of Biochemistry and Molecular Biology", 3rd ed.,
Proteins - Volume 1, CRC Press, Cleveland (1976)
{

  'A' => 89.09,
  'C' => 121.15,  # 121.16 according to the Wikipedia
  'D' => 133.10,
  'E' => 147.13,
  'F' => 165.19,
  'G' => 75.07,
  'H' => 155.16,
  'I' => 131.17,
  'K' => 146.19,
  'L' => 131.17,
  'M' => 149.21,
  'N' => 132.12,
  'P' => 115.13,
  'Q' => 146.15,
  'R' => 174.20,
  'S' => 105.09,
  'T' => 119.12,
  'U' => 168.06,
  'V' => 117.15,
  'W' => 204.23,
  'Y' => 181.19,
}

Instance Method Summary collapse

Instance Method Details

#[](x) ⇒ Object


129
130
131
# File 'lib/bio/data/aa.rb', line 129

def [](x)
  NAMES[x]
end

#name(x) ⇒ Object


139
140
141
142
143
144
145
146
# File 'lib/bio/data/aa.rb', line 139

def name(x)
  str = NAMES[x]
  if str and str.length == 3
    NAMES[str]
  else
    str
  end
end

#name2one(x) ⇒ Object


196
197
198
199
200
201
202
203
# File 'lib/bio/data/aa.rb', line 196

def name2one(x)
  str = reverse[x.to_s.downcase]
  if str and str.length == 3
    three2one(str)
  else
    str
  end
end

#name2three(x) ⇒ Object


213
214
215
# File 'lib/bio/data/aa.rb', line 213

def name2three(x)
  reverse[x.downcase]
end

#namesObject Also known as: aa

backward compatibility


134
135
136
# File 'lib/bio/data/aa.rb', line 134

def names
  NAMES
end

#one2name(x) ⇒ Object


188
189
190
191
192
193
194
# File 'lib/bio/data/aa.rb', line 188

def one2name(x)
  if x and x.length != 1
    raise ArgumentError
  else
    three2name(NAMES[x])
  end
end

#one2three(x) ⇒ Object


172
173
174
175
176
177
178
# File 'lib/bio/data/aa.rb', line 172

def one2three(x)
  if x and x.length != 1
    raise ArgumentError
  else
    NAMES[x]
  end
end

#three2name(x) ⇒ Object


205
206
207
208
209
210
211
# File 'lib/bio/data/aa.rb', line 205

def three2name(x)
  if x and x.length != 3
    raise ArgumentError
  else
    NAMES[x]
  end
end

#three2one(x) ⇒ Object


180
181
182
183
184
185
186
# File 'lib/bio/data/aa.rb', line 180

def three2one(x)
  if x and x.length != 3
    raise ArgumentError
  else
    reverse[x]
  end
end

#to_1(x) ⇒ Object Also known as: one


148
149
150
151
152
153
154
155
156
157
# File 'lib/bio/data/aa.rb', line 148

def to_1(x)
  case x.to_s.length
  when 1
    x
  when 3
    three2one(x)
  else
    name2one(x)
  end
end

#to_3(x) ⇒ Object Also known as: three


160
161
162
163
164
165
166
167
168
169
# File 'lib/bio/data/aa.rb', line 160

def to_3(x)
  case x.to_s.length
  when 1
    one2three(x)
  when 3
    x
  else
    name2three(x)
  end
end

#to_re(seq) ⇒ Object


217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
# File 'lib/bio/data/aa.rb', line 217

def to_re(seq)
  replace = {
    'B' => '[DNB]',
    'Z' => '[EQZ]',
    'J' => '[ILJ]',
    'X' => '[ACDEFGHIKLMNPQRSTVWYUOX]',
  }
  replace.default = '.'

  str = seq.to_s.upcase
  str.gsub!(/[^ACDEFGHIKLMNPQRSTVWYUO]/) { |aa|
    replace[aa]
  }
  Regexp.new(str)
end

#weight(x = nil) ⇒ Object


110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/bio/data/aa.rb', line 110

def weight(x = nil)
  return WEIGHT unless x

  if x.length > 1
    total = 0.0
    x.each_byte do |byte|
      aa = byte.chr.upcase
      if WEIGHT[aa]
        total += WEIGHT[aa]
      else
        raise "Error: invalid amino acid '#{aa}'"
      end
    end
    total -= NucleicAcid.weight[:water] * (x.length - 1)
  else
    WEIGHT[x]
  end
end