コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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))
コード例 #5
0
 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])
コード例 #6
0
 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"))
コード例 #7
0
 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))
コード例 #8
0
 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))
コード例 #9
0
 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))
コード例 #10
0
 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))
コード例 #11
0
 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))
コード例 #12
0
 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)
コード例 #13
0
 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))
コード例 #14
0
 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))
コード例 #15
0
 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)
コード例 #16
0
 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)
コード例 #17
0
 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))
コード例 #18
0
 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))
コード例 #19
0
 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])
コード例 #20
0
 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))
コード例 #21
0
 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))
コード例 #22
0
 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)
コード例 #23
0
 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"))