Completed
Push — master ( f7faf9...ef8477 )
by Chris
12:37
created

tests.test_clustering   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 100
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 59
dl 0
loc 100
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
B MPSTestCases.test_mean_pairwise_similarity() 0 49 1
1
# -*- coding: utf-8 -*-
2
3
# Copyright 2014-2018 by Christopher C. Little.
4
# This file is part of Abydos.
5
#
6
# Abydos is free software: you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation, either version 3 of the License, or
9
# (at your option) any later version.
10
#
11
# Abydos is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with Abydos. If not, see <http://www.gnu.org/licenses/>.
18
19
"""abydos.tests.test_clustering.
20
21
This module contains unit tests for abydos.clustering
22
"""
23
24
from __future__ import unicode_literals
25
26
import unittest
27
28
import abydos.stats as stats
29
from abydos.clustering import mean_pairwise_similarity
30
31
32
NIALL = ('Niall', 'Neal', 'Neil', 'Njall', 'Njáll', 'Nigel', 'Neel', 'Nele',
33
         'Nigelli', 'Nel', 'Kneale', 'Uí Néill', 'O\'Neill', 'MacNeil',
34
         'MacNele', 'Niall Noígíallach')
35
36
NIALL_1WORD = ('Niall', 'Neal', 'Neil', 'Njall', 'Njáll', 'Nigel', 'Neel',
37
               'Nele', 'Nigelli', 'Nel', 'Kneale', 'O\'Neill', 'MacNeil',
38
               'MacNele')
39
40
41
class MPSTestCases(unittest.TestCase):
42
    """Test mean pairwise similarity functions.
43
44
    abydos.clustering.mean_pairwise_similarity
45
    """
46
47
    def test_mean_pairwise_similarity(self):
48
        """Test abydos.clustering.mean_pairwise_similarity."""
49
        self.assertEqual(mean_pairwise_similarity(NIALL), 0.29362587170180671)
50
        self.assertEqual(mean_pairwise_similarity(NIALL, symmetric=True),
51
                         0.2936258717018066)
52
        self.assertEqual(mean_pairwise_similarity(NIALL, meanfunc=stats.hmean),
53
                         0.29362587170180671)
54
        self.assertEqual(mean_pairwise_similarity(NIALL, meanfunc=stats.hmean,
55
                                                  symmetric=True),
56
                         0.2936258717018066)
57
        self.assertEqual(mean_pairwise_similarity(NIALL, meanfunc=stats.gmean),
58
                         0.33747245800668441)
59
        self.assertEqual(mean_pairwise_similarity(NIALL, meanfunc=stats.gmean,
60
                                                  symmetric=True),
61
                         0.33747245800668441)
62
        self.assertEqual(mean_pairwise_similarity(NIALL, meanfunc=stats.amean),
63
                         0.38009278711484601)
64
        self.assertEqual(mean_pairwise_similarity(NIALL, meanfunc=stats.amean,
65
                                                  symmetric=True),
66
                         0.38009278711484623)
67
68
        self.assertEqual(mean_pairwise_similarity(NIALL_1WORD),
69
                         mean_pairwise_similarity(' '.join(NIALL_1WORD)))
70
        self.assertEqual(mean_pairwise_similarity(NIALL_1WORD, symmetric=True),
71
                         mean_pairwise_similarity(' '.join(NIALL_1WORD),
72
                                                  symmetric=True))
73
        self.assertEqual(mean_pairwise_similarity(NIALL_1WORD,
74
                                                  meanfunc=stats.gmean),
75
                         mean_pairwise_similarity(' '.join(NIALL_1WORD),
76
                                                  meanfunc=stats.gmean))
77
        self.assertEqual(mean_pairwise_similarity(NIALL_1WORD,
78
                                                  meanfunc=stats.amean),
79
                         mean_pairwise_similarity(' '.join(NIALL_1WORD),
80
                                                  meanfunc=stats.amean))
81
82
        self.assertRaises(ValueError, mean_pairwise_similarity, ['a b c'])
83
        self.assertRaises(ValueError, mean_pairwise_similarity, 'abc')
84
        self.assertRaises(ValueError, mean_pairwise_similarity, 0)
85
        self.assertRaises(ValueError, mean_pairwise_similarity, NIALL,
86
                          meanfunc='imaginary')
87
88
        self.assertEqual(mean_pairwise_similarity(NIALL),
89
                         mean_pairwise_similarity(tuple(NIALL)))
90
        self.assertEqual(mean_pairwise_similarity(NIALL),
91
                         mean_pairwise_similarity(list(NIALL)))
92
        self.assertAlmostEqual(mean_pairwise_similarity(NIALL),
93
                               mean_pairwise_similarity(sorted(NIALL)))
94
        self.assertAlmostEqual(mean_pairwise_similarity(NIALL),
95
                               mean_pairwise_similarity(set(NIALL)))
96
97
98
if __name__ == '__main__':
99
    unittest.main()
100