diff python/objectsmoothing.py @ 661:dc70d9e711f5

some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 18 May 2015 13:53:25 +0200
parents d74e8c175d6b
children 15e244d2a1b5
line wrap: on
line diff
--- a/python/objectsmoothing.py	Fri May 15 23:09:49 2015 +0200
+++ b/python/objectsmoothing.py	Mon May 18 13:53:25 2015 +0200
@@ -14,14 +14,14 @@
     return min(dist, key=dist.get) # = utils.argmaxDict(dist)
     
 def getFeatures(obj, featureID):
-    first = obj.features[featureID].getFirstInstant()
-    last = obj.features[featureID].getLastInstant()
-    featureList=[[obj.features[featureID],first,last,moving.Point(0,0)]]
+    currentFeature = obj.getFeature(featureID)
+    first = currentFeature.getFirstInstant()
+    last = currentFeature.getLastInstant()
+    featureList=[[currentFeature,first,last,moving.Point(0,0)]]
     # find the features to fill in the beginning of the object existence
-    currentFeature = obj.features[featureID]
     while first != obj.getFirstInstant():
         delta=featureList[-1][3]
-        featureSet = [f for f in obj.features if f.existsAtInstant(first-1)]
+        featureSet = [f for f in obj.getFeatures() if f.existsAtInstant(first-1)]
         feat = findNearest(currentFeature,featureSet,first-1,reverse=True)
         if feat.existsAtInstant(first):
             featureList.append([feat,feat.getFirstInstant(),first-1,(currentFeature.getPositionAtInstant(first)-feat.getPositionAtInstant(first))+delta])
@@ -31,9 +31,9 @@
         first= feat.getFirstInstant()
     # find the features to fill in the end of the object existence
     delta=moving.Point(0,0)
-    currentFeature = obj.features[featureID]
+    currentFeature = obj.getFeature(featureID) # need to reinitialize
     while last!= obj.getLastInstant():
-        featureSet = [f for f in obj.features if f.existsAtInstant(last+1)]
+        featureSet = [f for f in obj.getFeatures() if f.existsAtInstant(last+1)]
         feat = findNearest(currentFeature,featureSet,last+1,reverse=False)
         if feat.existsAtInstant(last):
             featureList.append([feat,last+1,feat.getLastInstant(),(currentFeature.getPositionAtInstant(last)-feat.getPositionAtInstant(last))+delta])
@@ -120,7 +120,7 @@
     if create:
         feature = buildFeature(obj, featureID , num=1) # why num=1
     else:
-        feature = obj.features[featureID]
+        feature = obj.getFeature(featureID)
     for t in feature.getTimeInterval():
         p1= feature.getPositionAtInstant(t)
         p2= obj.getPositionAtInstant(t)
@@ -180,14 +180,14 @@
     
     The object should have its features in obj.features
     TODO: check whether features are necessary'''
-    if len(obj.features) == 0:
+    if not obj.hasFeatures():
         print('Object {} has an empty list of features: please load and add them using obj.setFeatures(features)'.format(obj.getNum()))
         from sys import exit
         exit()
 
-    featureList=[i for i,f in enumerate(obj.features) if f.length() >= minLengthParam*obj.length()]
+    featureList=[i for i,f in enumerate(obj.getFeatures()) if f.length() >= minLengthParam*obj.length()]
     if featureList==[]:
-        featureList.append(utils.argmaxDict({i:f.length() for i,f in enumerate(obj.features)}))
+        featureList.append(utils.argmaxDict({i:f.length() for i,f in enumerate(obj.getFeatures())}))
         create = True
     newObjects = []
     for featureID in featureList: # featureID should be the index in the list of obj.features
@@ -232,14 +232,14 @@
                 newObj.velocities= obj.velocities
 
     newObj.featureNumbers=obj.featureNumbers
-    newObj.features=obj.features
+    newObj.features=obj.getFeatures()
     newObj.userType=obj.userType
 
     if plotResults:
         plt.figure()
         plt.title('objects_id = {}'.format(obj.num))
         for i in featureList:
-            obj.features[i].plot('cx-')
+            obj.getFeature(i).plot('cx-')
         obj.plot('rx-')
         newObj.plot('gx-')        
     return newObj