Mercurial Hosting > traffic-intelligence
diff scripts/safety-analysis.py @ 1150:14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Thu, 28 May 2020 01:03:45 -0400 |
parents | 8c0ec7e1eb8e |
children | fe35473acee3 |
line wrap: on
line diff
--- a/scripts/safety-analysis.py Wed May 13 00:29:34 2020 -0400 +++ b/scripts/safety-analysis.py Thu May 28 01:03:45 2020 -0400 @@ -18,6 +18,7 @@ # TODO analyze only parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity (cvd: vector computation (approximate); cve: equation solving; cv: discrete time (approximate)), normal adaptation, point set prediction)', choices = ['cvd', 'cve', 'cv', 'na', 'ps', 'mp']) parser.add_argument('-p', dest = 'prototypeDatabaseFilename', help = 'name of the database containing the prototypes') +parser.add_argument('-c', dest = 'minPrototypeNMatchings', help = 'minimum number of matchings per prototype', type = int, default = 1) # parser.add_argument('--categorize', dest = 'categorize', help = 'computes interaction categories', action = 'store_true') TODO, add angle parameters in tracking.cfg - the safety analysis parameters should probably be spun off tracking.cfg parser.add_argument('--no-motion-prediction', dest = 'noMotionPrediction', help = 'does not compute indicators like TTC depending on motion prediction', action = 'store_true') parser.add_argument('--pet', dest = 'computePET', help = 'computes PET', action = 'store_true') @@ -61,6 +62,17 @@ prototypes = storage.loadPrototypesFromSqlite(params.databaseFilename) else: prototypes = storage.loadPrototypesFromSqlite(args.prototypeDatabaseFilename) + if args.minPrototypeNMatchings > 0: + prototypes = [p for p in prototypes if p.getNMatchings() >= args.minPrototypeNMatchings] + else: + nProto0Matching = 0 + for p in prototypes: + if p.getNMatchings() == 0: + nProto0Matching += 1 + print("Prototype {} has 0 matchings".format(p)) + if len(prototypes) == 0 or nProto0Matching > 0: + print('Database has {} prototypes without any matching. Exiting'.format(nProto0Matching)) + sys.exit() for p in prototypes: p.getMovingObject().computeCumulativeDistances() predictionParameters = prediction.PrototypePredictionParameters(prototypes, params.nPredictedTrajectories, params.maxLcssDistance, params.minLcssSimilarity, params.lcssMetric, params.minFeatureTime, params.constantSpeedPrototypePrediction, params.useFeaturesForPrediction)