00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef FEATUREDATA_H
00016 #define FEATUREDATA_H
00017
00018 #include <db_cxx.h>
00019
00020 #include <qcstring.h>
00021 #include <qvaluelist.h>
00022 #include <qdom.h>
00023 #include "generaldata.h"
00024
00025 #include "trappertypes.h"
00026 #include "trdb.h"
00027 #include "featuregui.h"
00028 #include "trappervector.h"
00029 #include <vector>
00030 #include "featureinfo.h"
00031 #include <iosfwd>
00032
00033 class QDataStream;
00034 class QString;
00035
00036
00037
00038
00039
00040
00041
00042
00043 class FeatureData : public GeneralData
00044 {
00045 public:
00046 FeatureData( db_recno_t readRec = 0);
00047 virtual ~FeatureData();
00048 virtual TrDb::IndexMap getIndexMap();
00049 void setReadRecno( db_recno_t readRec ) { readRecno_ = readRec; }
00050 FeatureGui * gui();
00051 FeatureInfo* info();
00052
00053 static int getSeqRecNo(Db * , const Dbt * , const Dbt *pdata, Dbt *skey);
00054 static int bt_compare_seqRecNo(DB * db, const DBT *dbt1, const DBT *dbt2);
00055 virtual void readStream( QDataStream & str );
00056 virtual void writeStream( QDataStream & str );
00057 virtual void readAttributes( const QXmlAttributes& attr );
00058 virtual void writeXml( ostream& stream );
00059 virtual void print_debug_info();
00060 db_recno_t readRecno() { return readRecno_; }
00061
00062 protected:
00063 virtual FeatureGui * makeGui() = 0;
00064 virtual FeatureInfo* makeInfo() = 0;
00065
00066
00067
00068
00069
00070
00071
00072
00073 db_recno_t readRecno_;
00074
00075 FeatureGui * m_gui;
00076
00077 FeatureInfo* m_info;
00078
00079 };
00080
00081 class SpatialFeatureData : public FeatureData
00082 {
00083 public:
00084 SpatialFeatureData( db_recno_t readRec = 0, TR_DNA start = 0, TR_DNA end = 0);
00085 virtual ~SpatialFeatureData();
00086 TR_DNA startPos() { return startPos_; }
00087 TR_DNA endPos() { return endPos_; }
00088 void setStartPos( TR_DNA start ) { startPos_ = start; }
00089 void setEndPos( TR_DNA end ) { endPos_ = end; }
00090
00091 virtual void readStream( QDataStream & str );
00092 virtual void writeStream( QDataStream & str );
00093 virtual void readAttributes( const QXmlAttributes& attr );
00094 virtual void writeXml( ostream& stream );
00095 virtual void print_debug_info();
00096
00097
00098 protected:
00099
00100 virtual FeatureInfo* makeInfo();
00101
00102 TR_DNA startPos_;
00103 TR_DNA endPos_;
00104
00105
00106 };
00107
00108
00109
00110
00111 class DnpData : public SpatialFeatureData
00112 {
00113 public:
00114 DnpData( ) : SpatialFeatureData(), dnpID(-1)
00115 {}
00116 DnpData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos );
00117 void readDom( QDomElement & elem );
00118 std::string uniqueName() { return std::string("DnpData"); }
00119
00120 virtual ~DnpData()
00121 {}
00122 void readStream( QDataStream & str );
00123 void writeStream( QDataStream & str );
00124 void writeDom( QDomElement & elem );
00125 void readAttributes( const QXmlAttributes& attr );
00126 void writeXml( ostream& stream );
00127 void set_dnpID(int id);
00128 int get_dnpID();
00129 void set_dnp_type(int t);
00130 int get_dnp_type();
00131
00132 protected:
00133 FeatureGui * makeGui() { return new DnpGui( this ); }
00134 FeatureInfo * makeInfo() { return new DnpInfo( this ); }
00135 int dnpID;
00136 int type;
00137 };
00138
00139
00140
00141
00142
00143 class DnaStrData : public SpatialFeatureData
00144 {
00145 public:
00146 DnaStrData( ) : SpatialFeatureData()
00147 {}
00148 DnaStrData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos );
00149 std::string uniqueName() { return std::string("DnaStrData"); }
00150 virtual ~DnaStrData();
00151 void readStream( QDataStream & str );
00152 void writeStream( QDataStream & str );
00153 void writeDom( QDomElement & elem );
00154 void readDom( QDomElement & elem );
00155 void readAttributes( const QXmlAttributes& attr );
00156 void writeXml( ostream& stream );
00157 TrapperVector<char> dnaVector;
00158 protected:
00159 FeatureGui * makeGui() { return new DnaStrGui(this); }
00160 FeatureInfo * makeInfo() { return new DnaStrInfo(this); }
00161 };
00162
00163
00164 class ChromatData : public SpatialFeatureData
00165 {
00166 public:
00167 ChromatData() : SpatialFeatureData(), cagt_vec(4)
00168 {}
00169 ChromatData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos );
00170 std::string uniqueName() { return std::string("ChromatData"); }
00171 virtual ~ChromatData()
00172 {}
00173 void readStream( QDataStream & str );
00174 void writeStream( QDataStream & str );
00175 void writeDom( QDomElement & elem );
00176 void readDom( QDomElement & elem );
00177 void readAttributes( const QXmlAttributes& attr );
00178 void writeXml( ostream& stream );
00179
00180 std::vector<TrapperVector<Q_UINT32> > cagt_vec;
00181 TrapperVector<Q_UINT32> phd_vec;
00182 TrapperVector<Q_UINT32> gap_vec;
00183
00184 protected:
00185 FeatureGui * makeGui() { return new ChromatGui(this); }
00186
00187 };
00188
00189
00190
00191
00192
00193 class QualityData : public SpatialFeatureData
00194 {
00195 public:
00196 QualityData() : SpatialFeatureData()
00197 {
00198
00199 }
00200 QualityData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos );
00201 std::string uniqueName()
00202 {
00203 return std::string("QualityData");
00204 }
00205 virtual ~QualityData()
00206 {}
00207
00208 int quality(int pos) { return qualityVector.stlVector()[pos]; }
00209 void readStream( QDataStream & str );
00210 void writeStream( QDataStream & str );
00211 void writeDom( QDomElement & elem );
00212 void readDom( QDomElement & elem );
00213 void readAttributes( const QXmlAttributes& attr );
00214 void writeXml( ostream& stream );
00215
00216 TrapperVector<Q_UINT32> qualityVector;
00217
00218 protected:
00219 FeatureGui * makeGui() { return new QualityGui(this); }
00220 FeatureInfo * makeInfo() { return new QualityInfo(this); }
00221 };
00222
00223
00224
00225
00226 class TagData : public SpatialFeatureData
00227 {
00228 public:
00229 TagData( ) : SpatialFeatureData()
00230 {}
00231 TagData( db_recno_t readRecno, TR_DNA startPos, TR_DNA endPos );
00232 void readDom( QDomElement & elem );
00233 virtual std::string uniqueName() { return std::string("TagData"); }
00234
00235 virtual ~TagData()
00236 {}
00237 void readStream( QDataStream & str );
00238 void writeStream( QDataStream & str );
00239 void writeDom( QDomElement & elem );
00240 void readAttributes( const QXmlAttributes& attr );
00241 void writeXml( ostream& stream );
00242
00243 TrDb::IndexMap getIndexMap();
00244
00245 static int getInfoAssoc(Db *dbp, const Dbt *pkey, const Dbt *pdata, Dbt *skey);
00246 static int getScoreAssoc(Db *dbp, const Dbt *pkey, const Dbt *pdata, Dbt *skey);
00247
00248 static int bt_compare_info( DB * db, const DBT *dbt1, const DBT *dbt2);
00249 static int bt_compare_score( DB * db, const DBT *dbt1, const DBT *dbt2);
00250
00251 void setInfo(const std::string& inf);
00252 std::string getInfo();
00253 void setScore(const double& s);
00254 double getScore();
00255
00256 protected:
00257 FeatureGui * makeGui() { return new TagGui( this ); }
00258 FeatureInfo * makeInfo() { return new TagInfo( this ); }
00259
00260 std::string info;
00261 double score;
00262 };
00263
00264 class ReadMetaData : public FeatureData
00265 {
00266 public:
00267 ReadMetaData( db_recno_t rec = 0) : FeatureData(rec), beginGood_(0), endGood_(0) {}
00268 ReadMetaData( const ReadMetaData& other );
00269 virtual ~ReadMetaData() {}
00270
00271 virtual void print_debug_info();
00272
00273 virtual void readStream( QDataStream & str );
00274 virtual void writeStream( QDataStream & str );
00275
00276 virtual void readAttributes( const QXmlAttributes& attr );
00277 virtual void writeXml( ostream& stream );
00278
00279 TrDb::IndexMap getIndexMap();
00280
00281 static int getName(Db *dbp, const Dbt *pkey, const Dbt *pdata, Dbt *skey);
00282
00283 static int bt_compare_name( DB * db, const DBT *dbt1, const DBT *dbt2);
00284
00285
00286 std::string uniqueName() { return std::string("ReadMetaData"); }
00287
00288 void setName( const std::string& n ) { name_ = n; }
00289 void setMate( const std::string& m ) { mate_ = m; }
00290 void setMateLength( const std::size_t& l ) { matelen_ = l; }
00291 void setStrand( const std::string& m ) { strand_ = m; }
00292 void setBeginGood( TR_DNA index ) { beginGood_ = index; }
00293 void setEndGood( TR_DNA index ) { endGood_ = index; }
00294
00295 std::string name() { return name_; }
00296 std::string mate() { return mate_; }
00297 std::size_t mateLength() { return matelen_; }
00298 std::string strand() { return strand_; }
00299 TR_DNA beginGood() { return beginGood_; }
00300 TR_DNA endGood() { return endGood_; }
00301
00302
00303
00304
00305 protected:
00306 virtual FeatureInfo* makeInfo() { return NULL; }
00307 virtual FeatureGui* makeGui() { return NULL; }
00308
00309
00310
00311
00312 FeatureInfo* m_info;
00313 std::string name_;
00314 std::string mate_;
00315 std::size_t matelen_;
00316 std::string strand_;
00317 TR_DNA beginGood_;
00318 TR_DNA endGood_;
00319 public:
00320 TrapperVector<double> tc_vec;
00321
00322 };
00323
00324 #endif