00001
00002 #ifndef MAL_READONLY_H_EA
00003 #define MAL_READONLY_H_EA
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include <set>
00032 #include <vector>
00033 #include "trapperdoc.h"
00034 #include "db_cxx.h"
00035
00036
00037
00038 typedef char base_t;
00039
00040 typedef Q_UINT32 qual_t;
00041
00042 class MAl_Readonly
00043 {
00044
00045 public:
00046
00047
00048 MAl_Readonly(size_t bufsize, std::set<db_recno_t>& recnolist, TrapperDoc* pdoc);
00049 virtual ~MAl_Readonly();
00050
00051
00052 void print_info(size_t ID) {
00053 cerr << "mal_readonly: print_info: ID = " << ID << endl;
00054 cerr << "get_seq_begin_global( ID ) = " << get_seq_begin_global( ID ) << endl;
00055 cerr << "get_seq_end_global( ID ) = " << get_seq_end_global( ID ) << endl;
00056 cerr << "get_len( ID ) = " << get_len( ID ) << endl;
00057 }
00058
00059
00060
00061
00062 size_t get_num_seq();
00063 std::string get_name( size_t ID );
00064 std::string get_header( size_t ID );
00065 std::string get_seq( size_t ID );
00066 std::string get_strand( size_t ID );
00067 size_t get_len( size_t ID);
00068 void select_read( size_t ID, bool status );
00069
00070
00071
00072 size_t get_seq_row( size_t ID );
00073
00074 size_t get_seq_begin( size_t ID );
00075 size_t get_seq_begin_global( size_t ID );
00076
00077
00078
00079
00080 size_t get_seq_end( size_t ID );
00081 size_t get_seq_end_global( size_t ID );
00082
00083 size_t get_beginGood( size_t ID );
00084 size_t get_beginGood_global( size_t ID );
00085
00086 size_t get_endGood( size_t ID );
00087 size_t get_endGood_global( size_t ID );
00088
00089 base_t get_base( size_t ID, size_t index );
00090 base_t get_base_global( size_t ID, size_t index );
00091
00092 qual_t get_qual( size_t ID, size_t index );
00093 qual_t get_qual_global( size_t ID, size_t index );
00094
00095 bool is_DNP(size_t ID, size_t index);
00096 bool is_DNP_global(size_t ID, size_t index);
00097
00098 int get_DNP_ID(size_t ID, size_t index);
00099 int get_DNP_ID_global(size_t ID, size_t index);
00100
00101 int get_DNP_type(size_t ID, size_t index);
00102 int get_DNP_type_global(size_t ID, size_t index);
00103
00104 double get_max_expression(size_t ID);
00105 size_t get_num_expression_points(size_t ID);
00106 double get_expression(size_t ID, size_t expression_index);
00107
00108 template <typename Types>
00109 friend class MAlWrapper;
00110
00111 protected:
00112
00113 size_t get_buffID(size_t ID);
00114 size_t next_buffID();
00115
00116 virtual void flush_buffer(size_t buffID );
00117 void read_from_db(size_t buffID, size_t ID);
00118 void read_seq_from_db( db_recno_t recno, size_t buffID );
00119 void read_feat_from_db( db_recno_t recno, size_t buffID, const string& data_type_name);
00120
00121 base_t comp_base(const char& base);
00122
00123
00124
00125 struct dnp_struct
00126 {
00127 dnp_struct(bool is = false, db_recno_t rec = 0, int id = -1, int t = -1 ) :
00128 isDNP(is), recno(rec), ID(id), type(t) {}
00129
00130 bool isDNP;
00131 db_recno_t recno;
00132 int ID;
00133 int type;
00134 };
00135
00136 struct tag_struct
00137 {
00138 tag_struct(size_t sta = 0, size_t sto = 0, std::string ty = "", std::string at = "", db_recno_t rec = 0 ) :
00139 start(sta), stop(sto), type(ty), attr(at), recno(rec) {}
00140
00141 size_t start;
00142 size_t stop;
00143 std::string type;
00144 std::string attr;
00145 db_recno_t recno;
00146
00147 };
00148
00149
00150 size_t buff_size;
00151 size_t num_seq;
00152 TrapperDoc* doc;
00153 std::set<db_recno_t>& selectedReads;
00154
00155
00156
00157 std::vector<std::vector<base_t> > seqs;
00158 std::vector<std::vector<qual_t> > quals;
00159 std::vector<std::vector<dnp_struct> > DNPs;
00160 std::vector<std::multimap<size_t, tag_struct> > tags;
00161 std::vector<std::vector<double> > time_course;
00162
00163 std::vector<std::string> names;
00164 std::vector<std::string> headers;
00165 std::vector<std::string> mates;
00166 std::vector<std::string> strands;
00167
00168 std::vector<size_t> seq_rows;
00169 std::vector<size_t> seq_begin_global;
00170 std::vector<size_t> seq_end_global;
00171 std::vector<size_t> seq_beginGood;
00172 std::vector<size_t> seq_endGood;
00173 std::vector<size_t> mate_lengths;
00174
00175
00176 vector<db_recno_t> ID_to_dbID;
00177 vector<size_t> ID_to_buffID;
00178 vector<db_recno_t> buffID_to_dbID;
00179 vector<db_recno_t> buffID_to_ID;
00180 vector<bool> put_in_db;
00181
00182
00183 };
00184
00185
00186 #endif //MAL_READONLY_H_EA
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253