Browse Source

coverall

Former-commit-id: 846b08ee7c [formerly 898f9492d1] [formerly 3ba67f75a0 [formerly 58b375e8e7]] [formerly ed311ab694 [formerly 4f094bb67d] [formerly f26d423c16 [formerly f794ff34ef]]] [formerly f05635c1f4 [formerly 79b26421d1] [formerly 58d01d0765 [formerly ac8fad3853]] [formerly b0b655300f [formerly 9726f96eb4] [formerly c28b652837 [formerly b66948d1d0]]]] [formerly 464b9b56a8 [formerly 6d27652e84] [formerly f8cdb514b1 [formerly 36da7b0133]] [formerly 58f0a2ad3b [formerly ae260a8a2c] [formerly 0b4306ce91 [formerly 4736c33b82]]] [formerly 15024cfb98 [formerly affb9d5be6] [formerly 49b5cbb379 [formerly d386e84f3f]] [formerly 0df3fd4bc8 [formerly 1452be20a9] [formerly 6cea47368c [formerly 4beb72e53d]]]]] [formerly 2cb122a0e2 [formerly 369a07af54] [formerly 117719f457 [formerly f418d8f99e]] [formerly a2f8ef45a1 [formerly 0f9187e9eb] [formerly 1e667b994f [formerly 684958c828]]] [formerly 353202c937 [formerly 2e4d260432] [formerly 0f060e89f2 [formerly 12d6c71af7]] [formerly f90287aa50 [formerly 5f14e91aaa] [formerly 15e8680f49 [formerly 97f0a20a9f]]]] [formerly 4188a6742e [formerly 4f52141057] [formerly 42f46569fa [formerly 56b44ec1f0]] [formerly 045abdc1fc [formerly d00f538f5c] [formerly 0ca3d4c0ba [formerly b326214bbb]]] [formerly 4344f68bac [formerly f0ae7e9d07] [formerly 813a1a2864 [formerly 5e348e98c8]] [formerly d1429e68cc [formerly bea65a0891] [formerly da1ab85194 [formerly d4d39f564f]]]]]]
Former-commit-id: 0e4c0fc5f7 [formerly fb8130714b] [formerly 3d492794ed [formerly 17a0b69347]] [formerly b0c8ebc55b [formerly 0d73519131] [formerly b171b2dcd9 [formerly e6de695a37]]] [formerly a3f7312030 [formerly 2e8279331d] [formerly 9765d5a57d [formerly 11a90a6519]] [formerly f561ea4acf [formerly e972418bab] [formerly c057b0a413 [formerly 714782adde]]]] [formerly db10531717 [formerly 81a1b9ee57] [formerly 9279abaa59 [formerly ee80e83eb8]] [formerly 38a18cc254 [formerly e9ca3caf08] [formerly 340477e530 [formerly c9b004a2c3]]] [formerly 734509d15d [formerly ad1cd45b34] [formerly 30f7c10b83 [formerly 710c9cc680]] [formerly 4a0f1409e6 [formerly 7d6d940ad5] [formerly da1ab85194]]]]
Former-commit-id: 61bd2ced30 [formerly ccbc4bb634] [formerly 0b4b809341 [formerly 502825f55d]] [formerly b6fd349efe [formerly 95572c4684] [formerly d137c99d11 [formerly f5d2a4e046]]] [formerly 72e04400d6 [formerly df838a0f39] [formerly f61a4b36a4 [formerly bb719729f3]] [formerly d7983d5901 [formerly 485071deb0] [formerly fe336da384 [formerly 4a1117cd30]]]]
Former-commit-id: 4c31aa2002 [formerly 368204e633] [formerly cb20d97745 [formerly 1e2bd5a92e]] [formerly 6bae8da79f [formerly 5e825dad67] [formerly 9aadaada35 [formerly 4087666752]]]
Former-commit-id: 45827781fd [formerly df48b013a0] [formerly 0398938d7a [formerly cec8951ed4]]
Former-commit-id: a43bf0a20a [formerly 2e8d602276]
Former-commit-id: b8cd12701e
master
JUNJIE XU 4 years ago
parent
commit
24e5e677b7
12 changed files with 197 additions and 121 deletions
  1. +1
    -0
      src/axolotl
  2. +1
    -0
      src/common-primitives
  3. +1
    -0
      src/d3m
  4. +0
    -6
      tods/data_processing/ContinuityValidation.py
  5. +0
    -5
      tods/data_processing/DuplicationValidation.py
  6. +2
    -2
      tods/detection_algorithm/core/LSTMOD.py
  7. +5
    -10
      tods/feature_analysis/BKFilter.py
  8. +5
    -11
      tods/feature_analysis/HPFilter.py
  9. +37
    -45
      tods/feature_analysis/SKTruncatedSVD.py
  10. +35
    -41
      tods/feature_analysis/TRMF.py
  11. +62
    -1
      tods/tests/test_ContinuityValidation.py
  12. +48
    -0
      tods/tests/test_DuplicationValidation.py

+ 1
- 0
src/axolotl

@@ -0,0 +1 @@
Subproject commit af54e6970476a081bf0cd65990c9f56a1200d8a2

+ 1
- 0
src/common-primitives

@@ -0,0 +1 @@
Subproject commit 046b20d2f6d4543dcbe18f0a1d4bcbb1f61cf518

+ 1
- 0
src/d3m

@@ -0,0 +1 @@
Subproject commit 70aeefed6b7307941581357c4b7858bb3f88e1da

+ 0
- 6
tods/data_processing/ContinuityValidation.py View File

@@ -170,9 +170,3 @@ class ContinuityValidation(transformer.TransformerPrimitiveBase[Inputs, Outputs,
inputs['d3mIndex'] = list(range(inputs.shape[0]))
return inputs


def _write(self, inputs:Inputs):
"""
write inputs to current directory, only for test
"""
inputs.to_csv(str(time.time())+'.csv')

+ 0
- 5
tods/data_processing/DuplicationValidation.py View File

@@ -91,8 +91,3 @@ class DuplicationValidation(transformer.TransformerPrimitiveBase[Inputs, Outputs

return inputs

def _write(self, inputs:Inputs):
"""
write inputs to current directory, only for test
"""
inputs.to_csv(str(time.time())+'.csv')

+ 2
- 2
tods/detection_algorithm/core/LSTMOD.py View File

@@ -169,7 +169,7 @@ class LSTMOutlierDetector(CollectiveBaseDetector):
# print(danger_coefficient, averaged_relative_error)

else:
else: # pragma: no cover
danger_coefficient = np.zeros(relative_error.shape)
averaged_relative_error = np.zeros(relative_error.shape)

@@ -210,7 +210,7 @@ class LSTMOutlierDetector(CollectiveBaseDetector):



if __name__ == "__main__":
if __name__ == "__main__": # pragma: no cover
X_train = np.asarray(
[3., 4., 8., 16, 18, 13., 22., 36., 59., 128, 62, 67, 78, 100]).reshape(-1, 1)



+ 5
- 10
tods/feature_analysis/BKFilter.py View File

@@ -186,14 +186,14 @@ class BKFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams
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']:
@@ -209,7 +209,7 @@ class BKFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams
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")
@@ -217,14 +217,11 @@ class BKFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams
add_index_columns=self.hyperparams['add_index_columns'],
inputs=inputs, column_indices=self._training_indices,
columns_list=output_columns)

# self._write(outputs)
# self.logger.warning('produce was called3')
return CallResult(outputs)
@classmethod
def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams):
def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover
"""
Select columns to fit.
Args:
@@ -261,7 +258,7 @@ class BKFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams
# 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:
@@ -354,8 +351,6 @@ class BKFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams

return target_columns_metadata

def _write(self, inputs:Inputs):
inputs.to_csv(str(time.time())+'.csv')

def _bkfilter(self, X, low, high, K):
"""


+ 5
- 11
tods/feature_analysis/HPFilter.py View File

@@ -163,14 +163,14 @@ class HPFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams
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']:
@@ -186,7 +186,7 @@ class HPFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams
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")
@@ -194,14 +194,11 @@ class HPFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams
add_index_columns=self.hyperparams['add_index_columns'],
inputs=inputs, column_indices=self._training_indices,
columns_list=output_columns)

# self._write(outputs)
# self.logger.warning('produce was called3')
return CallResult(outputs)
@classmethod
def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams):
def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover
"""
Select columns to fit.
Args:
@@ -238,7 +235,7 @@ class HPFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams
# 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:
@@ -331,9 +328,6 @@ class HPFilter(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams

return target_columns_metadata

def _write(self, inputs:Inputs):
inputs.to_csv(str(time.time())+'.csv')

def _hpfilter(self, X, lamb):
"""
Perform HPFilter


+ 37
- 45
tods/feature_analysis/SKTruncatedSVD.py View File

@@ -224,7 +224,7 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
Returns:
None
"""
if self._fitted:
if self._fitted: # pragma: no cover
return CallResult(None)

# Get cols to fit.
@@ -239,7 +239,7 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
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")
@@ -257,7 +257,7 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
# self.logger.warning(str(self.metadata.query()['name']))


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']:
@@ -272,7 +272,7 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
if len(outputs.columns) == len(self._input_column_names):
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")
@@ -286,7 +286,7 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
return CallResult(outputs)

def get_params(self) -> Params:
def get_params(self) -> Params: # pragma: no cover
"""
Return parameters.
Args:
@@ -320,7 +320,7 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
target_columns_metadata_=self._target_columns_metadata
)

def set_params(self, *, params: Params) -> None:
def set_params(self, *, params: Params) -> None: # pragma: no cover
"""
Set parameters for SKTruncatedSVD.
Args:
@@ -351,7 +351,7 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
@classmethod
def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams):
def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover
"""
Select columns to fit.
Args:
@@ -377,7 +377,7 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
# 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:
@@ -408,35 +408,35 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H
return False

@classmethod
def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]:
"""
Output metadata of selected columns.
Args:
outputs_metadata: metadata_base.DataMetadata
hyperparams: d3m.metadata.hyperparams.Hyperparams
Returns:
d3m.metadata.base.DataMetadata
"""
outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length']
target_columns_metadata: List[OrderedDict] = []
for column_index in range(outputs_length):
column_metadata = OrderedDict(outputs_metadata.query_column(column_index))
# Update semantic types and prepare it for predicted targets.
semantic_types = set(column_metadata.get('semantic_types', []))
semantic_types_to_remove = set([])
add_semantic_types = []
add_semantic_types.add(hyperparams["return_semantic_type"])
semantic_types = semantic_types - semantic_types_to_remove
semantic_types = semantic_types.union(add_semantic_types)
column_metadata['semantic_types'] = list(semantic_types)
target_columns_metadata.append(column_metadata)
return target_columns_metadata
# @classmethod
# def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]:
# """
# Output metadata of selected columns.
# Args:
# outputs_metadata: metadata_base.DataMetadata
# hyperparams: d3m.metadata.hyperparams.Hyperparams
# Returns:
# d3m.metadata.base.DataMetadata
# """
# outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length']
# target_columns_metadata: List[OrderedDict] = []
# for column_index in range(outputs_length):
# column_metadata = OrderedDict(outputs_metadata.query_column(column_index))
# # Update semantic types and prepare it for predicted targets.
# semantic_types = set(column_metadata.get('semantic_types', []))
# semantic_types_to_remove = set([])
# add_semantic_types = []
# add_semantic_types.add(hyperparams["return_semantic_type"])
# semantic_types = semantic_types - semantic_types_to_remove
# semantic_types = semantic_types.union(add_semantic_types)
# column_metadata['semantic_types'] = list(semantic_types)
# target_columns_metadata.append(column_metadata)
# return target_columns_metadata
@classmethod
def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs],
@@ -500,11 +500,3 @@ class SKTruncatedSVD(UnsupervisedLearnerPrimitiveBase[Inputs, Outputs, Params, H

return target_columns_metadata

def _write(self, inputs:Inputs):
"""
write inputs to current directory, only for test
"""
inputs.to_csv(str(time.time())+'.csv')


# SKTruncatedSVD.__doc__ = TruncatedSVD.__doc__

+ 35
- 41
tods/feature_analysis/TRMF.py View File

@@ -276,14 +276,14 @@ class TRMF(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]):
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
@@ -301,7 +301,7 @@ class TRMF(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]):
if len(outputs.columns) == len(self._input_column_names):
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")
@@ -316,7 +316,7 @@ class TRMF(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]):

@classmethod
def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams):
def _get_columns_to_fit(cls, inputs: Inputs, hyperparams: Hyperparams): # pragma: no cover
"""
Select columns to fit.
Args:
@@ -342,7 +342,7 @@ class TRMF(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]):
# 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:
@@ -373,35 +373,35 @@ class TRMF(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]):
return False

@classmethod
def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]:
"""
Output metadata of selected columns.
Args:
outputs_metadata: metadata_base.DataMetadata
hyperparams: d3m.metadata.hyperparams.Hyperparams
Returns:
d3m.metadata.base.DataMetadata
"""
outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length']
target_columns_metadata: List[OrderedDict] = []
for column_index in range(outputs_length):
column_metadata = OrderedDict(outputs_metadata.query_column(column_index))
# Update semantic types and prepare it for predicted targets.
semantic_types = set(column_metadata.get('semantic_types', []))
semantic_types_to_remove = set([])
add_semantic_types = []
add_semantic_types.add(hyperparams["return_semantic_type"])
semantic_types = semantic_types - semantic_types_to_remove
semantic_types = semantic_types.union(add_semantic_types)
column_metadata['semantic_types'] = list(semantic_types)
target_columns_metadata.append(column_metadata)
return target_columns_metadata
# @classmethod
# def _get_target_columns_metadata(cls, outputs_metadata: metadata_base.DataMetadata, hyperparams) -> List[OrderedDict]:
# """
# Output metadata of selected columns.
# Args:
# outputs_metadata: metadata_base.DataMetadata
# hyperparams: d3m.metadata.hyperparams.Hyperparams
# Returns:
# d3m.metadata.base.DataMetadata
# """
# outputs_length = outputs_metadata.query((metadata_base.ALL_ELEMENTS,))['dimension']['length']
# target_columns_metadata: List[OrderedDict] = []
# for column_index in range(outputs_length):
# column_metadata = OrderedDict(outputs_metadata.query_column(column_index))
# # Update semantic types and prepare it for predicted targets.
# semantic_types = set(column_metadata.get('semantic_types', []))
# semantic_types_to_remove = set([])
# add_semantic_types = []
# add_semantic_types.add(hyperparams["return_semantic_type"])
# semantic_types = semantic_types - semantic_types_to_remove
# semantic_types = semantic_types.union(add_semantic_types)
# column_metadata['semantic_types'] = list(semantic_types)
# target_columns_metadata.append(column_metadata)
# return target_columns_metadata
@classmethod
def _update_predictions_metadata(cls, inputs_metadata: metadata_base.DataMetadata, outputs: Optional[Outputs],
@@ -465,12 +465,6 @@ class TRMF(transformer.TransformerPrimitiveBase[Inputs, Outputs, Hyperparams]):

return target_columns_metadata

def _write(self, inputs:Inputs):
"""
write inputs to current directory, only for test
"""
inputs.to_csv(str(time.time())+'.csv')


"""
Temporal Regularized Matrix Factorization
@@ -564,7 +558,7 @@ class trmf:
return np.dot(self.F, X_preds)


def _predict_X(self, h):
def _predict_X(self, h): # pragma: no cover
"""Predict X h timepoints ahead.

Evaluates matrix X with the help of matrix W.


+ 62
- 1
tods/tests/test_ContinuityValidation.py View File

@@ -59,7 +59,7 @@ class ContinuityValidationTest(unittest.TestCase):
hyperparams_class = ContinuityValidation.ContinuityValidation.metadata.get_hyperparams()
primitive = ContinuityValidation.ContinuityValidation(hyperparams=hyperparams_class.defaults())
new_main = primitive.produce(inputs=main).value
# print(new_main)

expected_output = container.DataFrame({'d3mIndex': [0, 1, 2, 3],
'timestamp': [1., 2., 3., 4.],
@@ -124,6 +124,67 @@ class ContinuityValidationTest(unittest.TestCase):

self._test_continuity(new_main)

hyperparams = hyperparams_class.defaults()
hyperparams = hyperparams.replace({'continuity_option': 'ablation'})
primitive2 = ContinuityValidation.ContinuityValidation(hyperparams=hyperparams)
new_main2 = primitive2.produce(inputs=main).value
print(new_main2)

self.assertEqual(utils.to_json_structure(new_main2.metadata.to_internal_simple_structure()), [{
'selector': [],
'metadata': {
# 'top_level': 'main',
'schema': metadata_base.CONTAINER_SCHEMA_VERSION,
'structural_type': 'd3m.container.pandas.DataFrame',
'semantic_types': ['https://metadata.datadrivendiscovery.org/types/Table'],
'dimension': {
'name': 'rows',
'semantic_types': ['https://metadata.datadrivendiscovery.org/types/TabularRow'],
'length': 2,
},
},
}, {
'selector': ['__ALL_ELEMENTS__'],
'metadata': {
'dimension': {
'name': 'columns',
'semantic_types': ['https://metadata.datadrivendiscovery.org/types/TabularColumn'],
'length': 5,
},
},
}, {
'selector': ['__ALL_ELEMENTS__', 0],
'metadata': {
'name': 'd3mIndex',
'structural_type': 'numpy.int64',
},
}, {
'selector': ['__ALL_ELEMENTS__', 1],
'metadata': {
'name': 'timestamp',
'structural_type': 'numpy.float64',
},
}, {
'selector': ['__ALL_ELEMENTS__', 2],
'metadata': {
'name': 'a',
'structural_type': 'numpy.float64',
},
}, {
'selector': ['__ALL_ELEMENTS__', 3],
'metadata': {
'name': 'b',
'structural_type': 'numpy.float64',
},
}, {
'selector': ['__ALL_ELEMENTS__', 4],
'metadata': {
'name': 'ground_truth',
'structural_type': 'numpy.int64',
},
}])



def _test_continuity(self, data_value):
tmp_col = data_value['timestamp']


+ 48
- 0
tods/tests/test_DuplicationValidation.py View File

@@ -102,6 +102,54 @@ class DuplicationValidationTest(unittest.TestCase):

self._test_drop_duplication(new_main)

hyperparams = hyperparams_class.defaults()
hyperparams = hyperparams.replace({'keep_option': 'average'})
primitive2 = DuplicationValidation.DuplicationValidation(hyperparams=hyperparams)
new_main2 = primitive2.produce(inputs=main).value
print(new_main2)

self.assertEqual(utils.to_json_structure(new_main.metadata.to_internal_simple_structure()), [{
'selector': [],
'metadata': {
# 'top_level': 'main',
'schema': metadata_base.CONTAINER_SCHEMA_VERSION,
'structural_type': 'd3m.container.pandas.DataFrame',
'semantic_types': ['https://metadata.datadrivendiscovery.org/types/Table'],
'dimension': {
'name': 'rows',
'semantic_types': ['https://metadata.datadrivendiscovery.org/types/TabularRow'],
'length': 2,
},
},
}, {
'selector': ['__ALL_ELEMENTS__'],
'metadata': {
'dimension': {
'name': 'columns',
'semantic_types': ['https://metadata.datadrivendiscovery.org/types/TabularColumn'],
'length': 3,
},
},
}, {
'selector': ['__ALL_ELEMENTS__', 0],
'metadata': {
'name': 'timestamp',
'structural_type': 'numpy.float64',
},
}, {
'selector': ['__ALL_ELEMENTS__', 1],
'metadata': {
'name': 'a',
'structural_type': 'numpy.float64',
},
}, {
'selector': ['__ALL_ELEMENTS__', 2],
'metadata': {
'name': 'b',
'structural_type': 'numpy.float64',
},
}])


def _test_drop_duplication(self, data_value):
self.assertEqual(True in list(data_value.duplicated('timestamp')), False)


Loading…
Cancel
Save