def test_multiprofile_of_two_maps_builds_two_line_profiles(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(32, 2, 3)) # Ge-L edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].map_action() self.__run_until_complete(document_controller) edge_bundle[1].map_action() self.__run_until_complete(document_controller) self.assertEqual(3, len(document_model.data_items)) elemental_mapping_controller.build_multiprofile( document_controller) self.assertEqual(5, len(document_model.data_items)) self.assertEqual(6, len(document_model.display_items)) composite_display_item = document_model.display_items[3] line_profile1_data_item = document_model.data_items[3] line_profile2_data_item = document_model.data_items[4] self.assertIn(line_profile1_data_item, composite_display_item.data_items) self.assertIn(line_profile2_data_item, composite_display_item.data_items)
def test_multiprofile_of_two_maps_builds_two_line_profiles(self): document_model = DocumentModel.DocumentModel() elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) document_controller = DocumentController.DocumentController( self.app.ui, document_model, workspace_id="library") with contextlib.closing(document_controller), contextlib.closing( elemental_mapping_controller): model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(32, 2, 3)) # Ge-L edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].map_action() self.__run_until_complete(document_controller) edge_bundle[1].map_action() self.__run_until_complete(document_controller) self.assertEqual(3, len(document_model.data_items)) elemental_mapping_controller.build_multiprofile( document_controller) self.assertEqual(5, len(document_model.data_items)) self.assertEqual(6, len(document_model.display_items)) composite_display_item = document_model.display_items[3] line_profile1_data_item = document_model.data_items[3] line_profile2_data_item = document_model.data_items[4] self.assertIn(line_profile1_data_item, composite_display_item.data_items) self.assertIn(line_profile2_data_item, composite_display_item.data_items)
def test_multiprofile_of_two_maps_connects_line_profiles(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(32, 2, 3)) # Ge-L edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].map_action() self.__run_until_complete(document_controller) edge_bundle[1].map_action() self.__run_until_complete(document_controller) elemental_mapping_controller.build_multiprofile( document_controller) map1_display_item = document_model.get_display_item_for_data_item( document_model.data_items[1]) map2_display_item = document_model.get_display_item_for_data_item( document_model.data_items[2]) # composite_data_item = document_model.data_items[3] # line_profile1_data_item = document_model.data_items[4] # line_profile2_data_item = document_model.data_items[5] line_region1 = map1_display_item.graphics[0] line_region2 = map2_display_item.graphics[0] self.assertEqual(line_region1.vector, line_region2.vector) self.assertEqual(line_region1.width, line_region2.width) line_region1.vector = (0.11, 0.12), (0.21, 0.22) self.assertEqual(line_region1.vector, line_region2.vector) self.assertEqual(line_region1.width, line_region2.width)
def test_adding_multiple_edges(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(32, 2, 3)) # Ge-L elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K self.assertEqual(2, len(document_model.data_structures))
def test_mapping_edge_produces_properly_configured_map(self): document_model = DocumentModel.DocumentModel() elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) document_controller = DocumentController.DocumentController( self.app.ui, document_model, workspace_id="library") with contextlib.closing(document_controller), contextlib.closing( elemental_mapping_controller): model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].map_action() self.__run_until_complete(document_controller) self.assertEqual(2, len(document_model.data_items)) mapped_data_item = document_model.data_items[1] self.assertEqual(model_data_item, mapped_data_item.source) self.assertEqual(1, len(document_model.computations)) self.assertEqual("eels.mapping", document_model.computations[0].processing_id) self.assertEqual(mapped_data_item.dimensional_calibrations, model_data_item.dimensional_calibrations[0:2])
def test_picking_edge_produces_properly_configured_composite(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) model_display_item = document_model.get_display_item_for_data_item( model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].pick_action() self.__run_until_complete(document_controller) self.assertEqual(2, len(document_model.data_items)) eels_data_item = document_model.data_items[1] self.assertEqual(model_display_item.graphics[0], eels_data_item.source) self.assertEqual(eels_data_item, document_model.data_structures[1].source) self.assertEqual("elemental_mapping_edge_ref", document_model.data_structures[1].structure_type) self.assertEqual( document_model.data_structures[0], document_model.data_structures[1].get_referenced_object( "edge"))
def test_deleting_pick_region_also_deletes_pick_composition(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) model_display_item = document_model.get_display_item_for_data_item( model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].pick_action() self.__run_until_complete(document_controller) pick_region = model_display_item.graphics[0] eels_data_item = document_model.data_items[1] self.assertEqual(1, len(document_model.computations)) self.assertEqual(2, len(document_model.data_items)) self.assertEqual(2, len(document_model.data_structures)) model_display_item.remove_graphic(pick_region) self.assertEqual(0, len(document_model.computations)) self.assertEqual(1, len(document_model.data_items)) self.assertEqual(1, len(document_model.data_structures))
def test_deleting_pick_region_also_deletes_pick_composition(self): document_model = DocumentModel.DocumentModel() elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) document_controller = DocumentController.DocumentController( self.app.ui, document_model, workspace_id="library") with contextlib.closing(document_controller), contextlib.closing( elemental_mapping_controller): model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) model_display_item = document_model.get_display_item_for_data_item( model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].pick_action() self.__run_until_complete(document_controller) pick_region = model_display_item.graphics[0] eels_data_item = document_model.data_items[1] self.assertEqual(1, len(document_model.computations)) self.assertEqual(2, len(document_model.data_items)) self.assertEqual(2, len(document_model.data_structures)) model_display_item.remove_graphic(pick_region) self.assertEqual(0, len(document_model.computations)) self.assertEqual(1, len(document_model.data_items)) self.assertEqual(1, len(document_model.data_structures))
def test_adding_multiple_edges(self): document_model = DocumentModel.DocumentModel() elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) document_controller = DocumentController.DocumentController( self.app.ui, document_model, workspace_id="library") with contextlib.closing(document_controller), contextlib.closing( elemental_mapping_controller): model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(32, 2, 3)) # Ge-L elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K self.assertEqual(2, len(document_model.data_structures))
def read(self, data_structure) -> None: atomic_number = data_structure.get_property_value("atomic_number") shell_number = data_structure.get_property_value("shell_number") subshell_index = data_structure.get_property_value("subshell_index") self.__electron_shell = PeriodicTable.ElectronShell(atomic_number, shell_number, subshell_index) self.__fit_interval = data_structure.get_property_value("fit_interval", (0.4, 0.5)) self.__signal_interval = data_structure.get_property_value("signal_interval", (0.5, 0.6))
def test_subshell_label(self): # Test all possible labels up to f-states subshell_labels = [None, "s", "p", "p", "d", "d", "f", "f"] spin_numerators = [None, 1, 1, 3, 3, 5, 5, 7] for subshell_index in range(len(subshell_labels))[1:]: electron_shell = PeriodicTable.ElectronShell(99, 4, subshell_index) self.assertEqual(electron_shell.subshell_label, subshell_labels[subshell_index]) self.assertEqual(electron_shell.spin_fraction, fractions.Fraction(spin_numerators[subshell_index], 2))
def execute(self, **kwargs): spectrum_image_xdata = kwargs["spectrum_image_xdata"] fit_interval = kwargs["fit_interval"] signal_interval = kwargs["signal_interval"] atomic_number = kwargs.get("atomic_number") shell_number = kwargs.get("shell_number") subshell_index = kwargs.get("subshell_index") electron_shell = None if atomic_number is not None and shell_number is not None and subshell_index is not None: electron_shell = PeriodicTable.ElectronShell(atomic_number, shell_number, subshell_index) self.__mapped_xdata = eels_analysis.map_background_subtracted_signal(spectrum_image_xdata, electron_shell, [fit_interval], signal_interval)
def test_removing_edges(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) ge_edge = elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(32, 2, 3)) # Ge-L si_edge = elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K self.assertEqual(2, len(document_model.data_structures)) elemental_mapping_controller.remove_edge(ge_edge) self.assertEqual(1, len(document_model.data_structures)) self.assertEqual( 14, document_model.data_structures[0].get_property_value( "atomic_number")) elemental_mapping_controller.remove_edge(si_edge) self.assertEqual(0, len(document_model.data_structures))
def test_removing_edges(self): document_model = DocumentModel.DocumentModel() elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) document_controller = DocumentController.DocumentController( self.app.ui, document_model, workspace_id="library") with contextlib.closing(document_controller), contextlib.closing( elemental_mapping_controller): model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) ge_edge = elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(32, 2, 3)) # Ge-L si_edge = elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K self.assertEqual(2, len(document_model.data_structures)) elemental_mapping_controller.remove_edge(ge_edge) self.assertEqual(1, len(document_model.data_structures)) self.assertEqual( 14, document_model.data_structures[0].get_property_value( "atomic_number")) elemental_mapping_controller.remove_edge(si_edge) self.assertEqual(0, len(document_model.data_structures))
def test_map_background_subtracted_signal_produces_correct_calibrations( self): calibration = Calibration.Calibration(200.0, 2.0, 'eV') calibration_y = Calibration.Calibration(101.0, 1.5, 'nm') calibration_x = Calibration.Calibration(102.0, 2.5, 'nm') spectrum_length = 1000 w, h = 20, 20 electron_shell = PeriodicTable.ElectronShell(1, 1, 0) data_and_metadata = DataAndMetadata.DataAndMetadata.from_data( numpy.ones((spectrum_length, w, h), numpy.float), dimensional_calibrations=[ calibration_y, calibration_x, calibration ]) mapped = eels_analysis.map_background_subtracted_signal( data_and_metadata, electron_shell, [(0.2, 0.3)], (0.4, 0.5)) self.assertEqual(len(mapped.dimensional_shape), 2) self.assertEqual(len(mapped.dimensional_calibrations), 2) self.assertEqual(mapped.dimensional_calibrations[0], calibration_y) self.assertEqual(mapped.dimensional_calibrations[1], calibration_x)
def test_selecting_composite_updates_edge_value(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) si_edge = elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].pick_action() self.__run_until_complete(document_controller) self.assertIsNone(elemental_mapping_controller.edge) eels_data_item = document_model.data_items[1] elemental_mapping_controller.set_current_data_item(eels_data_item) self.assertEqual(model_data_item, elemental_mapping_controller.model_data_item) self.assertEqual(si_edge.data_structure, elemental_mapping_controller.edge.data_structure)
def test_background_subtraction_computation_functions_reasonably(self): document_model = DocumentModel.DocumentModel() self.app._set_document_model( document_model) # required to allow API to find document model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) document_controller = DocumentController.DocumentController( self.app.ui, document_model, workspace_id="library") with contextlib.closing(document_controller), contextlib.closing( elemental_mapping_controller): model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) si_edge = elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K spectrum_data_item = self.__create_spectrum() document_model.append_data_item(spectrum_data_item) spectrum_display_item = document_model.get_display_item_for_data_item( spectrum_data_item) spectrum_display_data_channel = spectrum_display_item.get_display_data_channel_for_data_item( spectrum_data_item) computation = document_model.create_computation() computation.create_object( "eels_spectrum_xdata", document_model.get_object_specifier( spectrum_display_data_channel, "display_xdata")) computation.create_input( "fit_interval", document_model.get_object_specifier(si_edge.data_structure), "fit_interval") computation.create_input( "signal_interval", document_model.get_object_specifier(si_edge.data_structure), "signal_interval") computation.processing_id = "eels.background_subtraction" document_model.append_computation(computation) document_model.recompute_all() document_controller.periodic() self.assertEqual(2, len(document_model.data_items))
def test_controller_has_proper_edge_bundles_when_explorer_selected(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K document_controller.event_loop.create_task( elemental_mapping_controller.explore_edges( document_controller)) self.__run_until_complete(document_controller) explorer_data_item = document_model.data_items[1] elemental_mapping_controller.set_current_data_item( explorer_data_item) self.assertIsNotNone(elemental_mapping_controller.model_data_item) edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) self.assertEqual(1, len(edge_bundle))
def test_mapping_edge_produces_properly_configured_map(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].map_action() self.__run_until_complete(document_controller) self.assertEqual(2, len(document_model.data_items)) mapped_data_item = document_model.data_items[1] self.assertEqual(model_data_item, mapped_data_item.source) self.assertEqual(1, len(document_model.computations)) self.assertEqual("eels.mapping", document_model.computations[0].processing_id) self.assertEqual(mapped_data_item.dimensional_calibrations, model_data_item.dimensional_calibrations[0:2])
def test_controller_has_proper_edge_bundles_when_explorer_selected(self): document_model = DocumentModel.DocumentModel() elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) document_controller = DocumentController.DocumentController( self.app.ui, document_model, workspace_id="library") with contextlib.closing(document_controller), contextlib.closing( elemental_mapping_controller): model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K document_controller.event_loop.create_task( elemental_mapping_controller.explore_edges( document_controller)) self.__run_until_complete(document_controller) explorer_data_item = document_model.data_items[1] elemental_mapping_controller.set_current_data_item( explorer_data_item) self.assertIsNotNone(elemental_mapping_controller.model_data_item) edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) self.assertEqual(1, len(edge_bundle))
def test_background_subtraction_computation_functions_reasonably(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller_with_application( ) document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) si_edge = elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K spectrum_data_item = self.__create_spectrum() document_model.append_data_item(spectrum_data_item) spectrum_display_item = document_model.get_display_item_for_data_item( spectrum_data_item) spectrum_display_data_channel = spectrum_display_item.get_display_data_channel_for_data_item( spectrum_data_item) computation = document_model.create_computation() computation.create_input_item( "eels_spectrum_xdata", Symbolic.make_item(spectrum_display_data_channel, type="display_xdata")) computation.create_input_item("fit_interval", Symbolic.make_item( si_edge.data_structure), property_name="fit_interval") computation.create_input_item("signal_interval", Symbolic.make_item( si_edge.data_structure), property_name="signal_interval") computation.processing_id = "eels.background_subtraction" document_model.append_computation(computation) document_model.recompute_all() document_controller.periodic() self.assertEqual(2, len(document_model.data_items))
def test_selecting_composite_updates_edge_value(self): document_model = DocumentModel.DocumentModel() elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) document_controller = DocumentController.DocumentController( self.app.ui, document_model, workspace_id="library") with contextlib.closing(document_controller), contextlib.closing( elemental_mapping_controller): model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) si_edge = elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].pick_action() self.__run_until_complete(document_controller) self.assertIsNone(elemental_mapping_controller.edge) eels_data_item = document_model.data_items[1] elemental_mapping_controller.set_current_data_item(eels_data_item) self.assertEqual(model_data_item, elemental_mapping_controller.model_data_item) self.assertEqual(si_edge.data_structure, elemental_mapping_controller.edge.data_structure)
def test_changing_edge_configures_other_items_correctly(self): with TestContext.create_memory_context() as test_context: document_controller = test_context.create_document_controller() document_model = document_controller.document_model elemental_mapping_controller = ElementalMappingController.ElementalMappingController( document_model) model_data_item = self.__create_spectrum_image() document_model.append_data_item(model_data_item) model_display_item = document_model.get_display_item_for_data_item( model_data_item) elemental_mapping_controller.set_current_data_item(model_data_item) elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(14, 1, 1)) # Si-K elemental_mapping_controller.add_edge( PeriodicTable.ElectronShell(32, 2, 3)) # Ge-L edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) edge_bundle[0].pick_action() self.__run_until_complete(document_controller) eels_data_item = document_model.data_items[1] eels_display_item = document_model.get_display_item_for_data_item( eels_data_item) elemental_mapping_controller.set_current_data_item(eels_data_item) edge_bundle = elemental_mapping_controller.build_edge_bundles( document_controller) # apply the change to the other edge edge_bundle[1].select_action() self.__run_until_complete(document_controller) computation = document_model.computations[0] old_edge_data_structure = document_model.data_structures[0] new_edge_data_structure = document_model.data_structures[1] edge_ref_data_structure = document_model.data_structures[2] pick_region = model_display_item.graphics[0] # check the titles self.assertEqual("Pick Ge-L3", pick_region.label) self.assertEqual("Pick Ge-L3 EELS Data of Untitled", eels_data_item.title) # check the old intervals are disconnected and the new are connected old_fit_interval = eels_display_item.graphics[0].interval old_signal_interval = eels_display_item.graphics[1].interval new_fit_interval = (0.6, 0.7) new_signal_interval = (0.7, 0.8) # ensure changing old edge doesn't affect any connections old_edge_data_structure.set_property_value("fit_interval", new_fit_interval) old_edge_data_structure.set_property_value("signal_interval", new_signal_interval) self.assertEqual(old_fit_interval, eels_display_item.graphics[0].interval) self.assertEqual(old_signal_interval, eels_display_item.graphics[1].interval) self.assertEqual(old_fit_interval, computation.get_input("fit_interval")) self.assertEqual(old_signal_interval, computation.get_input("signal_interval")) # ensure changing new edge affects all connections new_edge_data_structure.set_property_value("fit_interval", new_fit_interval) new_edge_data_structure.set_property_value("signal_interval", new_signal_interval) self.assertEqual(new_fit_interval, eels_display_item.graphics[0].interval) self.assertEqual(new_signal_interval, eels_display_item.graphics[1].interval) self.assertEqual(new_fit_interval, computation.get_input("fit_interval")) self.assertEqual(new_signal_interval, computation.get_input("signal_interval")) # and the edge reference self.assertEqual( new_edge_data_structure, edge_ref_data_structure.get_referenced_object("edge"))