/* * 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.Arrays; import java.util.BitSet; public class DNAAlphabet implements Alphabet { private static final long serialVersionUID = 4036186830403094421L; public static Alphabet SINGLETON = new DNAAlphabet(); private static final int size = 4; public static char a = 'a'; public static char c = 'c'; public static char g = 'g'; public static char t = 't'; private static final char[] lLetters = { 'a', 'c', 'g', 't' }; private static final char[] uLetters = { 'A', 'C', 'G', 'T' }; private static final char[] lSpecialLetters = { 'r', 'y', 'k', 'm', 's', 'w', 'b', 'd', 'h', 'v', 'n', 'x' }; private static final char[] uSpecialLetters = { 'R', 'Y', 'K', 'M', 'S', 'W', 'B', 'D', 'H', 'V', 'N', 'X' }; private static final char[] allLetters = { 'a', 'c', 'g', 't', 'A', 'C', 'G', 'T', 'r', 'y', 'k', 'm', 's', 'w', 'b', 'd', 'h', 'v', 'n', 'x', 'R', 'Y', 'K', 'M', 'S', 'W', 'B', 'D', 'H', 'V', 'N', 'X' }; static { Arrays.sort(lLetters); Arrays.sort(uLetters); Arrays.sort(lSpecialLetters); Arrays.sort(uSpecialLetters); Arrays.sort(allLetters); } private static final BitSet lLettersBitSet = new BitSet(); static { for (char c : lLetters) { lLettersBitSet.set(c); } } private static final BitSet uLettersBitSet = new BitSet(); static { for (char c : uLetters) { uLettersBitSet.set(c); } } private static final BitSet lSpecialLettersBitSet = new BitSet(); static { for (char c : lSpecialLetters) { lSpecialLettersBitSet.set(c); } } private static final BitSet uSpecialLettersBitSet = new BitSet(); static { for (char c : uSpecialLetters) { uSpecialLettersBitSet.set(c); } } private static final BitSet allLettersBitSet = new BitSet(); static { for (char c : allLetters) { allLettersBitSet.set(c); } } private DNAAlphabet() { } @Override public String getName() { return "DNA"; } @Override public int getSize() { return size; } @Override public boolean isValid(char c) { if (allLettersBitSet.get(c)) { return true; } return false; } @Override public char[] getLetters() { return lLetters.clone(); } @Override public String toString() { return "DNA Alphabet"; } }