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 Mon Feb 22 17:36:27 2010 for libAMOS by  doxygen 1.4.7