33 #define AWAR_REMAP_CANDIDATE AWAR_MERGE_TMP "remap_candidates"
34 #define AWAR_REMAP_ALIGNMENT AWAR_MERGE_TMP "remap_alignment"
35 #define AWAR_REMAP_SEL_REFERENCE AWAR_MERGE_TMP "remap_reference"
49 for (i = 0; ali_names[i]; ++i) {
51 if (!gb_ali_name) ali_names.
remove(i--);
73 for (
long i = 0; i<len; ++i) {
91 long len = strlen(bitstring);
110 int found_alignments;
111 long base_count_diff;
115 : name(is_species ? name_ :
string(
"SAI:")+name_)
117 found_alignments = 0;
124 for (
int i = 0; valid && ali_names[i]; ++i) {
131 base_count_diff = labs(src_bases-dst_bases);
136 if (base_count_diff>5) factor = 0.2;
137 else factor = (6-base_count_diff)*(1.0/6);
139 long min_bases = src_bases<dst_bases ? src_bases : dst_bases;
140 score += min_bases*factor;
145 if (!valid) found_alignments = 0;
152 const char *
get_name()
const {
return name.c_str(); }
154 return GBS_global_string(
"%24s %i %li %f", get_name(), found_alignments, base_count_diff, score);
158 int ali_diff = found_alignments-other.found_alignments;
159 if (ali_diff)
return ali_diff>0;
160 return score > other.score;
168 return c1->operator<(*c2);
177 bool aborted =
false;
181 gb_dst_species && !aborted;
187 Candidate *cand =
new Candidate(
true, dst_name, gb_src_species, gb_dst_species, ali_names);
190 candidates.insert(cand);
225 candidates.insert(cand);
257 if (0 == strcmp(ali,
"All")) {
268 Candidates::iterator e = candidates.end();
271 for (Candidates::iterator i = candidates.begin();
272 i != e && count<5000;
275 string name = (*i)->get_name();
276 string shown = (*i)->get_entry();
278 refCandList->
insert(shown.c_str(), name.c_str());
317 int cand_index = refs.
index_of(candidate);
318 int sel_index = refs.
index_of(selected);
320 if (cand_index == -1) refs.
put_before(sel_index+1, candidate);
321 else refs.
move(cand_index, sel_index);
343 int sel_index = refs.
index_of(selected);
345 if (sel_index >= 0) {
360 int sel_index = refs.
index_of(selected);
362 if (sel_index >= 0) {
363 refs.
move(sel_index, sel_index+1);
375 int sel_index = refs.
index_of(selected);
378 refs.
move(sel_index, sel_index-1);
392 free(reference_species_names);
405 AW_window_simple *aws =
new AW_window_simple;
407 aws->init(aw_root,
"SELECT_PRESERVES",
"Select adaption candidates");
408 aws->load_xfig(
"merge/preserves.fig");
412 aws->create_button(
"CLOSE",
"CLOSE",
"C");
416 aws->create_button(
"HELP",
"HELP",
"H");
428 aws->label(
"Adapt alignments");
431 aws->at(
"reference");
434 aws->button_length(8);
438 aws->create_button(
"CLEAR",
"Clear",
"C");
442 aws->create_button(
"DEL",
"Del",
"L");
446 aws->create_button(
"UP",
"Up",
"U");
450 aws->create_button(
"DOWN",
"Down",
"D");
454 aws->create_button(
"TEST",
"Test",
"T");
460 aws->create_autosize_button(
"FIND",
"Find candidates",
"F", 1);
464 aws->create_button(
"ADD",
"Add",
"A");
466 aws->at(
"candidate");
GBDATA * GBT_first_SAI(GBDATA *gb_main)
static void calculate_preserves_cb(AW_window *aww, preserve_para *para)
void put(const char *elem)
#define AWAR_REMAP_SEL_REFERENCE
const char * get_entry() const
return string(buffer, length)
#define AWAR_REMAP_ALIGNMENT
AW_selection_list * usedRefsList
void insert_default(const char *displayed, const AW_scalar &value)
static void lower_reference_cb(AW_window *aww)
#define AWAR_REMAP_SPECIES_LIST
static void init_preserve_awars(AW_root *aw_root)
#define AWAR_REMAP_CANDIDATE
const char * GB_get_type_name(GBDATA *gbd)
void GBT_get_alignment_names(ConstStrArray &names, GBDATA *gbd)
char * GB_read_as_string(GBDATA *gbd)
const char * GBS_global_string(const char *templat,...)
GB_HASH * GBT_create_SAI_hash(GBDATA *gb_main)
void AW_POPDOWN(AW_window *window)
void GBS_free_hash(GB_HASH *hs)
GB_HASH * GBT_create_species_hash(GBDATA *gb_main)
AW_selection_list * alignmentList
AW_selection_list * refCandidatesList
AW_awar * add_callback(const RootCallback &cb)
void insert(const char *displayed, const AW_scalar &value)
const char * read_char_pntr() const
GB_ERROR GB_await_error()
WindowCallback makeHelpCallback(const char *helpfile)
long GB_read_count(GBDATA *gbd)
GB_TYPES GB_read_type(GBDATA *gbd)
int index_of(const char *search_for) const
static void find_species_candidates(Candidates &candidates, const CharPtrArray &ali_names)
static void clear_references_cb(AW_window *aww)
static void init_alignments(preserve_para *para)
AW_window * MG_create_preserves_selection_window(AW_root *aw_root)
set< SmartPtr< Candidate > > Candidates
static void add_selected_cb(AW_window *aww, preserve_para *para)
size_t GBS_hash_elements(const GB_HASH *hs)
static void raise_reference_cb(AW_window *aww)
char * read_string() const
CONSTEXPR_INLINE bool valid(SpeciesCreationMode m)
void put_before(int insert_before, const char *elem)
AW_awar * awar(const char *awar)
GBDATA * GBT_find_sequence(GBDATA *gb_species, const char *aliname)
static void test_references_cb(AW_window *aww)
static void read_references(ConstStrArray &refs, AW_root *aw_root)
static void clear_candidates(preserve_para *para)
static void find_SAI_candidates(Candidates &candidates, const CharPtrArray &ali_names)
Candidate(bool is_species, const char *name_, GBDATA *gb_src, GBDATA *gb_dst, const CharPtrArray &ali_names)
char * GBT_join_strings(const CharPtrArray &strings, char separator)
GBDATA * GBT_next_SAI(GBDATA *gb_sai)
GB_ERROR GB_export_errorf(const char *templat,...)
static void get_global_alignments(ConstStrArray &ali_names)
static char * get_selected_reference(AW_root *aw_root)
void move_selection(int offset)
void move(int from, int to)
const char * get_name() const
GBDATA * GBT_first_species(GBDATA *gb_main)
void aw_message(const char *msg)
static void write_references(AW_root *aw_root, const CharPtrArray &ref_array)
GBDATA * GB_find_string(GBDATA *gbd, const char *key, const char *str, GB_CASE case_sens, GB_SEARCH_TYPE gbs)
static void del_reference_cb(AW_window *aww)
bool is_std_gap(const char c)
GBDATA * GBT_next_species(GBDATA *gb_species)
GB_ERROR write_string(const char *aw_string)
static long count_bases(const char *data, long len)
GB_CSTR GB_read_char_pntr(GBDATA *gbd)
void init_from_array(const CharPtrArray &entries, const char *default_displayed, const char *default_value)
AW_awar * awar_string(const char *var_name, const char *default_value="", AW_default default_file=AW_ROOT_DEFAULT)
GBDATA * GBT_get_presets(GBDATA *gb_main)
GB_CSTR GBT_get_name_or_description(GBDATA *gb_item)
#define AWAR_REMAP_ENABLE
static bool operator<(const SmartPtr< Candidate > &c1, const SmartPtr< Candidate > &c2)
void GBT_splitNdestroy_string(ConstStrArray &names, char *&namelist, const char *separator, SplitMode mode)
GB_ERROR write_int(long aw_int)
long GBS_read_hash(const GB_HASH *hs, const char *key)
int has_alignments() const
static void refresh_reference_list_cb(AW_root *aw_root, preserve_para *para)
static void select_reference(AW_root *aw_root, const char *ref_to_select)
static struct SearchAwarList awar_list[SEARCH_PATTERNS]