00001 #ifndef TRAPPERDNP_H
00002 #define TRAPPERDNP_H
00003
00004 #include "MAl_addon.h"
00005 #include <vector>
00006 #include <map>
00007
00008 class DNPclass{
00009
00010 public:
00011 DNPclass( MAl_addon* mal, int minqual, int d_min = 3, double p_max = 0.001 );
00012 ~DNPclass();
00013
00014
00015 private:
00016
00017 MAl_addon* m;
00018 int num_found;
00019 int num_pos;
00020
00021 vector<int> confirmed_DNP_pos;
00022 vector <double> quality2error;
00023
00024 map<char, char> base_trans;
00025
00026 int num_candidates;
00027
00028 int qualmin;
00029 int Dmin;
00030 double p_tot_max;
00031
00032 vector<int> cand_vec;
00033 vector<char> cand_bases;
00034 vector<char> cons_bases;
00035
00036
00037 void look_for_corr(vector<char> &first_col, vector<char> &second_col,
00038 vector<int> &first_qual_col, vector<int> &second_qual_col,
00039 char cand_base_1, char cand_base_2, int &num_err_first, int &num_err_second,
00040 double &exp_err_first, double &exp_err_second, int &num_corr, double &expectation_val);
00041 void find_DNP_candidate_positions();
00042 int column_is_candidate(int col);
00043 void evaluate_DNP_candidate_positions();
00044 void set_DNPs( int col1, int col2,
00045 char DNPbase1, char DNPbase2,
00046 vector<int> &rownum_vec, int ID1, int ID2,
00047 char cons1, char cons2);
00048
00049 double poisson_probability(double lambda, int obs);
00050 int find_DNP_base_candidates(int &a, int &t, int &c, int &g, int &gap,
00051 char seqbase, int &tot_seqbase, int &tot_others);
00052 void pick_base_row_and_qual_columns(int firstDNPindex, int secondDNPindex,
00053 vector<char> &firstDNPvec, vector<char> &secondDNPvec,
00054 vector<int> &first_qual_vec, vector<int> &second_qual_vec,
00055 vector<int> &rownum_vec);
00056
00057 };
00058
00059
00060
00061
00062 #endif//TRAPPERDNP_H