1
2
3
4
5
6
7 import math
8
9
11 """
12 >>> v1 = [0,1,0,1]
13 >>> v2 = [1,0,1,0]
14 >>> EuclideanDist(v1,v2,range(4))
15 2.0
16 >>> EuclideanDist(v1,v1,range(4))
17 0.0
18 >>> v2 = [0,0,0,1]
19 >>> EuclideanDist(v1,v2,range(4))
20 1.0
21 >>> v2 = [0,.5,0,.5]
22 >>> abs(EuclideanDist(v1,v2,range(4))-1./math.sqrt(2))<1e-4
23 1
24
25 """
26 dist = 0.0
27 for i in attrs:
28 dist += (ex1[i] - ex2[i])**2
29 dist = math.sqrt(dist)
30 return dist
31
33 """
34 >>> v1 = [0,1,0,1]
35 >>> v2 = [1,0,1,0]
36 >>> TanimotoDist(v1,v2,range(4))
37 1.0
38 >>> v2 = [1,0,1,1]
39 >>> TanimotoDist(v1,v2,range(4))
40 0.75
41 >>> TanimotoDist(v2,v2,range(4))
42 0.0
43
44 # this tests Issue 122
45 >>> v3 = [0,0,0,0]
46 >>> TanimotoDist(v3,v3,range(4))
47 1.0
48
49 """
50 inter = 0.0
51 unin = 0.0
52 for i in attrs:
53 if (ex1[i] or ex2[i]) :
54 unin += 1
55 if (ex1[i] and ex2[i]) :
56 inter += 1
57 if(unin != 0.0):
58 return (1 - inter/unin)
59 else:
60 return 1.0
61
62
63
64
65
67 import doctest,sys
68 return doctest.testmod(sys.modules["__main__"])
69
70 if __name__ == '__main__':
71 import sys
72 failed,tried = _test()
73 sys.exit(failed)
74