示例#1
0
    def test_correct_x_error_is_produced(self):
        # Arrange
        x = [1, 2, 3]
        e = [1, 1]
        y_front = [2, 2]
        dx_front = [1., 2.]
        y_rear = [1.5, 1.5]
        dx_rear = [3., 2.]
        front_name = "front"
        rear_name = "rear"
        result_name = "result"
        front = self._provide_workspace_with_x_errors(front_name, True, 1, x,
                                                      y_front, e, dx_front)
        rear = self._provide_workspace_with_x_errors(rear_name, True, 1, x,
                                                     y_rear, e, dx_rear)
        result = self._provide_workspace_with_x_errors(result_name, False, 1,
                                                       x, y_front, e)
        scale = 2.
        # Act
        q_correction = QErrorCorrectionForMergedWorkspaces()
        q_correction.correct_q_resolution_for_merged(front, rear, result,
                                                     scale)
        # Assert
        self.assertTrue(result.hasDx(0))

        dx_expected_0 = (dx_front[0] * y_front[0] * scale + dx_rear[0] *
                         y_rear[0]) / (y_front[0] * scale + y_rear[0])
        dx_expected_1 = (dx_front[1] * y_front[1] * scale + dx_rear[1] *
                         y_rear[1]) / (y_front[1] * scale + y_rear[1])
        dx_result = result.readDx(0)
        self.assertTrue(len(dx_result) == 2)
        self.assertEqual(dx_result[0], dx_expected_0)
        self.assertEqual(dx_result[1], dx_expected_1)
示例#2
0
 def test_that_non_matching_workspaces_are_detected(self):
     # Arrange
     front_name = "front"
     rear_name = "rear"
     result_name = "result"
     x1 = [1, 2, 3]
     e1 = [1, 1]
     y1 = [2, 2]
     dx1 = [1., 2.]
     x2 = [1, 2, 3, 4]
     e2 = [1, 1, 1]
     y2 = [2, 2, 2]
     dx2 = [1., 2., 3.]
     front = self._provide_workspace_with_x_errors(front_name, True, 1, x1,
                                                   y1, e1, dx1)
     rear = self._provide_workspace_with_x_errors(rear_name, True, 1, x2,
                                                  y2, e2, dx2)
     result = self._provide_workspace_with_x_errors(result_name, False, 1)
     scale = 2.
     # Act
     q_correction = QErrorCorrectionForMergedWorkspaces()
     q_correction.correct_q_resolution_for_merged(front, rear, result,
                                                  scale)
     # Assert
     self.assertFalse(result.hasDx(0))
示例#3
0
    def test_correct_x_error_is_produced(self):
        # Arrange
        x = [1,2,3]
        e = [1,1]
        y_front = [2,2]
        dx_front = [1.,2.,3.]
        y_rear = [1.5,1.5]
        dx_rear = [3.,2.,1.]
        front_name = "front"
        rear_name = "rear"
        result_name = "result"
        front = self._provide_workspace_with_x_errors(front_name, True, 1, x, y_front, e, dx_front)
        rear = self._provide_workspace_with_x_errors(rear_name, True, 1, x, y_rear, e, dx_rear)
        result = self._provide_workspace_with_x_errors(result_name, False, 1, x, y_front, e)
        scale = 2.
        # Act
        q_correction = QErrorCorrectionForMergedWorkspaces()
        q_correction.correct_q_resolution_for_merged(front, rear,result, scale)
        # Assert
        self.assertTrue(result.hasDx(0))

        dx_expected_0 = (dx_front[0]*y_front[0]*scale + dx_rear[0]*y_rear[0])/(y_front[0]*scale + y_rear[0])
        dx_expected_1 = (dx_front[1]*y_front[1]*scale + dx_rear[1]*y_rear[1])/(y_front[1]*scale + y_rear[1])
        dx_expected_2 = dx_expected_1
        dx_result = result.readDx(0)
        self.assertTrue(len(dx_result) == 3)
        self.assertEqual(dx_result[0], dx_expected_0)
        self.assertEqual(dx_result[1], dx_expected_1)
        self.assertEqual(dx_result[2], dx_expected_2)
示例#4
0
 def test_error_is_ignored_when_only_one_input_has_dx(self):
     # Arrange
     front_name = "front"
     rear_name = "rear"
     result_name = "result"
     front = self._provide_workspace_with_x_errors(front_name, True, 1)
     rear = self._provide_workspace_with_x_errors(rear_name, False, 1)
     result = self._provide_workspace_with_x_errors(result_name, False, 1)
     scale = 2.
     # Act
     q_correction = QErrorCorrectionForMergedWorkspaces()
     q_correction.correct_q_resolution_for_merged(front, rear,result, scale)
     # Assert
     self.assertFalse(result.hasDx(0))
示例#5
0
 def test_error_is_ignored_when_only_one_input_has_dx(self):
     # Arrange
     front_name = "front"
     rear_name = "rear"
     result_name = "result"
     front = self._provide_workspace_with_x_errors(front_name, True, 1)
     rear = self._provide_workspace_with_x_errors(rear_name, False, 1)
     result = self._provide_workspace_with_x_errors(result_name, False, 1)
     scale = 2.
     # Act
     q_correction = QErrorCorrectionForMergedWorkspaces()
     q_correction.correct_q_resolution_for_merged(front, rear,result, scale)
     # Assert
     self.assertFalse(result.hasDx(0))
示例#6
0
 def test_that_non_matching_workspaces_are_detected(self):
     # Arrange
     front_name = "front"
     rear_name = "rear"
     result_name = "result"
     x1 = [1,2,3]
     e1 = [1,1]
     y1 = [2,2]
     dx1 = [1.,2.,3.]
     x2 = [1,2,3,4]
     e2 = [1,1, 1]
     y2 = [2,2, 2]
     dx2 = [1.,2.,3.,4.]
     front = self._provide_workspace_with_x_errors(front_name, True, 1, x1, y1, e1, dx1)
     rear = self._provide_workspace_with_x_errors(rear_name, True, 1, x2, y2, e2, dx2)
     result = self._provide_workspace_with_x_errors(result_name, False, 1)
     scale = 2.
     # Act
     q_correction = QErrorCorrectionForMergedWorkspaces()
     q_correction.correct_q_resolution_for_merged(front, rear,result, scale)
     # Assert
     self.assertFalse(result.hasDx(0))