From aa33f1d34146683a073d45825457f8ba6da3e1fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=BChle=2C=20Laura=20Christine=20=28lakue103=29?= <laura.kuehle@uni-duesseldorf.de> Date: Thu, 6 Oct 2022 00:35:02 +0200 Subject: [PATCH] Outsourced run command for SM rule 'plot_approximation_results' into script. --- scripts/plot_approximation_results.py | 52 +++++++++++++++++++++++++++ workflows/approximation.smk | 44 +++-------------------- 2 files changed, 57 insertions(+), 39 deletions(-) create mode 100644 scripts/plot_approximation_results.py diff --git a/scripts/plot_approximation_results.py b/scripts/plot_approximation_results.py new file mode 100644 index 0000000..b94f46b --- /dev/null +++ b/scripts/plot_approximation_results.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +"""Script to plot results of ANN model testing. + +@author: Laura C. Kühle +""" +import sys +import time + +from tcd import Initial_Condition +from tcd import Quadrature +from tcd.Plotting import plot_approximation_results + + +def main() -> None: + """Plot results of ANN model tests.""" + with open(str(snakemake.log[0]), 'w', encoding='utf-8') as logfile: + sys.stdout = logfile + sys.stderr = logfile + + tic = time.perf_counter() + + if snakemake.config['schemes'][snakemake.wildcards['scheme']][ + 'detector'] == 'ArtificialNeuralNetwork': + snakemake.params['dg_params']['detector_config']['model_state'] = \ + snakemake.params['directory'] + '/trained models/' + \ + snakemake.config['schemes'][snakemake.wildcards['scheme']][ + 'detector_config']['model_state'] + + detector_dict = snakemake.params['dg_params'].copy() + + init_cond = getattr(Initial_Condition, detector_dict.pop( + 'init_cond', 'Sine'))(config=detector_dict.pop('init_config', {})) + quadrature = getattr(Quadrature, detector_dict.pop( + 'quadrature', 'Gauss'))(detector_dict.pop('quadrature_config', {})) + colors = detector_dict.pop('colors', None) + + plot_approximation_results( + directory=snakemake.params['plot_dir'], + plot_name=snakemake.wildcards['scheme'], colors=colors, + data_file=snakemake.params.plot_dir + '/' + snakemake.wildcards[ + 'scheme'], + quadrature=quadrature, init_cond=init_cond) + + toc = time.perf_counter() + print(f'Time: {toc - tic:0.4f}s') + + +if __name__ == '__main__': + if "snakemake" in locals(): + main() + else: + print('Not Defined.') diff --git a/workflows/approximation.smk b/workflows/approximation.smk index 5613a69..b07ba24 100644 --- a/workflows/approximation.smk +++ b/workflows/approximation.smk @@ -1,10 +1,3 @@ -import sys -import time - -from scripts.tcd import Initial_Condition -from scripts.tcd import Quadrature -from scripts.tcd.Plotting import plot_approximation_results - configfile: 'config.yaml' @@ -43,41 +36,14 @@ rule approximate_solution: rule plot_approximation_results: input: - DIR +'/fig/{scheme}.json' + DIR+'/fig/{scheme}.json' output: expand(DIR + '/fig/{plot}/{{scheme}}.pdf', plot=PLOTS) params: dg_params=lambda wildcards: config['schemes'][wildcards.scheme], - plot_dir=DIR + '/fig' + plot_dir=DIR + '/fig', + directory = DIR log: DIR+'/log/plot_approximation_results/{scheme}.log' - run: - with open(str(log), 'w') as logfile: - sys.stdout = logfile - sys.stderr = logfile - - tic = time.perf_counter() - - if config['schemes'][wildcards.scheme]['detector'] == \ - 'ArtificialNeuralNetwork': - params.dg_params['detector_config']['model_state'] = \ - DIR + '/trained models/' + config['schemes'][ - wildcards.scheme]['detector_config']['model_state'] - - detector_dict = params.dg_params.copy() - - init_cond = getattr(Initial_Condition, detector_dict.pop( - 'init_cond', 'Sine'))( - config=detector_dict.pop('init_config', {})) - quadrature = getattr(Quadrature, detector_dict.pop( - 'quadrature', 'Gauss'))(detector_dict.pop( - 'quadrature_config', {})) - colors = detector_dict.pop('colors', None) - - plot_approximation_results(directory=params.plot_dir, - plot_name=wildcards.scheme, colors=colors, - data_file=params.plot_dir+'/'+wildcards.scheme, - quadrature=quadrature, init_cond=init_cond) - - toc = time.perf_counter() - print(f'Time: {toc - tic:0.4f}s') \ No newline at end of file + script: + '../scripts/plot_approximation_results.py' -- GitLab