diff python/moving.py @ 526:21bdeb29f855

corrected bug in initialization of lists and loading trajectories from vissim files
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 20 Jun 2014 17:45:32 -0400
parents 1dced8932b08
children 37830a831818
line wrap: on
line diff
--- a/python/moving.py	Fri Jun 20 00:20:29 2014 -0400
+++ b/python/moving.py	Fri Jun 20 17:45:32 2014 -0400
@@ -100,7 +100,11 @@
 
     def __getitem__(self, i):
         if not self.empty():
-            return self.first+i
+            if isinstance(i, int):
+                return self.first+i
+            else:
+                raise TypeError, "Invalid argument type."
+            #elif isinstance( key, slice ):
 
     def __iter__(self):
         self.iterInstantNum = -1
@@ -434,14 +438,18 @@
     def length(self):
         return self.__len__()
 
+    def __getitem__(self, i):
+        if isinstance(i, int):
+            return Point(self.positions[0][i], self.positions[1][i])
+        else:
+            raise TypeError, "Invalid argument type."
+            #elif isinstance( key, slice ):
+
     def __str__(self):
         return ' '.join([self.__getitem__(i).__str__() for i in xrange(self.length())])
 
     def __repr__(self):
-        return str(self)
-
-    def __getitem__(self, i):
-        return Point(self.positions[0][i], self.positions[1][i])
+        return self.__str__()
 
     def __iter__(self):
         self.iterInstantNum = 0
@@ -567,7 +575,6 @@
                 return True
         return False
 
-
     def wiggliness(self):
         return self.cumulatedDisplacement()/float(Point.distanceNorm2(self.__getitem__(0),self.__getitem__(self.length()-1)))
 
@@ -625,12 +632,22 @@
     longitudinal coordinate is stored as first coordinate (exterior name S)
     lateral coordiante is stored as second coordinate'''
 
-    def __init__(self, S = [], Y = [], lanes = []):
-        self.positions = [S,Y]
-        self.lanes = lanes
+    def __init__(self, S = None, Y = None, lanes = None):
+        if S == None or Y == None:
+            self.positions = [[],[]]
+        else:
+            self.positions = [S,Y]
+        if lanes == None:
+            self.lanes = []
+        else:
+            self.lanes = lanes
         
     def __getitem__(self,i): 
-        return [self.positions[0][i], self.positions[1][i], self.lanes[i]]
+        if isinstance(i, int):
+            return [self.positions[0][i], self.positions[1][i], self.lanes[i]]
+        else:
+            raise TypeError, "Invalid argument type."
+            #elif isinstance( key, slice ):
 
     def getSCoordinates(self):
         return self.getXCoordinates()