diff --git a/demo/comparison-oskar/generate_basefunction_plots.py b/demo/comparison-oskar/generate_basefunction_plots.py index 8da6a0167fd52a296a921f9e23733b7e8c3fe22b..01c30e0d909d308420e774b80bdfe4d34dabd59a 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))