changeset 1275:9f1711a85c56

added code to make sure TTC is replaced of recomputed and not having a value
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 19 Jun 2024 16:11:35 -0400
parents 0bfcbc58352f
children bae8de98406f
files trafficintelligence/events.py trafficintelligence/tests/events.txt
diffstat 2 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/trafficintelligence/events.py	Tue Jun 18 15:30:21 2024 -0400
+++ b/trafficintelligence/events.py	Wed Jun 19 16:11:35 2024 -0400
@@ -127,6 +127,10 @@
     def getIndicator(self, indicatorName):
         return self.indicators.get(indicatorName, None)
 
+    def resetIndicator(self, indicatorName):
+        if indicatorName in self.indicators:
+            del self.indicators[indicatorName]
+
     def addIndicator(self, indicator):
         if indicator is not None:
             self.indicators[indicator.name] = indicator
@@ -284,6 +288,9 @@
         if len(TTCs) > 0:
             self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[7], TTCs, mostSevereIsMax=False))
             self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[6], collisionProbabilities))
+        else:
+            for i in [6,7]:
+                self.resetIndicator(Interaction.indicatorNames[i])
         
         # crossing zones and pPET
         if computeCZ:
@@ -299,6 +306,8 @@
         pet, t1, t2=  moving.MovingObject.computePET(self.roadUser1, self.roadUser2, collisionDistanceThreshold, computePetWithBoundingPoly)
         if pet is not None:
             self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[10], {min(t1, t2): pet, max(t1, t2): pet}, mostSevereIsMax = False))
+        else:
+            self.resetIndicator(Interaction.indicatorNames[10])
 
     def setCollision(self, collision):
         '''indicates if it is a collision: argument should be boolean'''
--- a/trafficintelligence/tests/events.txt	Tue Jun 18 15:30:21 2024 -0400
+++ b/trafficintelligence/tests/events.txt	Wed Jun 19 16:11:35 2024 -0400
@@ -52,6 +52,17 @@
 >>> inter.getIndicator(Interaction.indicatorNames[1])[6] # doctest:+ELLIPSIS
 3.1415...
 
+# test if reseting object
+>>> o2 = MovingObject.generate(2, Point(0.,-5.), Point(0.,-1.), TimeInterval(0,10))
+>>> inter.setRoadUsers([o1,o2])
+>>> ttc = inter.getIndicator("Time to Collision")
+>>> ttc[0]
+5.0
+>>> inter.computeIndicators()
+>>> inter.computeCrossingsCollisions(predictionParams, 0.1, 10)
+>>> inter.getIndicator("Time to Collision") is None
+True
+
 # test low speed
 >>> inter = Interaction(roadUser1 = o1, roadUser2 = o2)
 >>> inter.computeIndicators()