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_detect_bad_ali.hxx"
21 #include "ed4_naligner.hxx"
22 #include "ed4_seq_colors.hxx"
23 #include "graph_aligner_gui.hxx"
24 #include <ed4_extern.hxx>
25 
26 #include <st_window.hxx>
27 #include <gde.hxx>
28 #include <AW_helix.hxx>
29 #include <AP_pro_a_nucs.hxx>
30 #include <ad_config.h>
31 #include <awt_map_key.hxx>
32 #include <awt.hxx>
33 
34 #include <aw_preset.hxx>
35 #include <aw_awars.hxx>
36 #include <aw_msg.hxx>
37 #include <aw_root.hxx>
38 #include <aw_advice.hxx>
39 
40 #include <arbdbt.h>
41 
42 #include <arb_defs.h>
43 #include <arb_global_defs.h>
44 #include <macros.hxx>
45 #include <aw_question.hxx>
46 
48 
50 
52 
55 
56 int MAXSEQUENCECHARACTERLENGTH; // greatest # of characters in a sequence string terminal
60 
61 long ED4_counter = 0;
62 
63 size_t not_found_counter; // nr of species which haven't been found
65 
66 long max_seq_terminal_length; // global maximum of sequence terminal length
69 bool DRAW;
70 
71 inline void replaceChars(char *s, char o, char n) {
72  while (1) {
73  char c = *s++;
74  if (!c) {
75  break;
76  }
77  if (c==o) {
78  s[-1] = n;
79  }
80  }
81 }
82 
83 inline void set_and_realloc_gde_array(uchar **&the_names, uchar **&the_sequences, long &allocated, long &numberspecies, long &maxalign,
84  const char *name, int name_len, const char *seq, int seq_len)
85 {
86  if (allocated==numberspecies) {
87  long new_allocated = (allocated*3)/2;
88 
89  ARB_recalloc(the_names, allocated, new_allocated);
90  ARB_recalloc(the_sequences, allocated, new_allocated);
91  allocated = new_allocated;
92  }
93 
94  the_names[numberspecies] = (uchar*)ARB_strndup(name, name_len);
95  the_sequences[numberspecies] = (uchar*)ARB_strndup(seq, seq_len);
96 
97  replaceChars((char*)the_names[numberspecies], ' ', '_');
98 
99  if (seq_len>maxalign) {
100  maxalign = seq_len;
101  }
102 
103  numberspecies++;
104 }
105 
106 static char *add_area_for_gde(ED4_area_manager *area_man, uchar **&the_names, uchar **&the_sequences,
107  long &allocated, long &numberspecies, long &maxalign,
108  int show_sequence, int show_SAI, int show_helix, int show_consensus, int show_remark)
109 {
110  ED4_terminal *terminal = area_man->get_first_terminal();
111  ED4_terminal *last = area_man->get_last_terminal();
112 
113  for (; terminal;) {
114  if (terminal->is_species_name_terminal()) {
115  ED4_species_manager *species_manager = terminal->get_parent(LEV_SPECIES)->to_species_manager();
116  ED4_species_name_terminal *species_name = species_manager->search_spec_child_rek(LEV_SPECIES_NAME)->to_species_name_terminal();
117  int name_len;
118  char *name = species_name->resolve_pointer_to_string_copy(&name_len);
119  ED4_sequence_terminal *sequence_terminal;
120 
121  {
122  ED4_base *sequence_term = species_manager->search_spec_child_rek(LEV_SEQUENCE_STRING);
123  if (!sequence_term) goto end_of_loop;
124  sequence_terminal = sequence_term->to_sequence_terminal();
125  }
126 
127  int show = -1;
128 
129  bool is_consensus = false;
130  bool is_SAI = false;
131 
132  if (sequence_terminal->is_consensus_terminal()) {
133  is_consensus = true;
134  show = show_consensus;
135  }
136  else if (sequence_terminal->is_SAI_terminal()) {
137  is_SAI = true;
138  show = show_SAI;
139  }
140  else {
141  show = show_sequence;
142  }
143 
144  e4_assert(show!=-1);
145 
146  if (show) {
147  int seq_len;
148  char *seq = NULp;
149 
150  if (is_consensus) {
151  ED4_group_manager *group_manager = sequence_terminal->get_parent(LEV_GROUP)->to_group_manager();
152 
153  seq = group_manager->build_consensus_string(&seq_len);
154  e4_assert(seq && strlen(seq) == size_t(seq_len));
155 
156  ED4_group_manager *folded_group_man = sequence_terminal->is_in_folded_group();
157 
158  if (folded_group_man) { // we are in a folded group
159  if (folded_group_man==group_manager) { // we are the consensus of the folded group
160  if (folded_group_man->is_in_folded_group()) { // a folded group inside a folded group -> do not show
161  freenull(seq);
162  }
163  else { // group folded but consensus shown -> add '-' before name
164  char *new_name = ARB_alloc<char>(name_len+2);
165 
166  sprintf(new_name, "-%s", name);
167  freeset(name, new_name);
168  name_len++;
169  }
170  }
171  else { // we are really inside a folded group -> don't show
172  freenull(seq);
173  }
174  }
175  }
176  else { // sequence
177  if (!sequence_terminal->is_in_folded_group()) {
178  seq = sequence_terminal->resolve_pointer_to_string_copy(&seq_len);
179  }
180  }
181 
182  if (seq) {
183  set_and_realloc_gde_array(the_names, the_sequences, allocated, numberspecies, maxalign, name, name_len, seq, seq_len);
184  if (show_helix && !is_SAI && ED4_ROOT->helix->size()) {
185  char *helix = ED4_ROOT->helix->seq_2_helix(seq, '.');
186  set_and_realloc_gde_array(the_names, the_sequences, allocated, numberspecies, maxalign, name, name_len, helix, seq_len);
187  free(helix);
188  }
189  if (show_remark && !is_consensus) {
190  ED4_manager *ms_man = sequence_terminal->get_parent(LEV_MULTI_SEQUENCE);
191  if (ms_man) {
192  ED4_base *remark_name_term = ms_man->search_ID("remark");
193  if (remark_name_term) {
194  ED4_base *remark_term = remark_name_term->get_next_terminal();
195  e4_assert(remark_term);
196 
197  int remark_len;
198  char *remark = remark_term->resolve_pointer_to_string_copy(&remark_len);
199 
200  replaceChars(remark, ' ', '_');
201  set_and_realloc_gde_array(the_names, the_sequences, allocated, numberspecies, maxalign, name, name_len, remark, remark_len);
202  free(remark);
203  }
204  }
205  }
206  free(seq);
207  }
208  }
209  free(name);
210  }
211  end_of_loop :
212  if (terminal==last) break;
213  terminal = terminal->get_next_terminal();
214  }
215 
216  return NULp;
217 }
218 
219 static char *ED4_create_sequences_for_gde(GBDATA **&the_species, uchar **&the_names, uchar **&the_sequences, long &numberspecies, long &maxalign) {
220  int top = ED4_ROOT->aw_root->awar("gde/top_area")->read_int();
221  int tops = ED4_ROOT->aw_root->awar("gde/top_area_sai")->read_int();
222  int toph = ED4_ROOT->aw_root->awar("gde/top_area_helix")->read_int();
223  int topk = ED4_ROOT->aw_root->awar("gde/top_area_kons")->read_int();
224  int topr = ED4_ROOT->aw_root->awar("gde/top_area_remark")->read_int();
225  int middle = ED4_ROOT->aw_root->awar("gde/middle_area")->read_int();
226  int middles = ED4_ROOT->aw_root->awar("gde/middle_area_sai")->read_int();
227  int middleh = ED4_ROOT->aw_root->awar("gde/middle_area_helix")->read_int();
228  int middlek = ED4_ROOT->aw_root->awar("gde/middle_area_kons")->read_int();
229  int middler = ED4_ROOT->aw_root->awar("gde/middle_area_remark")->read_int();
230 
231  numberspecies = 0;
232  maxalign = 0;
233 
234  long allocated = 100;
235  the_species = NULp;
236 
237  ARB_calloc(the_names, allocated);
238  ARB_calloc(the_sequences, allocated);
239 
240  char *err = add_area_for_gde(ED4_ROOT->top_area_man, the_names, the_sequences, allocated, numberspecies, maxalign, top, tops, toph, topk, topr);
241  if (!err) {
242  err = add_area_for_gde(ED4_ROOT->middle_area_man, the_names, the_sequences, allocated, numberspecies, maxalign, middle, middles, middleh, middlek, middler);
243  }
244 
245  if (allocated!=(numberspecies+1)) {
246  ARB_recalloc(the_names, allocated, numberspecies+1);
247  ARB_recalloc(the_sequences, allocated, numberspecies+1);
248  }
249 
250  return err;
251 }
252 
253 void ED4_setup_gaps_and_alitype(const char *gap_chars, GB_alignment_type alitype) {
254  BaseFrequencies::setup(gap_chars, alitype);
255 }
256 
257 static void ED4_gap_chars_changed(AW_root *root) {
258  char *gap_chars = root->awar_string(ED4_AWAR_GAP_CHARS)->read_string();
259  ED4_setup_gaps_and_alitype(gap_chars, ED4_ROOT->alignment_type);
260  free(gap_chars);
261 }
262 
264  for (ED4_window *win = ED4_ROOT->first_window; win; win = win->next) {
265  ED4_LocalWinContext uses(win);
266  cb(win);
267  }
268 }
269 
270 static void redraw_cursor(ED4_window *win) { win->cursor.redraw(); }
271 static void ED4_edit_direction_changed(AW_root * /* awr */) {
273 }
274 
276  // callbacks to main DB awars are bound later
277  // (otherwise its easy to crash the editor by clicking around in ARB_NTREE during editor startup)
278 
282 }
283 
284 static void ed4_create_mainDB_awars(AW_root *root) {
285  // WARNING: do not bind callbacks here -> do it in ed4_bind_mainDB_awar_callbacks()
286 
287  GBDATA *gb_main = ED4_ROOT->get_gb_main();
288 
289  root->awar_int(AWAR_CURSOR_POSITION, info2bio(0), gb_main);
290  root->awar_int(AWAR_CURSOR_POSITION_LOCAL, 0, gb_main);
291  root->awar_int(AWAR_SET_CURSOR_POSITION, 1, gb_main);
292 
294 
295  root->awar_string(AWAR_RANGE, "", gb_main);
296  root->awar_string(AWAR_SPECIES_NAME, "", gb_main);
297  root->awar_string(AWAR_SAI_NAME, "", gb_main);
298  root->awar_string(AWAR_SAI_GLOBAL, "", gb_main);
299 }
300 
301 static void ed4_create_all_awars(AW_root *root, const char *config_name) {
302  // Note: cursor awars are created in window constructor
303 
305 
308 
309 #if defined(DEBUG)
310  AWT_create_db_browser_awars(root, AW_ROOT_DEFAULT);
311 #endif // DEBUG
312 
315 
317 
318  int def_sec_level = 0;
319 #ifdef DEBUG
320  def_sec_level = 6; // don't nag developers
321 #endif
322  root->awar_int(AWAR_EDIT_SECURITY_LEVEL, def_sec_level, AW_ROOT_DEFAULT);
323 
326 
329 
331  root->awar_int(AWAR_EDIT_TITLE_MODE, 0);
332 
333  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));
335 
336  ed4_changesecurity(root);
337 
342 
346 
348  ED4_create_NDS_awars(root);
349 
352 
356 
358 
360  ED4_gap_chars_changed(root);
362 
363  GBDATA *gb_main = ED4_ROOT->get_gb_main();
364  {
365  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);
366  if (gde_err) GBK_terminatef("Fatal error: %s", gde_err);
367  }
368 
374 
378 
379  // Create Awars To Be Used In Protein Viewer
380  if (ED4_ROOT->alignment_type == GB_AT_DNA) {
382  }
383 
384  // create awars to be used for protein secondary structure match
385  if (ED4_ROOT->alignment_type == GB_AT_AA) {
386  root->awar_int(PFOLD_AWAR_ENABLE, 1);
387  root->awar_string(PFOLD_AWAR_SELECTED_SAI, "PFOLD");
389  int pt;
390  char awar[256];
391  for (int i = 0; pfold_match_type_awars[i].name; i++) {
394  sprintf(awar, PFOLD_AWAR_PAIR_TEMPLATE, pfold_match_type_awars[i].name);
395  root->awar_string(awar, pfold_pairs[pt])->add_target_var(&pfold_pairs[pt]);
396  sprintf(awar, PFOLD_AWAR_SYMBOL_TEMPLATE, pfold_match_type_awars[i].name);
398  }
400  root->awar_string(PFOLD_AWAR_SAI_FILTER, "pfold");
401  }
402 
404  if (error) aw_message(error);
405 }
406 
407 static void ED4_postcbcb(AW_window *aww) {
408  ED4_ROOT->announce_useraction_in(aww);
410 }
411 static void seq_colors_changed_cb() {
413 }
414 
415 int ARB_main(int argc, char *argv[]) {
416  const char *data_path = ":";
417  char *config_name = NULp;
418 
419  if (argc > 1 && ((strcmp(argv[1], "-h") == 0) || (strcmp(argv[1], "--help") == 0))) {
420  fprintf(stderr,
421  "Usage: arb_edit4 [options] database\n"
422  " database name of database or ':' to connect to arb-database-server\n"
423  "\n"
424  " options:\n"
425  " -c config loads configuration 'config' (default: '" DEFAULT_CONFIGURATION "')\n"
426  );
427  return EXIT_SUCCESS;
428  }
429 
430  if (argc > 1 && strcmp(argv[1], "-c") == 0) {
431  config_name = new char[strlen(argv[2])+1];
432  strcpy(config_name, argv[2]);
433  argc -= 2; argv += 2;
434  }
435  else { // load default configuration if no command line is given
436  config_name = ARB_strdup(DEFAULT_CONFIGURATION);
437  printf("Using '%s'\n", DEFAULT_CONFIGURATION);
438  }
439 
440  if (argc>1) {
441  data_path = argv[1];
442  argc--; argv++;
443  }
444 
445  aw_initstatus();
446 
447  GB_shell shell;
449  GBDATA *gb_main = GB_open(data_path, "rwt");
450 
451  if (!gb_main) {
452  error = GB_await_error();
453  }
454  else {
455 #if defined(DEBUG)
456  AWT_announce_db_to_browser(gb_main, GBS_global_string("ARB database (%s)", data_path));
457 #endif // DEBUG
458 
459  ED4_ROOT = new ED4_root(gb_main);
460 
461  error = configure_macro_recording(ED4_ROOT->aw_root, "ARB_EDIT4", gb_main);
462  if (!error) error = ED4_ROOT->init_alignment();
463  if (!error) {
464  ed4_create_all_awars(ED4_ROOT->aw_root, config_name);
465 
466  ED4_ROOT->st_ml = STAT_create_ST_ML(gb_main);
468 
469  ED4_ROOT->edk = new ed_key;
470  ED4_ROOT->edk->create_awars(ED4_ROOT->aw_root);
471 
472  ED4_ROOT->helix = new AW_helix(ED4_ROOT->aw_root);
473 
474  {
476  switch (ED4_ROOT->alignment_type) {
477  case GB_AT_RNA:
478  case GB_AT_DNA:
479  warning = ED4_ROOT->helix->init(gb_main);
480  break;
481 
482  case GB_AT_AA:
483  warning = ED4_pfold_set_SAI(&ED4_ROOT->protstruct, gb_main, ED4_ROOT->get_alignment_name(), &ED4_ROOT->protstruct_len);
484  break;
485 
486  default:
487  e4_assert(0);
488  break;
489  }
490 
491  if (warning) aw_message(warning); // write to console
492  ED4_ROOT->create_first_window();
493  if (warning) { aw_message(warning); warning = NULp; } // write again to status window
494  }
495 
497  {
498  bool found_config = false;
499  ED4_LocalWinContext uses(ED4_ROOT->first_window);
500 
501  if (config_name) {
502  GB_transaction ta(gb_main);
503  GB_ERROR cfg_error;
504  GBT_config cfg(gb_main, config_name, cfg_error);
505 
506  if (cfg.exists()) {
507  ED4_ROOT->create_hierarchy(cfg.get_definition(GBT_config::MIDDLE_AREA), cfg.get_definition(GBT_config::TOP_AREA)); // create internal hierarchy
508  found_config = true;
509  }
510  else {
511  aw_message(GBS_global_string("Could not find configuration '%s'", config_name));
512  }
513  }
514 
515  if (!found_config) {
516  aw_popup_ok("The editor needs a configuration stored in database.\n"
517  "Cannot continue and will terminate now.");
518  ED4_exit();
519  }
520  }
521 
522  // now bind DB depending callbacks
524 
525  // Create Additional sequence (aminoacid) terminals to be used in Protein Viewer
526  if (ED4_ROOT->alignment_type == GB_AT_DNA) {
527  PV_CallBackFunction(ED4_ROOT->aw_root);
528  }
529 
532  e4_assert(!ED4_WinContext::have_context()); // no global context shall be active
533  ED4_ROOT->aw_root->main_loop(); // enter main-loop
534  }
535 
537  GB_close(gb_main);
538  }
539 
540  bool have_aw_root = ED4_ROOT && ED4_ROOT->aw_root;
541  if (error) {
542  if (have_aw_root) aw_popup_ok(error.deliver());
543  else fprintf(stderr, "arb_edit4: Error: %s\n", error.deliver());
544  }
545  if (have_aw_root) delete ED4_ROOT->aw_root;
546 
547  return EXIT_SUCCESS;
548 }
549 
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:58
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:257
ED4_EDITMODE awar_edit_mode
Definition: ED4_main.cxx:67
#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:284
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:69
size_t not_found_counter
Definition: ED4_main.cxx:63
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:270
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:301
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:459
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:106
#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:83
#define ED4_AWAR_CREATE_FROM_CONS_DATA_SOURCE
Definition: ed4_awars.hxx:59
AW_HEADER_MAIN ED4_root * ED4_ROOT
Definition: ED4_main.cxx:49
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:61
#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:263
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:54
#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:407
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:59
#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:71
GBS_strstruct * not_found_message
Definition: ED4_main.cxx:64
void announce_useraction_in(AW_window *aww)
Definition: ED4_root.cxx:373
size_t size() const
Definition: BI_helix.hxx:105
#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:411
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:68
void ED4_exit() __ATTR__NORETURN
GB_alignment_type alignment_type
Definition: ed4_class.hxx:1440
void ED4_create_detect_bad_alignment_awars(AW_root *aw_root, AW_default aw_def)
void ED4_compression_changed_cb(AW_root *awr)
GB_alignment_type
Definition: arbdb_base.h:61
#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:271
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:219
#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:415
#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:253
const char * get_alignment_name() const
Definition: ed4_class.hxx:1458
int INFO_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:53
#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:275
#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:51
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:56
AW_window_simple * win
void shutdown_macro_recording(AW_root *aw_root)
Definition: trackers.cxx:475
#define NULp
Definition: cxxforward.h:116
AW_window * create_first_window()
Definition: ED4_root.cxx:1922
int MAXNAME_WIDTH
Definition: ED4_main.cxx:57
long max_seq_terminal_length
Definition: ED4_main.cxx:66
AW_default props_db
Definition: ed4_class.hxx:1426
void request_refresh_for_sequence_terminals()
Definition: ED4_root.cxx:107
#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()
char * seq_2_helix(char *sequence, char undefsymbol= ' ') const
Definition: AW_helix.cxx:56
GB_transaction ta(gb_var)
ED4_returncode create_hierarchy(const char *area_string_middle, const char *area_string_top)
Definition: ED4_root.cxx:536
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:492
#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:327
#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