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
00176
00177
00178
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
00209
00210
00211
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
00222
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 }