From c1f169dfe78f73434c435d9a0eac8956a0d6d17d Mon Sep 17 00:00:00 2001 From: Sebastiaan van der Tol <tol@astron.nl> Date: Wed, 1 Jul 2020 19:13:16 +0200 Subject: [PATCH] Environment variable TOLERANCE now makes comparison-oskar target a test When environment variable TOLERANCE is set and the absolute difference between OKSAR and EveryBeam exceeds its value, the script generate_basefunction_plots.py will exit with an error. --- .../generate_basefunction_plots.py | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/demo/comparison-oskar/generate_basefunction_plots.py b/demo/comparison-oskar/generate_basefunction_plots.py index 8da6a016..01c30e0d 100755 --- a/demo/comparison-oskar/generate_basefunction_plots.py +++ b/demo/comparison-oskar/generate_basefunction_plots.py @@ -1,6 +1,7 @@ #!/usr/bin/env -S python3 -B import os +import sys import numpy as np from matplotlib import pyplot as plt from generate_oskar_csv import generate_oskar_csv @@ -21,6 +22,11 @@ if 'APPLY_TRANSPOSE' in os.environ: else: apply_transpose = True +if 'TOLERANCE' in os.environ: + tolerance = float(os.environ['TOLERANCE']) +else: + tolerance = 0.0 + plt.figure(figsize=(10,6)) for em_idx in range(2): @@ -69,32 +75,37 @@ for em_idx in range(2): subprocess.call(['comparison-oskar-generate-beampattern']) - A = np.load('response.npy') + B = np.load('response.npy') if apply_transpose: - A *= (-1)**(m+1) + B *= (-1)**(m+1) plt.subplot(2,4,5) - plt.imshow(np.abs(A[:,:,0,0]).T, clim=(0,.25), origin='lower') + plt.imshow(np.abs(B[:,:,0,0]).T, clim=(0,.25), origin='lower') plt.colorbar() plt.title('abs(Etheta)') plt.ylabel('EveryBeam') plt.subplot(2,4,6) - plt.imshow(np.abs(A[:,:,0,1]).T, clim=(0,.25), origin='lower') + plt.imshow(np.abs(B[:,:,0,1]).T, clim=(0,.25), origin='lower') plt.colorbar() plt.title('abs(Ephi)') plt.subplot(2,4,7) - plt.imshow(np.angle(A[:,:,0,0]).T, clim=(-np.pi, np.pi), cmap='twilight', origin='lower') + plt.imshow(np.angle(B[:,:,0,0]).T, clim=(-np.pi, np.pi), cmap='twilight', origin='lower') plt.colorbar() plt.title('angle(Etheta)') plt.subplot(2,4,8) - plt.imshow(np.angle(A[:,:,0,1]).T, clim=(-np.pi, np.pi), cmap='twilight', origin='lower') + plt.imshow(np.angle(B[:,:,0,1]).T, clim=(-np.pi, np.pi), cmap='twilight', origin='lower') plt.colorbar() plt.title('angle(Ephi)') plt.gcf().suptitle('l = {}, m = {}, s = {}'.format(l,m,s)) plt.savefig('basefunction{}-{}'.format(basefunction_idx,em_idx)) + + if tolerance: + difference = np.nanmax(np.abs(A-B)) + if difference > tolerance: + sys.exit("Difference between OSKAR and EveryBeam spherical wave model is {}, which is larger than the tolerance {}".format(difference, tolerance)) -- GitLab