Mercurial Hosting > traffic-intelligence
diff trafficintelligence/storage.py @ 1065:d4d052a05337
added progress report functionality
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Mon, 16 Jul 2018 00:05:17 -0400 |
parents | 16575ca4537d |
children | 3939ae415be0 |
line wrap: on
line diff
--- a/trafficintelligence/storage.py Sun Jul 15 22:52:26 2018 -0400 +++ b/trafficintelligence/storage.py Mon Jul 16 00:05:17 2018 -0400 @@ -70,6 +70,18 @@ except sqlite3.OperationalError as error: printDBError(error) +def tableNames(filename): + 'Lists the names of the tables in the SQLite file' + if Path(filename).is_file(): + with sqlite3.connect(filename) as connection: + try: + cursor = connection.cursor() + cursor.execute('SELECT name FROM sqlite_master WHERE type = \'table\'') + return [row[0] for row in cursor] + except sqlite3.OperationalError as error: + printDBError(error) + return [] + def createTrajectoryTable(cursor, tableName): if tableName.endswith('positions') or tableName.endswith('velocities'): cursor.execute("CREATE TABLE IF NOT EXISTS "+tableName+" (trajectory_id INTEGER, frame_number INTEGER, x_coordinate REAL, y_coordinate REAL, PRIMARY KEY(trajectory_id, frame_number))") @@ -259,7 +271,7 @@ The number loaded is either the first objectNumbers objects, or the indices in objectNumbers from the database''' objects = [] - if Path(filename).exists(): + if Path(filename).is_file(): with sqlite3.connect(filename) as connection: objects = loadTrajectoriesFromTable(connection, 'positions', trajectoryType, objectNumbers, timeStep) objectVelocities = loadTrajectoriesFromTable(connection, 'velocities', trajectoryType, objectNumbers, timeStep) @@ -452,7 +464,7 @@ Load descriptions?''' objects = [] - if Path(filename).exists(): + if Path(filename).is_file(): with sqlite3.connect(filename) as connection: if objectType == 'bb': topCorners = loadTrajectoriesFromTable(connection, 'bounding_boxes', 'bbtop', objectNumbers, timeStep) @@ -511,7 +523,7 @@ TODO choose the interactions to load''' interactions = [] - if Path(filename).exists(): + if Path(filename).is_file(): with sqlite3.connect(filename) as connection: cursor = connection.cursor() try: @@ -557,7 +569,7 @@ def loadBoundingBoxTableForDisplay(filename): '''Loads bounding boxes from bounding_boxes table for display over trajectories''' boundingBoxes = {} # list of bounding boxes for each instant - if Path(filename).exists(): + if Path(filename).is_file(): with sqlite3.connect(filename) as connection: cursor = connection.cursor() try: @@ -628,7 +640,7 @@ def loadPrototypeAssignmentsFromSqlite(filename, objectType): prototypeAssignments = {} - if Path(filename).exists(): + if Path(filename).is_file(): with sqlite3.connect(filename) as connection: cursor = connection.cursor() try: @@ -648,7 +660,7 @@ def loadPrototypesFromSqlite(filename, withTrajectories = True): 'Loads prototype ids and matchings (if stored)' prototypes = [] - if Path(filename).exists(): + if Path(filename).is_file(): with sqlite3.connect(filename) as connection: cursor = connection.cursor() objects = [] @@ -709,7 +721,7 @@ from sklearn import mixture # todo if not avalaible, load data in duck-typed class with same fields from ast import literal_eval pois = [] - if Path(filename).exists(): + if Path(filename).is_file(): with sqlite3.connect(filename) as connection: cursor = connection.cursor() try: @@ -1334,7 +1346,7 @@ def __init__(self, filename = None): self.configFilename = filename - if filename is not None and Path(filename).exists(): + if filename is not None and Path(filename).is_file(): self.loadConfigFile(filename) else: print('Configuration filename {} could not be loaded.'.format(filename)) @@ -1424,7 +1436,7 @@ parentPath = Path(filename).parent self.sectionHeader = config.sections()[0] self.homographyFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'homography-filename')) - if Path(self.homographyFilename).exists(): + if Path(self.homographyFilename).is_file(): self.homography = loadtxt(self.homographyFilename) else: self.homography = None @@ -1443,7 +1455,7 @@ parentPath = Path(filename).parent self.sectionHeader = config.sections()[0] self.intrinsicCameraFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'intrinsic-camera-filename')) - if Path(self.intrinsicCameraFilename).exists(): + if Path(self.intrinsicCameraFilename).is_file(): self.intrinsicCameraMatrix = loadtxt(self.intrinsicCameraFilename) else: self.intrinsicCameraMatrix = None @@ -1465,12 +1477,12 @@ self.videoFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'video-filename')) self.databaseFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'database-filename')) self.homographyFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'homography-filename')) - if Path(self.homographyFilename).exists(): + if Path(self.homographyFilename).is_file(): self.homography = loadtxt(self.homographyFilename) else: self.homography = None self.intrinsicCameraFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'intrinsic-camera-filename')) - if Path(self.intrinsicCameraFilename).exists(): + if Path(self.intrinsicCameraFilename).is_file(): self.intrinsicCameraMatrix = loadtxt(self.intrinsicCameraFilename) else: self.intrinsicCameraMatrix = None @@ -1505,7 +1517,7 @@ def __init__(self, filename = None): self.configFilename = filename - if filename is not None and Path(filename).exists(): + if filename is not None and Path(filename).is_file(): self.loadConfigFile(filename) else: print('Configuration filename {} could not be loaded.'.format(filename))