aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCalvin Morrison <mutantturkey@gmail.com>2014-03-31 16:10:32 -0400
committerCalvin Morrison <mutantturkey@gmail.com>2014-03-31 16:10:32 -0400
commit48e071c3c4bdb8d9d9227ef05030b9af4395f437 (patch)
treef118dafa0a12ab4347d00e5123832408362f6719
parent01bec2e491ebc5756095ba69386c8a00bdb761cf (diff)
add scorign to header and paramters and such
-rwxr-xr-xSelectiveGenomeAmplification8
-rwxr-xr-xsrc/score_mers.py8
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, '<string>', 'exec')
+if score_str is not None:
+ score_func = compile('mer_score = ' + score_str, '<string>', 'exec')
else:
score_func = compile('mer_score = (nb_primers**primer_weight) * (fg_mean_dist * fg_std_dist) / bg_ratio', '<string>', '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