annotate python/tests/moving.txt @ 674:01b89182891a

corrected bug for intersection of lines (thanks to Paul for finding)
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 26 May 2015 18:16:51 +0200
parents dc70d9e711f5
children fbe29be25501
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
1 >>> from moving import *
661
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
2 >>> import storage
92
a5ef9e40688e makes use of matplotlib function to test if point is in a polygon
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 91
diff changeset
3 >>> import numpy as np
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
4
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
5 >>> Interval().empty()
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
6 True
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
7 >>> Interval(0,1).empty()
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
8 False
104
13187af8622d finally added the representation of intervals
Nicolas Saunier <nico@confins.net>
parents: 96
diff changeset
9 >>> Interval(0,1)
13187af8622d finally added the representation of intervals
Nicolas Saunier <nico@confins.net>
parents: 96
diff changeset
10 [0, 1]
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
11 >>> Interval(0,1).length()
91
daa05fae1a70 modified the type of the result of interval lengths to float, added comments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 79
diff changeset
12 1.0
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
13 >>> Interval(23.2,24.9).length()
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
14 1.6999999999999993
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
15 >>> Interval(10,8).length()
91
daa05fae1a70 modified the type of the result of interval lengths to float, added comments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 79
diff changeset
16 0.0
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
17
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
18 >>> TimeInterval(0,1).length()
91
daa05fae1a70 modified the type of the result of interval lengths to float, added comments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 79
diff changeset
19 2.0
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
20 >>> TimeInterval(10,8).length()
91
daa05fae1a70 modified the type of the result of interval lengths to float, added comments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 79
diff changeset
21 0.0
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
22
107
916678481896 corrected bug for TimeInterval interation and added corresponding test
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 104
diff changeset
23 >>> [i for i in TimeInterval(9,13)]
916678481896 corrected bug for TimeInterval interation and added corresponding test
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 104
diff changeset
24 [9, 10, 11, 12, 13]
916678481896 corrected bug for TimeInterval interation and added corresponding test
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 104
diff changeset
25
96
9928c2fa72cc added equal method to intervals
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 92
diff changeset
26 >>> TimeInterval(2,5).equal(TimeInterval(2,5))
9928c2fa72cc added equal method to intervals
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 92
diff changeset
27 True
9928c2fa72cc added equal method to intervals
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 92
diff changeset
28 >>> TimeInterval(2,5).equal(TimeInterval(2,4))
9928c2fa72cc added equal method to intervals
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 92
diff changeset
29 False
9928c2fa72cc added equal method to intervals
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 92
diff changeset
30 >>> TimeInterval(2,5).equal(TimeInterval(5,2))
9928c2fa72cc added equal method to intervals
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 92
diff changeset
31 False
9928c2fa72cc added equal method to intervals
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 92
diff changeset
32
248
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
33 >>> TimeInterval(3,6).distance(TimeInterval(4,6))
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
34 0
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
35 >>> TimeInterval(3,6).distance(TimeInterval(6,10))
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
36 0
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
37 >>> TimeInterval(3,6).distance(TimeInterval(8,10))
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
38 2
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
39 >>> TimeInterval(20,30).distance(TimeInterval(3,15))
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
40 5
249
99173da7afae corrected small bugs and typos
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 248
diff changeset
41 >>> unionIntervals([TimeInterval(3,6), TimeInterval(8,10),TimeInterval(11,15)])
99173da7afae corrected small bugs and typos
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 248
diff changeset
42 [3, 15]
248
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
43
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
44 >>> Point(3,4)-Point(1,7)
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
45 (2.000000,-3.000000)
451
cd342a774806 Point/CurvilinearTrajectory/Interaction utiles
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 372
diff changeset
46 >>> -Point(1,2)
cd342a774806 Point/CurvilinearTrajectory/Interaction utiles
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 372
diff changeset
47 (-1.000000,-2.000000)
571
a9c1d61a89b4 corrected bug for segment intersection
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 569
diff changeset
48 >>> Point(1,2).multiply(0.5)
a9c1d61a89b4 corrected bug for segment intersection
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 569
diff changeset
49 (0.500000,1.000000)
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
50
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
51 >>> Point(3,2).norm2Squared()
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
52 13
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
53
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
54 >>> Point.distanceNorm2(Point(3,4),Point(1,7))
248
571ba5ed22e2 added utils for bus processing
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 152
diff changeset
55 3.605551275463989
43
6d11d9e7ad4e methods for trajectories and objects
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
56
631
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
57 >>> Point(3,2).inPolygon(np.array([[0,0],[1,0],[1,1],[0,1]]))
79
5d487f183fe2 added method to test points in polygons and tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 69
diff changeset
58 False
631
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
59 >>> Point(3,2).inPolygon(np.array([[0,0],[4,0],[4,3],[0,3]]))
79
5d487f183fe2 added method to test points in polygons and tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 69
diff changeset
60 True
5d487f183fe2 added method to test points in polygons and tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 69
diff changeset
61
255
13ec22bec5d4 corrected typos and bugs and added a test
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 249
diff changeset
62 >>> predictPositionNoLimit(10, Point(0,0), Point(1,1)) # doctest:+ELLIPSIS
13ec22bec5d4 corrected typos and bugs and added a test
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 249
diff changeset
63 ((1.0...,1.0...), (10.0...,10.0...))
249
99173da7afae corrected small bugs and typos
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 248
diff changeset
64
569
0057c04f94d5 work in progress on intersections (for PET)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 542
diff changeset
65 >>> segmentIntersection(Point(0,0), Point(0,1), Point(1,1), Point(2,3))
0057c04f94d5 work in progress on intersections (for PET)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 542
diff changeset
66 >>> segmentIntersection(Point(0,1), Point(0,3), Point(1,0), Point(3,1))
571
a9c1d61a89b4 corrected bug for segment intersection
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 569
diff changeset
67 >>> segmentIntersection(Point(0.,0.), Point(2.,2.), Point(0.,2.), Point(2.,0.))
569
0057c04f94d5 work in progress on intersections (for PET)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 542
diff changeset
68 (1.000000,1.000000)
674
01b89182891a corrected bug for intersection of lines (thanks to Paul for finding)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 661
diff changeset
69 >>> segmentIntersection(Point(0,0), Point(4,4), Point(0,4), Point(4,0))
01b89182891a corrected bug for intersection of lines (thanks to Paul for finding)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 661
diff changeset
70 (2.000000,2.000000)
569
0057c04f94d5 work in progress on intersections (for PET)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 542
diff changeset
71 >>> segmentIntersection(Point(0,1), Point(1,2), Point(2,0), Point(3,2))
0057c04f94d5 work in progress on intersections (for PET)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 542
diff changeset
72
577
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
73 >>> left = Trajectory.fromPointList([(92.291666666666686, 102.99239033124439), (56.774193548387103, 69.688898836168306)])
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
74 >>> middle = Trajectory.fromPointList([(87.211021505376351, 93.390778871978512), (59.032258064516128, 67.540286481647257)])
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
75 >>> right = Trajectory.fromPointList([(118.82392473118281, 115.68263205013426), (63.172043010752688, 66.600268576544309)])
569
0057c04f94d5 work in progress on intersections (for PET)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 542
diff changeset
76 >>> alignments = [left, middle, right]
577
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
77 >>> for a in alignments: a.computeCumulativeDistances()
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
78 >>> getSYfromXY(Point(73, 82), alignments)
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
79 [1, 0, (73.819977,81.106170), 18.172277808821125, 18.172277808821125, 1.2129694042343868]
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
80 >>> getSYfromXY(Point(78, 83), alignments, 0.5)
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
81 [1, 0, (77.033188,84.053889), 13.811799123113715, 13.811799123113715, -1.4301775140225983]
152
74b1fc68d4df re-organized code to avoid cyclic python module dependencies
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 113
diff changeset
82
113
606010d1d9a4 corrected errors in trajectories (if empty) and getTrajectoryInPolygon
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 107
diff changeset
83 >>> Trajectory().length()
606010d1d9a4 corrected errors in trajectories (if empty) and getTrajectoryInPolygon
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 107
diff changeset
84 0
69
cc192d0450b3 added full support for two implementations of indicators, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 43
diff changeset
85 >>> t1 = Trajectory([[0.5,1.5,2.5],[0.5,3.5,6.5]])
91
daa05fae1a70 modified the type of the result of interval lengths to float, added comments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 79
diff changeset
86 >>> t1.length() == 3.
daa05fae1a70 modified the type of the result of interval lengths to float, added comments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 79
diff changeset
87 True
69
cc192d0450b3 added full support for two implementations of indicators, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 43
diff changeset
88 >>> t1[1]
cc192d0450b3 added full support for two implementations of indicators, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 43
diff changeset
89 (1.500000,3.500000)
284
f2cf16ad798f added LCSS for trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
90
542
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
91 >>> t1.differentiate()
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
92 (1.000000,3.000000) (1.000000,3.000000)
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
93 >>> t1.differentiate(True)
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
94 (1.000000,3.000000) (1.000000,3.000000) (1.000000,3.000000)
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
95 >>> t1 = Trajectory([[0.5,1.5,3.5],[0.5,2.5,7.5]])
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
96 >>> t1.differentiate()
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
97 (1.000000,2.000000) (2.000000,5.000000)
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
98
576
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
99 >>> t1.computeCumulativeDistances()
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
100 >>> t1.getDistance(0)
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
101 2.23606797749979
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
102 >>> t1.getDistance(1)
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
103 5.385164807134504
577
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
104 >>> t1.getDistance(2)
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
105 Index 2 beyond trajectory length 3-1
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
106 >>> t1.getCumulativeDistance(0)
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
107 0.0
576
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
108 >>> t1.getCumulativeDistance(1)
577
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
109 2.23606797749979
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
110 >>> t1.getCumulativeDistance(2)
576
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
111 7.6212327846342935
577
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
112 >>> t1.getCumulativeDistance(3)
d0abd2ee17b9 changed arguments to type Point
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 576
diff changeset
113 Index 3 beyond trajectory length 3
576
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
114
0eff0471f9cb added functions to use trajectories as alignments
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 573
diff changeset
115
369
027e254f0b53 lcss subclass for indicators
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 345
diff changeset
116 >>> from utils import LCSS
027e254f0b53 lcss subclass for indicators
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 345
diff changeset
117 >>> lcss = LCSS(lambda x,y: Point.distanceNorm2(x,y) <= 0.1)
027e254f0b53 lcss subclass for indicators
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 345
diff changeset
118 >>> Trajectory.lcss(t1, t1, lcss)
284
f2cf16ad798f added LCSS for trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
119 3
369
027e254f0b53 lcss subclass for indicators
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 345
diff changeset
120 >>> lcss = LCSS(lambda p1, p2: (p1-p2).normMax() <= 0.1)
027e254f0b53 lcss subclass for indicators
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 345
diff changeset
121 >>> Trajectory.lcss(t1, t1, lcss)
284
f2cf16ad798f added LCSS for trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
122 3
345
fa64b2e3a64f added simple classification based on speed
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 284
diff changeset
123
504
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
124 >>> p1=Point(0,0)
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
125 >>> p2=Point(1,0)
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
126 >>> v1 = Point(0.1,0.1)
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
127 >>> v2 = Point(-0.1, 0.1)
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
128 >>> abs(Point.timeToCollision(p1, p2, v1, v2, 0.)-5.0) < 0.00001
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
129 True
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
130 >>> abs(Point.timeToCollision(p1, p2, v1, v2, 0.1)-4.5) < 0.00001
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
131 True
531
f012a8ad7a0e corrected bug in Point.timeToCollision that might result in negative TTCs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 524
diff changeset
132 >>> p1=Point(0,1)
f012a8ad7a0e corrected bug in Point.timeToCollision that might result in negative TTCs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 524
diff changeset
133 >>> p2=Point(1,0)
f012a8ad7a0e corrected bug in Point.timeToCollision that might result in negative TTCs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 524
diff changeset
134 >>> v1 = Point(0,0.1)
f012a8ad7a0e corrected bug in Point.timeToCollision that might result in negative TTCs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 524
diff changeset
135 >>> v2 = Point(0.1, 0)
f012a8ad7a0e corrected bug in Point.timeToCollision that might result in negative TTCs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 524
diff changeset
136 >>> Point.timeToCollision(p1, p2, v1, v2, 0.) == None
f012a8ad7a0e corrected bug in Point.timeToCollision that might result in negative TTCs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 524
diff changeset
137 True
f012a8ad7a0e corrected bug in Point.timeToCollision that might result in negative TTCs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 524
diff changeset
138 >>> Point.timeToCollision(p2, p1, v2, v1, 0.) == None
f012a8ad7a0e corrected bug in Point.timeToCollision that might result in negative TTCs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 524
diff changeset
139 True
583
6ebfb43e938e added midpoint function (from laurent gauthier)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 582
diff changeset
140 >>> Point.midPoint(p1, p2)
6ebfb43e938e added midpoint function (from laurent gauthier)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 582
diff changeset
141 (0.500000,0.500000)
504
a40c75f04903 optimized direct time to collision computation and added tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 451
diff changeset
142
661
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
143 >>> objects = storage.loadTrajectoriesFromSqlite('../samples/laurier.sqlite', 'object')
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
144 >>> len(objects)
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
145 5
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
146 >>> objects[0].hasFeatures()
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
147 False
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
148 >>> features = storage.loadTrajectoriesFromSqlite('../samples/laurier.sqlite', 'feature')
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
149 >>> for o in objects: o.setFeatures(features)
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
150 >>> objects[0].hasFeatures()
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
151 True
dc70d9e711f5 some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 631
diff changeset
152
631
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
153 >>> o1 = MovingObject.generate(Point(-5.,0.), Point(1.,0.), TimeInterval(0,10))
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
154 >>> o2 = MovingObject.generate(Point(0.,-5.), Point(0.,1.), TimeInterval(0,10))
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
155 >>> MovingObject.computePET(o1, o2, 0.1)
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
156 0.0
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
157 >>> o2 = MovingObject.generate(Point(0.,-5.), Point(0.,1.), TimeInterval(5,15))
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
158 >>> MovingObject.computePET(o1, o2, 0.1)
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
159 5.0
2d1d33ae1c69 major work on pPET and pet, issues remain for pPET computed with predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 595
diff changeset
160
542
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
161 >>> t = CurvilinearTrajectory(S = [1., 2., 3., 5.], Y = [0.5, 0.5, 0.6, 0.7], lanes = ['1']*4)
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
162 >>> t.differentiate() # doctest:+ELLIPSIS
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
163 [1.0, 0.0, '1'] [1.0, 0.099..., '1'] [2.0, 0.099..., '1']
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
164 >>> t.differentiate(True) # doctest:+ELLIPSIS
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
165 [1.0, 0.0, '1'] [1.0, 0.099..., '1'] [2.0, 0.099..., '1'] [2.0, 0.099..., '1']
582
7e1ae4d97f1a corrected bug for curvilinear trajectory with only one position and differentiation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 577
diff changeset
166 >>> t = CurvilinearTrajectory(S = [1.], Y = [0.5], lanes = ['1'])
7e1ae4d97f1a corrected bug for curvilinear trajectory with only one position and differentiation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 577
diff changeset
167 >>> t.differentiate().empty()
7e1ae4d97f1a corrected bug for curvilinear trajectory with only one position and differentiation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 577
diff changeset
168 True
542
a3add9f751ef added differentiate function for curvilinear trajectories and modified the addPosition functions
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 531
diff changeset
169
345
fa64b2e3a64f added simple classification based on speed
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 284
diff changeset
170 >>> o1 = MovingObject(positions = Trajectory([[0]*3,[2]*3]), velocities = Trajectory([[0]*3,[1]*3]))
524
1dced8932b08 corrected bugs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 504
diff changeset
171 >>> o1.classifyUserTypeSpeedMotorized(0.5, np.median)
345
fa64b2e3a64f added simple classification based on speed
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 284
diff changeset
172 >>> userTypeNames[o1.getUserType()]
fa64b2e3a64f added simple classification based on speed
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 284
diff changeset
173 'car'
524
1dced8932b08 corrected bugs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 504
diff changeset
174 >>> o1.classifyUserTypeSpeedMotorized(0.5, np.mean)
345
fa64b2e3a64f added simple classification based on speed
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 284
diff changeset
175 >>> userTypeNames[o1.getUserType()]
fa64b2e3a64f added simple classification based on speed
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 284
diff changeset
176 'car'
524
1dced8932b08 corrected bugs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 504
diff changeset
177 >>> o1.classifyUserTypeSpeedMotorized(1.5, np.median)
345
fa64b2e3a64f added simple classification based on speed
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 284
diff changeset
178 >>> userTypeNames[o1.getUserType()]
fa64b2e3a64f added simple classification based on speed
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 284
diff changeset
179 'pedestrian'
595
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
180
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
181 >>> o1 = MovingObject.generate(Point(0.,0.), Point(1.,0.), TimeInterval(0,10))
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
182 >>> gt1 = BBAnnotation(1, TimeInterval(0,10), MovingObject.generate(Point(0.2,0.6), Point(1.,0.), TimeInterval(0,10)), MovingObject.generate(Point(-0.2,-0.4), Point(1.,0.), TimeInterval(0,10)))
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
183 >>> gt1.computeCentroidTrajectory()
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
184 >>> computeClearMOT([gt1], [], 0.2, 0, 10)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
185 (None, 0.0, 11, 0, 0, 11)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
186 >>> computeClearMOT([], [o1], 0.2, 0, 10)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
187 (None, None, 0, 0, 11, 0)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
188 >>> computeClearMOT([gt1], [o1], 0.2, 0, 10) # doctest:+ELLIPSIS
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
189 (0.0999..., 1.0, 0, 0, 0, 11)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
190 >>> computeClearMOT([gt1], [o1], 0.05, 0, 10)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
191 (None, -1.0, 11, 0, 11, 11)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
192
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
193 >>> o1 = MovingObject(1, TimeInterval(0,3), positions = Trajectory([range(4), [0.1, 0.1, 1.1, 1.1]]))
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
194 >>> o2 = MovingObject(2, TimeInterval(0,3), positions = Trajectory([range(4), [0.9, 0.9, -0.1, -0.1]]))
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
195 >>> gt1 = BBAnnotation(1, TimeInterval(0,3), MovingObject(positions = Trajectory([range(4), [0.]*4])), MovingObject(positions = Trajectory([range(4), [0.]*4])))
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
196 >>> gt1.computeCentroidTrajectory()
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
197 >>> gt2 = BBAnnotation(2, TimeInterval(0,3), MovingObject(positions = Trajectory([range(4), [1.]*4])), MovingObject(positions = Trajectory([range(4), [1.]*4])))
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
198 >>> gt2.computeCentroidTrajectory()
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
199 >>> computeClearMOT([gt1, gt2], [o1, o2], 0.2, 0, 3) # doctest:+ELLIPSIS
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
200 (0.1..., 0.75, 0, 2, 0, 8)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
201 >>> computeClearMOT([gt2, gt1], [o2, o1], 0.2, 0, 3) # doctest:+ELLIPSIS
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
202 (0.1..., 0.75, 0, 2, 0, 8)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
203 >>> computeClearMOT([gt1], [o1, o2], 0.2, 0, 3)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
204 (0.1, -0.25, 0, 1, 4, 4)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
205 >>> computeClearMOT([gt1], [o2, o1], 0.2, 0, 3) # symmetry
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
206 (0.1, -0.25, 0, 1, 4, 4)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
207 >>> computeClearMOT([gt1, gt2], [o1], 0.2, 0, 3) # doctest:+ELLIPSIS
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
208 (0.100..., 0.375, 4, 1, 0, 8)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
209 >>> computeClearMOT([gt2, gt1], [o1], 0.2, 0, 3) # doctest:+ELLIPSIS
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
210 (0.100..., 0.375, 4, 1, 0, 8)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
211 >>> computeClearMOT([gt1, gt2], [o1, o2], 0.08, 0, 3)
17b02c8054d0 added tests and corrected one bug
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 583
diff changeset
212 (None, -1.0, 8, 0, 8, 8)