Ejemplo n.º 1
0
 def test_transformation_interval(self, points, params):
     manual_transformation = RotationZX()
     auto_transformation = Composition(RotationZ(), RotationX())
     self.assertSound(manual_transformation.transform(points, params),
                      params,
                      partial(manual_transformation.transform, points))
     self.assertSound(auto_transformation.transform(points, params), params,
                      partial(auto_transformation.transform, points))
Ejemplo n.º 2
0
 def test_taylor_approximation(self, x, params):
     manual_transformation = RotationZX()
     auto_transformation = Composition(RotationZ(), RotationX())
     manual = taylor.encode(manual_transformation, x, params)
     auto = taylor.encode(auto_transformation, x, params)
     self.assertSound(manual, params,
                      partial(manual_transformation.transform, x))
     self.assertSound(auto, params, partial(auto_transformation.transform,
                                            x))
Ejemplo n.º 3
0
def parse_transformation(serialized: str) -> Transformation:
    split = serialized.strip().split('+')
    if len(split) < 1:
        raise ValueError(
            "Invalid transformation, expecting at least one valid transformation."
        )
    elif len(split) == 1:
        transformation = _TRANSFORMATIONS[split[0].lower()]
        if transformation is None:
            raise ValueError(
                f"Unknown transformation {split[0]}, please specify a valid transformation or implement it."
            )
        return transformation()
    else:
        transformation = Composition(parse_transformation(split[0]),
                                     parse_transformation(split[1]))
        for i in range(2, len(split)):
            transformation = Composition(transformation,
                                         parse_transformation(split[i]))
        return transformation
Ejemplo n.º 4
0
    def test_taylor_approximation(self, x, params):
        manual_transformation = TaperingRotation()
        auto_transformation = Composition(TaperingZ(), RotationZ())
        expected = taylor.encode(manual_transformation, x, params)
        actual = taylor.encode(auto_transformation, x, params)

        self.assertSound(expected, params,
                         partial(manual_transformation.transform, x))
        self.assertSound(actual, params,
                         partial(auto_transformation.transform, x))
        self.assertAlmostEqualBounds(expected, actual)
Ejemplo n.º 5
0
 def test_taylor_twisting_rotation(self, x, params):
     transformation = Composition(TwistingZ(), RotationZ())
     actual = taylor.encode(transformation, x, params)
     self.assertSound(actual, params, partial(transformation.transform, x))
Ejemplo n.º 6
0
 def test_hessian_points_params_float(self, points, params):
     expected = RotationZX().hessian_points_params(points, params)
     actual = Composition(RotationZ(), RotationX()).hessian_points_params(
         points, params)
     self.assertAlmostEqualList(expected, actual)
Ejemplo n.º 7
0
 def test_hessian_points_params_interval(self, points, params):
     expected = TaperingRotation().hessian_points_params(points, params)
     actual = Composition(TaperingZ(), RotationZ()).hessian_points_params(
         points, params)
     self.assertAlmostEqualList(expected, actual)
Ejemplo n.º 8
0
 def test_transformation_float(self, points, params):
     manual_transformation = RotationZX()
     auto_transformation = Composition(RotationZ(), RotationX())
     expected = manual_transformation.transform(points, params)
     actual = auto_transformation.transform(points, params)
     self.assertAlmostEqualNumpy(expected, actual)
Ejemplo n.º 9
0
 def test_gradient_points_float(self, points, params):
     expected = TaperingRotation().gradient_points(points, params)
     actual = Composition(TaperingZ(),
                          RotationZ()).gradient_points(points, params)
     self.assertAlmostEqualList(expected, actual)
Ejemplo n.º 10
0
 def test_transformation_interval(self, points, params):
     expected = TaperingRotation().transform(points, params)
     actual = Composition(TaperingZ(),
                          RotationZ()).transform(points, params)
     self.assertAlmostEqualInterval(expected, actual)
Ejemplo n.º 11
0
 def test_taylor_rot_zyx(self, x, params):
     transformation = Composition(RotationZ(),
                                  Composition(RotationY(), RotationX()))
     actual = taylor.encode(transformation, x, params)
     self.assertSound(actual, params, partial(transformation.transform, x))