From 2493cfe26c6a3f43ab2a4bc0e80c8d677237c65d Mon Sep 17 00:00:00 2001 From: Stefano Borini <sborini@enthought.com> Date: Mon, 17 Jul 2017 13:09:53 +0100 Subject: [PATCH] Introduced result object and readapted interface for it. --- force_bdss/core_mco_driver.py | 3 ++- .../csv_extractor/csv_extractor_data_source.py | 10 +++++++--- force_bdss/data_sources/data_source_result.py | 9 ++++----- requirements/requirements.txt | 1 + setup.py | 3 ++- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/force_bdss/core_mco_driver.py b/force_bdss/core_mco_driver.py index a7775b5..20a50ce 100644 --- a/force_bdss/core_mco_driver.py +++ b/force_bdss/core_mco_driver.py @@ -35,6 +35,7 @@ class CoreMCODriver(Plugin): def application_started(self): workflow = self.application.workflow if self.application.evaluate: + ds_results = [] for requested_ds in workflow.data_sources: ds_bundle = self._find_data_source_bundle_by_name( requested_ds.name) @@ -42,7 +43,7 @@ class CoreMCODriver(Plugin): ds_model = ds_bundle.create_model(requested_ds.model_data) data_source = ds_bundle.create_data_source( self.application, ds_model) - print(data_source.run()) + ds_results.append(data_source.run()) else: raise Exception("Requested data source {} but don't know " "to find it.".format(requested_ds.name)) diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_data_source.py b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_data_source.py index f01f355..93f8783 100644 --- a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_data_source.py +++ b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_data_source.py @@ -1,5 +1,7 @@ import csv +import numpy from force_bdss.data_sources.base_data_source import BaseDataSource +from force_bdss.data_sources.data_source_result import DataSourceResult class CSVExtractorDataSource(BaseDataSource): @@ -11,9 +13,11 @@ class CSVExtractorDataSource(BaseDataSource): continue if rowindex == self.model.row: - return { - self.model.cuba_type: row[self.model.column] - } + return DataSourceResult( + originator=self, + value_types = [self.model.cuba_type], + values=numpy.array(row[self.model.column]).reshape(1,1) + ) return None return None diff --git a/force_bdss/data_sources/data_source_result.py b/force_bdss/data_sources/data_source_result.py index 15d3986..29b063e 100644 --- a/force_bdss/data_sources/data_source_result.py +++ b/force_bdss/data_sources/data_source_result.py @@ -1,4 +1,4 @@ -from traits.api import HasTraits, Array, List, String, Instance +from traits.api import HasTraits, Array, ArrayOrNone, List, String, Instance from .base_data_source import BaseDataSource @@ -12,9 +12,8 @@ class DataSourceResult(HasTraits): quality is the level of accuracy of the (e.g.c omputational) method, as the importance and reliability of that value. It should be an enumeration value such as HIGH, MEDIUM, POOR""" - originator = Instance(BaseDataSource) value_types = List(String) - results = Array(shape=(None, None)) - accuracy = Array(shape=(None, None)) - quality = Array(shape=(None, None)) + values = Array(shape=(None, None)) + accuracy = ArrayOrNone(shape=(None, None)) + quality = ArrayOrNone(shape=(None, None)) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index cfc2705..c332850 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -2,3 +2,4 @@ envisage==4.6.0 click==6.7 six==1.10.0 stevedore==1.24.0 +numpy=1.12.0 diff --git a/setup.py b/setup.py index 3666512..ee92923 100644 --- a/setup.py +++ b/setup.py @@ -21,6 +21,7 @@ setup( "envisage >= 4.6.0", "click >= 6.7", "stevedore >= 1.24.0", - "six >= 1.10.0" + "six >= 1.10.0", + "numpy >= 1.12.0", ] ) -- GitLab