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 move_cursor; // only needed for editing in consensus
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_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->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:1392
#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:1444
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:93
#define AWAR_EDIT_TITLE_MODE
Definition: ed4_defs.hxx:106
#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:66
#define ED4_AWAR_CREATE_FROM_CONS_REPL_EQUAL
Definition: ed4_awars.hxx:55
ED4_area_manager * top_area_man
Definition: ed4_class.hxx:1429
#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:1848
ED4_group_manager * is_in_folded_group() const
Definition: ED4_base.cxx:20
static const int MIDDLE_AREA
Definition: ad_config.h:46
#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:62
void redraw()
Definition: ed4_class.hxx:653
void aw_initstatus()
Definition: AW_status.cxx:766
ED4_area_manager * middle_area_man
Definition: ed4_class.hxx:1428
const char * init(GBDATA *gb_main)
Definition: BI_helix.cxx:301
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:187
#define AWAR_EDIT_SECURITY_LEVEL_ALIGN
Definition: ed4_defs.hxx:94
#define AWAR_INSERT_MODE
Definition: ed4_defs.hxx:92
void ED4_create_consensus_awars(AW_root *aw_root)
AW_awar * set_minmax(float min, float max)
Definition: AW_awar.cxx:532
#define ED4_AWAR_COMPRESS_SEQUENCE_TYPE
Definition: ed4_awars.hxx:22
static const int TOP_AREA
Definition: ad_config.h:45
ed_key * edk
Definition: ed4_class.hxx:1450
const char * GBS_global_string(const char *templat,...)
Definition: arb_msg.cxx:204
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:95
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:477
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:1448
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:27
#define e4_assert(bed)
Definition: ed4_class.hxx:11
#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:234
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:486
#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:1652
GB_ERROR GB_await_error()
Definition: arb_msg.cxx:353
long helix_add_spacing
Definition: ed4_class.hxx:1446
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:48
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:48
GB_ERROR deliver() const
Definition: arb_error.h:114
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:1420
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
char * alignment_name
Definition: ed4_class.hxx:1438
#define AWAR_FIELD_CHOSEN
Definition: ed4_defs.hxx:104
int SEQ_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:53
#define AWAR_EDIT_HELIX_SPACING
Definition: ed4_defs.hxx:107
ED4_window * first_window
Definition: ed4_class.hxx:1426
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:721
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:71
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:88
#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:201
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:1439
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
bool move_cursor
Definition: ED4_main.cxx:68
void main_loop()
Definition: AW_root.cxx:625
bool is_consensus_terminal() const
Definition: ed4_class.hxx:1847
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:1449
#define AWAR_EDIT_MODE
Definition: ed4_defs.hxx:91
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:239
char * ARB_strndup(const char *start, int len)
Definition: arb_string.h:83
long terminal_add_spacing
Definition: ed4_class.hxx:1447
#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:253
int INFO_TERM_TEXT_YOFFSET
Definition: ED4_main.cxx:52
#define AWAR_CURSOR_POSITION_LOCAL
ED4_seq_colors * sequence_colors
Definition: ed4_class.hxx:1441
AW_root * aw_root
Definition: ed4_class.hxx:1423
static void ed4_bind_mainDB_awar_callbacks(AW_root *root)
Definition: ED4_main.cxx:275
#define AWAR_EDIT_TERMINAL_SPACING
Definition: ed4_defs.hxx:108
void aw_message(const char *msg)
Definition: AW_status.cxx:932
const char * get_definition(int area) const
Definition: ad_config.h:50
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:97
AW_window * create_first_window()
Definition: ED4_root.cxx:1907
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:1424
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:550
GBDATA * gb_main
Definition: adname.cxx:33
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:504
#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:1820
#define AWAR_EDIT_CONFIGURATION
Definition: ed4_defs.hxx:96
#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:1079
ST_ML * st_ml
Definition: ed4_class.hxx:1443
void GB_close(GBDATA *gbd)
Definition: arbdb.cxx:649
Adds support for protein structure prediction, comparison of two protein secondary structures and of ...
GB_write_int const char s
Definition: AW_awar.cxx:156