ARB
ED4_main.cxx
Go to the documentation of this file.
1 // ============================================================= //
2 // //
3 // File : ED4_main.cxx //
4 // Purpose : //
5 // //
6 // Institute of Microbiology (Technical University Munich) //
7 // http://www.arb-home.de/ //
8 // //
9 // ============================================================= //
10 
11 
12 #include "ed4_class.hxx"
13 #include "ed4_awars.hxx"
14 #include "ed4_edit_string.hxx"
15 #include "ed4_nds.hxx"
16 #include "ed4_visualizeSAI.hxx"
17 #include "ed4_ProteinViewer.hxx"
19 #include "ed4_dots.hxx"
20 #include "ed4_naligner.hxx"
21 #include "ed4_seq_colors.hxx"
22 #include "graph_aligner_gui.hxx"
23 #include <ed4_extern.hxx>
24 
25 #include <st_window.hxx>
26 #include <gde.hxx>
27 #include <AW_helix.hxx>
28 #include <AP_pro_a_nucs.hxx>
29 #include <ad_config.h>
30 #include <awt_map_key.hxx>
31 #include <awt.hxx>
32 
33 #include <aw_preset.hxx>
34 #include <aw_awars.hxx>
35 #include <aw_msg.hxx>
36 #include <aw_root.hxx>
37 #include <aw_advice.hxx>
38 
39 #include <arbdbt.h>
40 
41 #include <arb_defs.h>
42 #include <arb_global_defs.h>
43 #include <macros.hxx>
44 #include <aw_question.hxx>
45 
47 
49 
51 
54 
55 int MAXSEQUENCECHARACTERLENGTH; // greatest # of characters in a sequence string terminal
59 
60 long ED4_counter = 0;
61 
62 size_t not_found_counter; // nr of species which haven't been found
64 
65 long max_seq_terminal_length; // global maximum of sequence terminal length
68 bool DRAW;
69 
70 inline void replaceChars(char *s, char o, char n) {
71  while (1) {
72  char c = *s++;
73  if (!c) {
74  break;
75  }
76  if (c==o) {
77  s[-1] = n;
78  }
79  }
80 }
81 
82 inline void set_and_realloc_gde_array(uchar **&the_names, uchar **&the_sequences, long &allocated, long &numberspecies, long &maxalign,
83  const char *name, int name_len, const char *seq, int seq_len)
84 {
85  if (allocated==numberspecies) {
86  long new_allocated = (allocated*3)/2;
87 
88  ARB_recalloc(the_names, allocated, new_allocated);
89  ARB_recalloc(the_sequences, allocated, new_allocated);
90  allocated = new_allocated;
91  }
92 
93  the_names[numberspecies] = (uchar*)ARB_strndup(name, name_len);
94  the_sequences[numberspecies] = (uchar*)ARB_strndup(seq, seq_len);
95 
96  replaceChars((char*)the_names[numberspecies], ' ', '_');
97 
98  if (seq_len>maxalign) {
99  maxalign = seq_len;
100  }
101 
102  numberspecies++;
103 }
104 
105 static char *add_area_for_gde(ED4_area_manager *area_man, uchar **&the_names, uchar **&the_sequences,
106  long &allocated, long &numberspecies, long &maxalign,
107  int show_sequence, int show_SAI, int show_helix, int show_consensus, int show_remark)
108 {
109  ED4_terminal *terminal = area_man->get_first_terminal();
110  ED4_terminal *last = area_man->get_last_terminal();
111 
112  for (; terminal;) {
113  if (terminal->is_species_name_terminal()) {
114  ED4_species_manager *species_manager = terminal->get_parent(LEV_SPECIES)->to_species_manager();
115  ED4_species_name_terminal *species_name = species_manager->search_spec_child_rek(LEV_SPECIES_NAME)->to_species_name_terminal();
116  int name_len;
117  char *name = species_name->resolve_pointer_to_string_copy(&name_len);
118  ED4_sequence_terminal *sequence_terminal;
119 
120  {
121  ED4_base *sequence_term = species_manager->search_spec_child_rek(LEV_SEQUENCE_STRING);
122  if (!sequence_term) goto end_of_loop;
123  sequence_terminal = sequence_term->to_sequence_terminal();
124  }
125 
126  int show = -1;
127 
128  bool is_consensus = false;
129  bool is_SAI = false;
130 
131  if (sequence_terminal->is_consensus_terminal()) {
132  is_consensus = true;
133  show = show_consensus;
134  }
135  else if (sequence_terminal->is_SAI_terminal()) {
136  is_SAI = true;
137  show = show_SAI;
138  }
139  else {
140  show = show_sequence;
141  }
142 
143  e4_assert(show!=-1);
144 
145  if (show) {
146  int seq_len;
147  char *seq = NULp;
148 
149  if (is_consensus) {
150  ED4_group_manager *group_manager = sequence_terminal->get_parent(LEV_GROUP)->to_group_manager();
151 
152  seq = group_manager->build_consensus_string(&seq_len);
153  e4_assert(seq && strlen(seq) == size_t(seq_len));
154 
155  ED4_group_manager *folded_group_man = sequence_terminal->is_in_folded_group();
156 
157  if (folded_group_man) { // we are in a folded group
158  if (folded_group_man==group_manager) { // we are the consensus of the folded group
159  if (folded_group_man->is_in_folded_group()) { // a folded group inside a folded group -> do not show
160  freenull(seq);
161  }
162  else { // group folded but consensus shown -> add '-' before name
163  char *new_name = ARB_alloc<char>(name_len+2);
164 
165  sprintf(new_name, "-%s", name);
166  freeset(name, new_name);
167  name_len++;
168  }
169  }
170  else { // we are really inside a folded group -> don't show
171  freenull(seq);
172  }
173  }
174  }
175  else { // sequence
176  if (!sequence_terminal->is_in_folded_group()) {
177  seq = sequence_terminal->resolve_pointer_to_string_copy(&seq_len);
178  }
179  }
180 
181  if (seq) {
182  set_and_realloc_gde_array(the_names, the_sequences, allocated, numberspecies, maxalign, name, name_len, seq, seq_len);
183  if (show_helix && !is_SAI && ED4_ROOT->helix->size()) {
184  char *helix = ED4_ROOT->helix->seq_2_helix(seq, '.');
185  set_and_realloc_gde_array(the_names, the_sequences, allocated, numberspecies, maxalign, name, name_len, helix, seq_len);
186  free(helix);
187  }
188  if (show_remark && !is_consensus) {
189  ED4_manager *ms_man = sequence_terminal->get_parent(LEV_MULTI_SEQUENCE);
190  if (ms_man) {
191  ED4_base *remark_name_term = ms_man->search_ID("remark");
192  if (remark_name_term) {
193  ED4_base *remark_term = remark_name_term->get_next_terminal();
194  e4_assert(remark_term);
195 
196  int remark_len;
197  char *remark = remark_term->resolve_pointer_to_string_copy(&remark_len);
198 
199  replaceChars(remark, ' ', '_');
200  set_and_realloc_gde_array(the_names, the_sequences, allocated, numberspecies, maxalign, name, name_len, remark, remark_len);
201  free(remark);
202  }
203  }
204  }
205  free(seq);
206  }
207  }
208  free(name);
209  }
210  end_of_loop :
211  if (terminal==last) break;
212  terminal = terminal->get_next_terminal();
213  }
214 
215  return NULp;
216 }
217 
218 static char *ED4_create_sequences_for_gde(GBDATA **&the_species, uchar **&the_names, uchar **&the_sequences, long &numberspecies, long &maxalign) {
219  int top = ED4_ROOT->aw_root->awar("gde/top_area")->read_int();
220  int tops = ED4_ROOT->aw_root->awar("gde/top_area_sai")->read_int();
221  int toph = ED4_ROOT->aw_root->awar("gde/top_area_helix")->read_int();
222  int topk = ED4_ROOT->aw_root->awar("gde/top_area_kons")->read_int();
223  int topr = ED4_ROOT->aw_root->awar("gde/top_area_remark")->read_int();
224  int middle = ED4_ROOT->aw_root->awar("gde/middle_area")->read_int();
225  int middles = ED4_ROOT->aw_root->awar("gde/middle_area_sai")->read_int();
226  int middleh = ED4_ROOT->aw_root->awar("gde/middle_area_helix")->read_int();
227  int middlek = ED4_ROOT->aw_root->awar("gde/middle_area_kons")->read_int();
228  int middler = ED4_ROOT->aw_root->awar("gde/middle_area_remark")->read_int();
229 
230  numberspecies = 0;
231  maxalign = 0;
232 
233  long allocated = 100;
234  the_species = NULp;
235 
236  ARB_calloc(the_names, allocated);
237  ARB_calloc(the_sequences, allocated);
238 
239  char *err = add_area_for_gde(ED4_ROOT->top_area_man, the_names, the_sequences, allocated, numberspecies, maxalign, top, tops, toph, topk, topr);
240  if (!err) {
241  err = add_area_for_gde(ED4_ROOT->middle_area_man, the_names, the_sequences, allocated, numberspecies, maxalign, middle, middles, middleh, middlek, middler);
242  }
243 
244  if (allocated!=(numberspecies+1)) {
245  ARB_recalloc(the_names, allocated, numberspecies+1);
246  ARB_recalloc(the_sequences, allocated, numberspecies+1);
247  }
248 
249  return err;
250 }
251 
252 void ED4_setup_gaps_and_alitype(const char *gap_chars, GB_alignment_type alitype) {
253  BaseFrequencies::setup(gap_chars, alitype);
254 }
255 
256 static void ED4_gap_chars_changed(AW_root *root) {
257  char *gap_chars = root->awar_string(ED4_AWAR_GAP_CHARS)->read_string();
258  ED4_setup_gaps_and_alitype(gap_chars, ED4_ROOT->alignment_type);
259  free(gap_chars);
260 }
261 
263  for (ED4_window *win = ED4_ROOT->first_window; win; win = win->next) {
264  ED4_LocalWinContext uses(win);
265  cb(win);
266  }
267 }
268 
269 static void redraw_cursor(ED4_window *win) { win->cursor.redraw(); }
270 static void ED4_edit_direction_changed(AW_root * /* awr */) {
272 }
273 
275  // callbacks to main DB awars are bound later
276  // (otherwise its easy to crash the editor by clicking around in ARB_NTREE during editor startup)
277 
281 }
282 
283 static void ed4_create_mainDB_awars(AW_root *root) {
284  // WARNING: do not bind callbacks here -> do it in ed4_bind_mainDB_awar_callbacks()
285 
286  GBDATA *gb_main = ED4_ROOT->get_gb_main();
287 
288  root->awar_int(AWAR_CURSOR_POSITION, info2bio(0), gb_main);
289  root->awar_int(AWAR_CURSOR_POSITION_LOCAL, 0, gb_main);
290  root->awar_int(AWAR_SET_CURSOR_POSITION, 1, gb_main);
291 
293 
294  root->awar_string(AWAR_RANGE, "", gb_main);
295  root->awar_string(AWAR_SPECIES_NAME, "", gb_main);
296  root->awar_string(AWAR_SAI_NAME, "", gb_main);
297  root->awar_string(AWAR_SAI_GLOBAL, "", gb_main);
298 }
299 
300 static void ed4_create_all_awars(AW_root *root, const char *config_name) {
301  // Note: cursor awars are created in window constructor
302 
304 
307 
308 #if defined(DEBUG)
309  AWT_create_db_browser_awars(root, AW_ROOT_DEFAULT);
310 #endif // DEBUG
311 
314 
316 
317  int def_sec_level = 0;
318 #ifdef DEBUG
319  def_sec_level = 6; // don't nag developers
320 #endif
321  root->awar_int(AWAR_EDIT_SECURITY_LEVEL, def_sec_level, AW_ROOT_DEFAULT);
322 
325 
328 
330  root->awar_int(AWAR_EDIT_TITLE_MODE, 0);
331 
332  root->awar_int(AWAR_EDIT_HELIX_SPACING, 0) ->set_minmax(-30, 30) ->add_target_var(&ED4_ROOT->helix_add_spacing) ->add_callback(makeRootCallback(ED4_request_relayout));
334 
335  ed4_changesecurity(root);
336 
341 
345 
347  ED4_create_NDS_awars(root);
348 
351 
355 
357 
359  ED4_gap_chars_changed(root);
361 
362  GBDATA *gb_main = ED4_ROOT->get_gb_main();
363  {
364  GB_ERROR gde_err = GDE_init(ED4_ROOT->aw_root, ED4_ROOT->props_db, gb_main, ED4_create_sequences_for_gde, NULp, GDE_WINDOWTYPE_EDIT4);
365  if (gde_err) GBK_terminatef("Fatal error: %s", gde_err);
366  }
367 
373 
376 
377  // Create Awars To Be Used In Protein Viewer
378  if (ED4_ROOT->alignment_type == GB_AT_DNA) {
380  }
381 
382  // create awars to be used for protein secondary structure match
383  if (ED4_ROOT->alignment_type == GB_AT_AA) {
384  root->awar_int(PFOLD_AWAR_ENABLE, 1);
385  root->awar_string(PFOLD_AWAR_SELECTED_SAI, "PFOLD");
387  int pt;
388  char awar[256];
389  for (int i = 0; pfold_match_type_awars[i].name; i++) {
392  sprintf(awar, PFOLD_AWAR_PAIR_TEMPLATE, pfold_match_type_awars[i].name);
393  root->awar_string(awar, pfold_pairs[pt])->add_target_var(&pfold_pairs[pt]);
394  sprintf(awar, PFOLD_AWAR_SYMBOL_TEMPLATE, pfold_match_type_awars[i].name);
396  }
398  root->awar_string(PFOLD_AWAR_SAI_FILTER, "pfold");
399  }
400 
402  if (error) aw_message(error);
403 }
404 
405 static void ED4_postcbcb(AW_window *aww) {
406  ED4_ROOT->announce_useraction_in(aww);
408 }
409 static void seq_colors_changed_cb() {
411 }
412 
413 int ARB_main(int argc, char *argv[]) {
414  const char *data_path = ":";
415  char *config_name = NULp;
416 
417  if (argc > 1 && ((strcmp(argv[1], "-h") == 0) || (strcmp(argv[1], "--help") == 0))) {
418  fprintf(stderr,
419  "Usage: arb_edit4 [options] database\n"
420  " database name of database or ':' to connect to arb-database-server\n"
421  "\n"
422  " options:\n"
423  " -c config loads configuration 'config' (default: '" DEFAULT_CONFIGURATION "')\n"
424  );
425  return EXIT_SUCCESS;
426  }
427 
428  if (argc > 1 && strcmp(argv[1], "-c") == 0) {
429  config_name = new char[strlen(argv[2])+1];
430  strcpy(config_name, argv[2]);
431  argc -= 2; argv += 2;
432  }
433  else { // load default configuration if no command line is given
434  config_name = ARB_strdup(DEFAULT_CONFIGURATION);
435  printf("Using '%s'\n", DEFAULT_CONFIGURATION);
436  }
437 
438  if (argc>1) {
439  data_path = argv[1];
440  argc--; argv++;
441  }
442 
443  aw_initstatus();
444 
445  GB_shell shell;
447  GBDATA *gb_main = GB_open(data_path, "rwt");
448 
449  if (!gb_main) {
450  error = GB_await_error();
451  }
452  else {
453 #if defined(DEBUG)
454  AWT_announce_db_to_browser(gb_main, GBS_global_string("ARB database (%s)", data_path));
455 #endif // DEBUG
456 
457  ED4_ROOT = new ED4_root(gb_main);
458 
459  error = configure_macro_recording(ED4_ROOT->aw_root, "ARB_EDIT4", gb_main);
460  if (!error) error = ED4_ROOT->init_alignment();
461  if (!error) {
462  ed4_create_all_awars(ED4_ROOT->aw_root, config_name);
463 
464  ED4_ROOT->st_ml = STAT_create_ST_ML(gb_main);
466 
467  ED4_ROOT->edk = new ed_key;
468  ED4_ROOT->edk->create_awars(ED4_ROOT->aw_root);
469 
470  ED4_ROOT->helix = new AW_helix(ED4_ROOT->aw_root);
471 
472  {
474  switch (ED4_ROOT->alignment_type) {
475  case GB_AT_RNA:
476  case GB_AT_DNA:
477  warning = ED4_ROOT->helix->init(gb_main);
478  break;
479 
480  case GB_AT_AA:
481  warning = ED4_pfold_set_SAI(&ED4_ROOT->protstruct, gb_main, ED4_ROOT->get_alignment_name(), &ED4_ROOT->protstruct_len);
482  break;
483 
484  default:
485  e4_assert(0);
486  break;
487  }
488 
489  if (warning) aw_message(warning); // write to console
490  ED4_ROOT->create_first_window();
491  if (warning) { aw_message(warning); warning = NULp; } // write again to status window
492  }
493 
495  {
496  bool found_config = false;
497  ED4_LocalWinContext uses(ED4_ROOT->first_window);
498 
499  if (config_name) {
500  GB_transaction ta(gb_main);
501  GB_ERROR cfg_error;
502  GBT_config cfg(gb_main, config_name, cfg_error);
503 
504  if (cfg.exists()) {
505  ED4_ROOT->create_hierarchy(cfg.get_definition(GBT_config::MIDDLE_AREA), cfg.get_definition(GBT_config::TOP_AREA)); // create internal hierarchy
506  found_config = true;
507  }
508  else {
509  aw_message(GBS_global_string("Could not find configuration '%s'", config_name));
510  }
511  }
512 
513  if (!found_config) {
514  aw_popup_ok("The editor needs a configuration stored in database.\n"
515  "Cannot continue and will terminate now.");
516  ED4_exit();
517  }
518  }
519 
520  // now bind DB depending callbacks
522 
523  // Create Additional sequence (aminoacid) terminals to be used in Protein Viewer
524  if (ED4_ROOT->alignment_type == GB_AT_DNA) {
525  PV_CallBackFunction(ED4_ROOT->aw_root);
526  }
527 
530  e4_assert(!ED4_WinContext::have_context()); // no global context shall be active
531  ED4_ROOT->aw_root->main_loop(); // enter main-loop
532  }
533 
535  GB_close(gb_main);
536  }
537 
538  bool have_aw_root = ED4_ROOT && ED4_ROOT->aw_root;
539  if (error) {
540  if (have_aw_root) aw_popup_ok(error.deliver());
541  else fprintf(stderr, "arb_edit4: Error: %s\n", error.deliver());
542  }
543  if (have_aw_root) delete ED4_ROOT->aw_root;
544 
545  return EXIT_SUCCESS;
546 }
547 
void ED4_selected_species_changed_cb(AW_root *aw_root)
Definition: ED4_cursor.cxx:499
static bool have_context()
Definition: ed4_class.hxx:1393
#define ED4_AWAR_SCROLL_SPEED_Y
Definition: ed4_awars.hxx:32
int MAXINFO_WIDTH
Definition: ED4_main.cxx:57
const char * GB_ERROR
Definition: arb_core.h:25
GBDATA * GB_open(const char *path, const char *opent)
Definition: ad_load.cxx:1363
#define PFOLD_PAIRS
void ED4_create_NDS_awars(AW_root *root)
Definition: ED4_nds.cxx:55
AW_helix * helix
Definition: ed4_class.hxx:1445
ED4_EDITMODE
Definition: ed4_defs.hxx:30
#define ED4_AWAR_ANNOUNCE_CHECKSUM_CHANGES
Definition: ed4_awars.hxx:36
#define AWAR_EDIT_SECURITY_LEVEL
Definition: ed4_defs.hxx:92
#define AWAR_EDIT_TITLE_MODE
Definition: ed4_defs.hxx:105
#define ED4_AWAR_COMPRESS_SEQUENCE_GAPS
Definition: ed4_awars.hxx:23
__ATTR__USERESULT_TODO GB_ERROR ARB_init_global_awars(AW_root *aw_root, AW_default aw_def, GBDATA *gb_main)
Definition: aw_root.hxx:198
static void ED4_gap_chars_changed(AW_root *root)
Definition: ED4_main.cxx:256
ED4_EDITMODE awar_edit_mode
Definition: ED4_main.cxx:66
#define ED4_AWAR_CREATE_FROM_CONS_REPL_EQUAL
Definition: ed4_awars.hxx:55
ED4_area_manager * top_area_man
Definition: ed4_class.hxx:1431
#define ED4_AWAR_REP_REPLACE_PATTERN
Definition: ed4_awars.hxx:64
virtual char * resolve_pointer_to_string_copy(int *str_len=NULp) const
Definition: ED4_base.cxx:230
static void ed4_create_mainDB_awars(AW_root *root)
Definition: ED4_main.cxx:283
ED4_terminal * get_first_terminal(int start_index=0) const
bool is_SAI_terminal() const
Definition: ed4_class.hxx:1849
ED4_group_manager * is_in_folded_group() const
Definition: ED4_base.cxx:20
static const int MIDDLE_AREA
Definition: ad_config.h:49
#define PFOLD_AWAR_SAI_FILTER
Filter SAIs for given criteria (string); used in option menu for SAI selection.
#define ED4_AWAR_FAST_CURSOR_JUMP
Definition: ed4_awars.hxx:28
#define AWAR_CURSOR_POSITION
bool DRAW
Definition: ED4_main.cxx:68
size_t not_found_counter
Definition: ED4_main.cxx:62
void redraw()
Definition: ed4_class.hxx:654
void aw_initstatus()
Definition: AW_status.cxx:966
ED4_area_manager * middle_area_man
Definition: ed4_class.hxx:1430
void ED4_create_search_awars(AW_root *root)
Definition: ED4_search.cxx:735
void ED4_request_relayout()
#define ED4_AWAR_SCROLL_SPEED_X
Definition: ed4_awars.hxx:31
char * ARB_strdup(const char *str)
Definition: arb_string.h:27
long read_int() const
Definition: AW_awar.cxx:184
#define AWAR_EDIT_SECURITY_LEVEL_ALIGN
Definition: ed4_defs.hxx:93
#define AWAR_INSERT_MODE
Definition: ed4_defs.hxx:91
void ED4_create_consensus_awars(AW_root *aw_root)
AW_awar * set_minmax(float min, float max)
Definition: AW_awar.cxx:530
#define ED4_AWAR_COMPRESS_SEQUENCE_TYPE
Definition: ed4_awars.hxx:22
static const int TOP_AREA
Definition: ad_config.h:48
ed_key * edk
Definition: ed4_class.hxx:1451
const char * GBS_global_string(const char *templat,...)
Definition: arb_msg.cxx:203
void warning(int warning_num, const char *warning_message)
Definition: util.cxx:61
void PV_CallBackFunction(AW_root *root)
#define PFOLD_AWAR_SYMBOL_TEMPLATE_2
Symbols for the match quality as used for match method SECSTRUCT_SEQUENCE.
#define AWAR_EDIT_SECURITY_LEVEL_CHANGE
Definition: ed4_defs.hxx:94
static void redraw_cursor(ED4_window *win)
Definition: ED4_main.cxx:269
void ED4_trigger_instant_refresh()
void GBK_terminatef(const char *templat,...)
Definition: arb_msg.cxx:523
ED4_base * search_ID(const char *id) FINAL_OVERRIDE
static void ed4_create_all_awars(AW_root *root, const char *config_name)
Definition: ED4_main.cxx:300
char * pfold_pair_chars[PFOLD_PAIRS]
Symbols for the match quality (defined by PFOLD_MATCH_TYPE) as used for match methods SECSTRUCT_SECST...
#define EXIT_SUCCESS
Definition: arb_a2ps.c:154
Compare an amino acid sequence with a reference protein secondary structure.
void ED4_selected_SAI_changed_cb(AW_root *aw_root)
Definition: ED4_cursor.cxx:484
static void init_object_specs()
Definition: ED4_objspec.cxx:98
__ATTR__USERESULT GB_ERROR configure_macro_recording(AW_root *aw_root, const char *client_id, GBDATA *gb_main)
Definition: trackers.cxx:454
name_value_pair pfold_match_type_awars[]
Awars for the match type; binds the PFOLD_MATCH_TYPE to the corresponding awar name.
char * protstruct
Definition: ed4_class.hxx:1449
char * pfold_pairs[PFOLD_PAIRS]
Match pair definition (see PFOLD_MATCH_TYPE) as used for match methods SECSTRUCT_SECSTRUCT and SECSTR...
FILE * seq
Definition: rns.c:46
#define cb(action)
static char * add_area_for_gde(ED4_area_manager *area_man, uchar **&the_names, uchar **&the_sequences, long &allocated, long &numberspecies, long &maxalign, int show_sequence, int show_SAI, int show_helix, int show_consensus, int show_remark)
Definition: ED4_main.cxx:105
#define AWAR_EDIT_RIGHTWARD
Definition: ed4_extern.hxx:76
#define DEFAULT_CONFIGURATION
Definition: ad_config.h:30
#define e4_assert(bed)
Definition: ed4_class.hxx:14
#define NO_FIELD_SELECTED
void ED4_create_dot_missing_bases_awars(AW_root *aw_root, AW_default aw_def)
Definition: ED4_dots.cxx:220
AW_awar * add_callback(const RootCallback &cb)
Definition: AW_awar.cxx:231
GB_ERROR GDE_init(AW_root *aw_root, AW_default aw_def, GBDATA *gb_main, GDE_get_sequences_cb get_sequences, GDE_format_alignment_cb format_ali, gde_window_type window_type)
Definition: GDE.cxx:489
#define PFOLD_AWAR_MATCH_METHOD
Selected method for computing the match quality (see PFOLD_MATCH_METHOD).
void ed4_change_edit_mode(AW_root *root)
#define ED4_AWAR_CREATE_FROM_CONS_ALL_UPPER
Definition: ed4_awars.hxx:58
ST_ML * STAT_create_ST_ML(GBDATA *gb_main)
Definition: ST_window.cxx:110
char * build_consensus_string(PosRange range) const
Definition: ed4_class.hxx:1655
GB_ERROR GB_await_error()
Definition: arb_msg.cxx:342
long helix_add_spacing
Definition: ed4_class.hxx:1447
static void setup(const char *gap_chars, GB_alignment_type ali_type_)
Definition: chartable.cxx:604
#define ED4_AWAR_CURSOR_TYPE
Definition: ed4_awars.hxx:29
bool exists() const
Definition: ad_config.h:51
void set_and_realloc_gde_array(uchar **&the_names, uchar **&the_sequences, long &allocated, long &numberspecies, long &maxalign, const char *name, int name_len, const char *seq, int seq_len)
Definition: ED4_main.cxx:82
#define ED4_AWAR_CREATE_FROM_CONS_DATA_SOURCE
Definition: ed4_awars.hxx:59
AW_HEADER_MAIN ED4_root * ED4_ROOT
Definition: ED4_main.cxx:48
GB_ERROR deliver() const
Definition: arb_error.h:116
void ED4_compression_toggle_changed_cb(AW_root *root, bool hideChanged)
#define ED4_AWAR_SPECIES_TO_CREATE
Definition: ed4_awars.hxx:206
GB_ERROR ED4_pfold_set_SAI(char **protstruct, GBDATA *gb_main, const char *alignment_name, long *protstruct_len)
Sets the reference protein secondary structure SAI.
void create_awars(AW_root *root)
Definition: AWT_map_key.cxx:59
#define AWAR_SAI_GLOBAL
long ED4_counter
Definition: ED4_main.cxx:60
#define PFOLD_AWAR_SYMBOL_TEMPLATE
Symbols for the match quality as used for match methods SECSTRUCT_SECSTRUCT and SECSTRUCT_SEQUENCE_PR...
void aw_popup_ok(const char *msg)
GBDATA * get_gb_main() const
Definition: ed4_class.hxx:1422
void ED4_with_all_edit_windows(void(*cb)(ED4_window *))
Definition: ED4_main.cxx:262
ED4_terminal * get_last_terminal(int start_index=-1) const
#define AWAR_FIELD_CHOSEN
Definition: ed4_defs.hxx:103
int SEQ_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:53
#define AWAR_EDIT_HELIX_SPACING
Definition: ed4_defs.hxx:106
ED4_window * first_window
Definition: ed4_class.hxx:1428
static void ED4_postcbcb(AW_window *aww)
Definition: ED4_main.cxx:405
ED4_terminal * get_next_terminal()
Definition: ED4_base.cxx:454
static void error(const char *msg)
Definition: mkptypes.cxx:96
void create_naligner_variables(AW_root *root, AW_default db1)
ED4_cursor cursor
Definition: ed4_class.hxx:722
int FLAG_WIDTH
Definition: ED4_main.cxx:58
#define ED4_AWAR_DIGITS_AS_REPEAT
Definition: ed4_awars.hxx:27
void ED4_createVisualizeSAI_Awars(AW_root *aw_root, AW_default aw_def)
#define ED4_AWAR_COMPRESS_SEQUENCE_PERCENT
Definition: ed4_awars.hxx:25
ASSERTING_CONSTEXPR_INLINE int info2bio(int infopos)
Definition: arb_defs.h:27
void replaceChars(char *s, char o, char n)
Definition: ED4_main.cxx:70
GBS_strstruct * not_found_message
Definition: ED4_main.cxx:63
void announce_useraction_in(AW_window *aww)
Definition: ED4_root.cxx:372
size_t size() const
Definition: BI_helix.hxx:89
#define AWAR_SPECIES_NAME
#define AWAR_SET_CURSOR_POSITION
#define AWAR_SAI_NAME
void ARB_recalloc(TYPE *&tgt, size_t oelem, size_t nelem)
Definition: arb_mem.h:49
void PV_CreateAwars(AW_root *root, AW_default aw_def)
#define PFOLD_AWAR_PAIR_TEMPLATE
Structure pairs that define the match quality (see pfold_pairs) as used for match methods SECSTRUCT_S...
#define PFOLD_PAIR_CHARS_2
Symbols for the match quality as used for match method SECSTRUCT_SEQUENCE in ED4_pfold_calculate_secs...
char * read_string() const
Definition: AW_awar.cxx:198
static void seq_colors_changed_cb()
Definition: ED4_main.cxx:409
const char * name
Name or description.
void ed4_changesecurity(AW_root *root)
AW_awar * awar(const char *awar)
Definition: AW_root.cxx:554
long awar_edit_rightward
Definition: ED4_main.cxx:67
void ED4_exit() __ATTR__NORETURN
GB_alignment_type alignment_type
Definition: ed4_class.hxx:1440
void ED4_compression_changed_cb(AW_root *awr)
GB_alignment_type
Definition: arbdb_base.h:61
char * seq_2_helix(char *sequence, char undefsymbol= ' ')
Definition: AW_helix.cxx:92
#define AW_HEADER_MAIN
Definition: aw_window.hxx:36
void main_loop()
Definition: AW_root.cxx:625
bool is_consensus_terminal() const
Definition: ed4_class.hxx:1848
static void ED4_edit_direction_changed(AW_root *)
Definition: ED4_main.cxx:270
ED4_base * search_spec_child_rek(ED4_level level)
Definition: ED4_base.cxx:434
AW_awar * awar_int(const char *var_name, long default_value=0, AW_default default_file=AW_ROOT_DEFAULT)
Definition: AW_root.cxx:580
const char * anyGapChars()
long protstruct_len
Definition: ed4_class.hxx:1450
#define AWAR_EDIT_MODE
Definition: ed4_defs.hxx:90
TYPE * ARB_calloc(size_t nelem)
Definition: arb_mem.h:81
#define ED4_AWAR_CREATE_FROM_CONS_CREATE_POINTS
Definition: ed4_awars.hxx:57
#define ED4_AWAR_CREATE_FROM_CONS_REPL_POINT
Definition: ed4_awars.hxx:56
static char * ED4_create_sequences_for_gde(GBDATA **&the_species, uchar **&the_names, uchar **&the_sequences, long &numberspecies, long &maxalign)
Definition: ED4_main.cxx:218
#define PFOLD_AWAR_ENABLE
Enable structure match.
AW_awar * add_target_var(char **ppchr)
Definition: AW_awar.cxx:236
char * ARB_strndup(const char *start, int len)
Definition: arb_string.h:83
long terminal_add_spacing
Definition: ed4_class.hxx:1448
#define ED4_AWAR_SCROLL_MARGIN
Definition: ed4_awars.hxx:33
int ARB_main(int argc, char *argv[])
Definition: ED4_main.cxx:413
#define ED4_AWAR_COMPRESS_SEQUENCE_HIDE
Definition: ed4_awars.hxx:24
int value
Value attached to name.
void ED4_setup_gaps_and_alitype(const char *gap_chars, GB_alignment_type alitype)
Definition: ED4_main.cxx:252
const char * get_alignment_name() const
Definition: ed4_class.hxx:1458
int INFO_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:52
#define AWAR_CURSOR_POSITION_LOCAL
ED4_seq_colors * sequence_colors
Definition: ed4_class.hxx:1442
AW_root * aw_root
Definition: ed4_class.hxx:1425
static void ed4_bind_mainDB_awar_callbacks(AW_root *root)
Definition: ED4_main.cxx:274
#define AWAR_EDIT_TERMINAL_SPACING
Definition: ed4_defs.hxx:107
void aw_message(const char *msg)
Definition: AW_status.cxx:1142
const char * get_definition(int area) const
Definition: ad_config.h:53
int TERMINAL_HEIGHT
Definition: ED4_main.cxx:50
unsigned char uchar
Definition: gde.hxx:21
void ED4_remote_set_cursor_cb(AW_root *awr)
void AWT_install_postcb_cb(AW_postcb_cb postcb_cb)
int MAXSEQUENCECHARACTERLENGTH
Definition: ED4_main.cxx:55
AW_window_simple * win
void shutdown_macro_recording(AW_root *aw_root)
Definition: trackers.cxx:470
#define NULp
Definition: cxxforward.h:114
AW_window * create_first_window()
Definition: ED4_root.cxx:1896
int MAXNAME_WIDTH
Definition: ED4_main.cxx:56
long max_seq_terminal_length
Definition: ED4_main.cxx:65
AW_default props_db
Definition: ed4_class.hxx:1426
void request_refresh_for_sequence_terminals()
Definition: ED4_root.cxx:106
#define ED4_AWAR_GAP_CHARS
Definition: ed4_awars.hxx:35
char * resolve_pointer_to_string_copy(int *str_len=NULp) const FINAL_OVERRIDE
void AWT_install_cb_guards()
GB_transaction ta(gb_var)
ED4_returncode create_hierarchy(const char *area_string_middle, const char *area_string_top)
Definition: ED4_root.cxx:535
GBDATA * gb_main
Definition: adname.cxx:32
AW_awar * awar_string(const char *var_name, const char *default_value="", AW_default default_file=AW_ROOT_DEFAULT)
Definition: AW_root.cxx:570
ARB_ERROR init_alignment()
Definition: ED4_root.cxx:491
#define ED4_AWAR_REP_SEARCH_PATTERN
Definition: ed4_awars.hxx:63
void create_sina_variables(AW_root *root, AW_default db1)
ED4_manager * get_parent(ED4_level lev) const
Definition: ed4_class.hxx:1821
GB_ERROR init(GBDATA *gb_main)
Definition: BI_helix.cxx:306
#define AWAR_EDIT_CONFIGURATION
Definition: ed4_defs.hxx:95
#define AW_ROOT_DEFAULT
Definition: aw_base.hxx:106
#define PFOLD_AWAR_SELECTED_SAI
Selected reference protein secondary structure SAI (i.e. the SAI that is used for structure compariso...
int is_species_name_terminal() const
Definition: ed4_class.hxx:1080
ST_ML * st_ml
Definition: ed4_class.hxx:1444
void GB_close(GBDATA *gbd)
Definition: arbdb.cxx:655
Adds support for protein structure prediction, comparison of two protein secondary structures and of ...
#define AWAR_RANGE
GB_write_int const char s
Definition: AW_awar.cxx:154