From 74b2cd8e6d1e6525c592996d0d2973721630481c Mon Sep 17 00:00:00 2001 From: Werner Van Geit <werner.vangeit@epfl.ch> Date: Tue, 3 Oct 2017 13:54:04 +0200 Subject: [PATCH] Add repaired morph dir to config file --- bluepymm/prepare_combos/create_mm_sqlite.py | 3 ++- bluepymm/prepare_combos/main.py | 3 +++ bluepymm/select_combos/table_processing.py | 20 ++++++++++++-------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/bluepymm/prepare_combos/create_mm_sqlite.py b/bluepymm/prepare_combos/create_mm_sqlite.py index ebdf8e2..c5cbd10 100644 --- a/bluepymm/prepare_combos/create_mm_sqlite.py +++ b/bluepymm/prepare_combos/create_mm_sqlite.py @@ -187,6 +187,7 @@ def create_mm_sqlite( output_filename, recipe_filename, morph_dir, + rep_morph_dir, original_emodel_etype_map, final_dict, emodel_dirs, @@ -270,7 +271,7 @@ def create_mm_sqlite( fullmtype_morph_map, original_emodel_etype_map, emodel_dirs, - morph_dir, + rep_morph_dir, skip_repaired_exemplar=skip_repaired_exemplar) # Prepend exemplar rows to full_map diff --git a/bluepymm/prepare_combos/main.py b/bluepymm/prepare_combos/main.py index 48030d9..f57e8b6 100644 --- a/bluepymm/prepare_combos/main.py +++ b/bluepymm/prepare_combos/main.py @@ -59,12 +59,15 @@ def prepare_emodels(conf_dict, continu, scores_db_path): skip_repaired_exemplar = conf_dict.get('skip_repaired_exemplar', False) recipe_filename = conf_dict['recipe_path'] morph_dir = conf_dict['morph_path'] + rep_morph_dir = conf_dict['rep_morph_path'] + print('Using repaired exemplar morph path: %s' % rep_morph_dir) # Create a sqlite3 db with all the combos create_mm_sqlite.create_mm_sqlite( scores_db_path, recipe_filename, morph_dir, + rep_morph_dir, emodel_etype_map, final_dict, emodel_dirs, diff --git a/bluepymm/select_combos/table_processing.py b/bluepymm/select_combos/table_processing.py index a1382cc..b715fc7 100644 --- a/bluepymm/select_combos/table_processing.py +++ b/bluepymm/select_combos/table_processing.py @@ -34,16 +34,19 @@ def _row_transform(row, exemplar_row, to_skip_patterns, feature did not exceed the corresponding feature threshold, or can be ignored. """ + for column in row.index[1:]: # set all values that can be ignored to True for pattern in to_skip_patterns: if pattern.match(column): row[column] = True + continue # find the appropriate threshold for megate_feature_threshold in row['megate_feature_threshold']: if megate_feature_threshold['features'].match(column): - megate_threshold = megate_feature_threshold['megate_threshold'] + megate_threshold = megate_feature_threshold[ + 'megate_threshold'] # transform score if skip_repaired_exemplar: @@ -149,14 +152,13 @@ def check_opt_scores(emodel, scores): def _apply_megating(emodel_mtype_etype_thresholds, emodel_score_values, exemplar_row, to_skip_patterns, skip_repaired_exemplar): """Compare score values to applicable feature thresholds.""" + megate_scores = pandas.concat( [emodel_mtype_etype_thresholds['megate_feature_threshold'], - emodel_score_values], - axis=1).apply(lambda row: _row_transform(row, - exemplar_row, - to_skip_patterns, - skip_repaired_exemplar), - axis=1) + emodel_score_values], axis=1).apply( + lambda row: + _row_transform(row, exemplar_row, to_skip_patterns, + skip_repaired_exemplar), axis=1) del megate_scores['megate_feature_threshold'] megate_scores['Passed all'] = megate_scores.all(axis=1) return megate_scores @@ -251,7 +253,7 @@ def process_emodel(emodel, print('Skipping e-model %s: no repaired exemplars' % emodel) return - exemplar_row = exemplar_score_values.iloc[0] + exemplar_row = exemplar_score_values.iloc[0].to_dict() # identify relevant me-gate feature thresholds for each row emodel_mtype_etypes = scores[(scores.emodel == emodel) & @@ -264,6 +266,7 @@ def process_emodel(emodel, emodel_mtype_etype_thresholds = emodel_mtype_etypes.loc[ :, ['emodel', 'fullmtype', 'etype']] emodel_mtype_etype_thresholds['megate_feature_threshold'] = None + emodel_mtype_etype_thresholds.apply( lambda row: row_threshold_transform(row, megate_patterns), axis=1) @@ -281,6 +284,7 @@ def process_emodel(emodel, # identify combinations that passed the me-gating step emodel_scores = scores[(scores.emodel == emodel) & (scores.is_exemplar == 0)].copy() + passed_combos = emodel_scores[megate_scores['Passed all']] if len(passed_combos[passed_combos['emodel'] != emodel]) > 0: raise Exception('Something went wrong during row indexing in megating') -- GitLab