32 #define AWAR_SQ_PERM "seq_quality/" // saved in properties
33 #define AWAR_SQ_TEMP "tmp/seq_quality/" // not saved in properties
35 #define AWAR_SQ_WEIGHT_BASES AWAR_SQ_PERM "weight_bases"
36 #define AWAR_SQ_WEIGHT_DEVIATION AWAR_SQ_PERM "weight_deviation"
37 #define AWAR_SQ_WEIGHT_HELIX AWAR_SQ_PERM "weight_helix"
38 #define AWAR_SQ_WEIGHT_CONSENSUS AWAR_SQ_PERM "weight_consensus"
39 #define AWAR_SQ_WEIGHT_IUPAC AWAR_SQ_PERM "weight_iupac"
40 #define AWAR_SQ_WEIGHT_GC AWAR_SQ_PERM "weight_gc"
42 #define AWAR_SQ_MARK_ONLY_FLAG AWAR_SQ_PERM "mark_only_flag"
43 #define AWAR_SQ_MARK_FLAG AWAR_SQ_PERM "mark_flag"
44 #define AWAR_SQ_MARK_BELOW AWAR_SQ_PERM "mark_below"
45 #define AWAR_SQ_REEVALUATE AWAR_SQ_PERM "reevaluate"
46 #define AWAR_SQ_FILTER_NAME AWAR_SQ_TEMP "filter/name"
76 arb_progress main_progress(
"Calculating sequence quality");
87 error =
"does only support RNA/DNA sequence data";
94 error =
"No default alignment selected";
111 if (!tree || tree->
is_leaf()) {
112 error =
GBS_global_string(
"Tree contains less than 2 species after removing zombies%s",
113 marked_only ?
" and non-marked" :
"");
166 error =
SQ_evaluate(gb_main, weights, marked_only);
167 if (mark_flag && !error) {
172 if (error) progress.
done();
181 error =
"Found one or more zombies in the tree.\n"
182 "Please remove them or use another tree before running the quality check tool.";
185 error =
"Missing node(s) or unusable tree structure.\n"
186 "Please fix the tree before running the quality check tool.";
189 error =
"An error occurred while traversing the tree.\n"
190 "Please fix the tree before running the quality check tool.";
194 else if (reevaluate) {
207 error =
SQ_evaluate(gb_main, weights, marked_only);
208 if (mark_flag && !error) {
213 if (error) progress.
done();
221 error = ta.
close(error);
252 AW_window_simple *aws =
new AW_window_simple;
254 aws->init(aw_root,
"CALC_SEQ_QUALITY",
"CALCULATE SEQUENCE QUALITY");
259 aws->create_button(
"CLOSE",
"CLOSE",
"C");
263 aws->create_button(
"HELP",
"HELP",
"H");
268 aws->at(
"deviation");
271 aws->at(
"no_helices");
274 aws->at(
"consensus");
280 aws->at(
"gc_proportion");
289 aws->at(
"mark_below");
303 aws->create_button(
"GO",
"GO",
"G");
308 aws->at(
"reevaluate");
309 aws->label(
"Re-Evaluate only");
314 aws->create_button(
"Remove",
"Remove",
"R");
void awt_create_filter_awars(AW_root *aw_root, AW_default aw_def, const char *awar_filtername, const char *awar_mapto_alignment)
#define AWAR_SQ_WEIGHT_DEVIATION
size_t GBT_count_leafs(const TreeNode *tree)
void awt_destroy_filter(AP_filter *filter)
void SQ_create_awars(AW_root *aw_root, AW_default aw_def)
#define AWAR_SQ_WEIGHT_GC
void load_xfig(const char *file, bool resize=true)
#define AWAR_SQ_WEIGHT_CONSENSUS
TreeNode * GBT_remove_leafs(TreeNode *tree, GBT_TreeRemoveType mode, const GB_HASH *species_hash, int *removed, int *groups_removed)
GB_ERROR SQ_pass2_on_tree(TreeNode *node, GBDATA *gb_main, const SQ_GroupData *data, AP_filter *filter, arb_progress &progress)
void AWT_insert_config_manager(AW_window *aww, AW_default default_file_, const char *id, const StoreConfigCallback &store_cb, const RestoreConfigCallback &load_or_reset_cb, const char *macro_id, const AWT_predefined_config *predef)
#define AWAR_DEFAULT_ALIGNMENT
TreeNode * GBT_read_tree(GBDATA *gb_main, const char *tree_name, TreeRoot *troot)
const char * GBS_global_string(const char *templat,...)
AW_DB_selection * awt_create_TREE_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname)
void AW_POPDOWN(AW_window *window)
#define AWAR_SQ_MARK_BELOW
GB_ERROR GBT_link_tree(TreeNode *tree, GBDATA *gb_main, bool show_status, int *zombies, int *duplicates)
GB_ERROR GB_await_error()
WindowCallback makeHelpCallback(const char *helpfile)
#define AWAR_SQ_WEIGHT_BASES
GB_ERROR SQ_mark_species(GBDATA *gb_main, int condition, bool marked_only)
GB_ERROR SQ_pass2_no_tree(const SQ_GroupData *globalData, GBDATA *gb_main, AP_filter *filter, arb_progress &progress)
void SQ_clear_group_dictionary()
#define AWAR_SQ_MARK_FLAG
static void error(const char *msg)
GB_ERROR SQ_pass1_on_tree(TreeNode *node, GBDATA *gb_main, SQ_GroupData *data, AP_filter *filter, arb_progress &progress)
static void sq_remove_quality_entries_cb(AW_window *, GBDATA *gb_main)
adfiltercbstruct * awt_create_select_filter(AW_root *aw_root, GBDATA *gb_main, const char *def_name)
GB_alignment_type GBT_get_alignment_type(GBDATA *gb_main, const char *aliname)
AW_window * awt_create_select_filter_win(AW_root *aw_root, adfiltercbstruct *acbs)
char * read_string() const
AW_awar * awar(const char *awar)
size_t count_nodes(TreeNode *node)
GB_ERROR SQ_pass1_no_tree(SQ_GroupData *globalData, GBDATA *gb_main, AP_filter *filter, arb_progress &progress)
AP_filter * awt_get_filter(adfiltercbstruct *acbs)
#define AWAR_SQ_REEVALUATE
#define AWAR_SQ_WEIGHT_HELIX
AW_awar * awar_int(const char *var_name, long default_value=0, AW_default default_file=AW_ROOT_DEFAULT)
GB_ERROR close(GB_ERROR error)
GB_ERROR SQ_evaluate(GBDATA *gb_main, const SQ_weights &weights, bool marked_only)
void subtitle(const char *stitle)
#define AWAR_SQ_FILTER_NAME
#define AWAR_SQ_MARK_ONLY_FLAG
GB_ERROR awt_invalid_filter(AP_filter *filter)
void aw_message(const char *msg)
SQ_TREE_ERROR SQ_check_tree_structure(TreeNode *node)
static void sq_calc_seq_quality_cb(AW_window *aww, adfiltercbstruct *acbs, GBDATA *gb_main)
char * GBT_get_default_alignment(GBDATA *gb_main)
long GBT_get_species_count(GBDATA *gb_main)
GB_transaction ta(gb_var)
void destroy(TreeNode *that)
static AWT_config_mapping_def seq_quality_config_mapping[]
GB_ERROR SQ_remove_quality_entries(GBDATA *gb_main)
#define AWAR_SQ_WEIGHT_IUPAC
AW_window * SQ_create_seq_quality_window(AW_root *aw_root, GBDATA *gb_main)
void aw_message_if(GB_ERROR error)