Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

utility_AMOS.cc

Go to the documentation of this file.
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 #include "utility_AMOS.hh" 00011 #include <algorithm> 00012 #include <cstring> 00013 using namespace AMOS; 00014 using namespace std; 00015 00016 00017 00018 00019 //--------------------------------------------------- Complement --------------- 00020 char AMOS::Complement (char ch) 00021 { 00022 ch = toupper (ch); 00023 switch (ch) 00024 { 00025 case 'A' : // A 00026 return 'T'; 00027 case 'C' : // C 00028 return 'G'; 00029 case 'G' : // G 00030 return 'C'; 00031 case 'T' : // T/U 00032 case 'U' : 00033 return 'A'; 00034 case 'R' : // A or G 00035 return 'Y'; 00036 case 'Y' : // C or T 00037 return 'R'; 00038 case 'S' : // C or G 00039 return 'S'; 00040 case 'W' : // A or T 00041 return 'W'; 00042 case 'M' : // A or C 00043 return 'K'; 00044 case 'K' : // G or T 00045 return 'M'; 00046 case 'B' : // C, G or T 00047 return 'V'; 00048 case 'D' : // A, G or T 00049 return 'H'; 00050 case 'H' : // A, C or T 00051 return 'D'; 00052 case 'V' : // A, C or G 00053 return 'B'; 00054 case 'N' : // self-complementary 00055 case 'X' : 00056 case '*' : 00057 case '-' : 00058 return ch; 00059 default : // unknown 00060 AMOS_THROW_ARGUMENT 00061 ((string) "Cannot complement unknown character " + ch); 00062 } 00063 } 00064 00065 00066 //--------------------------------------------------- ReverseComplement -------- 00067 void AMOS::ReverseComplement (string & str) 00068 { 00069 Reverse (str); 00070 00071 string::iterator end = str . end( ); 00072 for ( string::iterator beg = str . begin( ); beg != end; ++ beg ) 00073 *beg = Complement (*beg); 00074 } 00075 00076 00077 //--------------------------------------------------- ReverseComplement -------- 00078 void AMOS::ReverseComplement (char * str) 00079 { 00080 Reverse (str); 00081 00082 char * end = str + strlen (str); 00083 for ( char * beg = str; beg != end; ++ beg ) 00084 *beg = Complement (*beg); 00085 } 00086 00087 00088 //--------------------------------------------------- Reverse ------------------ 00089 void AMOS::Reverse (string & str) 00090 { 00091 reverse (str . begin( ), str . end( )); 00092 } 00093 00094 00095 //--------------------------------------------------- Reverse ------------------ 00096 void AMOS::Reverse (char * str) 00097 { 00098 reverse (str, str + strlen (str)); 00099 }

Generated on Tue May 17 15:19:02 2005 for libAMOS by doxygen 1.3.8