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

Moved additional plugins to the dummy core plugin.

parent eb21f149
No related branches found
No related tags found
1 merge request!47Aggregate old plugins under the "dummy" core plugin
Showing
with 6 additions and 166 deletions
from traits.api import String
from force_bdss.api import bundle_id, BaseDataSourceBundle
from .csv_extractor_model import CSVExtractorModel
from .csv_extractor_data_source import CSVExtractorDataSource
class CSVExtractorBundle(BaseDataSourceBundle):
id = String(bundle_id("enthought", "csv_extractor"))
name = String("CSV Extractor")
def create_model(self, model_data=None):
if model_data is None:
model_data = {}
return CSVExtractorModel(self, **model_data)
def create_data_source(self, application, model):
return CSVExtractorDataSource(self, application, model)
import csv
import numpy
from force_bdss.api import BaseDataSource
from force_bdss.api import DataSourceResult
class CSVExtractorDataSource(BaseDataSource):
def run(self, parameters):
with open(self.model.filename) as csvfile:
reader = csv.reader(csvfile)
for rowindex, row in enumerate(reader):
if rowindex < self.model.row:
continue
if rowindex == self.model.row:
return DataSourceResult(
originator=self,
value_types=[self.model.cuba_type],
values=numpy.array(
parameters.values[0]+float(
row[self.model.column])).reshape(1, 1)
)
return None
return None
from traits.api import Int, String
from force_bdss.api import BaseDataSourceModel
class CSVExtractorModel(BaseDataSourceModel):
filename = String()
row = Int()
column = Int()
cuba_type = String()
from force_bdss.api import BaseExtensionPlugin
from .csv_extractor.csv_extractor_bundle import CSVExtractorBundle
class CSVExtractorPlugin(BaseExtensionPlugin):
def _data_source_bundles_default(self):
return [CSVExtractorBundle()]
from force_bdss.api import BaseExtensionPlugin
from .csv_extractor.csv_extractor_bundle import CSVExtractorBundle
from .kpi_adder.kpi_adder_bundle import KPIAdderBundle
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 (
......@@ -8,10 +10,12 @@ from .dummy_kpi_calculator.dummy_kpi_calculator_bundle import (
class DummyPlugin(BaseExtensionPlugin):
def _data_source_bundles_default(self):
return [DummyDataSourceBundle()]
return [DummyDataSourceBundle(),
CSVExtractorBundle()]
def _mco_bundles_default(self):
return [DummyDakotaBundle()]
def _kpi_calculator_bundles_default(self):
return [DummyKPICalculatorBundle()]
return [DummyKPICalculatorBundle(),
KPIAdderBundle()]
from force_bdss.api import BaseExtensionPlugin
from .kpi_adder.kpi_adder_bundle import KPIAdderBundle
class DummyKPICalculatorPlugin(BaseExtensionPlugin):
def _kpi_calculator_bundles_default(self):
return [KPIAdderBundle()]
from traits.api import String
from force_bdss.api import bundle_id, BaseMultiCriteriaOptimizerBundle
from .dakota_communicator import DakotaCommunicator
from .dakota_model import DakotaModel
from .dakota_optimizer import DakotaOptimizer
class DakotaBundle(BaseMultiCriteriaOptimizerBundle):
id = String(bundle_id("enthought", "dakota"))
name = "Dakota"
def create_model(self, model_data=None):
if model_data is None:
model_data = {}
return DakotaModel(self, **model_data)
def create_optimizer(self, application, model):
return DakotaOptimizer(self, application, model)
def create_communicator(self, application, model):
return DakotaCommunicator(self, application, model)
import sys
import numpy
from force_bdss.api import DataSourceParameters, BaseMCOCommunicator
class DakotaCommunicator(BaseMCOCommunicator):
def receive_from_mco(self):
data = sys.stdin.read()
values = list(map(float, data.split()))
parameters = self.model.parameters
if len(values) != len(parameters):
raise ValueError(
"The passed information length is {}, "
"but the model specifies {} values.".format(
len(values), len(parameters)
))
value_types = [p.value_type for p in parameters]
value_names = [p.value_name for p in parameters]
return DataSourceParameters(
value_names=value_names,
value_types=value_types,
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 traits.api import List, String
from force_bdss.api import BaseMCOModel
class DakotaModel(BaseMCOModel):
value_types = List(String)
import subprocess
import sys
from force_bdss.api import BaseMultiCriteriaOptimizer
class DakotaOptimizer(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 BaseExtensionPlugin
from .dakota.dakota_bundle import DakotaBundle
class MultiCriteriaOptimizersPlugin(BaseExtensionPlugin):
def _mco_bundles_default(self):
return [DakotaBundle()]
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