source: branches/species/MULTI_PROBE/MP_main.cxx

Last change on this file was 19613, checked in by westram, 2 months ago
  • reintegrates 'lib' into 'trunk'
    • replace dynamic library AWT by several static libraries: APP, ARB_SPEC, MASKS, CANVAS, MAPKEY, GUI_TK
    • now also check wrong library dependencies for untested units (only4me)
  • adds: log:branches/lib@19578:19612
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 KB
Line 
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
22awar_vars  mp_gl_awars;
23MP_Main   *mp_main             = NULp;
24char       MP_probe_tab[256];                       // zum checken, ob ein eingegebener Sondenstring ok ist
25int        remembered_mismatches;
26int        anz_elem_marked     = 0;
27int        anz_elem_unmarked   = 0;
28bool       pt_server_different = false;
29
30MP_Main::MP_Main(AW_root *awr, TREE_canvas *canvas) {
31    aw_root   = awr;
32    scr       = canvas;
33    stc       = NULp;
34    create_awars();
35    mp_window = new MP_Window(aw_root, canvas->gb_main);
36    p_eval    = NULp;
37}
38
39MP_Main::~MP_Main() {
40    aw_root->awar_int(MP_AWAR_QUALITY)->remove_callback(MP_gen_quality);
41    aw_root->awar_int(MP_AWAR_SINGLEMISMATCHES)->remove_callback(MP_gen_singleprobe);
42    aw_root->awar_int(MP_AWAR_MISMATCHES)->remove_callback(MP_modify_selected);
43
44    delete p_eval;
45    delete stc;
46    delete mp_window;
47
48    new_pt_server = true;
49}
50
51void MP_Main::destroy_probe_eval() {
52    delete p_eval;
53    p_eval = NULp;
54}
55
56ProbeValuation *MP_Main::new_probe_eval(char **field, int size, int *array, int *single_mismatch) {
57    p_eval = new ProbeValuation(field, size, array, single_mismatch);
58    p_eval->set_act_gen(new Generation(p_eval->get_max_init_for_gen(), 1)); // erste Generation = Ausgangspopulation
59    return p_eval;
60}
61
62void MP_Main::create_awars() {
63    aw_root->awar_string(MP_AWAR_SEQIN);
64    aw_root->awar_string(MP_AWAR_SELECTEDPROBES)->add_target_var(& mp_gl_awars.selected_probes);
65    aw_root->awar_string(MP_AWAR_PROBELIST)->add_target_var(& mp_gl_awars.probelist);
66    aw_root->awar_int(MP_AWAR_WEIGHTEDMISMATCHES)->add_target_var(& mp_gl_awars.weightedmismatches)->write_int(2);
67    aw_root->awar_int(MP_AWAR_COMPLEMENT, 1)->add_target_var(& mp_gl_awars.complement);
68    aw_root->awar_int(MP_AWAR_MISMATCHES)->add_target_var(& mp_gl_awars.no_of_mismatches)->add_callback(MP_modify_selected);
69    remembered_mismatches = 0;      // derselbe initiale Wert wie mp_gl_awars.no_of_mismatches
70    aw_root->awar_int(MP_AWAR_PTSERVER)->add_target_var(& mp_gl_awars.ptserver);
71    aw_root->awar_string(MP_AWAR_RESULTPROBES)->add_target_var(& mp_gl_awars.result_probes);
72    aw_root->awar_string(MP_AWAR_RESULTPROBESCOMMENT)->add_target_var(& mp_gl_awars.result_probes_comment);
73    aw_root->awar_int(MP_AWAR_NOOFPROBES)->add_target_var(& mp_gl_awars.no_of_probes)->write_int(3);
74    aw_root->awar_int(MP_AWAR_QUALITY)->add_target_var(& mp_gl_awars.probe_quality)->add_callback(MP_gen_quality)->write_int(QUALITYDEFAULT);
75    aw_root->awar_int(MP_AWAR_SINGLEMISMATCHES)->add_target_var(& mp_gl_awars.singlemismatches)->add_callback(MP_gen_singleprobe);
76    aw_root->awar_float(MP_AWAR_OUTSIDEMISMATCHES)->add_target_var(& mp_gl_awars.outside_mismatches_difference)->write_float(1.0);
77    aw_root->awar_int(MP_AWAR_QUALITYBORDER1)->add_target_var(& mp_gl_awars.qualityborder_best)->write_int(5);
78
79    aw_root->awar_int(MP_AWAR_EMPHASIS)->add_target_var(& mp_gl_awars.emphasis)->write_int(0);
80    aw_root->awar_float(MP_AWAR_GREYZONE)->add_target_var(& mp_gl_awars.greyzone)->write_float(0.0);
81    aw_root->awar_int(MP_AWAR_ECOLIPOS)->add_target_var(& mp_gl_awars.ecolipos)->write_int(0);
82
83    aw_root->awar_int(MP_AWAR_AUTOADVANCE, 1);
84}
85
86
87static void create_tables() {
88    int i;
89
90    // probe_tab
91    for (i=0; i<256; i++)
92        MP_probe_tab[i] = false;
93
94    const unsigned char *true_chars = (const unsigned char *)"atgucnATGUCN";
95    for (i = 0; true_chars[i]; ++i) {
96        MP_probe_tab[true_chars[i]] = true;
97    }
98}
99
100AW_window *create_multiprobe_window(AW_root *root, TREE_canvas *canvas) {
101    if (!mp_main) {
102        create_tables();
103        mp_main = new MP_Main(root, canvas);
104    }
105
106    AW_window *aw = mp_main->get_mp_window()->get_window();
107    aw->show();
108
109    return aw;
110}
111
Note: See TracBrowser for help on using the repository browser.