class TestPrototypeDTW(_BaseTest):
    def setUp(self):
        super(TestPrototypeDTW,self).setUp()
        self.p = PrototypeDTW(self.label, alpha=0.5)
        self.p.train(self.ink_data)
        
    def test_serialization(self):
        p_data = self.p.toJSON()
        q = PrototypeDTW(None)
        q.fromJSON(p_data)
        self.assertEqual(p_data, q.toJSON())

    def test_score(self):
        score0 = self.p.score(self.ink_data[0])
        if VERBOSE: print score0
        self.assertAlmostEqual(score0, -0.088, delta=1e-3)
        score1 = self.p.score(self.ink_data[1])
        if VERBOSE: print score1
        self.assertAlmostEqual(score1, -0.049, delta=1e-3)
        
    def test_centroid(self):
        q = PrototypeDTW('u', alpha=0.5)
        q.train(self.ink_data, center_type="centroid")
        score0 = q.score(self.ink_data[0])
        if VERBOSE: print score0
        self.assertAlmostEqual(score0, -0.088, delta=1e-3)

    def test_state_reduction(self):
        q = PrototypeDTW('u', alpha=0.5)
        q.train(self.ink_data, center_type="centroid", state_reduction=True)
        score0 = q.score(self.ink_data[0])
        if VERBOSE: print score0
        self.assertAlmostEqual(score0, -0.089, delta=1e-3)
 def test_state_reduction(self):
     q = PrototypeDTW('u', alpha=0.5)
     q.train(self.ink_data, center_type="centroid", state_reduction=True)
     score0 = q.score(self.ink_data[0])
     if VERBOSE: print score0
     self.assertAlmostEqual(score0, -0.089, delta=1e-3)
 def test_centroid(self):
     q = PrototypeDTW('u', alpha=0.5)
     q.train(self.ink_data, center_type="centroid")
     score0 = q.score(self.ink_data[0])
     if VERBOSE: print score0
     self.assertAlmostEqual(score0, -0.088, delta=1e-3)