diff python/prediction.py @ 998:933670761a57

updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Sun, 27 May 2018 23:22:48 -0400
parents f026ce2af637
children
line wrap: on
line diff
--- a/python/prediction.py	Fri May 25 18:15:18 2018 -0400
+++ b/python/prediction.py	Sun May 27 23:22:48 2018 -0400
@@ -24,13 +24,13 @@
         #self.crossingZones = {}
 
     def predictPosition(self, nTimeSteps):
-        if nTimeSteps > 0 and not nTimeSteps in self.predictedPositions.keys():
+        if nTimeSteps > 0 and not nTimeSteps in self.predictedPositions:
             self.predictPosition(nTimeSteps-1)
             self.predictedPositions[nTimeSteps], self.predictedSpeedOrientations[nTimeSteps] = moving.predictPosition(self.predictedPositions[nTimeSteps-1], self.predictedSpeedOrientations[nTimeSteps-1], self.getControl(), self.maxSpeed)
         return self.predictedPositions[nTimeSteps]
 
     def getPredictedTrajectory(self):
-        return moving.Trajectory.fromPointList(self.predictedPositions.values())
+        return moving.Trajectory.fromPointList(list(self.predictedPositions.values()))
 
     def getPredictedSpeeds(self):
         return [so.norm for so in self.predictedSpeedOrientations.values()]
@@ -83,7 +83,7 @@
             self.ratio = self.initialSpeed/prototype.getVelocityAt(self.closestPointIdx).norm2()
     
     def predictPosition(self, nTimeSteps):
-        if nTimeSteps > 0 and not nTimeSteps in self.predictedPositions.keys():
+        if nTimeSteps > 0 and not nTimeSteps in self.predictedPositions:
             deltaPosition = copy(self.deltaPosition)
             if self.constantSpeed:
                 traj = self.prototype.getPositions()
@@ -172,11 +172,11 @@
     else:
         figure()
     for et in predictedTrajectories1:
-        for t in xrange(int(np.round(timeHorizon))):
+        for t in range(int(np.round(timeHorizon))):
             et.predictPosition(t)
             et.plot('rx')
     for et in predictedTrajectories2:
-        for t in xrange(int(np.round(timeHorizon))):
+        for t in range(int(np.round(timeHorizon))):
             et.predictPosition(t)
             et.plot('bx')
     obj1.plot('r', withOrigin = True)
@@ -187,13 +187,13 @@
         savefig('predicted-trajectories-t-{0}.png'.format(currentInstant))
 
 def calculateProbability(nMatching,similarity,objects):
-    sumFrequencies=sum([nMatching[p] for p in similarity.keys()])
+    sumFrequencies=sum([nMatching[p] for p in similarity])
     prototypeProbability={}
-    for i in similarity.keys():
+    for i in similarity:
         prototypeProbability[i]= similarity[i] * float(nMatching[i])/sumFrequencies
-    sumProbabilities= sum([prototypeProbability[p] for p in prototypeProbability.keys()])
+    sumProbabilities= sum([prototypeProbability[p] for p in prototypeProbability])
     probabilities={}
-    for i in prototypeProbability.keys():
+    for i in prototypeProbability:
         probabilities[objects[i]]= float(prototypeProbability[i])/sumProbabilities
     return probabilities
 
@@ -208,7 +208,7 @@
     lcss = LCSS(similarityFunc=lambda x,y: (distanceForLCSS(x,y) <= spatialThreshold),delta=delta)
     similarity={}
     for y in prototypesRoutes: 
-        if y in prototypes.keys():
+        if y in prototypes:
             prototypesIDs=prototypes[y]            
             for x in prototypesIDs:
                 s=lcss.computeNormalized(partialObjPositions, objects[x].positions)
@@ -220,7 +220,7 @@
         return probabilities
     else:
         mostMatchedValues=sorted(similarity.values(),reverse=True)[:mostMatched]
-        keys=[k for k in similarity.keys() if similarity[k] in mostMatchedValues]
+        keys=[k for k in similarity if similarity[k] in mostMatchedValues]
         newSimilarity={}
         for i in keys:
             newSimilarity[i]=similarity[i]
@@ -240,7 +240,7 @@
     lcss = LCSS(similarityFunc=lambda x,y: (distanceForLCSS(x,y) <= spatialThreshold),delta=delta)
     similarity={}
     for y in prototypesRoutes: 
-        if y in prototypes.keys():
+        if y in prototypes:
             prototypesIDs=prototypes[y]    
             for x in prototypesIDs:
                 s=lcss.computeNormalized(partialObjPositions, objects[x].positions)
@@ -248,8 +248,8 @@
                     similarity[x]=s
     
     newSimilarity={}
-    for i in similarity.keys():
-        if i in secondStepPrototypes.keys():
+    for i in similarity:
+        if i in secondStepPrototypes:
             for j in secondStepPrototypes[i]:
                 newSimilarity[j]=similarity[i]
     probabilities= calculateProbability(nMatching,newSimilarity,objects)        
@@ -317,7 +317,7 @@
             crossingZones = {}
         else:
             crossingZones = None
-        if timeInterval:
+        if timeInterval is not None:
             commonTimeInterval = timeInterval
         else:
             commonTimeInterval = obj1.commonTimeInterval(obj2)
@@ -334,7 +334,7 @@
         '''Computes only collision probabilities
         Returns for each instant the collision probability and number of samples drawn'''
         collisionProbabilities = {}
-        if timeInterval:
+        if timeInterval is not None:
             commonTimeInterval = timeInterval
         else:
             commonTimeInterval = obj1.commonTimeInterval(obj2)
@@ -393,7 +393,7 @@
             positions = [obj.getPositionAtInstant(instant)]
             velocities = [obj.getVelocityAtInstant(instant)]
         probability = 1./float(len(positions)*self.nPredictedTrajectories)
-        for i in xrange(self.nPredictedTrajectories):
+        for i in range(self.nPredictedTrajectories):
             for initialPosition,initialVelocity in zip(positions, velocities):
                 predictedTrajectories.append(PredictedTrajectoryRandomControl(initialPosition, 
                                                                               initialVelocity, 
@@ -450,7 +450,7 @@
             positions = [obj.getPositionAtInstant(instant)]
             velocities = [obj.getVelocityAtInstant(instant)]
         probability = 1./float(self.nPredictedTrajectories)
-        for i in xrange(self.nPredictedTrajectories):
+        for i in range(self.nPredictedTrajectories):
             for initialPosition,initialVelocity in zip(positions, velocities):
                 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, 
                                                                          initialVelocity,