diff --git a/examples/test_workflow.json b/examples/test_workflow.json index 1bbd3661e3c989d1f278022b08b73b7c639b0c41..f0fa936ec307ee749bef6b3e85bb4bdc05303f4e 100644 --- a/examples/test_workflow.json +++ b/examples/test_workflow.json @@ -2,7 +2,7 @@ "multi_criteria_optimization": { "name": "basic" }, - "key_performance_indicators": [ + "data_sources": [ "viscosity", "price" ] } diff --git a/force_bdss/cli/force_bdss.py b/force_bdss/cli/force_bdss.py index 37541e66f1d1132406392ab73c66da41d0779870..79a792030b580e77cfdf12d01946fe78908bd678 100644 --- a/force_bdss/cli/force_bdss.py +++ b/force_bdss/cli/force_bdss.py @@ -3,8 +3,8 @@ from envisage.core_plugin import CorePlugin from force_bdss.bdss_application import BDSSApplication from force_bdss.core_mco_driver import CoreMCODriver -from force_bdss.kpi.key_performance_calculators_plugin import \ - KeyPerformanceCalculatorsPlugin +from force_bdss.data_sources.data_sources_plugin import \ + DataSourcesPlugin from force_bdss.mco.multi_criteria_optimizers_plugin import \ MultiCriteriaOptimizersPlugin @@ -17,7 +17,7 @@ def run(evaluate, workflow_filepath): plugins = [ CorePlugin(), CoreMCODriver(), - KeyPerformanceCalculatorsPlugin(), + DataSourcesPlugin(), MultiCriteriaOptimizersPlugin(), ] diff --git a/force_bdss/core_mco_driver.py b/force_bdss/core_mco_driver.py index a0409df1f556745814ce739d2a7c8d1c1d0307c7..6bd610e7645c4454819c7d88e63a51273b3c550c 100644 --- a/force_bdss/core_mco_driver.py +++ b/force_bdss/core_mco_driver.py @@ -3,8 +3,8 @@ from envisage.plugin import Plugin from traits.has_traits import on_trait_change from traits.trait_types import List -from force_bdss.kpi.i_key_performance_calculator import ( - IKeyPerformanceCalculator) +from force_bdss.data_sources.i_data_source import ( + IDataSource) from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer @@ -26,21 +26,21 @@ class CoreMCODriver(Plugin): #: A list of the available Key Performance Indicator calculators. #: It will be populated by plugins. - key_performance_calculators = ExtensionPoint( - List(IKeyPerformanceCalculator), - id='force_bdss.key_performance_calculators') + data_sources = ExtensionPoint( + List(IDataSource), + id='force_bdss.data_sources') @on_trait_change("application:started") def application_started(self): workflow = self.application.workflow if self.application.evaluate: - for kpi in workflow.key_performance_indicators: - kpc = self._find_kpc_by_computes(kpi) - if kpc: - kpc.run(self.application) + for requested_ds in workflow.data_sources: + data_source = self._find_data_source_by_computes(requested_ds) + if data_source: + data_source.run(self.application) else: - raise Exception("Requested KPI {} but don't know how" - "to compute it.".format(kpi)) + raise Exception("Requested sata source {} but don't know " + "to find it.".format(requested_ds)) else: mco_name = workflow.multi_criteria_optimization.name mco = self._find_mco_by_name(mco_name) @@ -50,10 +50,10 @@ class CoreMCODriver(Plugin): raise Exception("Requested MCO {} but it's not available" "to compute it.".format(mco_name)) - def _find_kpc_by_computes(self, computes): - for kpc in self.key_performance_calculators: - if kpc.computes == computes: - return kpc + def _find_data_source_by_computes(self, computes): + for ds in self.data_sources: + if ds.computes == computes: + return ds return None diff --git a/force_bdss/kpi/__init__.py b/force_bdss/data_sources/__init__.py similarity index 100% rename from force_bdss/kpi/__init__.py rename to force_bdss/data_sources/__init__.py diff --git a/force_bdss/kpi/basic.py b/force_bdss/data_sources/basic.py similarity index 64% rename from force_bdss/kpi/basic.py rename to force_bdss/data_sources/basic.py index 4e0d021a3f10030fed5748ef11a1c8013149a158..5fe2f3cee8737ca51c38c2e2653b7219464237a9 100644 --- a/force_bdss/kpi/basic.py +++ b/force_bdss/data_sources/basic.py @@ -1,10 +1,10 @@ from traits.api import provides, HasStrictTraits, String -from force_bdss.kpi.i_key_performance_calculator import ( - IKeyPerformanceCalculator) +from force_bdss.data_sources.i_data_source import ( + IDataSource) -@provides(IKeyPerformanceCalculator) +@provides(IDataSource) class Basic(HasStrictTraits): computes = String("basic") diff --git a/force_bdss/data_sources/data_sources_plugin.py b/force_bdss/data_sources/data_sources_plugin.py new file mode 100644 index 0000000000000000000000000000000000000000..2bd94d88418648f6dbb36eef508bd6b48da07e7a --- /dev/null +++ b/force_bdss/data_sources/data_sources_plugin.py @@ -0,0 +1,22 @@ +from envisage.plugin import Plugin +from traits.api import List + +from force_bdss.data_sources.i_data_source import ( + IDataSource) + +from force_bdss.data_sources.basic import Basic +from force_bdss.data_sources.price import Price +from force_bdss.data_sources.viscosity import Viscosity + + +class DataSourcesPlugin(Plugin): + + id = "force_bdss.data_sources_plugin" + + data_sources = List( + IDataSource, + contributes_to='force_bdss.data_sources' + ) + + def _data_sources_default(self): + return [Basic(), Viscosity(), Price()] diff --git a/force_bdss/kpi/i_key_performance_calculator.py b/force_bdss/data_sources/i_data_source.py similarity index 69% rename from force_bdss/kpi/i_key_performance_calculator.py rename to force_bdss/data_sources/i_data_source.py index 56b7205c466180837c4ad7b80a89393fc8f2cdb0..e86f0c76a5587585322312b0ec6df4246e224f6a 100644 --- a/force_bdss/kpi/i_key_performance_calculator.py +++ b/force_bdss/data_sources/i_data_source.py @@ -1,7 +1,7 @@ from traits.api import Interface, String -class IKeyPerformanceCalculator(Interface): +class IDataSource(Interface): computes = String() def run(self): diff --git a/force_bdss/kpi/price.py b/force_bdss/data_sources/price.py similarity index 59% rename from force_bdss/kpi/price.py rename to force_bdss/data_sources/price.py index 79112547824c97c0eb08954c26feddb13fccd5ea..30fbaf78418fa5dfecf721f0714c572a1fcd1faa 100644 --- a/force_bdss/kpi/price.py +++ b/force_bdss/data_sources/price.py @@ -1,10 +1,10 @@ from traits.api import provides, HasStrictTraits, String -from force_bdss.kpi.i_key_performance_calculator import ( - IKeyPerformanceCalculator) +from force_bdss.data_sources.i_data_source import ( + IDataSource) -@provides(IKeyPerformanceCalculator) +@provides(IDataSource) class Price(HasStrictTraits): computes = String("price") diff --git a/force_bdss/kpi/viscosity.py b/force_bdss/data_sources/viscosity.py similarity index 60% rename from force_bdss/kpi/viscosity.py rename to force_bdss/data_sources/viscosity.py index d8c3f3eac9214211903a6746b5a7884aa489ff54..1c207f438268f1db67d29fe16602be7998040611 100644 --- a/force_bdss/kpi/viscosity.py +++ b/force_bdss/data_sources/viscosity.py @@ -1,10 +1,10 @@ from traits.api import provides, HasStrictTraits, String -from force_bdss.kpi.i_key_performance_calculator import ( - IKeyPerformanceCalculator) +from force_bdss.data_sources.i_data_source import ( + IDataSource) -@provides(IKeyPerformanceCalculator) +@provides(IDataSource) class Viscosity(HasStrictTraits): computes = String("viscosity") diff --git a/force_bdss/kpi/key_performance_calculators_plugin.py b/force_bdss/kpi/key_performance_calculators_plugin.py deleted file mode 100644 index 3a646d36d129d29cee7fbf3c7f403a844a4f4818..0000000000000000000000000000000000000000 --- a/force_bdss/kpi/key_performance_calculators_plugin.py +++ /dev/null @@ -1,22 +0,0 @@ -from envisage.plugin import Plugin -from traits.api import List - -from force_bdss.kpi.i_key_performance_calculator import ( - IKeyPerformanceCalculator) - -from force_bdss.kpi.basic import Basic -from force_bdss.kpi.price import Price -from force_bdss.kpi.viscosity import Viscosity - - -class KeyPerformanceCalculatorsPlugin(Plugin): - - id = "force_bdss.key_performance_calculators_plugin" - - key_performance_calculators = List( - IKeyPerformanceCalculator, - contributes_to='force_bdss.key_performance_calculators' - ) - - def _key_performance_calculators_default(self): - return [Basic(), Viscosity(), Price()] diff --git a/force_bdss/mco/i_multi_criteria_optimizers.py b/force_bdss/mco/i_multi_criteria_optimizers.py index 93c6b25dca4f73afc08caa0d348c59b9a2e195eb..9bb929a67f1d9b3e429b80dc8727f5cb2a4b3df5 100644 --- a/force_bdss/mco/i_multi_criteria_optimizers.py +++ b/force_bdss/mco/i_multi_criteria_optimizers.py @@ -1,4 +1,4 @@ -from traits.api import Interface, String +from traits.api import Interface, String, Instance class IMultiCriteriaOptimizer(Interface): diff --git a/force_bdss/workspecs/workflow.py b/force_bdss/workspecs/workflow.py index 934c7781d36daf2c80d3f680f1616573223b9c3e..871e9b7d1acab73292e017903a632d3d174cfb2f 100644 --- a/force_bdss/workspecs/workflow.py +++ b/force_bdss/workspecs/workflow.py @@ -6,7 +6,7 @@ from .multi_criteria_optimization import MultiCriteriaOptimization class Workflow(HasStrictTraits): name = String() multi_criteria_optimization = Instance(MultiCriteriaOptimization) - key_performance_indicators = List(String) + data_sources = List(String) @classmethod def from_json(cls, json_data): @@ -14,7 +14,7 @@ class Workflow(HasStrictTraits): multi_criteria_optimization=MultiCriteriaOptimization.from_json( json_data["multi_criteria_optimization"] ), - key_performance_indicators=json_data["key_performance_indicators"] + data_sources=json_data["data_sources"] ) return self