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 | |
---|