示例#1
0
 def test_affine_transform_image_for_2d_data(self):
     with create_memory_profile_context() as profile_context:
         document_controller = profile_context.create_document_controller_with_application(
         )
         document_model = document_controller.document_model
         data = numpy.zeros((5, 5))
         data[2:-2, 1:-1] = 1
         xdata = DataAndMetadata.new_data_and_metadata(data)
         api = Facade.get_api("~1.0", "~1.0")
         data_item = api.library.create_data_item_from_data_and_metadata(
             xdata)
         document_controller.selection.set(0)
         document_controller.selected_display_panel = None  # use the document controller selection
         affine_transform = AffineTransformImage.AffineTransformMenuItem(
             api)
         affine_transform.menu_item_execute(
             api.application.document_controllers[0])
         document_controller.periodic()
         # Can't convince the computation to update when changing the graphics, so just check that it got executed
         vector_a = data_item.graphics[0]
         vector_b = data_item.graphics[1]
         # # Rotate by 90 degrees
         vector_a.end = (0.75, 0.5)
         vector_b.end = (0.5, 0.75)
         # # Update computation
         document_controller.periodic()
         DocumentModel.evaluate_data(document_model.computations[0])
         self.assertEqual(len(data_item.graphics), 2)
         self.assertEqual(api.library.data_item_count, 2)
         self.assertTrue(
             numpy.allclose(document_model.data_items[1].data,
                            numpy.rot90(data)))
示例#2
0
 def test_affine_transform_image_for_4d_data(self):
     data_descriptors = [
         DataAndMetadata.DataDescriptor(True, 1, 2),
         DataAndMetadata.DataDescriptor(False, 2, 2),
         DataAndMetadata.DataDescriptor(True, 2, 1)
     ]
     for data_descriptor in data_descriptors:
         with self.subTest(data_descriptor=data_descriptor):
             with create_memory_profile_context() as profile_context:
                 document_controller = profile_context.create_document_controller_with_application(
                 )
                 document_model = document_controller.document_model
                 data = numpy.zeros((5, 5, 5, 5))
                 if data_descriptor.collection_dimension_count == 2 and not data_descriptor.is_sequence:
                     data[2:-2, 1:-1] = 1
                 elif data_descriptor.collection_dimension_count == 2 and data_descriptor.is_sequence:
                     data[:, 2:-2, 1:-1] = 1
                 else:
                     data[..., 2:-2, 1:-1] = 1
                 xdata = DataAndMetadata.new_data_and_metadata(
                     data, data_descriptor=data_descriptor)
                 api = Facade.get_api("~1.0", "~1.0")
                 data_item = api.library.create_data_item_from_data_and_metadata(
                     xdata)
                 document_controller.selection.set(0)
                 document_controller.selected_display_panel = None  # use the document controller selection
                 affine_transform = AffineTransformImage.AffineTransformMenuItem(
                     api)
                 affine_transform.menu_item_execute(
                     api.application.document_controllers[0])
                 document_controller.periodic()
                 # Can't convince the computation to update when changing the graphics, so just check that it got executed
                 vector_a = data_item.graphics[0]
                 vector_b = data_item.graphics[1]
                 # # Rotate by 90 degrees
                 vector_a.end = (0.75, 0.5)
                 vector_b.end = (0.5, 0.75)
                 # # Update computation
                 document_controller.periodic()
                 DocumentModel.evaluate_data(document_model.computations[0])
                 self.assertEqual(len(data_item.graphics), 2)
                 self.assertEqual(api.library.data_item_count, 2)
                 if data_descriptor.collection_dimension_count == 2 and not data_descriptor.is_sequence:
                     self.assertTrue(
                         numpy.allclose(document_model.data_items[1].data,
                                        numpy.rot90(data)))
                 elif data_descriptor.collection_dimension_count == 2 and data_descriptor.is_sequence:
                     self.assertTrue(
                         numpy.allclose(document_model.data_items[1].data,
                                        numpy.rot90(data, axes=(1, 2))))
                 else:
                     self.assertTrue(
                         numpy.allclose(document_model.data_items[1].data,
                                        numpy.rot90(data, axes=(2, 3))))