def test_hypercube(self): # Check defaults when we add data self.viewer.add_data(self.hypercube) assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'Coordinate components:World 0:World 1:World 2:World 3' assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'Coordinate components:World 0:World 1:World 2:World 3' assert self.viewer.axes.get_xlabel() == 'World 3' assert self.viewer.state.x_att_world is self.hypercube.id['World 3'] assert self.viewer.state.x_att is self.hypercube.pixel_component_ids[3] assert_allclose(self.viewer.state.x_min, -0.6839826839826846) assert_allclose(self.viewer.state.x_max, +4.6839826839826846) assert self.viewer.axes.get_ylabel() == 'World 2' assert self.viewer.state.y_att_world is self.hypercube.id['World 2'] assert self.viewer.state.y_att is self.hypercube.pixel_component_ids[2] assert self.viewer.state.y_min == -0.5 assert self.viewer.state.y_max == +3.5 assert not self.viewer.state.x_log assert not self.viewer.state.y_log assert len(self.viewer.state.layers) == 1
def test_basic(self): # Check defaults when we add data self.viewer.add_data(self.image1) assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'World 0:World 1' assert combo_as_string(self.options_widget.ui.combosel_y_att_world) == 'World 0:World 1' assert self.viewer.axes.get_xlabel() == 'World 1' assert self.viewer.state.x_att_world is self.image1.id['World 1'] assert self.viewer.state.x_att is self.image1.pixel_component_ids[1] # TODO: make sure limits are deterministic then update this # assert self.viewer.state.x_min == -0.5 # assert self.viewer.state.x_max == +1.5 assert self.viewer.axes.get_ylabel() == 'World 0' assert self.viewer.state.y_att_world is self.image1.id['World 0'] assert self.viewer.state.y_att is self.image1.pixel_component_ids[0] # TODO: make sure limits are deterministic then update this # assert self.viewer.state.y_min == -0.5 # assert self.viewer.state.y_max == +1.5 assert not self.viewer.state.x_log assert not self.viewer.state.y_log assert len(self.viewer.state.layers) == 1
def test_remove_data(self): self.viewer.add_data(self.data) assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'x:y:z' assert combo_as_string(self.viewer.options_widget().ui.combosel_y_att) == 'x:y:z' self.data_collection.remove(self.data) assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == '' assert combo_as_string(self.viewer.options_widget().ui.combosel_y_att) == ''
def test_combo_updates_with_component_add(self): self.viewer.add_data(self.data) self.data.add_component([3, 4, 1, 2], 'a') assert self.viewer.state.x_att is self.data.id['x'] assert self.viewer.state.y_att is self.data.id['y'] assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'x:y:z:a' assert combo_as_string(self.viewer.options_widget().ui.combosel_y_att) == 'x:y:z:a'
def test_basic(self): # Check defaults when we add data self.viewer.add_data(self.image1) assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'Coordinate components:World 0:World 1' assert combo_as_string(self.options_widget.ui.combosel_y_att_world) == 'Coordinate components:World 0:World 1' assert self.viewer.axes.get_xlabel() == 'World 1' assert self.viewer.state.x_att_world is self.image1.id['World 1'] assert self.viewer.state.x_att is self.image1.pixel_component_ids[1] assert_allclose(self.viewer.state.x_min, -0.8419913419913423) assert_allclose(self.viewer.state.x_max, +1.8419913419913423) assert self.viewer.axes.get_ylabel() == 'World 0' assert self.viewer.state.y_att_world is self.image1.id['World 0'] assert self.viewer.state.y_att is self.image1.pixel_component_ids[0] assert self.viewer.state.y_min == -0.5 assert self.viewer.state.y_max == +1.5 assert not self.viewer.state.x_log assert not self.viewer.state.y_log assert len(self.viewer.state.layers) == 1
def test_remove_data(self): self.viewer.add_data(self.data) assert combo_as_string( self.viewer.options_widget().ui.combosel_x_att) == 'x:y' self.data_collection.remove(self.data) assert combo_as_string( self.viewer.options_widget().ui.combosel_x_att) == ''
def test_hypercube(self): # Check defaults when we add data self.viewer.add_data(self.hypercube) assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'World 0:World 1:World 2:World 3' assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'World 0:World 1:World 2:World 3' assert self.viewer.axes.get_xlabel() == 'World 3' assert self.viewer.state.x_att_world is self.hypercube.id['World 3'] assert self.viewer.state.x_att is self.hypercube.pixel_component_ids[3] # TODO: make sure limits are deterministic then update this # assert self.viewer.state.x_min == -0.5 # assert self.viewer.state.x_max == +1.5 assert self.viewer.axes.get_ylabel() == 'World 2' assert self.viewer.state.y_att_world is self.hypercube.id['World 2'] assert self.viewer.state.y_att is self.hypercube.pixel_component_ids[2] # TODO: make sure limits are deterministic then update this # assert self.viewer.state.y_min == -0.5 # assert self.viewer.state.y_max == +1.5 assert not self.viewer.state.x_log assert not self.viewer.state.y_log assert len(self.viewer.state.layers) == 1
def test_basic(self): # Check defaults when we add data self.viewer.add_data(self.image1) assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'Coordinate components:World 0:World 1' assert combo_as_string(self.options_widget.ui.combosel_y_att_world) == 'Coordinate components:World 0:World 1' assert self.viewer.axes.get_xlabel() == 'World 1' assert self.viewer.state.x_att_world is self.image1.id['World 1'] assert self.viewer.state.x_att is self.image1.pixel_component_ids[1] # TODO: make sure limits are deterministic then update this # assert self.viewer.state.x_min == -0.5 # assert self.viewer.state.x_max == +1.5 assert self.viewer.axes.get_ylabel() == 'World 0' assert self.viewer.state.y_att_world is self.image1.id['World 0'] assert self.viewer.state.y_att is self.image1.pixel_component_ids[0] # TODO: make sure limits are deterministic then update this # assert self.viewer.state.y_min == -0.5 # assert self.viewer.state.y_max == +1.5 assert not self.viewer.state.x_log assert not self.viewer.state.y_log assert len(self.viewer.state.layers) == 1
def test_combo_updates_with_component_add(self): self.viewer.add_data(self.data) self.data.add_component([3, 4, 1, 2], 'a') assert self.viewer.state.x_att is self.data.id['x'] assert self.viewer.state.y_att is self.data.id['y'] assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'Main components:x:y:z:a:Coordinate components:Pixel Axis 0 [x]:World 0' assert combo_as_string(self.viewer.options_widget().ui.combosel_y_att) == 'Main components:x:y:z:a:Coordinate components:Pixel Axis 0 [x]:World 0'
def test_component_id_combo_helper_init(): # Regression test to make sure that the numeric and categorical options # in the __init__ are taken into account properly combo = QtWidgets.QComboBox() dc = DataCollection([]) data = Data(a=[1,2,3], b=['a','b','c'], label='data2') dc.append(data) helper = ComponentIDComboHelper(combo, dc) helper.append_data(data) assert combo_as_string(combo) == "a:b" helper = ComponentIDComboHelper(combo, dc, numeric=False) helper.append_data(data) assert combo_as_string(combo) == "b" helper = ComponentIDComboHelper(combo, dc, categorical=False) helper.append_data(data) assert combo_as_string(combo) == "a" helper = ComponentIDComboHelper(combo, dc, numeric=False, categorical=False) helper.append_data(data) assert combo_as_string(combo) == ""
def test_hypercube(self): # Check defaults when we add data self.viewer.add_data(self.hypercube) assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'Coordinate components:World 0:World 1:World 2:World 3' assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'Coordinate components:World 0:World 1:World 2:World 3' assert self.viewer.axes.get_xlabel() == 'World 3' assert self.viewer.state.x_att_world is self.hypercube.id['World 3'] assert self.viewer.state.x_att is self.hypercube.pixel_component_ids[3] # TODO: make sure limits are deterministic then update this # assert self.viewer.state.x_min == -0.5 # assert self.viewer.state.x_max == +1.5 assert self.viewer.axes.get_ylabel() == 'World 2' assert self.viewer.state.y_att_world is self.hypercube.id['World 2'] assert self.viewer.state.y_att is self.hypercube.pixel_component_ids[2] # TODO: make sure limits are deterministic then update this # assert self.viewer.state.y_min == -0.5 # assert self.viewer.state.y_max == +1.5 assert not self.viewer.state.x_log assert not self.viewer.state.y_log assert len(self.viewer.state.layers) == 1
def test_component_id_combo_helper_init(): # Regression test to make sure that the numeric and categorical options # in the __init__ are taken into account properly combo = QtWidgets.QComboBox() dc = DataCollection([]) data = Data(a=[1, 2, 3], b=['a', 'b', 'c'], label='data2') dc.append(data) helper = ComponentIDComboHelper(combo, dc) helper.append_data(data) assert combo_as_string(combo) == "a:b" helper = ComponentIDComboHelper(combo, dc, numeric=False) helper.append_data(data) assert combo_as_string(combo) == "b" helper = ComponentIDComboHelper(combo, dc, categorical=False) helper.append_data(data) assert combo_as_string(combo) == "a" helper = ComponentIDComboHelper(combo, dc, numeric=False, categorical=False) helper.append_data(data) assert combo_as_string(combo) == ""
def test_remove_data(self): self.viewer.add_data(self.data) assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'Main components:x:y:z:Coordinate components:Pixel Axis 0 [x]:World 0' assert combo_as_string(self.viewer.options_widget().ui.combosel_y_att) == 'Main components:x:y:z:Coordinate components:Pixel Axis 0 [x]:World 0' self.data_collection.remove(self.data) assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == '' assert combo_as_string(self.viewer.options_widget().ui.combosel_y_att) == ''
def test_combo_updates_with_component_add(self): self.viewer.add_data(self.data) self.data.add_component([3, 4, 1, 2], 'a') assert self.viewer.state.x_att is self.data.id['x'] assert self.viewer.state.y_att is self.data.id['y'] assert combo_as_string( self.viewer.options_widget().ui.combosel_x_att) == 'x:y:z:a' assert combo_as_string( self.viewer.options_widget().ui.combosel_y_att) == 'x:y:z:a'
def test_custom_coords(self): # Check defaults when we add data with coordinates self.viewer.add_data(self.image2) assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'Coordinate components:Banana:Apple' assert combo_as_string(self.options_widget.ui.combosel_x_att_world) == 'Coordinate components:Banana:Apple' assert self.viewer.axes.get_xlabel() == 'Apple' assert self.viewer.state.x_att_world is self.image2.id['Apple'] assert self.viewer.state.x_att is self.image2.pixel_component_ids[1] assert self.viewer.axes.get_ylabel() == 'Banana' assert self.viewer.state.y_att_world is self.image2.id['Banana'] assert self.viewer.state.y_att is self.image2.pixel_component_ids[0]
def test_component_id_combo_helper_nocollection(): # Make sure that we can use use ComponentIDComboHelper without any # data collection. combo = QtWidgets.QComboBox() data = Data(x=[1, 2, 3], y=[2, 3, 4], z=['a', 'b', 'c'], label='data1') helper = ComponentIDComboHelper(combo, data=data) assert combo_as_string(combo) == "x:y:z" helper.categorical = False assert combo_as_string(combo) == "x:y" helper.numeric = False assert combo_as_string(combo) == "" helper.categorical = True assert combo_as_string(combo) == "z" helper.numeric = True assert combo_as_string(combo) == "x:y:z" data2 = Data(a=[1, 2, 3], b=['a', 'b', 'c'], label='data2') with pytest.raises(Exception) as exc: helper.append_data(data2) assert exc.value.args[0] == ( "Cannot change data in ComponentIDComboHelper " "initialized from a single dataset") with pytest.raises(Exception) as exc: helper.remove_data(data2) assert exc.value.args[0] == ( "Cannot change data in ComponentIDComboHelper " "initialized from a single dataset") with pytest.raises(Exception) as exc: helper.set_multiple_data([data2]) assert exc.value.args[0] == ( "Cannot change data in ComponentIDComboHelper " "initialized from a single dataset")
def test_combo_updates_with_component_add(self): self.viewer.add_data(self.image1) self.image1.add_component([[9, 9], [8, 8]], 'z') assert self.viewer.state.x_att_world is self.image1.id['World 1'] assert self.viewer.state.y_att_world is self.image1.id['World 0'] # TODO: there should be an easier way to do this layer_style_editor = self.viewer._view.layout_style_widgets[self.viewer.layers[0]] assert combo_as_string(layer_style_editor.ui.combosel_attribute) == 'x:y:z'
def test_component_id_combo_helper_nocollection(): # Make sure that we can use use ComponentIDComboHelper without any # data collection. combo = QtWidgets.QComboBox() data = Data(x=[1, 2, 3], y=[2, 3, 4], z=['a','b','c'], label='data1') helper = ComponentIDComboHelper(combo, data=data) assert combo_as_string(combo) == "x:y:z" helper.categorical = False assert combo_as_string(combo) == "x:y" helper.numeric = False assert combo_as_string(combo) == "" helper.categorical = True assert combo_as_string(combo) == "z" helper.numeric = True assert combo_as_string(combo) == "x:y:z" data2 = Data(a=[1, 2, 3], b=['a', 'b', 'c'], label='data2') with pytest.raises(Exception) as exc: helper.append_data(data2) assert exc.value.args[0] == ("Cannot change data in ComponentIDComboHelper " "initialized from a single dataset") with pytest.raises(Exception) as exc: helper.remove_data(data2) assert exc.value.args[0] == ("Cannot change data in ComponentIDComboHelper " "initialized from a single dataset") with pytest.raises(Exception) as exc: helper.set_multiple_data([data2]) assert exc.value.args[0] == ("Cannot change data in ComponentIDComboHelper " "initialized from a single dataset")
def test_component_id_combo_helper(): combo = QtWidgets.QComboBox() dc = DataCollection([]) helper = ComponentIDComboHelper(combo, dc) assert combo_as_string(combo) == "" data1 = Data(x=[1, 2, 3], y=[2, 3, 4], label='data1') dc.append(data1) helper.append_data(data1) assert combo_as_string(combo) == "x:y" data2 = Data(a=[1, 2, 3], b=['a', 'b', 'c'], label='data2') dc.append(data2) helper.append_data(data2) assert combo_as_string(combo) == "data1:x:y:data2:a:b" helper.categorical = False assert combo_as_string(combo) == "data1:x:y:data2:a" helper.numeric = False assert combo_as_string(combo) == "data1:data2" helper.categorical = True helper.numeric = True helper.visible = False assert combo_as_string( combo ) == "data1:Pixel Axis 0 [x]:World 0:x:y:data2:Pixel Axis 0 [x]:World 0:a:b" helper.visible = True dc.remove(data2) assert combo_as_string(combo) == "x:y" # TODO: check that renaming a component updates the combo # data1.id['x'].label = 'z' # assert combo_as_string(combo) == "z:y" helper.remove_data(data1) assert combo_as_string(combo) == ""
def test_data_collection_combo_helper(): combo = QtWidgets.QComboBox() dc = DataCollection([]) helper = DataCollectionComboHelper(combo, dc) data1 = Data(x=[1,2,3], y=[2,3,4], label='data1') dc.append(data1) assert combo_as_string(combo) == "data1" data1.label = 'mydata1' assert combo_as_string(combo) == "mydata1" dc.remove(data1) assert combo_as_string(combo) == ""
def test_data_collection_combo_helper(): combo = QtWidgets.QComboBox() dc = DataCollection([]) helper = DataCollectionComboHelper(combo, dc) data1 = Data(x=[1, 2, 3], y=[2, 3, 4], label='data1') dc.append(data1) assert combo_as_string(combo) == "data1" data1.label = 'mydata1' assert combo_as_string(combo) == "mydata1" dc.remove(data1) assert combo_as_string(combo) == ""
def test_basic(self): viewer_state = self.viewer.state # Check defaults when we add data self.viewer.add_data(self.data) assert combo_as_string( self.viewer.options_widget().ui.combosel_x_att ) == 'Main components:x:y:z:Coordinate components:Pixel Axis 0 [x]:World 0' assert combo_as_string( self.viewer.options_widget().ui.combosel_y_att ) == 'Main components:x:y:z:Coordinate components:Pixel Axis 0 [x]:World 0' assert viewer_state.x_att is self.data.id['x'] assert_allclose(viewer_state.x_min, -1.1 - 0.225) assert_allclose(viewer_state.x_max, 3.4 + 0.225) assert viewer_state.y_att is self.data.id['y'] assert_allclose(viewer_state.y_min, 3.2 - 0.015) assert_allclose(viewer_state.y_max, 3.5 + 0.015) assert not viewer_state.x_log assert not viewer_state.y_log assert len(viewer_state.layers) == 1 # Change to categorical component and check new values viewer_state.y_att = self.data.id['z'] assert viewer_state.x_att is self.data.id['x'] assert_allclose(viewer_state.x_min, -1.1 - 0.225) assert_allclose(viewer_state.x_max, 3.4 + 0.225) assert viewer_state.y_att is self.data.id['z'] assert_allclose(viewer_state.y_min, -0.5 - 0.15) assert_allclose(viewer_state.y_max, 2.5 + 0.15) assert not viewer_state.x_log assert not viewer_state.y_log
def test_component_replaced(self): # regression test for 508 - if a component ID is replaced, we should # make sure that the component ID is selected if the old component ID # was selected self.viewer.add_data(self.data) self.viewer.state.x_att = self.data.id['x'] test = ComponentID('test') self.data.update_id(self.viewer.state.x_att, test) assert self.viewer.state.x_att is test assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'Main components:test:y:z:Coordinate components:Pixel Axis 0 [x]:World 0'
def test_component_replaced(self): # regression test for 508 - if a component ID is replaced, we should # make sure that the component ID is selected if the old component ID # was selected self.viewer.add_data(self.data) self.viewer.state.x_att = self.data.components[0] test = ComponentID('test') self.data.update_id(self.viewer.state.x_att, test) assert self.viewer.state.x_att is test assert combo_as_string(self.viewer.options_widget().ui.combodata_x_att) == 'test:y'
def test_component_id_combo_helper(): combo = QtWidgets.QComboBox() dc = DataCollection([]) helper = ComponentIDComboHelper(combo, dc) assert combo_as_string(combo) == "" data1 = Data(x=[1, 2, 3], y=[2, 3, 4], label='data1') dc.append(data1) helper.append_data(data1) assert combo_as_string(combo) == "x:y" data2 = Data(a=[1, 2, 3], b=['a', 'b', 'c'], label='data2') dc.append(data2) helper.append_data(data2) assert combo_as_string(combo) == "data1:x:y:data2:a:b" helper.categorical = False assert combo_as_string(combo) == "data1:x:y:data2:a" helper.numeric = False assert combo_as_string(combo) == "data1:data2" helper.categorical = True helper.numeric = True helper.visible = False assert combo_as_string(combo) == "data1:x:Pixel Axis 0 [x]:World 0:y:data2:a:Pixel Axis 0 [x]:World 0:b" helper.visible = True dc.remove(data2) assert combo_as_string(combo) == "x:y" # TODO: check that renaming a component updates the combo # data1.id['x'].label = 'z' # assert combo_as_string(combo) == "z:y" helper.remove_data(data1) assert combo_as_string(combo) == ""
def test_basic(self): viewer_state = self.viewer.state # Check defaults when we add data self.viewer.add_data(self.data) assert combo_as_string( self.viewer.options_widget().ui.combosel_x_att) == 'x:y:z' assert combo_as_string( self.viewer.options_widget().ui.combosel_y_att) == 'x:y:z' assert viewer_state.x_att is self.data.id['x'] assert viewer_state.x_min == -1.1 assert viewer_state.x_max == 3.4 assert viewer_state.y_att is self.data.id['y'] assert viewer_state.y_min == 3.2 assert viewer_state.y_max == 3.5 assert not viewer_state.x_log assert not viewer_state.y_log assert len(viewer_state.layers) == 1 # Change to categorical component and check new values viewer_state.y_att = self.data.id['z'] assert viewer_state.x_att is self.data.id['x'] assert viewer_state.x_min == -1.1 assert viewer_state.x_max == 3.4 assert viewer_state.y_att is self.data.id['z'] assert viewer_state.y_min == -0.5 assert viewer_state.y_max == 2.5 assert not viewer_state.x_log assert not viewer_state.y_log
def test_basic(self): viewer_state = self.viewer.state # Check defaults when we add data self.viewer.add_data(self.data) wait_for_layers(self.viewer) assert combo_as_string( self.viewer.options_widget().ui.combosel_x_att ) == 'Main components:x:y:Coordinate components:Pixel Axis 0 [x]:World 0' assert viewer_state.x_att is self.data.id['x'] assert viewer_state.x_min == -1.1 assert viewer_state.x_max == 3.4 assert viewer_state.y_min == 0.0 assert viewer_state.y_max == 1.2 assert viewer_state.hist_x_min == -1.1 assert viewer_state.hist_x_max == 3.4 assert viewer_state.hist_n_bin == 15 assert not viewer_state.cumulative assert not viewer_state.normalize assert not viewer_state.x_log assert not viewer_state.y_log assert len(viewer_state.layers) == 1 # Change to categorical component and check new values viewer_state.x_att = self.data.id['y'] wait_for_layers(self.viewer) assert viewer_state.x_min == -0.5 assert viewer_state.x_max == 2.5 assert viewer_state.y_min == 0.0 assert viewer_state.y_max == 2.4 assert viewer_state.hist_x_min == -0.5 assert viewer_state.hist_x_max == 2.5 assert viewer_state.hist_n_bin == 3 assert not viewer_state.cumulative assert not viewer_state.normalize assert not viewer_state.x_log assert not viewer_state.y_log
def test_component_id_combo_helper_replaced(): # Make sure that when components are replaced, the equivalent combo index # remains selected and an event is broadcast so that any attached callback # properties can be sure to pull the latest text/userData. callback = MagicMock() combo = QtWidgets.QComboBox() combo.currentIndexChanged.connect(callback) dc = DataCollection([]) helper = ComponentIDComboHelper(combo, dc) assert combo_as_string(combo) == "" data1 = Data(x=[1, 2, 3], y=[2, 3, 4], label='data1') callback.reset_mock() dc.append(data1) helper.append_data(data1) callback.assert_called_once_with(0) callback.reset_mock() assert combo_as_string(combo) == "x:y" new_id = ComponentID(label='new') data1.update_id(data1.id['x'], new_id) callback.assert_called_once_with(0) callback.reset_mock() assert combo_as_string(combo) == "new:y"
def test_basic(self): viewer_state = self.viewer.state # Check defaults when we add data self.viewer.add_data(self.data) assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'x:y:z' assert combo_as_string(self.viewer.options_widget().ui.combosel_y_att) == 'x:y:z' assert viewer_state.x_att is self.data.id['x'] assert viewer_state.x_min == -1.1 assert viewer_state.x_max == 3.4 assert viewer_state.y_att is self.data.id['y'] assert viewer_state.y_min == 3.2 assert viewer_state.y_max == 3.5 assert not viewer_state.x_log assert not viewer_state.y_log assert len(viewer_state.layers) == 1 # Change to categorical component and check new values viewer_state.y_att = self.data.id['z'] assert viewer_state.x_att is self.data.id['x'] assert viewer_state.x_min == -1.1 assert viewer_state.x_max == 3.4 assert viewer_state.y_att is self.data.id['z'] assert viewer_state.y_min == -0.5 assert viewer_state.y_max == 2.5 assert not viewer_state.x_log assert not viewer_state.y_log
def test_basic(self): viewer_state = self.viewer.state # Check defaults when we add data self.viewer.add_data(self.data) assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'Main components:x:y:z:Coordinate components:Pixel Axis 0 [x]:World 0' assert combo_as_string(self.viewer.options_widget().ui.combosel_y_att) == 'Main components:x:y:z:Coordinate components:Pixel Axis 0 [x]:World 0' assert viewer_state.x_att is self.data.id['x'] assert_allclose(viewer_state.x_min, -1.1 - 0.18) assert_allclose(viewer_state.x_max, 3.4 + 0.18) assert viewer_state.y_att is self.data.id['y'] assert_allclose(viewer_state.y_min, 3.2 - 0.012) assert_allclose(viewer_state.y_max, 3.5 + 0.012) assert not viewer_state.x_log assert not viewer_state.y_log assert len(viewer_state.layers) == 1 # Change to categorical component and check new values viewer_state.y_att = self.data.id['z'] assert viewer_state.x_att is self.data.id['x'] assert_allclose(viewer_state.x_min, -1.1 - 0.18) assert_allclose(viewer_state.x_max, 3.4 + 0.18) assert viewer_state.y_att is self.data.id['z'] assert_allclose(viewer_state.y_min, -0.5 - 0.12) assert_allclose(viewer_state.y_max, 2.5 + 0.12) assert not viewer_state.x_log assert not viewer_state.y_log
def test_basic(self): viewer_state = self.viewer.state # Check defaults when we add data self.viewer.add_data(self.data) wait_for_layers(self.viewer) assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'Main components:x:y:Coordinate components:Pixel Axis 0 [x]:World 0' assert viewer_state.x_att is self.data.id['x'] assert viewer_state.x_min == -1.1 assert viewer_state.x_max == 3.4 assert viewer_state.y_min == 0.0 assert viewer_state.y_max == 1.2 assert viewer_state.hist_x_min == -1.1 assert viewer_state.hist_x_max == 3.4 assert viewer_state.hist_n_bin == 15 assert not viewer_state.cumulative assert not viewer_state.normalize assert not viewer_state.x_log assert not viewer_state.y_log assert len(viewer_state.layers) == 1 # Change to categorical component and check new values viewer_state.x_att = self.data.id['y'] wait_for_layers(self.viewer) assert viewer_state.x_min == -0.5 assert viewer_state.x_max == 2.5 assert viewer_state.y_min == 0.0 assert viewer_state.y_max == 2.4 assert viewer_state.hist_x_min == -0.5 assert viewer_state.hist_x_max == 2.5 assert viewer_state.hist_n_bin == 3 assert not viewer_state.cumulative assert not viewer_state.normalize assert not viewer_state.x_log assert not viewer_state.y_log
def test_component_renamed(self): # If a component ID is renamed, this needs to be reflected in the combo self.viewer.add_data(self.data) self.data.id['x'].label = 'test' assert combo_as_string(self.viewer.options_widget().ui.combosel_x_att) == 'Main components:test:y:z:Coordinate components:Pixel Axis 0 [x]:World 0'