/*
* 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;
public class RNAAlphabet implements Alphabet {
private static final long serialVersionUID = -2862576026568250745L;
public static Alphabet SINGLETON = new RNAAlphabet();
private static final int size = 4;
public static char a = 'a';
public static char c = 'c';
public static char g = 'g';
public static char u = 'u';
private static final char[] lLetters = {'a', 'c', 'g', 'u'};
private static final char[] uLetters = {'A', 'C', 'G', 'U'};
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', 'u',
'A', 'C', 'G', 'U',
'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 RNAAlphabet() {
}
@Override
public String getName() {
return "RNA";
}
@Override
public int getSize() {
return size;
}
@Override
public boolean isValid(char c) {
if (Arrays.binarySearch(allLetters, c) >= 0) {
return true;
}
return false;
}
@Override
public char[] getLetters() {
return lLetters.clone();
}
@Override
public String toString() {
return "RNA Alphabet";
}
}