[yt-svn] commit/yt: jzuhone: Merged in atmyers/yt (pull request #1883)
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Mon Nov 30 11:18:17 PST 2015
1 new commit in yt:
https://bitbucket.org/yt_analysis/yt/commits/5cbfdce0652c/
Changeset: 5cbfdce0652c
Branch: yt
User: jzuhone
Date: 2015-11-30 19:17:56+00:00
Summary: Merged in atmyers/yt (pull request #1883)
Better plot tests
Affected #: 6 files
diff -r 66152c77e32c81c8bce0506a67f9a192302f8623 -r 5cbfdce0652c5ec40b6d52404f03895b2f901ae6 yt/analysis_modules/sunyaev_zeldovich/tests/test_projection.py
--- a/yt/analysis_modules/sunyaev_zeldovich/tests/test_projection.py
+++ b/yt/analysis_modules/sunyaev_zeldovich/tests/test_projection.py
@@ -127,7 +127,7 @@
def onaxis_image_func(filename_prefix):
szprj.write_png(filename_prefix)
for test in [GenericArrayTest(ds, onaxis_array_func),
- GenericImageTest(ds, onaxis_image_func, 3)]:
+ GenericImageTest(ds, onaxis_image_func, 12)]:
test_M7_onaxis.__name__ = test.description
yield test
@@ -142,6 +142,6 @@
def offaxis_image_func(filename_prefix):
szprj.write_png(filename_prefix)
for test in [GenericArrayTest(ds, offaxis_array_func),
- GenericImageTest(ds, offaxis_image_func, 3)]:
+ GenericImageTest(ds, offaxis_image_func, 12)]:
test_M7_offaxis.__name__ = test.description
yield test
diff -r 66152c77e32c81c8bce0506a67f9a192302f8623 -r 5cbfdce0652c5ec40b6d52404f03895b2f901ae6 yt/utilities/answer_testing/framework.py
--- a/yt/utilities/answer_testing/framework.py
+++ b/yt/utilities/answer_testing/framework.py
@@ -51,6 +51,8 @@
import matplotlib.image as mpimg
import yt.visualization.plot_window as pw
+import yt.visualization.particle_plots as particle_plots
+import yt.visualization.profile_plotter as profile_plotter
mylog = logging.getLogger('nose.plugins.answer-testing')
run_big_data = False
@@ -349,11 +351,12 @@
def create_plot(self, ds, plot_type, plot_field, plot_axis, plot_kwargs = None):
# plot_type should be a string
- # plot_args should be a tuple
# plot_kwargs should be a dict
if plot_type is None:
raise RuntimeError('Must explicitly request a plot type')
- cls = getattr(pw, plot_type)
+ cls = getattr(pw, plot_type, None)
+ if cls is None:
+ cls = getattr(particle_plots, plot_type)
plot = cls(*(ds, plot_axis, plot_field), **plot_kwargs)
return plot
@@ -740,6 +743,50 @@
def compare(self, new_result, old_result):
compare_image_lists(new_result, old_result, self.decimals)
+class PhasePlotAttributeTest(AnswerTestingTest):
+ _type_name = "PhasePlotAttribute"
+ _attrs = ('plot_type', 'x_field', 'y_field', 'z_field',
+ 'attr_name', 'attr_args')
+ def __init__(self, ds_fn, x_field, y_field, z_field,
+ attr_name, attr_args, decimals, plot_type='PhasePlot'):
+ super(PhasePlotAttributeTest, self).__init__(ds_fn)
+ self.data_source = self.ds.all_data()
+ self.plot_type = plot_type
+ self.x_field = x_field
+ self.y_field = y_field
+ self.z_field = z_field
+ self.plot_kwargs = {}
+ self.attr_name = attr_name
+ self.attr_args = attr_args
+ self.decimals = decimals
+
+ def create_plot(self, data_source, x_field, y_field, z_field,
+ plot_type, plot_kwargs=None):
+ # plot_type should be a string
+ # plot_kwargs should be a dict
+ if plot_type is None:
+ raise RuntimeError('Must explicitly request a plot type')
+ cls = getattr(profile_plotter, plot_type, None)
+ if cls is None:
+ cls = getattr(particle_plots, plot_type)
+ plot = cls(*(data_source, x_field, y_field, z_field), **plot_kwargs)
+ return plot
+
+ def run(self):
+ plot = self.create_plot(self.data_source, self.x_field, self.y_field,
+ self.z_field, self.plot_type, self.plot_kwargs)
+ attr = getattr(plot, self.attr_name)
+ attr(*self.attr_args[0], **self.attr_args[1])
+ tmpfd, tmpname = tempfile.mkstemp(suffix='.png')
+ os.close(tmpfd)
+ plot.save(name=tmpname)
+ image = mpimg.imread(tmpname)
+ os.remove(tmpname)
+ return [zlib.compress(image.dumps())]
+
+ def compare(self, new_result, old_result):
+ compare_image_lists(new_result, old_result, self.decimals)
+
class GenericArrayTest(AnswerTestingTest):
_type_name = "GenericArray"
_attrs = ('array_func_name','args','kwargs')
diff -r 66152c77e32c81c8bce0506a67f9a192302f8623 -r 5cbfdce0652c5ec40b6d52404f03895b2f901ae6 yt/visualization/tests/test_particle_plot.py
--- a/yt/visualization/tests/test_particle_plot.py
+++ b/yt/visualization/tests/test_particle_plot.py
@@ -20,9 +20,14 @@
from yt.data_objects.profiles import create_profile
from yt.extern.parameterized import parameterized, param
from yt.visualization.tests.test_plotwindow import \
- assert_fname, WIDTH_SPECS
+ assert_fname, WIDTH_SPECS, ATTR_ARGS
from yt.testing import \
fake_particle_ds, assert_array_almost_equal
+from yt.utilities.answer_testing.framework import \
+ requires_ds, \
+ data_dir_load, \
+ PlotWindowAttributeTest, \
+ PhasePlotAttributeTest
from yt.visualization.api import \
ParticleProjectionPlot, ParticlePhasePlot
from yt.units.yt_array import YTArray
@@ -33,6 +38,22 @@
from yt.config import ytcfg
ytcfg["yt", "__withintesting"] = "True"
+# override some of the plotwindow ATTR_ARGS
+PROJ_ATTR_ARGS = ATTR_ARGS.copy()
+PROJ_ATTR_ARGS["set_cmap"] = [(('particle_mass', 'RdBu'), {}),
+ (('particle_mass', 'kamae'), {})]
+PROJ_ATTR_ARGS["set_log"] = [(('particle_mass', False), {})]
+PROJ_ATTR_ARGS["set_zlim"] = [(('particle_mass', 1e-25, 1e-23), {}),
+ (('particle_mass', 1e-25, None),
+ {'dynamic_range': 4})]
+
+PHASE_ATTR_ARGS = {"annotate_text": [(((5e-29, 5e7), "Hello YT"), {}),
+ (((5e-29, 5e7), "Hello YT"), {'color':'b'})],
+ "set_title": [(('particle_mass', 'A phase plot.'), {})],
+ "set_log": [(('particle_mass', False), {})],
+ "set_unit": [(('particle_mass', 'Msun'), {})],
+ "set_xlim": [((-4e7, 4e7), {})],
+ "set_ylim": [((-4e7, 4e7), {})]}
TEST_FLNMS = [None, 'test', 'test.png', 'test.eps',
'test.ps', 'test.pdf']
@@ -59,6 +80,58 @@
['particle_mass', 'particle_ones'])]
+g30 = "IsolatedGalaxy/galaxy0030/galaxy0030"
+
+ at requires_ds(g30, big_data=True)
+def test_particle_projection_answers():
+ '''
+
+ This iterates over the all the plot modification functions in
+ PROJ_ATTR_ARGS. Each time, it compares the images produced by
+ ParticleProjectionPlot to the gold standard.
+
+
+ '''
+
+ plot_field = 'particle_mass'
+ decimals = 12
+ ds = data_dir_load(g30)
+ for ax in 'xyz':
+ for attr_name in PROJ_ATTR_ARGS.keys():
+ for args in PROJ_ATTR_ARGS[attr_name]:
+ test = PlotWindowAttributeTest(ds, plot_field, ax,
+ attr_name,
+ args, decimals,
+ 'ParticleProjectionPlot')
+ test_particle_projection_answers.__name__ = test.description
+ yield test
+
+
+ at requires_ds(g30, big_data=True)
+def test_particle_phase_answers():
+ '''
+
+ This iterates over the all the plot modification functions in
+ PHASE_ATTR_ARGS. Each time, it compares the images produced by
+ ParticlePhasePlot to the gold standard.
+
+ '''
+
+ decimals = 12
+ ds = data_dir_load(g30)
+
+ x_field = 'particle_velocity_x'
+ y_field = 'particle_velocity_y'
+ z_field = 'particle_mass'
+ for attr_name in PHASE_ATTR_ARGS.keys():
+ for args in PHASE_ATTR_ARGS[attr_name]:
+ test = PhasePlotAttributeTest(ds, x_field, y_field, z_field,
+ attr_name, args, decimals,
+ 'ParticlePhasePlot')
+
+ test_particle_phase_answers.__name__ = test.description
+ yield test
+
class TestParticlePhasePlotSave(unittest.TestCase):
@classmethod
diff -r 66152c77e32c81c8bce0506a67f9a192302f8623 -r 5cbfdce0652c5ec40b6d52404f03895b2f901ae6 yt/visualization/tests/test_plotwindow.py
--- a/yt/visualization/tests/test_plotwindow.py
+++ b/yt/visualization/tests/test_plotwindow.py
@@ -182,7 +182,7 @@
def test_attributes():
"""Test plot member functions that aren't callbacks"""
plot_field = 'density'
- decimals = 3
+ decimals = 12
ds = data_dir_load(M7)
for ax in 'xyz':
@@ -200,7 +200,7 @@
@requires_ds(WT)
def test_attributes_wt():
plot_field = 'density'
- decimals = 3
+ decimals = 12
ds = data_dir_load(WT)
ax = 'z'
diff -r 66152c77e32c81c8bce0506a67f9a192302f8623 -r 5cbfdce0652c5ec40b6d52404f03895b2f901ae6 yt/visualization/tests/test_profile_plots.py
--- a/yt/visualization/tests/test_profile_plots.py
+++ b/yt/visualization/tests/test_profile_plots.py
@@ -26,6 +26,46 @@
ProfilePlot, PhasePlot
from yt.visualization.tests.test_plotwindow import \
assert_fname, TEST_FLNMS
+from yt.utilities.answer_testing.framework import \
+ PhasePlotAttributeTest, \
+ requires_ds, \
+ data_dir_load
+
+ATTR_ARGS = {"annotate_text": [(((5e-29, 5e7), "Hello YT"), {}),
+ (((5e-29, 5e7), "Hello YT"), {'color':'b'})],
+
+ "set_title": [(('cell_mass', 'A phase plot.'), {})],
+ "set_log": [(('cell_mass', False), {})],
+ "set_unit": [(('cell_mass', 'Msun'), {})],
+ "set_xlim": [((1e-27, 1e-24), {})],
+ "set_ylim": [((1e2, 1e6), {})]}
+
+
+g30 = "IsolatedGalaxy/galaxy0030/galaxy0030"
+
+ at requires_ds(g30, big_data=True)
+def test_phase_plot_attributes():
+ '''
+
+ This iterates over the all the plot modification functions in
+ ATTR_ARGS. Each time, it compares the images produced by
+ PhasePlot to the gold standard.
+
+
+ '''
+
+ x_field = 'density'
+ y_field = 'temperature'
+ z_field = 'cell_mass'
+ decimals = 12
+ ds = data_dir_load(g30)
+ for ax in 'xyz':
+ for attr_name in ATTR_ARGS.keys():
+ for args in ATTR_ARGS[attr_name]:
+ test = PhasePlotAttributeTest(ds, x_field, y_field, z_field,
+ attr_name, args, decimals)
+ test_phase_plot_attributes.__name__ = test.description
+ yield test
class TestProfilePlotSave(unittest.TestCase):
diff -r 66152c77e32c81c8bce0506a67f9a192302f8623 -r 5cbfdce0652c5ec40b6d52404f03895b2f901ae6 yt/visualization/volume_rendering/tests/test_vr_orientation.py
--- a/yt/visualization/volume_rendering/tests/test_vr_orientation.py
+++ b/yt/visualization/volume_rendering/tests/test_vr_orientation.py
@@ -107,7 +107,7 @@
n_frames = 5
theta = np.pi / n_frames
- decimals = 3
+ decimals = 12
for lens_type in ['plane-parallel', 'perspective']:
frame = 0
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list