/*
* Genoogle: Similar DNA Sequences Searching Engine and Tools. (http://genoogle.pih.bio.br)
* Copyright (C) 2008,2009, 2010, 2011, 2012 Felipe Fernandes Albrecht (felipe.albrecht@gmail.com)
*
* For further information check the LICENSE file.
*/
package bio.pih.genoogle.seq;
import java.util.HashMap;
public class Codon {
String content;
private HashMap<String, AminoAcid> codonToProteinMap;
public static Codon INSTANCE = new Codon();
private Codon() {
codonToProteinMap = new HashMap<String, AminoAcid>();
codonToProteinMap.put("GGU", AminoAcid.glycine);
codonToProteinMap.put("GGC", AminoAcid.glycine);
codonToProteinMap.put("GGA", AminoAcid.glycine);
codonToProteinMap.put("GGG", AminoAcid.glycine);
codonToProteinMap.put("GCU", AminoAcid.alanine);
codonToProteinMap.put("GCC", AminoAcid.alanine);
codonToProteinMap.put("GCA", AminoAcid.alanine);
codonToProteinMap.put("GCG", AminoAcid.alanine);
codonToProteinMap.put("GUU", AminoAcid.valine);
codonToProteinMap.put("GUC", AminoAcid.valine);
codonToProteinMap.put("GUA", AminoAcid.valine);
codonToProteinMap.put("GUG", AminoAcid.valine);
codonToProteinMap.put("UUA", AminoAcid.leucine);
codonToProteinMap.put("UUG", AminoAcid.leucine);
codonToProteinMap.put("CUU", AminoAcid.leucine);
codonToProteinMap.put("CUC", AminoAcid.leucine);
codonToProteinMap.put("CUA", AminoAcid.leucine);
codonToProteinMap.put("CUG", AminoAcid.leucine);
codonToProteinMap.put("AUU", AminoAcid.isoleucine);
codonToProteinMap.put("AUC", AminoAcid.isoleucine);
codonToProteinMap.put("AUA", AminoAcid.isoleucine);
codonToProteinMap.put("UCU", AminoAcid.serine);
codonToProteinMap.put("UCC", AminoAcid.serine);
codonToProteinMap.put("UCA", AminoAcid.serine);
codonToProteinMap.put("UCG", AminoAcid.serine);
codonToProteinMap.put("AGU", AminoAcid.serine);
codonToProteinMap.put("AGC", AminoAcid.serine);
codonToProteinMap.put("ACU", AminoAcid.threorine);
codonToProteinMap.put("ACC", AminoAcid.threorine);
codonToProteinMap.put("ACA", AminoAcid.threorine);
codonToProteinMap.put("ACG", AminoAcid.threorine);
codonToProteinMap.put("GAU", AminoAcid.aspartic);
codonToProteinMap.put("GAC", AminoAcid.aspartic);
codonToProteinMap.put("GAA", AminoAcid.glutamic);
codonToProteinMap.put("GAG", AminoAcid.glutamic);
codonToProteinMap.put("AAU", AminoAcid.asparagine);
codonToProteinMap.put("AAC", AminoAcid.asparagine);
codonToProteinMap.put("CAA", AminoAcid.glutamine);
codonToProteinMap.put("CAG", AminoAcid.glutamine);
codonToProteinMap.put("AAG", AminoAcid.lysine);
codonToProteinMap.put("AAA", AminoAcid.lysine);
codonToProteinMap.put("CGU", AminoAcid.arginine);
codonToProteinMap.put("CGC", AminoAcid.arginine);
codonToProteinMap.put("CGA", AminoAcid.arginine);
codonToProteinMap.put("CGG", AminoAcid.arginine);
codonToProteinMap.put("AGA", AminoAcid.arginine);
codonToProteinMap.put("AGG", AminoAcid.arginine);
codonToProteinMap.put("CAU", AminoAcid.histidine);
codonToProteinMap.put("CAC", AminoAcid.histidine);
codonToProteinMap.put("UUU", AminoAcid.phenylalanine);
codonToProteinMap.put("UUC", AminoAcid.phenylalanine);
codonToProteinMap.put("UGU", AminoAcid.cysteine);
codonToProteinMap.put("UGC", AminoAcid.cysteine);
codonToProteinMap.put("UGG", AminoAcid.tryptophan);
codonToProteinMap.put("UAU", AminoAcid.tyrosine);
codonToProteinMap.put("UAC", AminoAcid.tyrosine);
codonToProteinMap.put("AUG", AminoAcid.methionine);
codonToProteinMap.put("CCU", AminoAcid.proline);
codonToProteinMap.put("CCC", AminoAcid.proline);
codonToProteinMap.put("CCA", AminoAcid.proline);
codonToProteinMap.put("CCG", AminoAcid.proline);
codonToProteinMap.put("AUG", AminoAcid.start);
codonToProteinMap.put("UAG", AminoAcid.end);
codonToProteinMap.put("UAA", AminoAcid.end);
codonToProteinMap.put("UGA", AminoAcid.end);
}
public AminoAcid convert(String codon) {
if (codon.length() != 3) {
// throw exception
}
// TODO: changer the method to have an convertRNA and a DNA inputs,
// so it will be not necessary
/*
* http://en.wikipedia.org/wiki/FASTA_format
R A G (puRine)
Y C T U (pYrimidine)
K G T U (Ketone[citation needed])
M A C (aMino group[citation needed])
S C G (Strong interaction[citation needed])
W A T U (Weak interaction[citation needed])
B C G T U (not A) (B comes after A)
D A G T U (not C) (D comes after C)
H A C T U (not G) (H comes after G)
V A C G (not T, not U) (V comes after U)
N A C G T U (aNy)
X Masked
*/
String c = codon.toUpperCase().replace('T', 'U')
.replace('R', 'A')
.replace('Y', 'C')
.replace('K', 'G')
.replace('M', 'A')
.replace('S', 'C')
.replace('W', 'A')
.replace('B', 'C')
.replace('D', 'A')
.replace('H', 'A')
.replace('V', 'A')
.replace('N', 'A')
.replace('X', 'A');
return codonToProteinMap.get(c);
}
}