Skip to content
Snippets Groups Projects
Commit a5ebe7a7 authored by Stefano Borini's avatar Stefano Borini
Browse files

Finalized the few bugs and typos

parent fcc1f7f8
No related branches found
No related tags found
1 merge request!5Introducing bundles
{
"multi_criteria_optimization": {
"name": "basic"
"multi_criteria_optimizer": {
"name": "basic",
"model_data": {}
},
"data_sources": [
{
"name": "viscosity",
"model_data": {}
},
"data_sources": [
"viscosity", "price"
]
{
"name": "price",
"model_data": {}
}
]
}
......@@ -36,34 +36,36 @@ class CoreMCODriver(Plugin):
workflow = self.application.workflow
if self.application.evaluate:
for requested_ds in workflow.data_sources:
ds_bundle = self._find_data_source_bundle_by_name(requested_ds)
ds_bundle = self._find_data_source_bundle_by_name(
requested_ds.name)
if ds_bundle:
ds_model = ds_bundle.create_model(requested_ds.model_data)
data_source = ds_bundle.create_data_source(self, ds_model)
data_source = ds_bundle.create_data_source(
self.application, ds_model)
data_source.run()
else:
raise Exception("Requested data source {} but don't know "
"to find it.".format(requested_ds))
"to find it.".format(requested_ds.name))
else:
mco_data = workflow.multi_criteria_optimizer
mco_bundle = self._find_mco_bundle_by_name(mco_data.name)
if mco_bundle:
mco_model = mco_bundle.create_model(mco_data.model_data)
mco = mco_bundle.create_optimizer(self, mco_model)
mco = mco_bundle.create_optimizer(self.application, mco_model)
mco.run()
else:
raise Exception("Requested MCO {} but it's not available"
"to compute it.".format(mco_data.name))
def _find_data_source_by_name(self, name):
for ds in self.data_sources:
def _find_data_source_bundle_by_name(self, name):
for ds in self.data_source_bundles:
if ds.name == name:
return ds
return None
def _find_mco_by_name(self, name):
for mco in self.multi_criteria_optimizers:
def _find_mco_bundle_by_name(self, name):
for mco in self.mco_bundles:
if mco.name == name:
return mco
......
from traits.api import provides, HasStrictTraits
from traits.api import provides, HasStrictTraits, String
from force_bdss.data_sources.basic_data_source import BasicDataSource
from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
......@@ -7,6 +7,8 @@ from force_bdss.mco.basic_model import BasicModel
@provides(IDataSourceBundle)
class BasicBundle(HasStrictTraits):
name = String("basic")
def create_model(self, model_data):
return BasicModel.from_json(model_data)
......
from traits.api import provides, HasStrictTraits
from traits.trait_types import String
from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
from force_bdss.data_sources.price_data_source import PriceDataSource
......@@ -7,6 +8,8 @@ from force_bdss.data_sources.price_model import PriceModel
@provides(IDataSourceBundle)
class PriceBundle(HasStrictTraits):
name = String("price")
def create_model(self, model_data):
return PriceModel.from_json(model_data)
......
from traits.api import provides, HasStrictTraits
from traits.trait_types import String
from force_bdss.data_sources.viscosity_model import ViscosityModel
from .i_data_source_bundle import IDataSourceBundle
......@@ -7,6 +8,8 @@ from .viscosity_data_source import ViscosityDataSource
@provides(IDataSourceBundle)
class ViscosityBundle(HasStrictTraits):
name = String("viscosity")
def create_model(self, model_data):
return ViscosityModel.from_json(model_data)
......
from traits.has_traits import HasStrictTraits, provides
from traits.trait_types import String
from .i_multi_criteria_optimizer_bundle import IMultiCriteriaOptimizerBundle
from .basic_model import BasicModel
......@@ -7,6 +8,8 @@ from .basic_optimizer import BasicOptimizer
@provides(IMultiCriteriaOptimizerBundle)
class BasicBundle(HasStrictTraits):
name = String("basic")
def create_model(self, model_data):
return BasicModel.from_json(model_data)
......
from traits.has_traits import HasStrictTraits, provides
from traits.trait_types import String
from force_bdss.mco.dakota_optimizer import DakotaOptimizer
from force_bdss.mco.dakota_model import DakotaModel
......@@ -7,6 +8,8 @@ from .i_multi_criteria_optimizer_bundle import IMultiCriteriaOptimizerBundle
@provides(IMultiCriteriaOptimizerBundle)
class DakotaBundle(HasStrictTraits):
name = String("dakota")
def create_model(self, model_data):
return DakotaModel.from_json(model_data)
......
from traits.has_traits import HasStrictTraits
from traits.trait_types import String, Dict
class DataSource(HasStrictTraits):
name = String()
model_data = Dict()
@classmethod
def from_json(cls, json_data):
self = cls(
name=json_data["name"],
model_data=json_data["model_data"]
)
return self
from traits.api import HasStrictTraits, String
from traits.api import HasStrictTraits, String, Dict
class MultiCriteriaOptimization(HasStrictTraits):
class MultiCriteriaOptimizer(HasStrictTraits):
name = String()
model_data = Dict()
@classmethod
def from_json(cls, json_data):
self = cls(
name=json_data["name"]
name=json_data["name"],
model_data=json_data["model_data"]
)
return self
from traits.api import HasStrictTraits, Instance, String, List
from .multi_criteria_optimization import MultiCriteriaOptimization
from force_bdss.workspecs.data_source import DataSource
from .multi_criteria_optimizer import MultiCriteriaOptimizer
class Workflow(HasStrictTraits):
name = String()
multi_criteria_optimization = Instance(MultiCriteriaOptimization)
data_sources = List(String)
multi_criteria_optimizer = Instance(MultiCriteriaOptimizer)
data_sources = List(DataSource)
@classmethod
def from_json(cls, json_data):
self = cls(
multi_criteria_optimization=MultiCriteriaOptimization.from_json(
json_data["multi_criteria_optimization"]
multi_criteria_optimizer=MultiCriteriaOptimizer.from_json(
json_data["multi_criteria_optimizer"]
),
data_sources=json_data["data_sources"]
data_sources=[
DataSource.from_json(data_source_data)
for data_source_data in json_data["data_sources"]]
)
return self
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment