00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <Sequence/ComplementBase.hpp>
00025 #include <cctype>
00026
00027
00028 namespace Sequence
00029 {
00030 void ComplementBase::operator()(char &ch) const
00034 {
00035
00036 switch(ch)
00037 {
00038 case 'A':
00039 ch = 'T';
00040 break;
00041 case 'a':
00042 ch = 't';
00043 break;
00044 case 'T':
00045 ch = 'A';
00046 break;
00047 case 't':
00048 ch = 'a';
00049 break;
00050 case 'G':
00051 ch = 'C';
00052 break;
00053 case 'g':
00054 ch = 'c';
00055 break;
00056 case 'C':
00057 ch = 'G';
00058 break;
00059 case 'c':
00060 ch = 'g';
00061 break;
00062 case 'M':
00063 ch = 'K';
00064 break;
00065 case 'm':
00066 ch ='k';
00067 break;
00068 case 'K':
00069 ch = 'M';
00070 break;
00071 case 'k':
00072 ch = 'm';
00073 case 'R':
00074 ch = 'Y';
00075 break;
00076 case 'r':
00077 ch = 'y';
00078 break;
00079 case 'Y':
00080 ch = 'R';
00081 break;
00082 case 'y':
00083 ch = 'r';
00084 break;
00085 case 'W':
00086 ch = 'W';
00087 break;
00088 case 'w':
00089 ch = 'w';
00090 break;
00091 case 'S':
00092 ch = 'S';
00093 break;
00094 case 's':
00095 ch = 's';
00096 break;
00097 case 'B':
00098 ch = 'V';
00099 break;
00100 case 'b':
00101 ch = 'v';
00102 break;
00103 case 'V':
00104 ch = 'B';
00105 break;
00106 case 'v':
00107 ch = 'b';
00108 break;
00109 case 'D':
00110 ch = 'H';
00111 break;
00112 case 'd':
00113 ch = 'h';
00114 break;
00115 case 'H':
00116 ch = 'D';
00117 break;
00118 case 'h':
00119 ch = 'd';
00120 break;
00121 case 'X':
00122 ch = 'X';
00123 break;
00124 case 'x':
00125 ch = 'x';
00126 break;
00127 case 'N':
00128 ch = 'N';
00129 break;
00130 case 'n':
00131 ch = 'n';
00132 case '-':
00133 ch = '-';
00134 break;
00135 default:
00136 ch = '?';
00137 break;
00138 }
00139 }
00140
00141 }
00142