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

Added Dummy Plugin with all dummy "passthrough" DS and KPIC

parent 8742272c
No related branches found
No related tags found
1 merge request!43Added Dummy Plugin with all dummy "passthrough" DS and KPIC
Showing
with 154 additions and 2 deletions
from traits.api import String
from force_bdss.api import bundle_id, BaseMultiCriteriaOptimizerBundle
from .dakota_communicator import DummyDakotaCommunicator
from .dakota_model import DummyDakotaModel
from .dakota_optimizer import DummyDakotaOptimizer
class DummyDakotaBundle(BaseMultiCriteriaOptimizerBundle):
id = String(bundle_id("enthought", "dummy_dakota"))
name = "Dummy Dakota"
def create_model(self, model_data=None):
if model_data is None:
model_data = {}
return DummyDakotaModel(self, **model_data)
def create_optimizer(self, application, model):
return DummyDakotaOptimizer(self, application, model)
def create_communicator(self, application, model):
return DummyDakotaCommunicator(self, application, model)
import sys
import numpy
from force_bdss.api import DataSourceParameters, BaseMCOCommunicator
class DummyDakotaCommunicator(BaseMCOCommunicator):
def receive_from_mco(self):
data = sys.stdin.read()
values = list(map(float, data.split()))
return DataSourceParameters(
value_types=["DUMMY"]*len(values),
values=numpy.array(values)
)
def send_to_mco(self, kpi_results):
data = " ".join(
[" ".join(list(map(str, r.values.tolist()))) for r in kpi_results]
)
sys.stdout.write(data)
from force_bdss.api import BaseMCOModel
class DummyDakotaModel(BaseMCOModel):
pass
import subprocess
import sys
from force_bdss.api import BaseMultiCriteriaOptimizer
class DummyDakotaOptimizer(BaseMultiCriteriaOptimizer):
def run(self):
print("Running dakota optimizer")
for initial_value in range(10):
ps = subprocess.Popen(
[sys.argv[0],
"--evaluate",
self.application.workflow_filepath],
stdout=subprocess.PIPE,
stdin=subprocess.PIPE)
out = ps.communicate("{}".format(initial_value).encode("utf-8"))
print("{}: {}".format(initial_value, out[0].decode("utf-8")))
from force_bdss.api import BaseDataSource, DataSourceResult
class DummyDataSource(BaseDataSource):
def run(self, parameters):
print(parameters)
return DataSourceResult(
originator=self,
value_types=parameters.value_types,
values=parameters.values.reshape(
parameters.values.shape + (1,)))
from force_bdss.api import BaseDataSourceBundle, bundle_id
from .dummy_data_source_model import DummyDataSourceModel
from .dummy_data_source import DummyDataSource
class DummyDataSourceBundle(BaseDataSourceBundle):
id = bundle_id("enthought", "dummy_data_source")
def create_model(self, model_data=None):
if model_data is None:
model_data = {}
return DummyDataSourceModel(self, **model_data)
def create_data_source(self, application, model):
return DummyDataSource(self, application, model)
from force_bdss.api import BaseDataSourceModel
class DummyDataSourceModel(BaseDataSourceModel):
pass
from force_bdss.api import BaseKPICalculator, KPICalculatorResult, bundle_id
class DummyKPICalculator(BaseKPICalculator):
id = bundle_id("enthought", "dummy_kpi_calculator")
def run(self, data_source_results):
return KPICalculatorResult(
originator=self,
value_types=data_source_results[0].value_types,
values=data_source_results[0].values.reshape(
data_source_results[0].values.shape[:-1]))
from traits.api import String
from force_bdss.api import bundle_id, BaseKPICalculatorBundle
from .dummy_kpi_calculator import DummyKPICalculator
from .dummy_kpi_calculator_model import DummyKPICalculatorModel
class DummyKPICalculatorBundle(BaseKPICalculatorBundle):
id = String(bundle_id("enthought", "dummy_kpi_calculator"))
name = String("Dummy KPI")
def create_model(self, model_data=None):
if model_data is None:
model_data = {}
return DummyKPICalculatorModel(self, **model_data)
def create_kpi_calculator(self, application, model):
return DummyKPICalculator(self, application, model)
from force_bdss.api import BaseKPICalculatorModel
class DummyKPICalculatorModel(BaseKPICalculatorModel):
pass
from force_bdss.api import BaseExtensionPlugin
from .dummy_dakota.dakota_bundle import DummyDakotaBundle
from .dummy_data_source.dummy_data_source_bundle import DummyDataSourceBundle
from .dummy_kpi_calculator.dummy_kpi_calculator_bundle import (
DummyKPICalculatorBundle
)
class DummyPlugin(BaseExtensionPlugin):
def _data_source_bundles_default(self):
return [DummyDataSourceBundle()]
def _mco_bundles_default(self):
return [DummyDakotaBundle()]
def _kpi_calculator_bundles_default(self):
return [DummyKPICalculatorBundle()]
......@@ -14,8 +14,7 @@ setup(
"multi_criteria_optimizers_plugin:MultiCriteriaOptimizersPlugin",
"csv_extractor = force_bdss.core_plugins.csv_extractor"
".csv_extractor_plugin:CSVExtractorPlugin",
"kpi_adder = force_bdss.core_plugins.dummy_kpi"
".dummy_kpi_calculator_plugin:DummyKPICalculatorPlugin",
"dummy = force_bdss.core_plugins.dummy.dummy_plugin:DummyPlugin",
]
},
packages=find_packages(),
......
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