From ddad0d8c9df4b4593dcc4ee832f6764325afdbab Mon Sep 17 00:00:00 2001 From: Stefano Borini <sborini@enthought.com> Date: Fri, 14 Jul 2017 10:39:24 +0100 Subject: [PATCH] Added bundle for dakota and basic MCOs --- force_bdss/mco/base_multi_criteria_optimizer.py | 16 ++++++++++++++++ force_bdss/mco/basic.py | 16 ---------------- force_bdss/mco/basic_bundle.py | 17 +++++++++++++++++ force_bdss/mco/basic_model.py | 7 +++++++ force_bdss/mco/basic_optimizer.py | 12 ++++++++++++ force_bdss/mco/dakota.py | 17 ----------------- force_bdss/mco/dakota_bundle.py | 17 +++++++++++++++++ force_bdss/mco/dakota_model.py | 7 +++++++ force_bdss/mco/dakota_optimizer.py | 13 +++++++++++++ .../mco/i_multi_criteria_optimizer_bundle.py | 14 ++++++++++++++ force_bdss/mco/i_multi_criteria_optimizers.py | 8 -------- .../mco/multi_criteria_optimizers_plugin.py | 15 ++++++++------- 12 files changed, 111 insertions(+), 48 deletions(-) create mode 100644 force_bdss/mco/base_multi_criteria_optimizer.py delete mode 100644 force_bdss/mco/basic.py create mode 100644 force_bdss/mco/basic_bundle.py create mode 100644 force_bdss/mco/basic_model.py create mode 100644 force_bdss/mco/basic_optimizer.py delete mode 100644 force_bdss/mco/dakota.py create mode 100644 force_bdss/mco/dakota_bundle.py create mode 100644 force_bdss/mco/dakota_model.py create mode 100644 force_bdss/mco/dakota_optimizer.py create mode 100644 force_bdss/mco/i_multi_criteria_optimizer_bundle.py delete mode 100644 force_bdss/mco/i_multi_criteria_optimizers.py diff --git a/force_bdss/mco/base_multi_criteria_optimizer.py b/force_bdss/mco/base_multi_criteria_optimizer.py new file mode 100644 index 0000000..eb530d5 --- /dev/null +++ b/force_bdss/mco/base_multi_criteria_optimizer.py @@ -0,0 +1,16 @@ +import abc + + +class BaseMultiCriteriaOptimizer(metaclass=abc.ABCMeta): + def __init__(self, bundle, application, model): + self.bundle = bundle + self.application = application + self.model = model + + @property + def name(self): + return self.bundle.name + + @abc.abstractmethod + def run(self): + pass diff --git a/force_bdss/mco/basic.py b/force_bdss/mco/basic.py deleted file mode 100644 index 2e29c3b..0000000 --- a/force_bdss/mco/basic.py +++ /dev/null @@ -1,16 +0,0 @@ -import subprocess -import sys - -from traits.api import provides, HasStrictTraits, String - -from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer - - -@provides(IMultiCriteriaOptimizer) -class Basic(HasStrictTraits): - name = String("basic") - - def run(self, application): - print("Running Basic optimizer") - subprocess.check_call([sys.argv[0], "--evaluate", - application.workflow_filepath]) diff --git a/force_bdss/mco/basic_bundle.py b/force_bdss/mco/basic_bundle.py new file mode 100644 index 0000000..8613956 --- /dev/null +++ b/force_bdss/mco/basic_bundle.py @@ -0,0 +1,17 @@ +from traits.has_traits import HasStrictTraits, provides + +from .i_multi_criteria_optimizer_bundle import IMultiCriteriaOptimizerBundle +from .basic_model import BasicModel +from .basic_optimizer import BasicOptimizer + + +@provides(IMultiCriteriaOptimizerBundle) +class BasicBundle(HasStrictTraits): + def create_model(self, model_data): + return BasicModel.from_json(model_data) + + def create_ui(self): + pass + + def create_optimizer(self, application, model): + return BasicOptimizer(self, application, model) diff --git a/force_bdss/mco/basic_model.py b/force_bdss/mco/basic_model.py new file mode 100644 index 0000000..3139ad7 --- /dev/null +++ b/force_bdss/mco/basic_model.py @@ -0,0 +1,7 @@ +from traits.has_traits import HasStrictTraits + + +class BasicModel(HasStrictTraits): + @classmethod + def from_json(cls, model_data): + return cls() diff --git a/force_bdss/mco/basic_optimizer.py b/force_bdss/mco/basic_optimizer.py new file mode 100644 index 0000000..cc7477a --- /dev/null +++ b/force_bdss/mco/basic_optimizer.py @@ -0,0 +1,12 @@ +import subprocess +import sys + +from force_bdss.mco.base_multi_criteria_optimizer import \ + BaseMultiCriteriaOptimizer + + +class BasicOptimizer(BaseMultiCriteriaOptimizer): + def run(self): + print("Running Basic optimizer") + subprocess.check_call([sys.argv[0], "--evaluate", + self.application.workflow_filepath]) diff --git a/force_bdss/mco/dakota.py b/force_bdss/mco/dakota.py deleted file mode 100644 index b046b11..0000000 --- a/force_bdss/mco/dakota.py +++ /dev/null @@ -1,17 +0,0 @@ -import subprocess - -import sys - -from traits.api import provides, HasStrictTraits, String - -from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer - - -@provides(IMultiCriteriaOptimizer) -class Dakota(HasStrictTraits): - name = String("dakota") - - def run(self, application): - print("Running dakota optimizer") - subprocess.check_call([sys.argv[0], "--evaluate", - application.workflow_filepath]) diff --git a/force_bdss/mco/dakota_bundle.py b/force_bdss/mco/dakota_bundle.py new file mode 100644 index 0000000..a33c5ef --- /dev/null +++ b/force_bdss/mco/dakota_bundle.py @@ -0,0 +1,17 @@ +from traits.has_traits import HasStrictTraits, provides + +from force_bdss.mco.dakota_optimizer import DakotaOptimizer +from force_bdss.mco.dakota_model import DakotaModel +from .i_multi_criteria_optimizer_bundle import IMultiCriteriaOptimizerBundle + + +@provides(IMultiCriteriaOptimizerBundle) +class DakotaBundle(HasStrictTraits): + def create_model(self, model_data): + return DakotaModel.from_json(model_data) + + def create_ui(self): + pass + + def create_optimizer(self, application, model): + return DakotaOptimizer(self, application, model) diff --git a/force_bdss/mco/dakota_model.py b/force_bdss/mco/dakota_model.py new file mode 100644 index 0000000..76b572f --- /dev/null +++ b/force_bdss/mco/dakota_model.py @@ -0,0 +1,7 @@ +from traits.has_traits import HasStrictTraits + + +class DakotaModel(HasStrictTraits): + @classmethod + def from_json(cls, model_data): + return cls() diff --git a/force_bdss/mco/dakota_optimizer.py b/force_bdss/mco/dakota_optimizer.py new file mode 100644 index 0000000..dc80532 --- /dev/null +++ b/force_bdss/mco/dakota_optimizer.py @@ -0,0 +1,13 @@ +import subprocess + +import sys + +from force_bdss.mco.base_multi_criteria_optimizer import \ + BaseMultiCriteriaOptimizer + + +class DakotaOptimizer(BaseMultiCriteriaOptimizer): + def run(self): + print("Running dakota optimizer") + subprocess.check_call([sys.argv[0], "--evaluate", + self.application.workflow_filepath]) diff --git a/force_bdss/mco/i_multi_criteria_optimizer_bundle.py b/force_bdss/mco/i_multi_criteria_optimizer_bundle.py new file mode 100644 index 0000000..3a584c4 --- /dev/null +++ b/force_bdss/mco/i_multi_criteria_optimizer_bundle.py @@ -0,0 +1,14 @@ +from traits.api import Interface, String + + +class IMultiCriteriaOptimizerBundle(Interface): + name = String() + + def create_optimizer(self, application, model): + pass + + def create_ui(self): + pass + + def create_model(self, model_data): + pass diff --git a/force_bdss/mco/i_multi_criteria_optimizers.py b/force_bdss/mco/i_multi_criteria_optimizers.py deleted file mode 100644 index 93c6b25..0000000 --- a/force_bdss/mco/i_multi_criteria_optimizers.py +++ /dev/null @@ -1,8 +0,0 @@ -from traits.api import Interface, String - - -class IMultiCriteriaOptimizer(Interface): - name = String() - - def run(self, application): - pass diff --git a/force_bdss/mco/multi_criteria_optimizers_plugin.py b/force_bdss/mco/multi_criteria_optimizers_plugin.py index 79e3f30..55095a2 100644 --- a/force_bdss/mco/multi_criteria_optimizers_plugin.py +++ b/force_bdss/mco/multi_criteria_optimizers_plugin.py @@ -1,18 +1,19 @@ from envisage.plugin import Plugin from traits.api import List -from force_bdss.mco.basic import Basic -from force_bdss.mco.dakota import Dakota -from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer +from .i_multi_criteria_optimizer_bundle import ( + IMultiCriteriaOptimizerBundle) +from .dakota_bundle import DakotaBundle +from .basic_bundle import BasicBundle class MultiCriteriaOptimizersPlugin(Plugin): - id = "force_bdss.multi_criteria_optimizers_plugin" + id = "force.bdss.mco.plugins.multi_criteria_optimizers_plugin" multi_criteria_optimizers = List( - IMultiCriteriaOptimizer, - contributes_to='force_bdss.multi_criteria_optimizers' + IMultiCriteriaOptimizerBundle, + contributes_to='force.bdss.mco.bundles' ) def _multi_criteria_optimizers_default(self): - return [Basic(), Dakota()] + return [BasicBundle(), DakotaBundle()] -- GitLab