40 result_window =
new AW_window_simple;
41 result_window->init(aw_root,
"MULTIPROBE_RESULTS",
"MultiProbe combination results");
42 result_window->load_xfig(
"mp_results.fig");
44 result_window->auto_space(5, 5);
46 result_window->button_length(7);
47 result_window->at(
"close");
49 result_window->create_button(
"CLOSE",
"CLOSE");
51 result_window->at(
"Help");
53 result_window->create_button(
"HELP",
"HELP");
55 result_window->at(
"Comment");
56 result_window->callback(makeWindowCallback(
MP_Comment, (
const char *)
NULp));
59 result_window->at(
"box");
67 result_window->at(
"buttons");
69 result_window->create_button(
"LOAD_RPL",
"LOAD");
72 result_window->create_button(
"SAVE_RPL",
"SAVE");
75 result_window->create_button(
"CLEAR",
"CLEAR");
78 result_window->create_button(
"DELETE",
"DELETE");
82 result_window->button_length(8);
84 result_window->at(
"comment");
85 result_window->callback(makeWindowCallback(
MP_Comment,
"Bad"));
86 result_window->create_button(
"MARK_AS_BAD",
"BAD");
88 result_window->callback(makeWindowCallback(
MP_Comment,
"???"));
89 result_window->create_button(
"MARK_AS_GOOD",
"???");
91 result_window->callback(makeWindowCallback(
MP_Comment,
"Good"));
92 result_window->create_button(
"MARK_AS_BEST",
"Good");
94 result_window->at(
"auto");
99 result_window->button_length(3);
101 result_window->at(
"ct_back");
103 result_window->create_button(
"COLOR_TREE_BACKWARD",
"#rightleft_small.xpm");
105 result_window->at(
"ct_fwd");
107 result_window->create_button(
"COLOR_TREE_FORWARD",
"#leftright_small.xpm");
109 result_window->button_length(8);
111 result_window->at(
"ColorTree");
112 result_window->button_length(4);
114 result_window->create_button(
"COLOR_TREE",
"GO");
116 result_window->at(
"MarkTree");
118 result_window->create_button(
"MARK_TREE",
"GO");
120 result_window->at(
"GroupAll");
122 result_window->create_button(
"GROUP_UNMARKED",
"GO");
124 result_window->at(
"StandardColor");
126 result_window->create_button(
"RESET_COLORS",
"GO");
128 return result_window;
148 #define SPACED(expr) "[[:space:]]*" expr "[[:space:]]*"
157 if (value.
empty()) error =
"nothing to save";
159 for (
size_t i = 0; i<display.
size() && !
error; ++i) {
171 if (line.
empty()) error =
"empty file";
177 bool isSavedFormat =
true;
179 for (
size_t i = 0; i<line.
size() && isSavedFormat; ++i) {
182 isSavedFormat =
false;
186 char T_or_U = T_or_U_for_load ? T_or_U_for_load :
'U';
197 size_t plen = probe.length();
205 char *entry =
gen_display(quality, singlemis, ecoli, probe.c_str());
211 if (!isSavedFormat) {
217 RegExpr reg_designed(
"^([A-Z]+)"
219 "[[:space:]]+[A-Z][=+-]"
221 "[[:space:]]+([0-9]+)"
222 "([[:space:]]+[0-9]+){1,2}"
223 "([[:space:]]+[0-9.]+){2}"
225 "[[:space:]]+[|]",
true);
227 for (
size_t i = 0; i<line.
size() && !
error; ++i) {
229 char *description =
NULp;
230 bool new_format =
false;
232 const char *comma = strchr(line[i],
',');
236 const char *cprobe = comma+1;
237 while (cprobe[0] ==
' ') ++cprobe;
252 std::string parsed_probe = match->extract(description);
255 if (strcmp(probe, parsed_probe.c_str()) != 0) {
256 error =
GBS_global_string(
"probe string mismatch (probe='%s', parsed_probe='%s', parsed from='%s')",
257 probe, parsed_probe.c_str(), line[i]);
269 ecoli = atoi(match->extract(description).c_str());
272 char *entry =
gen_display(quality, 0, ecoli, probe);
279 if (new_format && probe[0]) {
338 selected_list->
sort(
false,
true);
345 int max_seq_col = 35;
346 int max_seq_hgt = 15;
357 result_window =
NULp;
359 aws =
new AW_window_simple;
360 aws->init(aw_root,
"MULTIPROBE",
"MULTI_PROBE");
361 aws->load_xfig(
"multiprobe.fig");
365 aws->create_button(
"CLOSE",
"CLOSE");
369 aws->create_button(
"HELP",
"HELP");
371 aws->button_length(7);
372 aws->at(
"Selectedprobes");
380 aws->at(
"Probelist");
388 aws->auto_space(5, 5);
389 aws->button_length(7);
391 for (
int rightSide = 0; rightSide <= 1; ++rightSide) {
393 const char *id_suffix = rightSide ?
"SELECTED_PROBES" :
"PROBES";
397 aws->at(rightSide ?
"RightButtons" :
"LeftButtons");
415 aws->insert_option(
"High Priority",
"", 5);
416 aws->insert_option(
" 4",
"", 4);
417 aws->insert_option(
"Normal 3",
"", 3);
418 aws->insert_option(
" 2",
"", 2);
419 aws->insert_option(
"Low Prio. 1",
"", 1);
420 aws->update_option_menu();
424 aws->create_autosize_button(
"ADD_PROBE",
"ADD");
435 aws->at(
"NoOfProbes");
438 aws->insert_option(
"Compute 1 probe ",
"", 1);
441 sprintf(str,
"%2d-probe-combinations", i);
442 aws->insert_option(str,
"", i);
444 aws->update_option_menu();
446 aws->button_length(10);
448 aws->callback(makeWindowCallback(
MP_compute, gb_main));
450 aws->help_text(
"Compute possible Solutions");
451 aws->create_button(
"GO",
"GO");
453 aws->button_length(20);
456 aws->create_button(
"OPEN_RESULT_WIN",
"Open result window");
458 aws->at(
"Komplement");
462 aws->at(
"WeightedMismatches");
471 aws->at(
"OutsideMismatches");
474 aws->insert_option(
"3.0",
"", (
float)3.0);
475 aws->insert_option(
"2.5",
"", (
float)2.5);
476 aws->insert_option(
"2.0",
"", (
float)2.0);
477 aws->insert_option(
"1.5",
"", (
float)1.5);
478 aws->insert_option(
"1.0",
"", (
float)1.0);
479 aws->update_option_menu();
485 aws->insert_default_option(
"0.0",
"", (
float)0.0);
486 for (
float lauf=0.1; lauf<(float)1.0; lauf+=0.1) {
488 sprintf(strs,
"%.1f", lauf);
489 aws->insert_option(strs,
"", lauf);
491 aws->update_option_menu();
497 if (result_window) result_window->hide();
498 if (aws) aws->hide();
500 delete result_window;
512 inline void array2cpa(
const char **content,
int count,
ConstStrArray& array) {
514 for (
int i = 0; i<count; ++i) {
515 array.
put(content[i]);
522 for (
size_t i = 0; i<array.
size(); ++i) {
527 return out.release();
537 StrArray display, value;
540 char *displ_as_string = array2string(display);
541 char *value_as_string = array2string(value);
546 free(value_as_string);
547 free(displ_as_string);
549 return all().ofgroup(expected);
552 #define TEST_EXPECT_LOADS_INTO_MULTIPROBE_AS(input,expected) TEST_EXPECTATION(inputConvertsInto(input, expected))
553 #define TEST_EXPECT_LOADS_INTO_MULTIPROBE_AS__BROKEN(input,expected) TEST_EXPECTATION__BROKEN(inputConvertsInto(input, expected))
555 void TEST_load_probe_design_results() {
557 const char *expected =
558 "3#0# 521#GCAGCCGCGGUAAUACGG\n"
559 "3#0# 510#ACUCCGUGCCAGCAGCCG\n"
560 "3#0# 511#CUCCGUGCCAGCAGCCGC\n"
561 "3#0# 512#UCCGUGCCAGCAGCCGCG\n"
562 "3#0# 513#CCGUGCCAGCAGCCGCGG\n"
563 "3#0# 509#AACUCCGUGCCAGCAGCC\n";
565 const char *old_probeDesignSave =
566 "Probe design Parameters:\n"
567 "Length of probe 18\n"
568 "Temperature [30.0 -100.0]\n"
569 "GC-Content [50.0 -100.0]\n"
570 "E.Coli Position [any]\n"
571 "Max Non Group Hits 0\n"
572 "Min Group Hits 50%\n"
573 "Target le apos ecol grps G+C 4GC+2AT Probe sequence | Decrease T by n*.3C -> probe matches n non group species\n"
574 "GCAGCCGCGGUAAUACGG 18 A= 4398 521 23 66.7 60.0 CCGUAUUACCGCGGCUGC | 0; 0; 0; 0; 0; 0; 0; 0; 35; 35; 35; 38; 74; 74; 74; 77;113;113;113;148;\n"
575 "ACUCCGUGCCAGCAGCCG 18 B= 3852 510 23 72.2 62.0 CGGCUGCUGGCACGGAGU | 0; 0; 0; 0; 0; 40; 40; 40; 80; 80; 80; 80;120;120;120;200;200;200;200;201;\n"
576 "CUCCGUGCCAGCAGCCGC 18 B+ 4 511 23 77.8 64.0 GCGGCUGCUGGCACGGAG | 0; 0; 0; 0; 0; 40; 40; 40; 40; 80; 80; 80;160;160;160;160;201;201;201;201;\n"
577 "UCCGUGCCAGCAGCCGCG 18 B+ 7 512 23 77.8 64.0 CGCGGCUGCUGGCACGGA | 0; 0; 0; 0; 0; 40; 40; 40;120;120;120;120;160;160;161;201;201;201;202;202;\n"
578 "CCGUGCCAGCAGCCGCGG 18 B+ 9 513 23 83.3 66.0 CCGCGGCUGCUGGCACGG | 0; 0; 0; 0; 0; 80; 80; 80; 80;120;120;121;161;161;161;162;203;203;204;204;\n"
579 "AACUCCGUGCCAGCAGCC 18 B- 1 509 22 66.7 60.0 GGCUGCUGGCACGGAGUU | 0; 0; 0; 0; 0; 40; 40; 40; 80; 80; 80;120;120;120;120;160;160;160;240;240;\n";
581 TEST_EXPECT_LOADS_INTO_MULTIPROBE_AS(old_probeDesignSave, expected);
584 const char *old_multiprobeInputSave =
585 "3,0# 521#CCGUAUUACCGCGGCUGC\n"
586 "3,0# 510#CGGCUGCUGGCACGGAGU\n"
587 "3,0# 511#GCGGCUGCUGGCACGGAG\n"
588 "3,0# 512#CGCGGCUGCUGGCACGGA\n"
589 "3,0# 513#CCGCGGCUGCUGGCACGG\n"
590 "3,0# 509#GGCUGCUGGCACGGAGUU\n";
594 TEST_EXPECT_LOADS_INTO_MULTIPROBE_AS(old_multiprobeInputSave, expected);
597 const char *new_probeDesignSave_v1 =
598 "Probe design Parameters:,\n"
599 "Length of probe 18,\n"
600 "Temperature [30.0 -100.0],\n"
601 "GC-Content [50.0 -100.0],\n"
602 "E.Coli Position [any],\n"
603 "Max Non Group Hits 0,\n"
604 "Min Group Hits 50%,\n"
605 "Target le apos ecol grps G+C 4GC+2AT Probe sequence | Decrease T by n*.3C -> probe matches n non group species,\n"
606 "GCAGCCGCGGUAAUACGG 18 A= 4398 521 23 66.7 60.0 CCGUAUUACCGCGGCUGC | 0; 0; 0; 0; 0; 0; 0; 0; 35; 35; 35; 38; 74; 74; 74; 77;113;113;113;148;,GCAGCCGCGGUAAUACGG\n"
607 "ACUCCGUGCCAGCAGCCG 18 B= 3852 510 23 72.2 62.0 CGGCUGCUGGCACGGAGU | 0; 0; 0; 0; 0; 40; 40; 40; 80; 80; 80; 80;120;120;120;200;200;200;200;201;,ACUCCGUGCCAGCAGCCG\n"
608 "CUCCGUGCCAGCAGCCGC 18 B+ 4 511 23 77.8 64.0 GCGGCUGCUGGCACGGAG | 0; 0; 0; 0; 0; 40; 40; 40; 40; 80; 80; 80;160;160;160;160;201;201;201;201;,CUCCGUGCCAGCAGCCGC\n"
609 "UCCGUGCCAGCAGCCGCG 18 B+ 7 512 23 77.8 64.0 CGCGGCUGCUGGCACGGA | 0; 0; 0; 0; 0; 40; 40; 40;120;120;120;120;160;160;161;201;201;201;202;202;,UCCGUGCCAGCAGCCGCG\n"
610 "CCGUGCCAGCAGCCGCGG 18 B+ 9 513 23 83.3 66.0 CCGCGGCUGCUGGCACGG | 0; 0; 0; 0; 0; 80; 80; 80; 80;120;120;121;161;161;161;162;203;203;204;204;,CCGUGCCAGCAGCCGCGG\n"
611 "AACUCCGUGCCAGCAGCC 18 B- 1 509 22 66.7 60.0 GGCUGCUGGCACGGAGUU | 0; 0; 0; 0; 0; 40; 40; 40; 80; 80; 80;120;120;120;120;160;160;160;240;240;,AACUCCGUGCCAGCAGCC\n";
613 TEST_EXPECT_LOADS_INTO_MULTIPROBE_AS(new_probeDesignSave_v1, expected);
616 const char *new_multiprobeInputSave =
617 "3#0# 521#GCAGCCGCGGUAAUACGG\n"
618 "3#0# 510#ACUCCGUGCCAGCAGCCG\n"
619 "3#0# 511#CUCCGUGCCAGCAGCCGC\n"
620 "3#0# 512#UCCGUGCCAGCAGCCGCG\n"
621 "3#0# 513#CCGUGCCAGCAGCCGCGG\n"
622 "3#0# 509#AACUCCGUGCCAGCAGCC\n";
624 TEST_EXPECT_LOADS_INTO_MULTIPROBE_AS(new_multiprobeInputSave, expected);
628 static const char *recent_expected =
629 "3#0# 82#CGAAAGGAAGAUUA\n"
630 "3#0# 82#CGAAAGGAAGAUUAA\n"
631 "3#0# 86#AGGAAGAUUAAUACC\n"
632 "3#0# 87#GGAAGAUUAAUACC\n"
633 "3#0# 21#GUCGAGCGAUGAAG\n"
634 "3#0# 20#AGUCGAGCGAUGAAG\n"
635 "3#0# 20#AGUCGAGCGAUGAA\n"
636 "3#0# 19#AAGUCGAGCGAUGAA\n"
637 "3#0# 18#CAAGUCGAGCGAUGA\n"
638 "3#0# 19#AAGUCGAGCGAUGA\n"
639 "3#0# 17#UCAAGUCGAGCGAUG\n"
640 "3#0# 18#CAAGUCGAGCGAUG\n"
641 "3#0# 16#AUCAAGUCGAGCGAU\n"
642 "3#0# 17#UCAAGUCGAGCGAU\n"
643 "3#0# 16#AUCAAGUCGAGCGA\n";
645 static const char *recent_probeDesignSave =
646 "Probe design parameters:,\n"
647 "Length of probe 14-15,\n"
648 "Temperature [ 0.0 -400.0],\n"
649 "GC-content [30.0 - 80.0],\n"
650 "E.Coli position [any],\n"
651 "Max. nongroup hits 0,\n"
652 "Min. group hits 100% (max. rejected coverage: 75%),\n"
653 "Target le apos ecol qual grps G+C temp Probe sequence | Decrease T by n*.3C -> probe matches n non group species,\n"
654 "CGAAAGGAAGAUUA 14 A=94 82 77 4 35.7 38.0 UAAUCUUCCUUUCG | - - - - - - - - - - - - - - - - - - - -,CGAAAGGAAGAUUA\n"
655 "CGAAAGGAAGAUUAA 15 A+ 0 82 77 4 33.3 40.0 UUAAUCUUCCUUUCG | - - - - - - - - - - - - - - - - - - - -,CGAAAGGAAGAUUAA\n"
656 "AGGAAGAUUAAUACC 15 A+ 4 86 77 4 33.3 40.0 GGUAUUAAUCUUCCU | - - - - - - - - - - - - - - - - - - - -,AGGAAGAUUAAUACC\n"
657 "GGAAGAUUAAUACC 14 A+ 5 87 77 4 35.7 38.0 GGUAUUAAUCUUCC | - - - - - - - - - - - - - - - - - - - -,GGAAGAUUAAUACC\n"
658 "GUCGAGCGAUGAAG 14 B=22 21 77 4 57.1 44.0 CUUCAUCGCUCGAC | - - - - - - - - - - - - - - - - - - - 2,GUCGAGCGAUGAAG\n"
659 "AGUCGAGCGAUGAAG 15 B- 1 20 73 4 53.3 46.0 CUUCAUCGCUCGACU | - - - - - - - - - - - - - - - - - - 2 2,AGUCGAGCGAUGAAG\n"
660 "AGUCGAGCGAUGAA 14 B- 1 20 57 4 50.0 42.0 UUCAUCGCUCGACU | - - - - - - - - - - - - - - 2 2 2 2 2 2,AGUCGAGCGAUGAA\n"
661 "AAGUCGAGCGAUGAA 15 B- 2 19 53 4 46.7 44.0 UUCAUCGCUCGACUU | - - - - - - - - - - - - - 2 2 2 2 2 2 2,AAGUCGAGCGAUGAA\n"
662 "CAAGUCGAGCGAUGA 15 B- 3 18 41 4 53.3 46.0 UCAUCGCUCGACUUG | - - - - - - - - - - 2 2 2 2 2 2 2 2 2 2,CAAGUCGAGCGAUGA\n"
663 "AAGUCGAGCGAUGA 14 B- 2 19 41 4 50.0 42.0 UCAUCGCUCGACUU | - - - - - - - - - - 2 2 2 2 2 2 2 2 2 2,AAGUCGAGCGAUGA\n"
664 "UCAAGUCGAGCGAUG 15 B- 4 17 25 4 53.3 46.0 CAUCGCUCGACUUGA | - - - - - - 2 2 2 2 2 2 2 2 2 2 2 2 9 9,UCAAGUCGAGCGAUG\n"
665 "CAAGUCGAGCGAUG 14 B- 3 18 25 4 57.1 44.0 CAUCGCUCGACUUG | - - - - - - 2 2 2 2 2 2 2 2 2 2 2 2 2 2,CAAGUCGAGCGAUG\n"
666 "AUCAAGUCGAGCGAU 15 B- 5 16 5 4 46.7 44.0 AUCGCUCGACUUGAU | - 2 2 2 2 2 2 2 9 9 9 9 9 9 9 9 9 9 9 9,AUCAAGUCGAGCGAU\n"
667 "UCAAGUCGAGCGAU 14 B- 4 17 5 4 50.0 42.0 AUCGCUCGACUUGA | - 2 2 2 2 2 2 2 2 9 9 9 9 9 9 9 9 9 9 9,UCAAGUCGAGCGAU\n"
668 "AUCAAGUCGAGCGA 14 B- 5 16 5 4 50.0 42.0 UCGCUCGACUUGAU | - 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9,AUCAAGUCGAGCGA";
670 void TEST_AFTER_SLOW_recent_probe_design_result() {
676 TEST_EXPECT_LOADS_INTO_MULTIPROBE_AS(recent_probeDesignSave, recent_expected);
679 void TEST_SLOW_design_probes_and_load_result() {
682 CommandOutput designed_probes(
"arb_probe serverid=-666 designprobelength=14 designmaxprobelength=15 designnames=ClnCorin#CltBotul#CPPParap#ClfPerfr designmintargets=100",
true);
686 char *saved_design_result =
NULp;
691 StrArray saved_lines;
693 for (
size_t i = 0; i<lines.
size(); ++i) {
696 size_t plen = strspn(lines[i],
"acgtuACGTU");
718 TEST_EXPECT_LOADS_INTO_MULTIPROBE_AS(saved_design_result, recent_expected);
719 free(saved_design_result);
const RegMatch * subexpr_match(size_t subnr) const
void sort(bool backward, bool case_sensitive)
void put(const char *elem)
#define MP_AWAR_RESULTPROBES
return string(buffer, length)
void set_file_suffix(const char *suffix)
const TypedSelectionList & get_typedsellist() const
void insert_default(const char *displayed, const AW_scalar &value)
void MP_new_sequence(AW_window *aww)
void MP_compute(AW_window *, GBDATA *gb_main)
#define MP_AWAR_NOOFPROBES
void MP_close_main(AW_window *aww)
void MP_normal_colors_in_tree(AW_window *aww)
match_expectation doesnt_report_error(const char *error)
#define MP_AWAR_RESULTPROBESCOMMENT
void awt_clear_selection_list_cb(AW_window *, AW_selection_list *sellist)
#define TEST_SETUP_GLOBAL_ENVIRONMENT(modulename)
char * ARB_strdup(const char *str)
#define AWAR_DEFAULT_ALIGNMENT
GB_ERROR get_error() const
const char * GBS_global_string(const char *templat,...)
char * GBS_string_eval(const char *insource, const char *icommand)
void AW_POPDOWN(AW_window *window)
bool default_is_selected() const
int get_index_of_selected()
char * ARB_strpartdup(const char *start, const char *end)
AW_selection_list * get_sellist() const
static void MP_collect_probes(AW_window *, awt_collect_mode mode)
void MP_show_probes_in_tree(AW_window *aww)
void MP_result_combination_chosen(AW_root *aw_root)
static void track_ali_change_cb(AW_root *, GBDATA *gb_main)
AW_awar * add_callback(const RootCallback &cb)
void insert(const char *displayed, const AW_scalar &value)
GB_ERROR GB_await_error()
WindowCallback makeHelpCallback(const char *helpfile)
NOT4PERL void GBT_reverseComplementNucSequence(char *seq, long length, char T_or_U)
#define MP_AWAR_SELECTEDPROBES
AW_selection_list * result_probes_list
void MP_Comment(AW_window *, const char *new_comment)
static void error(const char *msg)
const RegMatch * match(const std::string &versus, size_t offset=0) const
#define MP_AWAR_PROBELIST
expectation_group & add(const expectation &e)
const char * get_displayed()
char * gen_display(int quality, int singleMis, int ecoliPos, const char *probe)
GB_alignment_type GBT_get_alignment_type(GBDATA *gb_main, const char *aliname)
AW_selection_list * selected_list
void MP_mark_probes_in_tree(AW_window *aww)
AW_awar * awar(const char *awar)
AW_window * create_load_box_for_selection_lists(AW_root *aw_root, const StorableSelectionList *storabsellist)
void awt_create_PTSERVER_selection_button(AW_window *aws, const char *varname)
void MP_group_all_except_marked(AW_window *aww)
#define MP_AWAR_WEIGHTEDMISMATCHES
static char T_or_U_for_load
const std::string * has_failed() const
static GB_ERROR mp_list2file(const CharPtrArray &display, const CharPtrArray &value, StrArray &line)
char * GBT_join_strings(const CharPtrArray &strings, char separator)
MP_Window(AW_root *aw_root, GBDATA *gb_main)
#define MP_AWAR_AUTOADVANCE
char * ARB_strndup(const char *start, int len)
void awt_create_collect_buttons(AW_window *aws, bool collect_rightwards, awt_collectfun collect_cb, AW_CL cl_user)
const AW_scalar * get_value() const
void MP_popup_result_window(AW_window *aww)
AW_window * create_save_box_for_selection_lists(AW_root *aw_root, const StorableSelectionList *storabsellist)
void MP_delete_selected(UNFIXED, AW_selection_list *sellist)
#define MP_AWAR_COMPLEMENT
#define TEST_EXPECT_NO_ERROR(call)
void aw_message(const char *msg)
#define MP_AWAR_QUALITYBORDER1
void MP_cache_sonden(AW_window *)
void GBT_split_string(ConstStrArray &dest, const char *namelist, const char *separator, SplitMode mode)
char * GBT_get_default_alignment(GBDATA *gb_main)
std::string extract(const std::string &s) const
size_t subexpr_count() const
static AW_selection_list * probelist
void move_content_to(AW_selection_list *target_list)
GB_transaction ta(gb_var)
void MP_cache_sonden2(AW_root *)
static GB_ERROR mp_file2list(const CharPtrArray &line, StrArray &display, StrArray &value)
#define MP_AWAR_OUTSIDEMISMATCHES
void MP_selected_chosen(AW_root *aw_root)
#define TEST_EXPECT_EQUAL(expr, want)
AW_window_simple * create_result_window(AW_root *aw_root)
char * GBS_global_string_copy(const char *templat,...)
NOT4PERL GB_ERROR GBT_determine_T_or_U(GB_alignment_type alignment_type, char *T_or_U, const char *supposed_target)
void MP_show_probes_in_tree_move(AW_window *aww, bool backward, AW_selection_list *resultProbesList)