From 48e071c3c4bdb8d9d9227ef05030b9af4395f437 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Mon, 31 Mar 2014 16:10:32 -0400 Subject: add scorign to header and paramters and such --- SelectiveGenomeAmplification | 8 +++++--- src/score_mers.py | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/SelectiveGenomeAmplification b/SelectiveGenomeAmplification index 637ff2c..6010c08 100755 --- a/SelectiveGenomeAmplification +++ b/SelectiveGenomeAmplification @@ -147,6 +147,8 @@ done # output_top_nb, How many scored sets would you like in the top_scored_sets output file (Default = 10000)? : ${output_top_nb=10000} +# scoring_func: A custom scoring function. disable by default. See README.md + export ignore_mers export min_mer_range export max_mer_range @@ -231,7 +233,7 @@ if [[ ! -d "$output_directory/$current_run/filter" ]]; then fi echo "Outputting current run parameters" - for var in ignore_mers ignore_all_mers_from_files min_mer_range max_mer_range max_check cpus max_consecutive_binding max_select min_foreground_binding_average max_mer_distance min_melting_temp max_melting_temp foreground background; do + for var in scoring_func ignore_mers ignore_all_mers_from_files min_mer_range max_mer_range max_check cpus max_consecutive_binding max_select min_foreground_binding_average max_mer_distance min_melting_temp max_melting_temp foreground background; do echo "$var" "${!var}" >> "$output_directory"/"$current_run"/parameters done; @@ -323,8 +325,8 @@ if [[ -n "$step_score" ]] || [[ -n "$all" ]]; then # output our sorted scores echo "sorting and outputting top $output_top_nb scores" echo "top scores output file: $output_directory/$current_run/top-scores" - head -n 2 $output_directory/$current_run/all-scores > $output_directory/$current_run/top-scores - tail -n +3 $output_directory/$current_run/all-scores | sort -r -t $'\t' -nk 3 | head -n $output_top_nb >> $output_directory/$current_run/top-scores + head -n 3 $output_directory/$current_run/all-scores > $output_directory/$current_run/top-scores + tail -n +4 $output_directory/$current_run/all-scores | sort -r -t $'\t' -nk 3 | head -n $output_top_nb >> $output_directory/$current_run/top-scores fi diff --git a/src/score_mers.py b/src/score_mers.py index 0633c3e..1cb4bbb 100755 --- a/src/score_mers.py +++ b/src/score_mers.py @@ -35,12 +35,13 @@ max_check = int(os.environ.get("max_check", 35)) max_mer_distance = int(os.environ.get("max_mer_distance", 5000)) max_consecutive_binding = int(os.environ.get("max_consecutive_binding", 4)) primer_weight = float(os.environ.get("primer_weight", 0)) -score_func = os.environ.get("score_fun", None) +score_str = os.environ.get("score_func", None) -if score_func is not None: - score_func = compile('mer_score = ' + score_func, '', 'exec') +if score_str is not None: + score_func = compile('mer_score = ' + score_str, '', 'exec') else: score_func = compile('mer_score = (nb_primers**primer_weight) * (fg_mean_dist * fg_std_dist) / bg_ratio', '', 'exec') + score_str = '(nb_primers**primer_weight) * (fg_mean_dist * fg_std_dist) / bg_ratio' def get_max_consecutive_binding(mer1, mer2): ''' @@ -197,6 +198,7 @@ def percentage(part, whole, precision=2): def write_header(fh): fh.write("# variables used: max_select=" + str(max_select) + " max_check=" + str(max_check) + " max_mer_distance=" + str(max_mer_distance) + " max_consecutive_binding=" + str(max_consecutive_binding) + " primer_weight=" + str(primer_weight) + "\n") + fh.write("# scoring function:" + str(score_str) + "\n") fh.write("nb_primers\tCombination\tScore\tFG_mean_dist\tFG_stdev_dist\tBG_ratio\n") def write_result(fh, score_res): combination, score_val, fg_mean_dist, fg_stddev_dist, bg_ratio = score_res -- cgit v1.2.3