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 const char COMPLEMENT_DNA[256] =
00018   {
00019       0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
00020      16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00021      32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00022      48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00023      64,'T','V','G','H', 69, 70,'C','D', 73, 74,'M', 76,'K','N', 79,
00024      80, 81,'Y','S','A', 85,'B','W','X','R', 90, 91, 92, 93, 94, 95,
00025      96,'t','v','g','h',101,102,'c','d',105,106,'m',108,'k','n',111,
00026     112,113,'y','s','a',117,'b','w','x','r',122,123,124,125,126,127,
00027     128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
00028     144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
00029     160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
00030     176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
00031     192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
00032     208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
00033     224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
00034     240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
00035   };
00036 
00037 
00038 //--------------------------------------------------- Complement ---------------
00039 char AMOS::Complement (char ch)
00040 {
00041   return COMPLEMENT_DNA[ int(ch) ];
00042 }
00043 
00044 
00045 //--------------------------------------------------- ReverseComplement --------
00046 void AMOS::ReverseComplement(string & str)
00047 {
00048   char ch;
00049   string::iterator lo = str.begin();
00050   string::iterator hi = str.end() - 1;
00051   while ( lo <= hi )
00052     {
00053       ch = *hi;
00054       *hi = COMPLEMENT_DNA[ int(*lo) ];
00055       *lo = COMPLEMENT_DNA[ int(ch) ];
00056       lo++; hi--;
00057     }
00058 }
00059 
00060 
00061 //--------------------------------------------------- ReverseComplement --------
00062 void AMOS::ReverseComplement(char * str)
00063 {
00064   char ch;
00065   char *lo = str;
00066   char *hi = str + strlen(str) - 1;
00067   while ( lo <= hi )
00068     {
00069       ch = *hi;
00070       *hi = COMPLEMENT_DNA[ int(*lo) ];
00071       *lo = COMPLEMENT_DNA[ int(ch) ];
00072       lo++; hi--;
00073     }
00074 }
00075 
00076 
00077 //--------------------------------------------------- Reverse ------------------
00078 void AMOS::Reverse (string & str)
00079 {
00080   reverse (str . begin( ), str . end( ));
00081 }
00082 
00083 
00084 //--------------------------------------------------- Reverse ------------------
00085 void AMOS::Reverse (char * str)
00086 {
00087   reverse (str, str + strlen (str));
00088 }

Generated on Mon Feb 22 17:36:27 2010 for libAMOS by  doxygen 1.4.7