def test_session_round_trip(self, tmpdir): self.init_subset() ga = GlueApplication(self.data_collection) ga.show() viewer = ga.new_data_viewer(self.viewer_cls) viewer.add_data(self.data) session_file = tmpdir.join('test_session_round_trip.glu').strpath ga.save_session(session_file) ga.close() ga2 = GlueApplication.restore_session(session_file) ga2.show() viewer2 = ga2.viewers[0][0] data2 = ga2.data_collection[0] assert viewer2.layers[0].layer is data2 assert viewer2.layers[1].layer is data2.subsets[0] ga2.close()
def test_error_bars(tmpdir): # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() scatter = ga.new_data_viewer(VispyScatterViewer) scatter.add_data(data) scatter.viewer_size = (400, 500) viewer_state = scatter.state viewer_state.x_att = data.id['a'] viewer_state.y_att = data.id['f'] viewer_state.z_att = data.id['z'] layer_state = viewer_state.layers[0] layer_state.xerr_visible = True layer_state.xerr_attribute = data.id['b'] layer_state.yerr_visible = False layer_state.yerr_attribute = data.id['c'] layer_state.zerr_visible = True layer_state.zerr_attribute = data.id['d'] assert viewer_state.line_width == 1 # Check that writing a session works as expected. session_file = tmpdir.join('test_error_bars.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() scatter_r = ga2.viewers[0][0] layer_state = scatter_r.state.layers[0] assert layer_state.xerr_visible assert layer_state.xerr_attribute.label == 'b' assert not layer_state.yerr_visible assert layer_state.yerr_attribute.label == 'c' assert layer_state.zerr_visible assert layer_state.zerr_attribute.label == 'd' assert scatter_r.state.line_width == 1 ga2.close()
def test_session_round_trip(self, tmpdir): self.init_subset() ga = GlueApplication(self.data_collection) ga.show() viewer = ga.new_data_viewer(self.viewer_cls) viewer.add_data(self.data) session_file = tmpdir.join('test_session_round_trip.glu').strpath ga.save_session(session_file) ga.close() ga2 = GlueApplication.restore_session(session_file) ga2.show() viewer2 = ga2.viewers[0][0] data2 = ga2.data_collection[0] assert viewer2.layers[0].layer is data2 assert viewer2.layers[1].layer is data2.subsets[0] ga2.close()
def test_scatter_remove_layer_artists(tmpdir): # Regression test for a bug that caused layer states to not be removed # when the matching layer artist was removed. This then caused issues when # loading session files. # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() scatter = ga.new_data_viewer(VispyScatterViewer) scatter.add_data(data) dc.new_subset_group(subset_state=data.id['x'] > 0.5, label='subset 1') scatter.add_subset(data.subsets[0]) assert len(scatter.layers) == 2 assert len(scatter.state.layers) == 2 dc.remove_subset_group(dc.subset_groups[0]) assert len(scatter.layers) == 1 assert len(scatter.state.layers) == 1 # Check that writing a session works as expected. session_file = tmpdir.join('test_scatter_viewer.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() ga2.close()
def test_scatter_remove_layer_artists(tmpdir): # Regression test for a bug that caused layer states to not be removed # when the matching layer artist was removed. This then caused issues when # loading session files. # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() scatter = ga.new_data_viewer(VispyScatterViewer) scatter.add_data(data) dc.new_subset_group(subset_state=data.id['x'] > 0.5, label='subset 1') scatter.add_subset(data.subsets[0]) assert len(scatter.layers) == 2 assert len(scatter.state.layers) == 2 dc.remove_subset_group(dc.subset_groups[0]) assert len(scatter.layers) == 1 assert len(scatter.state.layers) == 1 # Check that writing a session works as expected. session_file = tmpdir.join('test_scatter_viewer.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show()
def test_layer_visibility_after_session(tmpdir): # Regression test for a bug that caused layers to be incorrectly visible # after saving and loading a session file. # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() scatter = ga.new_data_viewer(VispyScatterViewer) scatter.add_data(data) viewer_state = scatter.state layer_state = viewer_state.layers[0] layer_state.visible = False session_file = tmpdir.join('test_layer_visibility.glu').strpath ga.save_session(session_file) ga.close() ga2 = GlueApplication.restore_session(session_file) ga2.show() scatter_r = ga2.viewers[0][0] viewer_state = scatter_r.state layer_state = viewer_state.layers[0] assert not layer_state.visible # Make sure the multiscat layer is also not visible (this was where the bug was) layer_artist = scatter_r.layers[0] assert not layer_artist._multiscat.layers[layer_artist.id]['visible'] ga2.close()
def test_scatter_on_volume(tmpdir): data1 = Data(a=np.arange(60).reshape((3, 4, 5))) data2 = Data(x=[1, 2, 3], y=[2, 3, 4], z=[3, 4, 5]) data3 = Data(b=np.arange(60).reshape((3, 4, 5))) dc = DataCollection([data1, data2, data3]) dc.add_link(LinkSame(data1.pixel_component_ids[2], data2.id['x'])) dc.add_link(LinkSame(data1.pixel_component_ids[1], data2.id['y'])) dc.add_link(LinkSame(data1.pixel_component_ids[0], data2.id['z'])) ga = GlueApplication(dc) ga.show() volume = ga.new_data_viewer(VispyVolumeViewer) volume.add_data(data1) volume.add_data(data2) volume.add_data(data3) # Check that writing a session works as expected. session_file = tmpdir.join('test_scatter_on_volume.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() volume_r = ga2.viewers[0][0] assert len(volume_r.layers) == 3 ga2.close()
def test_isosurface_viewer(tmpdir): # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() volume = ga.new_data_viewer(VispyIsosurfaceViewer) volume.add_data(data) volume.viewer_size = (400, 500) viewer_state = volume.state viewer_state.x_stretch = 0.5 viewer_state.y_stretch = 1.0 viewer_state.z_stretch = 2.0 viewer_state.x_min = -0.1 viewer_state.x_max = 10.1 viewer_state.y_min = 0.1 viewer_state.y_max = 10.9 viewer_state.z_min = 0.2 viewer_state.z_max = 10.8 viewer_state.visible_axes = False # Get layer artist style editor layer_state = viewer_state.layers[0] layer_state.attribute = data.id['b'] layer_state.level_low = 0.1 layer_state.level_high = 0.9 # layer_state.alpha = 0.8 # test set label from slider layer_state.step = 5 assert layer_state.step == 5.0 # Check that writing a session works as expected. session_file = tmpdir.join('test_volume_viewer.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() volume_r = ga2.viewers[0][0] assert volume_r.viewer_size == (400, 500) viewer_state = volume_r.state np.testing.assert_allclose(viewer_state.x_stretch, 0.5, rtol=1e-3) np.testing.assert_allclose(viewer_state.y_stretch, 1.0, rtol=1e-3) np.testing.assert_allclose(viewer_state.z_stretch, 2.0, rtol=1e-3) assert viewer_state.x_min == -0.1 assert viewer_state.x_max == 10.1 assert viewer_state.y_min == 0.1 assert viewer_state.y_max == 10.9 assert viewer_state.z_min == 0.2 assert viewer_state.z_max == 10.8 assert not viewer_state.visible_axes layer_artist = viewer_state.layers[0] assert layer_artist.attribute.label == 'b' assert layer_artist.level_low == 0.1 assert layer_artist.level_high == 0.9 # assert layer_artist.alpha == 0.8 assert layer_artist.step == 5 ga2.close()
def test_scatter_viewer(tmpdir): # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() scatter = ga.new_data_viewer(VispyScatterViewer) scatter.add_data(data) scatter.viewer_size = (400, 500) options = scatter.options_widget() options.x_att = data.id['a'] options.y_att = data.id['f'] options.z_att = data.id['z'] options.x_stretch = 0.5 options.y_stretch = 1.0 options.z_stretch = 2.0 options.x_min = -0.1 options.x_max = 1.1 options.y_min = 0.1 options.y_max = 0.9 options.z_min = 0.2 options.z_max = 0.8 options.visible_box = False # Get layer artist style editor layer_artist = scatter.layers[0] style_widget = scatter._view.layout_style_widgets[layer_artist] style_widget.size_mode = 'Linear' style_widget.size_attribute = data.id['c'] style_widget.size_scaling = 2 style_widget.size_vmin = 0.2 style_widget.size_vmax = 0.8 style_widget.color_mode = 'Linear' style_widget.cmap_attribute = data.id['y'] style_widget.cmap_vmin = 0.1 style_widget.cmap_vmax = 0.9 style_widget.cmap = cm.BuGn # Check that writing a session works as expected. However, this only # works with Glue 0.8 and above, so we skip this test if we are using an # older version. if GLUE_LT_08: return session_file = tmpdir.join('test_scatter_viewer.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() scatter_r = ga2.viewers[0][0] assert scatter_r.viewer_size == (400, 500) options = scatter_r.options_widget() assert options.x_att.label == 'a' assert options.y_att.label == 'f' assert options.z_att.label == 'z' assert options.x_stretch == 0.5 assert options.y_stretch == 1.0 assert options.z_stretch == 2.0 assert options.x_min == -0.1 assert options.x_max == 1.1 assert options.y_min == 0.1 assert options.y_max == 0.9 assert options.z_min == 0.2 assert options.z_max == 0.8 assert not options.visible_box layer_artist = scatter_r.layers[0] assert layer_artist.size_mode == 'linear' assert layer_artist.size_attribute.label == 'c' np.testing.assert_allclose(layer_artist.size_scaling, 2, rtol=0.01) assert layer_artist.size_vmin == 0.2 assert layer_artist.size_vmax == 0.8 assert layer_artist.color_mode == 'linear' assert layer_artist.cmap_attribute.label == 'y' assert layer_artist.cmap_vmin == 0.1 assert layer_artist.cmap_vmax == 0.9 assert layer_artist.cmap is cm.BuGn
def test_scatter_viewer(tmpdir): # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() scatter = ga.new_data_viewer(VispyScatterViewer) scatter.add_data(data) scatter.viewer_size = (400, 500) viewer_state = scatter.state viewer_state.x_att = data.id['a'] viewer_state.y_att = data.id['f'] viewer_state.z_att = data.id['z'] viewer_state.x_stretch = 0.5 viewer_state.y_stretch = 1.0 viewer_state.z_stretch = 2.0 viewer_state.x_min = -0.1 viewer_state.x_max = 1.1 viewer_state.y_min = 0.1 viewer_state.y_max = 0.9 viewer_state.z_min = 0.2 viewer_state.z_max = 0.8 viewer_state.visible_axes = False # Get layer artist style editor layer_state = viewer_state.layers[0] layer_state.size_attribute = data.id['c'] layer_state.size_mode = 'Linear' layer_state.size_scaling = 2 layer_state.size_vmin = 0.2 layer_state.size_vmax = 0.8 layer_state.cmap_attribute = data.id['y'] layer_state.color_mode = 'Linear' layer_state.cmap_vmin = 0.1 layer_state.cmap_vmax = 0.9 layer_state.cmap = cm.BuGn # Check that writing a session works as expected. session_file = tmpdir.join('test_scatter_viewer.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() scatter_r = ga2.viewers[0][0] assert scatter_r.viewer_size == (400, 500) viewer_state = scatter_r.state assert viewer_state.x_att.label == 'a' assert viewer_state.y_att.label == 'f' assert viewer_state.z_att.label == 'z' np.testing.assert_allclose(viewer_state.x_stretch, 0.5, rtol=1e-3) np.testing.assert_allclose(viewer_state.y_stretch, 1.0, rtol=1e-3) np.testing.assert_allclose(viewer_state.z_stretch, 2.0, rtol=1e-3) assert viewer_state.x_min == -0.1 assert viewer_state.x_max == 1.1 assert viewer_state.y_min == 0.1 assert viewer_state.y_max == 0.9 assert viewer_state.z_min == 0.2 assert viewer_state.z_max == 0.8 assert not viewer_state.visible_axes layer_state = viewer_state.layers[0] assert layer_state.size_mode == 'Linear' assert layer_state.size_attribute.label == 'c' np.testing.assert_allclose(layer_state.size_scaling, 2, rtol=0.01) assert layer_state.size_vmin == 0.2 assert layer_state.size_vmax == 0.8 assert layer_state.color_mode == 'Linear' assert layer_state.cmap_attribute.label == 'y' assert layer_state.cmap_vmin == 0.1 assert layer_state.cmap_vmax == 0.9 assert layer_state.cmap is cm.BuGn
def test_volume_viewer(tmpdir): # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() volume = ga.new_data_viewer(VispyIsosurfaceViewer) volume.add_data(data) volume.viewer_size = (400, 500) viewer_state = volume.state viewer_state.x_stretch = 0.5 viewer_state.y_stretch = 1.0 viewer_state.z_stretch = 2.0 viewer_state.x_min = -0.1 viewer_state.x_max = 10.1 viewer_state.y_min = 0.1 viewer_state.y_max = 10.9 viewer_state.z_min = 0.2 viewer_state.z_max = 10.8 viewer_state.visible_axes = False # Get layer artist style editor layer_state = viewer_state.layers[0] layer_state.attribute = data.id['b'] layer_state.level_low = 0.1 layer_state.level_high = 0.9 # layer_state.alpha = 0.8 # test set label from slider layer_state.step = 5 assert layer_state.step == 5.0 # Check that writing a session works as expected. session_file = tmpdir.join('test_volume_viewer.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() volume_r = ga2.viewers[0][0] assert volume_r.viewer_size == (400, 500) viewer_state = volume_r.state np.testing.assert_allclose(viewer_state.x_stretch, 0.5, rtol=1e-3) np.testing.assert_allclose(viewer_state.y_stretch, 1.0, rtol=1e-3) np.testing.assert_allclose(viewer_state.z_stretch, 2.0, rtol=1e-3) assert viewer_state.x_min == -0.1 assert viewer_state.x_max == 10.1 assert viewer_state.y_min == 0.1 assert viewer_state.y_max == 10.9 assert viewer_state.z_min == 0.2 assert viewer_state.z_max == 10.8 assert not viewer_state.visible_axes layer_artist = viewer_state.layers[0] assert layer_artist.attribute.label == 'b' assert layer_artist.level_low == 0.1 assert layer_artist.level_high == 0.9 # assert layer_artist.alpha == 0.8 assert layer_artist.step == 5 ga2.close()
def test_volume_viewer(tmpdir): # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() volume = ga.new_data_viewer(VispyVolumeViewer) volume.add_data(data) volume.viewer_size = (400, 500) options = volume.options_widget() options.x_stretch = 0.5 options.y_stretch = 1.0 options.z_stretch = 2.0 options.x_min = -0.1 options.x_max = 10.1 options.y_min = 0.1 options.y_max = 10.9 options.z_min = 0.2 options.z_max = 10.8 options.visible_box = False # Get layer artist style editor layer_artist = volume.layers[0] style_widget = volume._view.layout_style_widgets[layer_artist] style_widget.attribute = data.id['b'] style_widget.vmin = 0.1 style_widget.vmax = 0.9 style_widget.alpha = 0.8 # Check that writing a session works as expected. session_file = tmpdir.join('test_volume_viewer.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() volume_r = ga2.viewers[0][0] assert volume_r.viewer_size == (400, 500) options = volume_r.options_widget() assert options.x_stretch == 0.5 assert options.y_stretch == 1.0 assert options.z_stretch == 2.0 assert options.x_min == -0.1 assert options.x_max == 10.1 assert options.y_min == 0.1 assert options.y_max == 10.9 assert options.z_min == 0.2 assert options.z_max == 10.8 assert not options.visible_box layer_artist = volume_r.layers[0] assert style_widget.attribute.label == 'b' assert style_widget.vmin == 0.1 assert style_widget.vmax == 0.9 assert style_widget.alpha == 0.8 ga2.close()
def test_vectors(tmpdir): # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() scatter = ga.new_data_viewer(VispyScatterViewer) scatter.add_data(data) scatter.viewer_size = (400, 500) viewer_state = scatter.state viewer_state.x_att = data.id['a'] viewer_state.y_att = data.id['f'] viewer_state.z_att = data.id['z'] layer_state = viewer_state.layers[0] layer_state.vector_visible = True layer_state.vx_attribute = data.id['x'] layer_state.vy_attribute = data.id['y'] layer_state.vz_attribute = data.id['e'] layer_state.vector_scaling = 0.1 layer_state.vector_origin = 'tail' layer_state.vector_arrowhead = True viewer_state.line_width = 3 # Check that writing a session works as expected. session_file = tmpdir.join('test_vectors.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() scatter_r = ga2.viewers[0][0] layer_state = scatter_r.state.layers[0] assert layer_state.vector_visible assert layer_state.vx_attribute.label == 'x' assert layer_state.vy_attribute.label == 'y' assert layer_state.vz_attribute.label == 'e' assert np.isclose(layer_state.vector_scaling, 0.1) assert layer_state.vector_origin == 'tail' assert layer_state.vector_arrowhead assert scatter_r.state.line_width == 3 ga2.close()
def test_scatter_viewer(tmpdir): # Create fake data data = make_test_data() # Create fake session dc = DataCollection([data]) ga = GlueApplication(dc) ga.show() scatter = ga.new_data_viewer(VispyScatterViewer) scatter.add_data(data) scatter.viewer_size = (400, 500) options = scatter.options_widget() options.x_att = data.id['a'] options.y_att = data.id['f'] options.z_att = data.id['z'] options.x_stretch = 0.5 options.y_stretch = 1.0 options.z_stretch = 2.0 options.x_min = -0.1 options.x_max = 1.1 options.y_min = 0.1 options.y_max = 0.9 options.z_min = 0.2 options.z_max = 0.8 options.visible_box = False # Get layer artist style editor layer_artist = scatter.layers[0] style_widget = scatter._view.layout_style_widgets[layer_artist] style_widget.size_mode = 'Linear' style_widget.size_attribute = data.id['c'] style_widget.size_scaling = 2 style_widget.size_vmin = 0.2 style_widget.size_vmax = 0.8 style_widget.color_mode = 'Linear' style_widget.cmap_attribute = data.id['y'] style_widget.cmap_vmin = 0.1 style_widget.cmap_vmax = 0.9 style_widget.cmap = cm.BuGn # Check that writing a session works as expected. However, this only # works with Glue 0.8 and above, so we skip this test if we are using an # older version. if GLUE_LT_08: return session_file = tmpdir.join('test_scatter_viewer.glu').strpath ga.save_session(session_file) ga.close() # Now we can check that everything is restored correctly ga2 = GlueApplication.restore_session(session_file) ga2.show() scatter_r = ga2.viewers[0][0] assert scatter_r.viewer_size == (400, 500) options = scatter_r.options_widget() assert options.x_att.label == 'a' assert options.y_att.label == 'f' assert options.z_att.label == 'z' assert options.x_stretch == 0.5 assert options.y_stretch == 1.0 assert options.z_stretch == 2.0 assert options.x_min == -0.1 assert options.x_max == 1.1 assert options.y_min == 0.1 assert options.y_max == 0.9 assert options.z_min == 0.2 assert options.z_max == 0.8 assert not options.visible_box layer_artist = scatter_r.layers[0] assert layer_artist.size_mode == 'linear' assert layer_artist.size_attribute.label == 'c' np.testing.assert_allclose(layer_artist.size_scaling, 2, rtol=0.01) assert layer_artist.size_vmin == 0.2 assert layer_artist.size_vmax == 0.8 assert layer_artist.color_mode == 'linear' assert layer_artist.cmap_attribute.label == 'y' assert layer_artist.cmap_vmin == 0.1 assert layer_artist.cmap_vmax == 0.9 assert layer_artist.cmap is cm.BuGn