From 848002d117dbcf6945fbf93c47ca58a112e23deb Mon Sep 17 00:00:00 2001 From: edgarriba Date: Thu, 19 Nov 2015 15:41:07 +0000 Subject: [PATCH] improve running engine with args Former-commit-id: 9f176282ef2d6cafda9a614d19a28531898de1fe --- scripts/datatypes.py | 20 ++++++++++++++++---- scripts/run.py | 20 ++++++++++++++------ scripts/tasks.py | 3 ++- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/scripts/datatypes.py b/scripts/datatypes.py index 28ae6bc2..5262db72 100644 --- a/scripts/datatypes.py +++ b/scripts/datatypes.py @@ -4,7 +4,7 @@ import subprocess import log import dataset import system -from tasks import ODMTaskManager +import tasks class ODMApp: ''' ODMApp - a class for ODM Activities @@ -17,12 +17,24 @@ class ODMApp: self.photos = [] # Task manager # configure and schedule tasks - self.task_manager = ODMTaskManager(self) + self.task_manager = tasks.ODMTaskManager(self) # Run all tasks given an starting point - def run_all(self, initial_task_id): + def run_all(self, initial_task, final_task): - self.task_manager.initial_task_id = initial_task_id + # found ids for tasks + t_dict = tasks.tasks_dict + initial_task_id = [k for k in t_dict if t_dict[k]==initial_task][0] + final_task_id = [k for k in t_dict if t_dict[k]==final_task][0] + + if initial_task_id > final_task_id: + log.ODM_ERROR('Initial task must be lower than final') + return + + # setup task manager + self.task_manager.initial_task_id = int(initial_task_id) + self.task_manager.final_task_id = int(final_task_id) + # run defined pipeline self.task_manager.run_tasks() diff --git a/scripts/run.py b/scripts/run.py index 17b5cecd..a39881ea 100644 --- a/scripts/run.py +++ b/scripts/run.py @@ -25,13 +25,21 @@ if __name__ == '__main__': # internally configure all tasks app = ODMApp(config.args) - # set from where we want to start - # by default we will start from the beginnig - init_task_id = 0 - log.ODM_INFO('Runnning OpenDroneMap app - %s' % system.now()) - # run all tasks - app.run_all(init_task_id) + # run single task + if config.args.get('run_only') is not None: + # task to run + tasks = config.args['run_only'] + app.run_all(tasks, tasks) + + # run multiple tasks + else: + # get initial and final tasks + initial_task = config.args['start_with'] + final_task = config.args['end_with'] + + # run tasks + app.run_all(initial_task, final_task) log.ODM_INFO('OpenDroneMap app finished - %s' % system.now()) \ No newline at end of file diff --git a/scripts/tasks.py b/scripts/tasks.py index fa55b085..b562ada6 100644 --- a/scripts/tasks.py +++ b/scripts/tasks.py @@ -27,6 +27,7 @@ class ODMTaskManager(object): self.odm_app = odm_app self.initial_task_id = 0 self.current_task_id = 0 + self.final_task_id = len(tasks_dict) self.tasks = self.init_tasks(tasks_dict, self.odm_app) def init_tasks(self, _tasks_dict, _odm_app): @@ -104,7 +105,7 @@ class ODMTaskManager(object): return tasks def run_tasks(self): - for id in range(self.initial_task_id, len(self.tasks)): + for id in range(self.initial_task_id, self.final_task_id + 1): # catch task with current id task = self.tasks[str(id)] # update task tracking