Exemplo n.º 1
0
    def compare_equal_length_single_animations(self, rec_anim: Animation, lib_anim: Animation) -> ScoreSpaceElement:
        """
        Compare 2 animations with equal length and return score

        Parameters
        ----------
        rec_anim: Animation
            First animation to compare
        lib_anim: Animation
            Second animation to compare

        Returns
        -------
        score: ScoreSpaceElement
            The comparison score (0 is equal), the higher the score - the bigger the difference
        """

        score = rec_anim.diff_score(lib_anim, diff_type="abs", score_type="sum")
        return ScoreSpaceElement(score, anim=lib_anim)
    def test_diff_score(self):
        a1 = Animation(np.array([[1, 2, 4], [1, 2, 3]]))

        a2 = Animation(np.array([[1, 2, 4], [1, 2, 3]]))

        a3 = Animation(np.array([[1, 2, 3], [1, 2, 3]]))

        a4 = Animation(np.array([[1.5, 2, 3], [1, 2, 3]]))

        self.assertEqual(
            a1.diff_score(a2, diff_type="square", score_type="sum"), 0)
        self.assertEqual(
            a1.diff_score(a3, diff_type="square", score_type="sum"), 1)
        self.assertEqual(
            a2.diff_score(a3, diff_type="square", score_type="sum"), 1)
        self.assertEqual(
            a3.diff_score(a2, diff_type="square", score_type="sum"), 1)
        self.assertEqual(
            a3.diff_score(a1, diff_type="square", score_type="sum"), 1)

        self.assertEqual(
            a1.diff_score(a4, diff_type="square", score_type="sum"), 1.25)
        self.assertEqual(
            a4.diff_score(a1, diff_type="square", score_type="sum"), 1.25)
        self.assertEqual(a1.diff_score(a4), 1.25)
        self.assertEqual(a4.diff_score(a1), 1.25)

        self.assertEqual(a4.diff_score(a1, diff_type="abs", score_type="sum"),
                         1.5)
        self.assertEqual(a1.diff_score(a4, diff_type="abs", score_type="sum"),
                         1.5)

        self.assertEqual(a1.diff_score(a4, diff_type="sub", score_type="sum"),
                         0.5)
        self.assertEqual(a4.diff_score(a1, diff_type="sub", score_type="sum"),
                         -0.5)
        self.assertEqual(a1.diff_score(a4, diff_type="sub"), 0.5)
        self.assertEqual(a4.diff_score(a1, diff_type="sub"), -0.5)

        # Check the type errors
        with self.assertRaises(TypeError):
            a1.diff_score(1)

        with self.assertRaises(TypeError):
            a1.diff_score(a4, diff_type=1)

        with self.assertRaises(TypeError):
            a1.diff_score(a4, diff_type="sub", score_type=1)