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

banktest.cc

Go to the documentation of this file.
00001 #include "foundation_AMOS.hh" 00002 #include "amp.hh" 00003 #include <cstdlib> 00004 #include <ctime> 00005 #include <sstream> 00006 #include <iostream> 00007 using namespace std; 00008 using namespace AMOS; 00009 00010 const string BANK_STORE_DIR = "_bank_"; 00011 const string STREAM_STORE_DIR = "_stream_"; 00012 00013 int main (int argc, char ** argv) 00014 { 00015 srand (time(NULL)); 00016 00017 try { 00018 00019 ID_t N, i , j, step; 00020 Bank_t readbank (Read_t::NCODE); 00021 BankStream_t readstream (Read_t::NCODE); 00022 Read_t read; 00023 ostringstream ss; 00024 00025 if ( argc != 2 ) 00026 { 00027 cerr << "USAGE: " << argv[0] << " #reads\n"; 00028 return -1; 00029 } 00030 00031 N = atol (argv[1]); 00032 if ( N < 50 ) 00033 step = 1; 00034 else 00035 step = N / 50; 00036 00037 read . setClearRange (Range_t(0,1080)); 00038 read . setQualityClearRange (Range_t(1,1301)); 00039 read . setVectorClearRange (Range_t(2,1032)); 00040 read . setFragment (29373); 00041 read . setType (Read_t::END); 00042 read . compress( ); 00043 read . setFlagA (false); 00044 read . setFlagB (true); 00045 read . setSequence ( 00046 "acgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgacgtagctagctagttttcgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtaaaaaatcgatcgtaaaagtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacgtacg", 00047 "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678443573456345523453444442345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789077757856846845623523454377777712345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012"); 00048 00049 00050 00051 readbank . create (BANK_STORE_DIR); 00052 readstream . create (STREAM_STORE_DIR); 00053 00054 00055 cerr << "APPEND " << N << " reads\n" << Date( ) << endl << "begin"; 00056 for ( i = 1; i <= N; i ++ ) 00057 { 00058 ss . str (NULL_STRING); 00059 ss << 'a' << i; 00060 read . setIID (i); 00061 read . setEID (ss . str( )); 00062 read . setComment (ss . str( ) + 'c'); 00063 readbank . append (read); 00064 00065 if ( i % step == 0 ) 00066 cerr << '.'; 00067 } 00068 cerr << "done.\n" << Date( ) << endl << endl; 00069 00070 00071 cerr << "SAPPEND " << N << " reads\n" << Date( ) << endl << "begin"; 00072 for ( i = 1; i <= N; i ++ ) 00073 { 00074 ss . str (NULL_STRING); 00075 ss << 'a' << i; 00076 read . setIID (i); 00077 read . setEID (ss . str( )); 00078 read . setComment (ss . str( ) + 'c'); 00079 readstream << read; 00080 00081 if ( i % step == 0 ) 00082 cerr << '.'; 00083 } 00084 cerr << "done.\n" << Date( ) << endl << endl; 00085 00086 00087 cerr << "FETCH " << N 00088 << " random reads\n" << Date( ) << endl << "begin"; 00089 for ( i = 1; i <= N; i ++ ) 00090 { 00091 j = 1 + rand( ) % N; 00092 readbank . fetch (j, read); 00093 00094 if ( i % step == 0 ) 00095 cerr << '.'; 00096 } 00097 cerr << "done.\n" << Date( ) << endl << endl; 00098 00099 00100 cerr << "SFETCH " << N 00101 << " consecutive reads\n" << Date( ) << endl << "begin"; 00102 for ( i = 1; readstream >> read; i ++ ) 00103 { 00104 if ( i % step == 0 ) 00105 cerr << '.'; 00106 } 00107 cerr << "done.\n" << Date( ) << endl << endl; 00108 00109 00110 cerr << "REPLACE " << N 00111 << " random reads\n" << Date( ) << endl << "begin"; 00112 for ( i = 1; i <= N; i ++ ) 00113 { 00114 j = 1 + rand( ) % N; 00115 00116 ss . str (NULL_STRING); 00117 ss << 'r' << j; 00118 read . setIID (j); 00119 read . setEID (ss . str( )); 00120 read . setComment (ss . str( ) + 'c'); 00121 readbank . replace (j, read); 00122 00123 if ( i % step == 0 ) 00124 cerr << '.'; 00125 } 00126 cerr << "done.\n" << Date( ) << endl << endl; 00127 00128 00129 cerr << "REMOVE " << N 00130 << " random reads\n" << Date( ) << endl << "begin"; 00131 for ( i = 1; i <= N; i ++ ) 00132 { 00133 j = 1 + rand( ) % N; 00134 00135 if ( readbank . getIDMap( ) . exists (j) ) 00136 readbank . remove (j); 00137 00138 if ( i % step == 0 ) 00139 cerr << '.'; 00140 } 00141 cerr << "done.\n" << Date( ) << endl << endl; 00142 00143 00144 j = rand( ) % N; 00145 readstream . seekg (j, BankStream_t::BEGIN); 00146 if ( readstream >> read ) 00147 { 00148 cerr << "SFETCH OFFSET " << j 00149 << " yeilds IID:" << read . getIID( ) 00150 << " EID:" << read . getEID( ) 00151 << " COMMENT:" << read . getComment( ) << endl << endl; 00152 } 00153 00154 00155 do { 00156 j = 1 + rand( ) % N; 00157 } while ( ! readbank . getIDMap( ) . exists (j) ); 00158 readbank . fetch (j, read); 00159 cerr << "FETCH IID " << j 00160 << " bid:" << readbank . getIDMap() . lookupBID (j) 00161 << " yields IID:" << read . getIID( ) 00162 << " EID:" << read . getEID( ) 00163 << " COMMENT:" << read . getComment( ) << endl << endl; 00164 00165 00166 readbank . close( ); 00167 readstream . close( ); 00168 00169 00170 readstream . open (BANK_STORE_DIR); 00171 cerr << "SFETCH " << readstream . getSize( ) 00172 << " consecutive reads\n" << Date( ) << endl << "begin"; 00173 for ( i = 1; readstream >> read; i ++ ) 00174 { 00175 // cout << readstream . getIDMap() . lookupBID (read . getIID( )) 00176 // << ": " << read . getIID( ) 00177 // << ' ' << read . getEID( ) 00178 // << ' ' << read . getComment( ) << endl; 00179 00180 if ( i % step == 0 ) 00181 cerr << '.'; 00182 } 00183 cerr << "done.\n" << Date( ) << endl; 00184 cerr << i - 1 << " fetched" << endl << endl; 00185 readstream . close( ); 00186 00187 00188 readbank . open (BANK_STORE_DIR); 00189 cerr << "CLEAN bank\n" << Date( ) << endl << "begin..."; 00190 readbank . clean( ); 00191 cerr << "done.\n" << Date( ) << endl << endl; 00192 00193 00194 readbank . fetch (j, read); 00195 cerr << "FETCH IID " << j 00196 << " bid:" << readbank . getIDMap() . lookupBID (j) 00197 << " yields IID:" << read . getIID( ) 00198 << " EID:" << read . getEID( ) 00199 << " COMMENT:" << read . getComment( ) << endl << endl; 00200 readbank . close( ); 00201 00202 00203 readstream . open (BANK_STORE_DIR); 00204 cerr << "SFETCH " << readstream . getSize( ) 00205 << " consecutive reads\n" << Date( ) << endl << "begin"; 00206 for ( i = 1; readstream >> read; i ++ ) 00207 { 00208 // cout << readstream . getIDMap() . lookupBID (read . getIID( )) 00209 // << ": " << read . getIID( ) 00210 // << ' ' << read . getEID( ) 00211 // << ' ' << read . getComment( ) << endl; 00212 00213 if ( i % step == 0 ) 00214 cerr << '.'; 00215 } 00216 cerr << "done.\n" << Date( ) << endl; 00217 cerr << i - 1 << " fetched" << endl << endl; 00218 readstream . close( ); 00219 00220 00221 // readbank . destroy( ); 00222 // readstream . destroy( ); 00223 } 00224 catch (const Exception_t & e) { 00225 00226 cerr << "ERROR: -- Fatal AMOS Exception --\n" << e; 00227 return -1; 00228 } 00229 00230 return 0; 00231 }

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