00001 00002 #ifndef MAL_H_EA 00003 #define MAL_H_EA 00004 00005 /** @author Erik Arner, Karolinska Institute, (c) Erik Arner 2003. 00006 @version MAl version 0.1 00007 */ 00008 00009 /** \brief Writeable version of the multi alignment class 00010 00011 Future plans: If neccesary, make the writeable features plug ins, 00012 for efficiency. 00013 */ 00014 00015 #include "mal_readonly.h" 00016 00017 class MAl : public MAl_Readonly 00018 { 00019 00020 public: 00021 //'tors... 00022 MAl( size_t bufsize, std::set<db_recno_t>& recnolist, TrapperDoc* pdoc ); 00023 ~MAl(); 00024 00025 //Common interface 00026 00027 void set_seq_row(size_t ID, size_t row); 00028 size_t create_seq(size_t length); 00029 00030 //Separate interfaces 00031 00032 void set_DNP(size_t ID, size_t index, bool status); 00033 void set_DNP_global(size_t ID, size_t index, bool status); 00034 00035 void set_DNP_ID(size_t ID, size_t index, int dnpID); 00036 void set_DNP_ID_global(size_t ID, size_t index, int dnpID); 00037 00038 void set_DNP_type(size_t ID, size_t index, int type); 00039 void set_DNP_type_global(size_t ID, size_t index, int type); 00040 00041 void set_base(size_t ID, size_t index, base_t base); 00042 void set_base_global(size_t ID, size_t index, base_t base); 00043 00044 void set_qual(size_t ID, size_t index, qual_t qual); 00045 void set_qual_global(size_t ID, size_t index, qual_t qual); 00046 00047 void insert_gap(size_t ID, size_t index); 00048 void insert_gap_global(size_t ID, size_t index); 00049 00050 void remove_gap(size_t ID, size_t index); 00051 void remove_gap_global(size_t ID, size_t index); 00052 00053 void set_seq_begin_global(size_t ID, size_t index); 00054 // void set_seq_begin_global(size_t ID, int index);//FIX!!! 00055 00056 void set_seq_end(size_t ID, size_t index); 00057 void set_seq_end_global(size_t ID, size_t index); 00058 00059 void set_beginGood(size_t ID, size_t index); 00060 void set_beginGood_global(size_t ID, size_t index); 00061 00062 void set_endGood(size_t ID, size_t index); 00063 void set_endGood_global(size_t ID, size_t index); 00064 00065 00066 private://Should be protected?? 00067 //Private methods 00068 00069 virtual void flush_buffer(size_t buffID ); 00070 // void commit_seq_to_db(db_recno_t recno, size_t start, size_t end, size_t row); 00071 void commit_seq_to_db(size_t buffID ); 00072 void commit_feat_to_db(size_t buffID, const string& feat_data_name); 00073 00074 std::vector<Q_UINT32> last_gap_vec; 00075 00076 }; 00077 00078 00079 #endif //MAL_H_EA 00080 00081 00082 00083 //Should this stuff be private?? 00084 /* 00085 void delete_seq(size_t ID); 00086 bool is_deleted( size_t ID ); 00087 */ 00088 00089 00090 //OBSOLETE??? 00091 /* 00092 std::string get_headerQ( size_t ID ); 00093 size_t isPossibleRepeat(size_t ID);//???????????????????? 00094 void mark_possibleRepeat(size_t ID);//?????????????????? 00095 size_t append_seq( char seqName[], char seqHeader[] ); 00096 size_t get_first_revComp_index(); 00097 void set_max_coverage( size_t ID, size_t index, size_t cov ); 00098 size_t get_max_coverage( size_t ID, size_t index ); 00099 void set_pos_non_chimeric( size_t ID, size_t index); 00100 size_t is_chimeric( size_t ID, size_t index ); 00101 void set_beginAnalyzable( const size_t index, const size_t pos ); 00102 size_t get_beginAnalyzable( const size_t index ); 00103 void set_endAnalyzable( const size_t index, const size_t pos ); 00104 size_t get_endAnalyzable( const size_t index ); 00105 size_t get_number_seqs_in_file(const std::string fileName); 00106 size_t get_number_seqs_in_DATA_file(const std::string fileName); 00107 void set_qualBegin( const size_t index, const size_t pos ); 00108 size_t get_qualBegin( const size_t index ); 00109 void set_qualEnd( const size_t index, const size_t pos ); 00110 size_t get_qualEnd( const size_t index ); 00111 size_t is_quality( size_t index ); 00112 void mark_is_quality(size_t id); 00113 size_t seq_size( size_t ID ); 00114 size_t different_strands(size_t ID1, size_t ID2); 00115 size_t qual_size( size_t ID ); 00116 char get_comp_base(char base); 00117 size_t get_ID_in_revComp_counterpart(size_t ID); 00118 size_t get_index_in_revComp_counterpart(size_t ID, size_t index); 00119 char get_DNP(size_t ID, size_t index); 00120 void set_DNP(size_t ID, size_t index, char base, size_t unique); 00121 void set_templ_DNP(size_t ID, size_t index); 00122 void set_templ_DNP_pos(size_t ID, size_t index, size_t pos); 00123 size_t is_templ_DNP(size_t ID, size_t index); 00124 size_t get_templ_DNP_pos(size_t ID, size_t index); 00125 void set_DNP_ncorr(size_t ID, size_t index, size_t ncorr); 00126 size_t get_DNP_ncorr(size_t ID, size_t index); 00127 void set_DNP_p(size_t ID, size_t index, double p); 00128 double get_DNP_p(size_t ID, size_t index); 00129 void set_DNP_against_insert(size_t ID, size_t index, char base, size_t unique); 00130 void set_DNP_against_deletion(size_t ID, size_t index, size_t unique, size_t unset_DNP); 00131 char get_DNP_against_insert(size_t ID, size_t index); 00132 char get_DNP_against_deletion(size_t ID, size_t index); 00133 size_t get_DNP_type(size_t ID, size_t index); 00134 size_t get_DNP_type_against_insert(size_t ID, size_t index); 00135 size_t get_DNP_type_against_deletion(size_t ID, size_t index); 00136 size_t DNP_mismatch(size_t ID, size_t index, char base); 00137 size_t DNP_mismatch_against_insert(size_t ID, size_t index, char base); 00138 size_t DNP_mismatch_against_deletion(size_t ID, size_t index); 00139 */