diff --git a/tods/common/TODSBasePrimitives.py b/tods/common/TODSBasePrimitives.py index 05db69d..cf84432 100644 --- a/tods/common/TODSBasePrimitives.py +++ b/tods/common/TODSBasePrimitives.py @@ -13,7 +13,7 @@ from d3m import utils __all__ = ('TODSTransformerPrimitiveBase',) -class TODSTransformerPrimitiveBase(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]): +class TODSTransformerPrimitiveBase(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]): # pragma: no cover """ A base class for primitives which are not fitted at all and can simply produce (useful) outputs from inputs directly. As such they @@ -76,7 +76,7 @@ class TODSTransformerPrimitiveBase(transformer.TransformerPrimitiveBase[Inputs, data.iloc[i][col_name] = out.value return data -class TODSUnsupervisedLearnerPrimitiveBase(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, Hyperparams]): +class TODSUnsupervisedLearnerPrimitiveBase(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, Hyperparams]):# pragma: no cover def __init__(self, *, hyperparams: Hyperparams, random_seed: int=0, diff --git a/tods/data_processing/utils.py b/tods/data_processing/utils.py index d45dbf0..a7d1e48 100644 --- a/tods/data_processing/utils.py +++ b/tods/data_processing/utils.py @@ -174,14 +174,14 @@ def cut_dataset(dataset: container.Dataset, row_indices_to_keep: typing.Mapping[ return dataset.select_rows(row_indices_to_keep) -def parse_datetime(value: str, *, fuzzy: bool = True) -> typing.Optional[datetime.datetime]: +def parse_datetime(value: str, *, fuzzy: bool = True) -> typing.Optional[datetime.datetime]: # pragma: no cover try: return dateutil.parser.parse(value, default=DEFAULT_DATETIME, fuzzy=fuzzy) except (ValueError, OverflowError, TypeError): return None -def parse_datetime_to_float(value: str, *, fuzzy: bool = True) -> float: +def parse_datetime_to_float(value: str, *, fuzzy: bool = True) -> float: # pragma: no cover try: parsed = parse_datetime(value, fuzzy=fuzzy) if parsed is None: diff --git a/tods/detection_algorithm/Ensemble.py b/tods/detection_algorithm/Ensemble.py index 09ccbb3..fe7df28 100644 --- a/tods/detection_algorithm/Ensemble.py +++ b/tods/detection_algorithm/Ensemble.py @@ -134,7 +134,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params 'id': str(uuid.uuid3(uuid.NAMESPACE_DNS, 'EnsemblePrimitive')), }) - def __init__(self, *, + def __init__(self, *, # pragma: no cover hyperparams: Hyperparams, random_seed: int = 0, docker_containers: Dict[str, DockerContainer] = None) -> None: @@ -158,11 +158,11 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params self._fitted = False - def set_training_data(self, *, inputs: Inputs) -> None: + def set_training_data(self, *, inputs: Inputs) -> None: # pragma: no cover self._inputs = inputs self._fitted = False - def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: + def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: # pragma: no cover if self._fitted: return CallResult(None) @@ -181,7 +181,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params self.logger.warn("No input columns were selected") return CallResult(None) - def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: + def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: # pragma: no cover outputs = inputs outputs.columns = ['timestamp','value','system_id','scores'] @@ -197,7 +197,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params # # print('mean_score') # outputs_mean = outputs.groupby('system_id')[outputs.columns[3]].mean() -# print(outputs_mean) +# print(outputs_mean) outputs['results'] = numpy.where(outputs['scores']>0.05, 1, 0) print(outputs) @@ -207,7 +207,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params print(outputs_xy) outputs_sum_x = outputs.groupby(['timestamp','system_id'])['results'].sum() -# outputs_sum_x = outputs.groupby(['system_id','timestamp']).size().reset_index().groupby(['timestamp'])['results'].sum() +# outputs_sum_x = outputs.groupby(['system_id','timestamp']).size().reset_index().groupby(['timestamp'])['results'].sum() outputs_sum_y = outputs.groupby(['system_id','value'])['results'].sum() @@ -218,10 +218,10 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params return base.CallResult(outputs) - def _update_metadata(self, outputs): + def _update_metadata(self, outputs): # pragma: no cover outputs.metadata = outputs.metadata.generate(outputs,) - def get_params(self) -> Params: + def get_params(self) -> Params: # pragma: no cover if not self._fitted: return Params( input_column_names=self._input_column_names, @@ -239,7 +239,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params target_columns_metadata_=self._target_columns_metadata ) - def set_params(self, *, params: Params) -> None: + def set_params(self, *, params: Params) -> None: # pragma: no cover self._input_column_names = params['input_column_names'] self._training_indices = params['training_indices_'] self._target_names = params['target_names_'] @@ -252,7 +252,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params @classmethod - def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): + def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover if not hyperparams['use_semantic_types']: return inputs, list(range(len(inputs.columns))) @@ -269,7 +269,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params # return columns_to_produce @classmethod - def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: + def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: # pragma: no cover column_metadata = inputs_metadata.query((metadata_base.ALL_ELEMENTS, column_index)) accepted_structural_types = (int, float, numpy.integer, numpy.float64) @@ -292,7 +292,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params @classmethod - def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: + def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] @@ -313,7 +313,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params return target_columns_metadata @classmethod - def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], + def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], # pragma: no cover target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: outputs_metadata = metadata_base.DataMetadata().generate(value=outputs) @@ -323,7 +323,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params return outputs_metadata - def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: + def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: # pragma: no cover outputs = d3m_dataframe(predictions, generate_metadata=True) target_columns_metadata = self._copy_inputs_metadata(inputs.metadata, self._training_indices, outputs.metadata, self.hyperparams) outputs.metadata = self._update_predictions_metadata(inputs.metadata, outputs, target_columns_metadata) @@ -331,7 +331,7 @@ class EnsemblePrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params @classmethod - def _copy_inputs_metadata(cls, inputs_metadata: metadata_base.DataMetadata, input_indices: List[int], + def _copy_inputs_metadata(cls, inputs_metadata: metadata_base.DataMetadata, input_indices: List[int], # pragma: no cover outputs_metadata: metadata_base.DataMetadata, hyperparams): outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] diff --git a/tods/detection_algorithm/SystemWiseDetection.py b/tods/detection_algorithm/SystemWiseDetection.py index 3a68a14..1aa07ac 100644 --- a/tods/detection_algorithm/SystemWiseDetection.py +++ b/tods/detection_algorithm/SystemWiseDetection.py @@ -29,13 +29,13 @@ __all__ = ('SystemWiseDetectionPrimitive',) Inputs = container.DataFrame Outputs = container.DataFrame -class Params(params.Params): +class Params(params.Params): # pragma: no cover #to-do : how to make params dynamic use_column_names: Optional[Any] -class Hyperparams(hyperparams.Hyperparams): +class Hyperparams(hyperparams.Hyperparams): # pragma: no cover #Tuning Parameter #default -1 considers entire time series is considered @@ -102,7 +102,7 @@ class Hyperparams(hyperparams.Hyperparams): -class SystemWiseDetectionPrimitive(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]): +class SystemWiseDetectionPrimitive(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]): # pragma: no cover """ Primitive to find abs_energy of time series """ diff --git a/tods/detection_algorithm/SystemWiseDetection_bkup.py b/tods/detection_algorithm/SystemWiseDetection_bkup.py index d675e2c..a30dbe5 100644 --- a/tods/detection_algorithm/SystemWiseDetection_bkup.py +++ b/tods/detection_algorithm/SystemWiseDetection_bkup.py @@ -29,13 +29,13 @@ __all__ = ('SystemWiseDetectionPrimitive',) Inputs = container.DataFrame Outputs = container.DataFrame -class Params(params.Params): +class Params(params.Params): # pragma: no cover #to-do : how to make params dynamic use_column_names: Optional[Any] -class Hyperparams(hyperparams.Hyperparams): +class Hyperparams(hyperparams.Hyperparams): # pragma: no cover #Tuning Parameter #default -1 considers entire time series is considered @@ -102,7 +102,7 @@ class Hyperparams(hyperparams.Hyperparams): -class SystemWiseDetectionPrimitive(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]): +class SystemWiseDetectionPrimitive(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]): # pragma: no cover """ Primitive to find abs_energy of time series """ diff --git a/tods/detection_algorithm/UODBasePrimitive.py b/tods/detection_algorithm/UODBasePrimitive.py index 6a7cd6c..89b1e23 100755 --- a/tods/detection_algorithm/UODBasePrimitive.py +++ b/tods/detection_algorithm/UODBasePrimitive.py @@ -341,7 +341,7 @@ class UnsupervisedOutlierDetectorBase(TODSUnsupervisedLearnerPrimitiveBase[Input return CallResult(outputs) - def _produce_score(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> CallResult[Outputs]: + def _produce_score(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> CallResult[Outputs]: # pragma: no cover """ Process the testing data. Args: @@ -402,7 +402,7 @@ class UnsupervisedOutlierDetectorBase(TODSUnsupervisedLearnerPrimitiveBase[Input return CallResult(outputs) - def get_params(self) -> Params_ODBase: + def get_params(self) -> Params_ODBase: # pragma: no cover """ Return parameters. Args: @@ -447,7 +447,7 @@ class UnsupervisedOutlierDetectorBase(TODSUnsupervisedLearnerPrimitiveBase[Input # pass - def set_params(self, *, params: Params_ODBase) -> None: + def set_params(self, *, params: Params_ODBase) -> None: # pragma: no cover """ Set parameters for outlier detection. Args: @@ -580,7 +580,7 @@ class UnsupervisedOutlierDetectorBase(TODSUnsupervisedLearnerPrimitiveBase[Input @classmethod - def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], + def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: # pragma: no cover """ Updata metadata for selected columns. @@ -737,10 +737,10 @@ class UnsupervisedOutlierDetectorBase2(UnsupervisedLearnerPrimitiveBase[Inputs, __author__ = "DATALAB @Taxes A&M University" metadata: metadata_base.PrimitiveMetadata = None - def __init__(self, *, + def __init__(self, *, hyperparams: Hyperparams, random_seed: int = 0, - docker_containers: Dict[str, DockerContainer] = None) -> None: + docker_containers: Dict[str, DockerContainer] = None) -> None: # pragma: no cover super().__init__(hyperparams=hyperparams, random_seed=random_seed, docker_containers=docker_containers) self._clf = None @@ -764,7 +764,7 @@ class UnsupervisedOutlierDetectorBase2(UnsupervisedLearnerPrimitiveBase[Inputs, self._fitted = False # @abc.abstractmethod - def set_training_data(self, *, inputs: Inputs) -> None: + def set_training_data(self, *, inputs: Inputs) -> None: # pragma: no cover """ Set training data for outlier detection. Args: @@ -776,7 +776,7 @@ class UnsupervisedOutlierDetectorBase2(UnsupervisedLearnerPrimitiveBase[Inputs, self._inputs = inputs self._fitted = False - def _set_subseq_inds(self): + def _set_subseq_inds(self): # pragma: no cover self.left_inds_ = getattr(self._clf, 'left_inds_', None) self.right_inds_ = getattr(self._clf, 'right_inds_', None) @@ -787,7 +787,7 @@ class UnsupervisedOutlierDetectorBase2(UnsupervisedLearnerPrimitiveBase[Inputs, self.right_inds_[self.right_inds_ > len(self._inputs)] = len(self._inputs) # print(self.left_inds_, self.right_inds_) - def _fit(self, *, timeout: float = None, iterations: int = None) -> CallResult[None]: + def _fit(self, *, timeout: float = None, iterations: int = None) -> CallResult[None]: # pragma: no cover """ Fit model with training data. Args: @@ -829,7 +829,7 @@ class UnsupervisedOutlierDetectorBase2(UnsupervisedLearnerPrimitiveBase[Inputs, return CallResult(None) - def _produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> CallResult[Outputs]: + def _produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> CallResult[Outputs]: # pragma: no cover """ Process the testing data. Args: @@ -894,7 +894,7 @@ class UnsupervisedOutlierDetectorBase2(UnsupervisedLearnerPrimitiveBase[Inputs, return CallResult(outputs) - def _produce_score(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> CallResult[Outputs]: + def _produce_score(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> CallResult[Outputs]: # pragma: no cover """ Process the testing data. Args: @@ -955,7 +955,7 @@ class UnsupervisedOutlierDetectorBase2(UnsupervisedLearnerPrimitiveBase[Inputs, return CallResult(outputs) - def get_params(self) -> Params_ODBase: + def get_params(self) -> Params_ODBase: # pragma: no cover """ Return parameters. Args: @@ -1000,7 +1000,7 @@ class UnsupervisedOutlierDetectorBase2(UnsupervisedLearnerPrimitiveBase[Inputs, # pass - def set_params(self, *, params: Params_ODBase) -> None: + def set_params(self, *, params: Params_ODBase) -> None: # pragma: no cover """ Set parameters for outlier detection. Args: diff --git a/tods/searcher/brute_force_search.py b/tods/searcher/brute_force_search.py index f8b2263..611fddd 100644 --- a/tods/searcher/brute_force_search.py +++ b/tods/searcher/brute_force_search.py @@ -73,7 +73,7 @@ class BruteForceSearch(PipelineSearchBase): # pragma: no cover pipeline_candidates = _generate_pipelines(primitive_python_paths) return pipeline_candidates -primitive_python_paths = { +primitive_python_paths = { # pragma: no cover 'data_processing': [ #'d3m.primitives.tods.data_processing.time_interval_transform', #'d3m.primitives.tods.data_processing.categorical_to_binary', diff --git a/tods/timeseries_processing/HoltSmoothing.py b/tods/timeseries_processing/HoltSmoothing.py index e6b7d47..383df14 100644 --- a/tods/timeseries_processing/HoltSmoothing.py +++ b/tods/timeseries_processing/HoltSmoothing.py @@ -156,7 +156,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P self._inputs = inputs self._fitted = False - def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: + def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: # pragma: no cover if self._fitted: return CallResult(None) @@ -175,7 +175,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P self.logger.warn("No input columns were selected") return CallResult(None) - def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: + def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: # pragma: no cover self.logger.info('Holt Smoothing Primitive called') outputs = inputs @@ -197,10 +197,10 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P return base.CallResult(outputs) - def _update_metadata(self, outputs): + def _update_metadata(self, outputs): # pragma: no cover outputs.metadata = outputs.metadata.generate(outputs,) - def get_params(self) -> Params: + def get_params(self) -> Params: # pragma: no cover if not self._fitted: return Params( input_column_names=self._input_column_names, @@ -218,7 +218,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P target_columns_metadata_=self._target_columns_metadata ) - def set_params(self, *, params: Params) -> None: + def set_params(self, *, params: Params) -> None: # pragma: no cover self._input_column_names = params['input_column_names'] self._training_indices = params['training_indices_'] self._target_names = params['target_names_'] @@ -231,7 +231,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P @classmethod - def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): + def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover if not hyperparams['use_semantic_types']: return inputs, list(range(len(inputs.columns))) @@ -248,7 +248,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P # return columns_to_produce @classmethod - def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: + def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: # pragma: no cover column_metadata = inputs_metadata.query((metadata_base.ALL_ELEMENTS, column_index)) accepted_structural_types = (int, float, numpy.integer, numpy.float64) @@ -271,7 +271,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P @classmethod - def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: + def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] @@ -293,7 +293,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P @classmethod def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], - target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: + target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: # pragma: no cover outputs_metadata = metadata_base.DataMetadata().generate(value=outputs) for column_index, column_metadata in enumerate(target_columns_metadata): @@ -302,7 +302,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P return outputs_metadata - def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: + def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: # pragma: no cover outputs = d3m_dataframe(predictions, generate_metadata=True) target_columns_metadata = self._copy_inputs_metadata(inputs.metadata, self._training_indices, outputs.metadata, self.hyperparams) outputs.metadata = self._update_predictions_metadata(inputs.metadata, outputs, target_columns_metadata) @@ -311,7 +311,7 @@ class HoltSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, P @classmethod def _copy_inputs_metadata(cls, inputs_metadata: metadata_base.DataMetadata, input_indices: List[int], - outputs_metadata: metadata_base.DataMetadata, hyperparams): + outputs_metadata: metadata_base.DataMetadata, hyperparams): # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] for column_index in input_indices: diff --git a/tods/timeseries_processing/HoltWintersExponentialSmoothing.py b/tods/timeseries_processing/HoltWintersExponentialSmoothing.py index df0e0c0..5b435f5 100644 --- a/tods/timeseries_processing/HoltWintersExponentialSmoothing.py +++ b/tods/timeseries_processing/HoltWintersExponentialSmoothing.py @@ -155,7 +155,7 @@ class HoltWintersExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[ self._inputs = inputs self._fitted = False - def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: + def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: # pragma: no cover if self._fitted: return CallResult(None) @@ -174,7 +174,7 @@ class HoltWintersExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[ self.logger.warn("No input columns were selected") return CallResult(None) - def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: + def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: # pragma: no cover self.logger.info('Holt Winters Smoothing Primitive called') outputs = inputs @@ -228,7 +228,7 @@ class HoltWintersExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[ @classmethod - def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): + def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover if not hyperparams['use_semantic_types']: return inputs, list(range(len(inputs.columns))) @@ -245,7 +245,7 @@ class HoltWintersExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[ # return columns_to_produce @classmethod - def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: + def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: # pragma: no cover column_metadata = inputs_metadata.query((metadata_base.ALL_ELEMENTS, column_index)) accepted_structural_types = (int, float, numpy.integer, numpy.float64) @@ -268,7 +268,7 @@ class HoltWintersExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[ @classmethod - def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: + def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] @@ -290,7 +290,7 @@ class HoltWintersExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[ @classmethod def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], - target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: + target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: # pragma: no cover outputs_metadata = metadata_base.DataMetadata().generate(value=outputs) for column_index, column_metadata in enumerate(target_columns_metadata): @@ -299,7 +299,7 @@ class HoltWintersExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[ return outputs_metadata - def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: + def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: # pragma: no cover outputs = d3m_dataframe(predictions, generate_metadata=True) target_columns_metadata = self._copy_inputs_metadata(inputs.metadata, self._training_indices, outputs.metadata, self.hyperparams) outputs.metadata = self._update_predictions_metadata(inputs.metadata, outputs, target_columns_metadata) @@ -308,7 +308,7 @@ class HoltWintersExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[ @classmethod def _copy_inputs_metadata(cls, inputs_metadata: metadata_base.DataMetadata, input_indices: List[int], - outputs_metadata: metadata_base.DataMetadata, hyperparams): + outputs_metadata: metadata_base.DataMetadata, hyperparams): # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] for column_index in input_indices: diff --git a/tods/timeseries_processing/MovingAverageTransformer.py b/tods/timeseries_processing/MovingAverageTransformer.py index 20b0be5..2bdfc0f 100644 --- a/tods/timeseries_processing/MovingAverageTransformer.py +++ b/tods/timeseries_processing/MovingAverageTransformer.py @@ -151,7 +151,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, self._inputs = inputs self._fitted = False - def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: + def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: # pragma: no cover if self._fitted: return CallResult(None) @@ -170,7 +170,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, self.logger.warn("No input columns were selected") return CallResult(None) - def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: + def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: # pragma: no cover self.logger.info('Time Series Moving Average Primitive called') @@ -195,10 +195,10 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, return base.CallResult(outputs) - def _update_metadata(self, outputs): + def _update_metadata(self, outputs): # pragma: no cover outputs.metadata = outputs.metadata.generate(outputs,) - def get_params(self) -> Params: + def get_params(self) -> Params: # pragma: no cover if not self._fitted: return Params( input_column_names=self._input_column_names, @@ -216,7 +216,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, target_columns_metadata_=self._target_columns_metadata ) - def set_params(self, *, params: Params) -> None: + def set_params(self, *, params: Params) -> None: # pragma: no cover self._input_column_names = params['input_column_names'] self._training_indices = params['training_indices_'] self._target_names = params['target_names_'] @@ -229,7 +229,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, @classmethod - def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): + def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover if not hyperparams['use_semantic_types']: return inputs, list(range(len(inputs.columns))) @@ -246,7 +246,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, # return columns_to_produce @classmethod - def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: + def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: # pragma: no cover column_metadata = inputs_metadata.query((metadata_base.ALL_ELEMENTS, column_index)) accepted_structural_types = (int, float, numpy.integer, numpy.float64) @@ -269,7 +269,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, @classmethod - def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: + def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] @@ -291,7 +291,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, @classmethod def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], - target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: + target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: # pragma: no cover outputs_metadata = metadata_base.DataMetadata().generate(value=outputs) for column_index, column_metadata in enumerate(target_columns_metadata): @@ -300,7 +300,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, return outputs_metadata - def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: + def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: # pragma: no cover outputs = d3m_dataframe(predictions, generate_metadata=True) target_columns_metadata = self._copy_inputs_metadata(inputs.metadata, self._training_indices, outputs.metadata, self.hyperparams) outputs.metadata = self._update_predictions_metadata(inputs.metadata, outputs, target_columns_metadata) @@ -309,7 +309,7 @@ class MovingAverageTransformerPrimitive(UnsupervisedLearnerPrimitiveBase[Inputs, @classmethod def _copy_inputs_metadata(cls, inputs_metadata: metadata_base.DataMetadata, input_indices: List[int], - outputs_metadata: metadata_base.DataMetadata, hyperparams): + outputs_metadata: metadata_base.DataMetadata, hyperparams): # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] for column_index in input_indices: diff --git a/tods/timeseries_processing/SimpleExponentialSmoothing.py b/tods/timeseries_processing/SimpleExponentialSmoothing.py index e5da57b..95c9a0b 100644 --- a/tods/timeseries_processing/SimpleExponentialSmoothing.py +++ b/tods/timeseries_processing/SimpleExponentialSmoothing.py @@ -160,7 +160,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input self._inputs = inputs self._fitted = False - def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: + def fit(self, *, timeout: float = None, iterations: int = None)-> CallResult[None]: # pragma: no cover if self._fitted: return CallResult(None) @@ -179,7 +179,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input self.logger.warn("No input columns were selected") return CallResult(None) - def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: + def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> base.CallResult[Outputs]: # pragma: no cover self.logger.info('Simple Exponential Smoothing Primitive called') outputs = inputs @@ -202,13 +202,13 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input return base.CallResult(outputs) - def _update_metadata(self, outputs): + def _update_metadata(self, outputs): # pragma: no cover outputs.metadata = outputs.metadata.generate(outputs,) - def get_params(self) -> Params: + def get_params(self) -> Params: # pragma: no cover if not self._fitted: return Params( input_column_names=self._input_column_names, @@ -226,7 +226,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input target_columns_metadata_=self._target_columns_metadata ) - def set_params(self, *, params: Params) -> None: + def set_params(self, *, params: Params) -> None: # pragma: no cover self._input_column_names = params['input_column_names'] self._training_indices = params['training_indices_'] self._target_names = params['target_names_'] @@ -239,7 +239,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input @classmethod - def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): + def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover if not hyperparams['use_semantic_types']: return inputs, list(range(len(inputs.columns))) @@ -256,7 +256,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input # return columns_to_produce @classmethod - def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: + def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: # pragma: no cover column_metadata = inputs_metadata.query((metadata_base.ALL_ELEMENTS, column_index)) accepted_structural_types = (int, float, numpy.integer, numpy.float64) @@ -279,7 +279,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input @classmethod - def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: + def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]: # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] @@ -301,7 +301,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input @classmethod def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], - target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: + target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: # pragma: no cover outputs_metadata = metadata_base.DataMetadata().generate(value=outputs) for column_index, column_metadata in enumerate(target_columns_metadata): @@ -310,7 +310,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input return outputs_metadata - def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: + def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: # pragma: no cover outputs = d3m_dataframe(predictions, generate_metadata=True) target_columns_metadata = self._copy_inputs_metadata(inputs.metadata, self._training_indices, outputs.metadata, self.hyperparams) outputs.metadata = self._update_predictions_metadata(inputs.metadata, outputs, target_columns_metadata) @@ -319,7 +319,7 @@ class SimpleExponentialSmoothingPrimitive(UnsupervisedLearnerPrimitiveBase[Input @classmethod def _copy_inputs_metadata(cls, inputs_metadata: metadata_base.DataMetadata, input_indices: List[int], - outputs_metadata: metadata_base.DataMetadata, hyperparams): + outputs_metadata: metadata_base.DataMetadata, hyperparams): # pragma: no cover outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length'] target_columns_metadata: List[OrderedDict] = [] for column_index in input_indices: diff --git a/tods/timeseries_processing/SubsequenceSegmentation.py b/tods/timeseries_processing/SubsequenceSegmentation.py index 946b68c..0f38594 100644 --- a/tods/timeseries_processing/SubsequenceSegmentation.py +++ b/tods/timeseries_processing/SubsequenceSegmentation.py @@ -203,18 +203,18 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu if len(self._training_indices) > 0: # self._clf.fit(self._training_inputs) self._fitted = True - else: + else: # pragma: no cover if self.hyperparams['error_on_no_input']: raise RuntimeError("No input columns were selected") self.logger.warn("No input columns were selected") - if not self._fitted: + if not self._fitted: # pragma: no cover raise PrimitiveNotFittedError("Primitive not fitted.") sk_inputs = inputs - if self.hyperparams['use_semantic_types']: + if self.hyperparams['use_semantic_types']: # pragma: no cover sk_inputs = inputs.iloc[:, self._training_indices] output_columns = [] if len(self._training_indices) > 0: @@ -231,7 +231,7 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu outputs.columns = self._input_column_names output_columns = [outputs] - else: + else: # pragma: no cover if self.hyperparams['error_on_no_input']: raise RuntimeError("No input columns were selected") self.logger.warn("No input columns were selected") @@ -261,7 +261,7 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu inputs_metadata = inputs.metadata - def can_produce_column(column_index: int) -> bool: + def can_produce_column(column_index: int) -> bool: # pragma: no cover return cls._can_produce_column(inputs_metadata, column_index, hyperparams) use_columns = [] @@ -283,7 +283,7 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu # return columns_to_produce @classmethod - def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: + def _can_produce_column(cls, inputs_metadata: metadata_base.DataMetadata, column_index: int, hyperparams: Hyperparams) -> bool: # pragma: no cover """ Output whether a column can be processed. Args: @@ -316,7 +316,7 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu @classmethod def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs], - target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: + target_columns_metadata: List[OrderedDict]) -> metadata_base.DataMetadata: # pragma: no cover """ Updata metadata for selected columns. Args: @@ -335,7 +335,7 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu return outputs_metadata - def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: + def _wrap_predictions(self, inputs: Inputs, predictions: ndarray) -> Outputs: # pragma: no cover """ Wrap predictions into dataframe Args: @@ -352,7 +352,7 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu @classmethod - def _add_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams): + def _add_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams): # pragma: no cover """ Add target columns metadata Args: @@ -376,10 +376,10 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu return target_columns_metadata - def _write(self, inputs:Inputs): + def _write(self, inputs:Inputs): # pragma: no cover inputs.to_csv(str(time.time())+'.csv') - def _get_sub_sequences_length(self, n_samples, window_size, step): + def _get_sub_sequences_length(self, n_samples, window_size, step): # pragma: no cover """Pseudo chop a univariate time series into sub sequences. Return valid length only. Parameters @@ -400,7 +400,7 @@ class SubsequenceSegmentationPrimitive(transformer.TransformerPrimitiveBase[Inpu return valid_len - def _get_sub_matrices(self, X, window_size, step=1, flatten_order='F'): + def _get_sub_matrices(self, X, window_size, step=1, flatten_order='F'): # pragma: no cover """ Chop a multivariate time series into sub sequences (matrices). Parameters