def test_flip_regression():
    coords = np.random.rand(3, 3)
    flip_pairs = [[1, 2]]
    root = coords[:1]
    coords_flipped = coords.copy()
    coords_flipped[1] = coords[2]
    coords_flipped[2] = coords[1]
    coords_flipped[..., 0] = 2 * root[..., 0] - coords_flipped[..., 0]

    # static mode
    res_static = fliplr_regression(coords,
                                   flip_pairs,
                                   center_mode='static',
                                   center_x=root[0, 0])
    assert_array_almost_equal(res_static, coords_flipped)

    # root mode
    res_root = fliplr_regression(coords,
                                 flip_pairs,
                                 center_mode='root',
                                 center_index=0)
    assert_array_almost_equal(res_root, coords_flipped)
    def inference_model(self, x, flip_pairs=None):
        """Inference function.

        Returns:
            output_regression (np.ndarray): Output regression.

        Args:
            x (torch.Tensor[N, K, 2]): Input features.
            flip_pairs (None | list[tuple()):
                Pairs of keypoints which are mirrored.
        """
        output = self.forward(x)

        if flip_pairs is not None:
            output_regression = fliplr_regression(
                output.detach().cpu().numpy(),
                flip_pairs,
                center_mode='static',
                center_x=0)
        else:
            output_regression = output.detach().cpu().numpy()
        return output_regression