001package com.hfg.bio;
002
003import java.util.Collections;
004import java.util.HashMap;
005import java.util.Map;
006import java.util.Set;
007
008
009//------------------------------------------------------------------------------
010/**
011 * Table of amino acid frequency data.
012 * <div>
013 *  @author J. Alex Taylor, hairyfatguy.com
014 * </div>
015 */
016//------------------------------------------------------------------------------
017// com.hfg Library
018//
019// This library is free software; you can redistribute it and/or
020// modify it under the terms of the GNU Lesser General Public
021// License as published by the Free Software Foundation; either
022// version 2.1 of the License, or (at your option) any later version.
023//
024// This library is distributed in the hope that it will be useful,
025// but WITHOUT ANY WARRANTY; without even the implied warranty of
026// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
027// Lesser General Public License for more details.
028//
029// You should have received a copy of the GNU Lesser General Public
030// License along with this library; if not, write to the Free Software
031// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
032//
033// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com
034// [email protected]
035//------------------------------------------------------------------------------
036
037public class AminoAcidFreqTable
038{
039   private Map<AminoAcid, Float> mFreqMap;
040
041   /**
042    Amino acid frequencies in mammalian proteins.
043    Based on data from ftp://ftp.ncbi.nih.gov/refseq/release/vertebrate_mammalian/vertebrate_mammalian.*.protein.faa.gz on 2014.09.15
044    */
045   public static final AminoAcidFreqTable MAMMALIAN = new AminoAcidFreqTable();
046
047
048   static
049   {
050      Map<AminoAcid, Float> freqMap = new HashMap<AminoAcid, Float>();
051      freqMap.put(AminoAcid.ALANINE,       0.0694f);
052      freqMap.put(AminoAcid.ARGININE,      0.0569f);
053      freqMap.put(AminoAcid.ASPARAGINE,    0.0539f);
054      freqMap.put(AminoAcid.ASPARTIC_ACID, 0.0481f);
055      freqMap.put(AminoAcid.CYSTEINE,      0.0219f);
056      freqMap.put(AminoAcid.GLUTAMIC_ACID, 0.0713f);
057      freqMap.put(AminoAcid.GLUTAMINE,     0.0481f);
058      freqMap.put(AminoAcid.GLYCINE,       0.0648f);
059      freqMap.put(AminoAcid.HISTIDINE,     0.0261f);
060      freqMap.put(AminoAcid.ISOLEUCINE,    0.0434f);
061      freqMap.put(AminoAcid.LEUCINE,       0.0991f);
062      freqMap.put(AminoAcid.LYSINE,        0.0577f);
063      freqMap.put(AminoAcid.METHIONINE,    0.0217f);
064      freqMap.put(AminoAcid.PHENYLALANINE, 0.0361f);
065      freqMap.put(AminoAcid.PROLINE,       0.0632f);
066      freqMap.put(AminoAcid.SERINE,        0.0844f);
067      freqMap.put(AminoAcid.THREONIE,      0.0534f);
068      freqMap.put(AminoAcid.TRYPTOPHAN,    0.0119f);
069      freqMap.put(AminoAcid.TYROSINE,      0.0262f);
070      freqMap.put(AminoAcid.VALINE,        0.0602f);
071      freqMap.put(AminoAcid.UNDEFINED,     0.0002f);
072
073      MAMMALIAN.mFreqMap = Collections.unmodifiableMap(freqMap);
074   }
075
076
077   //##########################################################################
078   // CONSTRUCTORS
079   //##########################################################################
080
081   //--------------------------------------------------------------------------
082   private AminoAcidFreqTable()
083   {
084
085   }
086
087   //--------------------------------------------------------------------------
088   public AminoAcidFreqTable(Map<AminoAcid, Float> inData)
089   {
090      mFreqMap = Collections.unmodifiableMap(inData);
091   }
092
093   //##########################################################################
094   // PUBLIC METHODS
095   //##########################################################################
096
097   //--------------------------------------------------------------------------
098   public Set<AminoAcid> keySet()
099   {
100      return mFreqMap.keySet();
101   }
102
103   //--------------------------------------------------------------------------
104   public Float get(AminoAcid inAA)
105   {
106      return mFreqMap.get(inAA);
107   }
108}