Mercurial Hosting > traffic-intelligence
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,