| 1 | // ================================================================ // |
|---|
| 2 | // // |
|---|
| 3 | // File : MP_main.cxx // |
|---|
| 4 | // Purpose : // |
|---|
| 5 | // // |
|---|
| 6 | // Institute of Microbiology (Technical University Munich) // |
|---|
| 7 | // http://www.arb-home.de/ // |
|---|
| 8 | // // |
|---|
| 9 | // ================================================================ // |
|---|
| 10 | |
|---|
| 11 | #include <multi_probe.hxx> |
|---|
| 12 | |
|---|
| 13 | #include "MP_probe.hxx" |
|---|
| 14 | #include "MultiProbe.hxx" |
|---|
| 15 | #include "mp_proto.hxx" |
|---|
| 16 | |
|---|
| 17 | #include <TreeDisplay.hxx> |
|---|
| 18 | |
|---|
| 19 | #include <aw_root.hxx> |
|---|
| 20 | #include <aw_awar_defs.hxx> |
|---|
| 21 | #include <awt_canvas.hxx> |
|---|
| 22 | |
|---|
| 23 | awar_vars mp_gl_awars; |
|---|
| 24 | MP_Main *mp_main = NULp; |
|---|
| 25 | char MP_probe_tab[256]; // zum checken, ob ein eingegebener Sondenstring ok ist |
|---|
| 26 | int remembered_mismatches; |
|---|
| 27 | int anz_elem_marked = 0; |
|---|
| 28 | int anz_elem_unmarked = 0; |
|---|
| 29 | bool pt_server_different = false; |
|---|
| 30 | |
|---|
| 31 | MP_Main::MP_Main(AW_root *awr, TREE_canvas *canvas) { |
|---|
| 32 | aw_root = awr; |
|---|
| 33 | scr = canvas; |
|---|
| 34 | stc = NULp; |
|---|
| 35 | create_awars(); |
|---|
| 36 | mp_window = new MP_Window(aw_root, canvas->gb_main); |
|---|
| 37 | p_eval = NULp; |
|---|
| 38 | } |
|---|
| 39 | |
|---|
| 40 | MP_Main::~MP_Main() { |
|---|
| 41 | aw_root->awar_int(MP_AWAR_QUALITY)->remove_callback(MP_gen_quality); |
|---|
| 42 | aw_root->awar_int(MP_AWAR_SINGLEMISMATCHES)->remove_callback(MP_gen_singleprobe); |
|---|
| 43 | aw_root->awar_int(MP_AWAR_MISMATCHES)->remove_callback(MP_modify_selected); |
|---|
| 44 | |
|---|
| 45 | delete p_eval; |
|---|
| 46 | delete stc; |
|---|
| 47 | delete mp_window; |
|---|
| 48 | |
|---|
| 49 | new_pt_server = true; |
|---|
| 50 | } |
|---|
| 51 | |
|---|
| 52 | void MP_Main::destroy_probe_eval() { |
|---|
| 53 | delete p_eval; |
|---|
| 54 | p_eval = NULp; |
|---|
| 55 | } |
|---|
| 56 | |
|---|
| 57 | ProbeValuation *MP_Main::new_probe_eval(char **field, int size, int *array, int *single_mismatch) { |
|---|
| 58 | p_eval = new ProbeValuation(field, size, array, single_mismatch); |
|---|
| 59 | p_eval->set_act_gen(new Generation(p_eval->get_max_init_for_gen(), 1)); // erste Generation = Ausgangspopulation |
|---|
| 60 | return p_eval; |
|---|
| 61 | } |
|---|
| 62 | |
|---|
| 63 | void MP_Main::create_awars() { |
|---|
| 64 | aw_root->awar_string(MP_AWAR_SEQIN); |
|---|
| 65 | aw_root->awar_string(MP_AWAR_SELECTEDPROBES)->add_target_var(& mp_gl_awars.selected_probes); |
|---|
| 66 | aw_root->awar_string(MP_AWAR_PROBELIST)->add_target_var(& mp_gl_awars.probelist); |
|---|
| 67 | aw_root->awar_int(MP_AWAR_WEIGHTEDMISMATCHES)->add_target_var(& mp_gl_awars.weightedmismatches)->write_int(2); |
|---|
| 68 | aw_root->awar_int(MP_AWAR_COMPLEMENT, 1)->add_target_var(& mp_gl_awars.complement); |
|---|
| 69 | aw_root->awar_int(MP_AWAR_MISMATCHES)->add_target_var(& mp_gl_awars.no_of_mismatches)->add_callback(MP_modify_selected); |
|---|
| 70 | remembered_mismatches = 0; // derselbe initiale Wert wie mp_gl_awars.no_of_mismatches |
|---|
| 71 | aw_root->awar_int(MP_AWAR_PTSERVER)->add_target_var(& mp_gl_awars.ptserver); |
|---|
| 72 | aw_root->awar_string(MP_AWAR_RESULTPROBES)->add_target_var(& mp_gl_awars.result_probes); |
|---|
| 73 | aw_root->awar_string(MP_AWAR_RESULTPROBESCOMMENT)->add_target_var(& mp_gl_awars.result_probes_comment); |
|---|
| 74 | aw_root->awar_int(MP_AWAR_NOOFPROBES)->add_target_var(& mp_gl_awars.no_of_probes)->write_int(3); |
|---|
| 75 | aw_root->awar_int(MP_AWAR_QUALITY)->add_target_var(& mp_gl_awars.probe_quality)->add_callback(MP_gen_quality)->write_int(QUALITYDEFAULT); |
|---|
| 76 | aw_root->awar_int(MP_AWAR_SINGLEMISMATCHES)->add_target_var(& mp_gl_awars.singlemismatches)->add_callback(MP_gen_singleprobe); |
|---|
| 77 | aw_root->awar_float(MP_AWAR_OUTSIDEMISMATCHES)->add_target_var(& mp_gl_awars.outside_mismatches_difference)->write_float(1.0); |
|---|
| 78 | aw_root->awar_int(MP_AWAR_QUALITYBORDER1)->add_target_var(& mp_gl_awars.qualityborder_best)->write_int(5); |
|---|
| 79 | |
|---|
| 80 | aw_root->awar_int(MP_AWAR_EMPHASIS)->add_target_var(& mp_gl_awars.emphasis)->write_int(0); |
|---|
| 81 | aw_root->awar_float(MP_AWAR_GREYZONE)->add_target_var(& mp_gl_awars.greyzone)->write_float(0.0); |
|---|
| 82 | aw_root->awar_int(MP_AWAR_ECOLIPOS)->add_target_var(& mp_gl_awars.ecolipos)->write_int(0); |
|---|
| 83 | |
|---|
| 84 | aw_root->awar_int(MP_AWAR_AUTOADVANCE, 1); |
|---|
| 85 | } |
|---|
| 86 | |
|---|
| 87 | |
|---|
| 88 | static void create_tables() { |
|---|
| 89 | int i; |
|---|
| 90 | |
|---|
| 91 | // probe_tab |
|---|
| 92 | for (i=0; i<256; i++) |
|---|
| 93 | MP_probe_tab[i] = false; |
|---|
| 94 | |
|---|
| 95 | const unsigned char *true_chars = (const unsigned char *)"atgucnATGUCN"; |
|---|
| 96 | for (i = 0; true_chars[i]; ++i) { |
|---|
| 97 | MP_probe_tab[true_chars[i]] = true; |
|---|
| 98 | } |
|---|
| 99 | } |
|---|
| 100 | |
|---|
| 101 | AW_window *create_multiprobe_window(AW_root *root, TREE_canvas *canvas) { |
|---|
| 102 | if (!mp_main) { |
|---|
| 103 | create_tables(); |
|---|
| 104 | mp_main = new MP_Main(root, canvas); |
|---|
| 105 | } |
|---|
| 106 | |
|---|
| 107 | AW_window *aw = mp_main->get_mp_window()->get_window(); |
|---|
| 108 | aw->show(); |
|---|
| 109 | |
|---|
| 110 | return aw; |
|---|
| 111 | } |
|---|
| 112 | |
|---|