Mercurial > hg > nsaunier > traffic-intelligence
comparison trafficintelligence/storage.py @ 1143:8ac52ebff5f7
avoid using chdir
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Tue, 21 Apr 2020 00:55:02 -0400 |
| parents | 3e0f43edb4d6 |
| children | aa88acf06876 |
comparison
equal
deleted
inserted
replaced
| 1142:b3ee75b4978a | 1143:8ac52ebff5f7 |
|---|---|
| 4 | 4 |
| 5 from pathlib import Path | 5 from pathlib import Path |
| 6 import shutil | 6 import shutil |
| 7 from copy import copy | 7 from copy import copy |
| 8 import sqlite3, logging | 8 import sqlite3, logging |
| 9 from os import chdir | |
| 10 | 9 |
| 11 from numpy import log, min as npmin, max as npmax, round as npround, array, sum as npsum, loadtxt, floor as npfloor, ceil as npceil, linalg, int32, int64 | 10 from numpy import log, min as npmin, max as npmax, round as npround, array, sum as npsum, loadtxt, floor as npfloor, ceil as npceil, linalg, int32, int64 |
| 12 from pandas import read_csv, merge | 11 from pandas import read_csv, merge |
| 13 | 12 |
| 14 from trafficintelligence import utils, moving, events, indicators | 13 from trafficintelligence import utils, moving, events, indicators |
| 660 | 659 |
| 661 def loadPrototypesFromSqlite(filename, withTrajectories = True): | 660 def loadPrototypesFromSqlite(filename, withTrajectories = True): |
| 662 'Loads prototype ids and matchings (if stored)' | 661 'Loads prototype ids and matchings (if stored)' |
| 663 prototypes = [] | 662 prototypes = [] |
| 664 if Path(filename).is_file(): | 663 if Path(filename).is_file(): |
| 665 filename = str(Path(filename).resolve()) | 664 parentPath = Path(filename).resolve().parent |
| 666 pwd = Path.cwd() | |
| 667 chdir(Path(filename).parent) | |
| 668 with sqlite3.connect(filename) as connection: | 665 with sqlite3.connect(filename) as connection: |
| 669 cursor = connection.cursor() | 666 cursor = connection.cursor() |
| 670 objects = [] | 667 objects = [] |
| 671 try: | 668 try: |
| 672 cursor.execute('SELECT * FROM prototypes') | 669 cursor.execute('SELECT * FROM prototypes') |
| 673 for row in cursor: | 670 for row in cursor: |
| 674 prototypes.append(moving.Prototype(row[0], row[1], row[2], row[3])) | 671 prototypes.append(moving.Prototype(row[0], row[1], row[2], row[3])) |
| 675 if withTrajectories: | 672 if withTrajectories: |
| 676 for p in prototypes: | 673 for p in prototypes: |
| 677 p.setMovingObject(loadTrajectoriesFromSqlite(p.getFilename(), p.getTrajectoryType(), [p.getNum()])[0]) | 674 p.setMovingObject(loadTrajectoriesFromSqlite(str(parentPath/p.getFilename()), p.getTrajectoryType(), [p.getNum()])[0]) |
| 678 # loadingInformation = {} # complicated slightly optimized | 675 # loadingInformation = {} # complicated slightly optimized |
| 679 # for p in prototypes: | 676 # for p in prototypes: |
| 680 # dbfn = p.getFilename() | 677 # dbfn = p.getFilename() |
| 681 # trajType = p.getTrajectoryType() | 678 # trajType = p.getTrajectoryType() |
| 682 # if (dbfn, trajType) in loadingInformation: | 679 # if (dbfn, trajType) in loadingInformation: |
| 687 # objects += loadTrajectoriesFromSqlite(k[0], k[1], [p.getNum() for p in v]) | 684 # objects += loadTrajectoriesFromSqlite(k[0], k[1], [p.getNum() for p in v]) |
| 688 except sqlite3.OperationalError as error: | 685 except sqlite3.OperationalError as error: |
| 689 printDBError(error) | 686 printDBError(error) |
| 690 if len(set([p.getTrajectoryType() for p in prototypes])) > 1: | 687 if len(set([p.getTrajectoryType() for p in prototypes])) > 1: |
| 691 print('Different types of prototypes in database ({}).'.format(set([p.getTrajectoryType() for p in prototypes]))) | 688 print('Different types of prototypes in database ({}).'.format(set([p.getTrajectoryType() for p in prototypes]))) |
| 692 chdir(pwd) | |
| 693 return prototypes | 689 return prototypes |
| 694 | 690 |
| 695 def savePOIsToSqlite(filename, gmm, gmmType, gmmId): | 691 def savePOIsToSqlite(filename, gmm, gmmType, gmmId): |
| 696 '''Saves a Gaussian mixture model (of class sklearn.mixture.GaussianMixture) | 692 '''Saves a Gaussian mixture model (of class sklearn.mixture.GaussianMixture) |
| 697 gmmType is a type of GaussianMixture, learnt either from beginnings or ends of trajectories''' | 693 gmmType is a type of GaussianMixture, learnt either from beginnings or ends of trajectories''' |
