From 5e33d4e2d1596ab2ba136cc5dc0aa6eb27ef7a2f Mon Sep 17 00:00:00 2001 From: Agata Benvegna Date: Fri, 28 Nov 2025 16:48:22 +0100 Subject: [PATCH] Add the new argument "include_effect_label" in the function "generate()" --- ats/tests/test_evaluators.py | 52 +++++++++++------------ ats/tests/test_timeseries_generators.py | 56 ++++++++++++------------- ats/timeseries_generators.py | 11 +++-- 3 files changed, 62 insertions(+), 57 deletions(-) diff --git a/ats/tests/test_evaluators.py b/ats/tests/test_evaluators.py index 6701061..d8c9d86 100644 --- a/ats/tests/test_evaluators.py +++ b/ats/tests/test_evaluators.py @@ -61,7 +61,7 @@ def test_evaluate_anomaly_detector(self): def test_evaluate_anomaly_det_on_spiked_synth_timeseries(self): spiked_humi_temp_generator = HumiTempTimeseriesGenerator() - timeseries_df = spiked_humi_temp_generator.generate(anomalies=['spike_uv'],effects=[]) + timeseries_df = spiked_humi_temp_generator.generate(include_effect_label=True, anomalies=['spike_uv'],effects=[]) # Generated DataFrame: # Timestamp temperature humidity anomaly_label effect_label # ... @@ -102,7 +102,7 @@ def test_evaluate_anomaly_det_on_spiked_synth_timeseries(self): def test_evaluate_anomaly_det_on_step_synth_timeseries(self): step_humi_temp_generator = HumiTempTimeseriesGenerator() - timeseries_df = step_humi_temp_generator.generate(anomalies=['step_uv'],effects=[]) + timeseries_df = step_humi_temp_generator.generate(include_effect_label=True, anomalies=['step_uv'],effects=[]) # Generated DataFrame: # Timestamp temperature humidity anomaly_label effect_label # ... @@ -127,7 +127,7 @@ def test_evaluate_anomaly_det_on_step_synth_timeseries(self): def test_evaluate_anomaly_det_on_synth_not_anomalous_timeseries(self): humi_temp_generator = HumiTempTimeseriesGenerator() - timeseries_df = humi_temp_generator.generate(anomalies=[],effects=[]) + timeseries_df = humi_temp_generator.generate(include_effect_label=True, anomalies=[],effects=[]) # Generated DataFrame: # Timestamp temperature humidity anomaly_label effect_label # ... @@ -171,7 +171,7 @@ def test_evaluation_details(self): def test_evaluation_details_on_synth_spiked_timeseries(self): spiked_humi_temp_generator = HumiTempTimeseriesGenerator() - timeseries_df = spiked_humi_temp_generator.generate(anomalies=['spike_uv'],effects=[]) + timeseries_df = spiked_humi_temp_generator.generate(include_effect_label=True, anomalies=['spike_uv'],effects=[]) min_max_anomaly_detector = MinMaxAnomalyDetector() f_timeseries_df,anomaly_labels = _format_for_anomaly_detector(timeseries_df,synthetic=True) evaluated_ts_df = min_max_anomaly_detector.apply(f_timeseries_df) @@ -187,7 +187,7 @@ def test_evaluation_details_on_synth_spiked_timeseries(self): def test_evaluation_details_on_synth_step_timeseries(self): step_humi_temp_generator = HumiTempTimeseriesGenerator() - timeseries_df = step_humi_temp_generator.generate(anomalies=['step_uv'],effects=[]) + timeseries_df = step_humi_temp_generator.generate(include_effect_label=True, anomalies=['step_uv'],effects=[]) min_max_anomaly_detector = MinMaxAnomalyDetector() f_timeseries_df,anomaly_labels = _format_for_anomaly_detector(timeseries_df,synthetic=True) @@ -208,7 +208,7 @@ def test_evaluation_details_on_synth_step_timeseries(self): def test_evaluation_details_on_synth_not_anomalous_timeseries(self): humi_temp_generator = HumiTempTimeseriesGenerator() - timeseries_df = humi_temp_generator.generate(anomalies=[],effects=[]) + timeseries_df = humi_temp_generator.generate(include_effect_label=True, anomalies=[],effects=[]) min_max_anomaly_detector = MinMaxAnomalyDetector() f_timeseries_df,anomaly_labels = _format_for_anomaly_detector(timeseries_df,synthetic=True) @@ -225,8 +225,8 @@ def test_evaluation_details_on_synth_not_anomalous_timeseries(self): def test_get_model_output(self): humi_temp_generator = HumiTempTimeseriesGenerator() - humitemp_series1 = humi_temp_generator.generate(anomalies=[],effects=[]) - humitemp_series2 = humi_temp_generator.generate(anomalies=[],effects=['noise']) + humitemp_series1 = humi_temp_generator.generate(include_effect_label=True, anomalies=[],effects=[]) + humitemp_series2 = humi_temp_generator.generate(include_effect_label=True, anomalies=[],effects=['noise']) format_humitemp_series1,anomalies1 = _format_for_anomaly_detector(humitemp_series1,synthetic=True) format_humitemp_series2,anomalies2 = _format_for_anomaly_detector(humitemp_series2,synthetic=True) min_max = MinMaxAnomalyDetector() @@ -303,8 +303,8 @@ def test_evaluate_point_granularity(self): effects = [] # series with 2880 data points series_generator = HumiTempTimeseriesGenerator() - series1 = series_generator.generate(anomalies=anomalies,effects=effects) - series2 = series_generator.generate(anomalies=anomalies,effects=effects) + series1 = series_generator.generate(include_effect_label=True, anomalies=anomalies,effects=effects) + series2 = series_generator.generate(include_effect_label=True, anomalies=anomalies,effects=effects) dataset = [series1,series2] evaluator = Evaluator(test_data=dataset) minmax1 = MinMaxAnomalyDetector() @@ -332,8 +332,8 @@ def test_evaluate_variable_granularity(self): effects = [] # series with 2880 data points series_generator = HumiTempTimeseriesGenerator() - series1 = series_generator.generate(anomalies=anomalies,effects=effects) - series2 = series_generator.generate(anomalies=anomalies,effects=effects) + series1 = series_generator.generate(include_effect_label=True, anomalies=anomalies,effects=effects) + series2 = series_generator.generate(include_effect_label=True, anomalies=anomalies,effects=effects) dataset = [series1,series2] evaluator = Evaluator(test_data=dataset) minmax1 = MinMaxAnomalyDetector() @@ -362,9 +362,9 @@ def test_evaluate_series_granularity(self): effects = [] series_generator = HumiTempTimeseriesGenerator() # series1 will be a true anomaly for the minmax - series1 = series_generator.generate(anomalies=anomalies,effects=effects) + series1 = series_generator.generate(include_effect_label=True, anomalies=anomalies,effects=effects) # series2 will be a false positive for minmax (it sees always 2 anomalous data points for each variable) - series2 = series_generator.generate(anomalies=[],effects=effects) + series2 = series_generator.generate(include_effect_label=True, anomalies=[],effects=effects) dataset = [series1,series2] evaluator = Evaluator(test_data=dataset) minmax1 = MinMaxAnomalyDetector() @@ -392,9 +392,9 @@ def test_series_granularity_eval_with_non_detected_anomalies(self): effects = [] series_generator = HumiTempTimeseriesGenerator() # series1 will be a true anomaly for the minmax - series1 = series_generator.generate(anomalies=['step_uv'],effects=effects) + series1 = series_generator.generate(include_effect_label=True, anomalies=['step_uv'],effects=effects) # series2 will be a false positive for minmax (it sees always 2 anomalous data points for each variable) - series2 = series_generator.generate(anomalies=['pattern_uv'],effects=effects) + series2 = series_generator.generate(include_effect_label=True, anomalies=['pattern_uv'],effects=effects) dataset = [series1,series2] evaluator = Evaluator(test_data=dataset) minmax1 = MinMaxAnomalyDetector() @@ -421,7 +421,7 @@ def test_series_granularity_eval_with_non_detected_anomalies(self): def test_raised_error_evaluation_series_granularity(self): anomalies = ['step_uv','spike_uv'] series_generator = HumiTempTimeseriesGenerator() - series = series_generator.generate(anomalies=anomalies) + series = series_generator.generate(include_effect_label=True, anomalies=anomalies) dataset = [series] minmax = MinMaxAnomalyDetector() evaluator = Evaluator(test_data=dataset) @@ -432,8 +432,8 @@ def test_raised_error_evaluation_series_granularity(self): def test_copy_dataset(self): series_generator = HumiTempTimeseriesGenerator() - series1 = series_generator.generate(effects=['noise']) - series2 = series_generator.generate(effects=['noise']) + series1 = series_generator.generate(include_effect_label=True, effects=['noise']) + series2 = series_generator.generate(include_effect_label=True, effects=['noise']) dataset = [series1,series2] evaluator = Evaluator(test_data=dataset) minmax1 = MinMaxAnomalyDetector() @@ -448,7 +448,7 @@ def test_copy_dataset(self): def test_variable_granularity_evaluation(self): series_generator = HumiTempTimeseriesGenerator() - series = series_generator.generate(anomalies=['step_uv']) + series = series_generator.generate(include_effect_label=True, anomalies=['step_uv']) minmax = MinMaxAnomalyDetector() formatted_series,anomaly_labels = _format_for_anomaly_detector(series,synthetic=True) flagged_series = minmax.apply(formatted_series) @@ -463,7 +463,7 @@ def test_variable_granularity_evaluation(self): def test_point_granularity_evaluation(self): series_generator = HumiTempTimeseriesGenerator() - series = series_generator.generate(anomalies=['step_uv']) + series = series_generator.generate(include_effect_label=True, anomalies=['step_uv']) minmax = MinMaxAnomalyDetector() formatted_series,anomaly_labels = _format_for_anomaly_detector(series,synthetic=True) flagged_series = minmax.apply(formatted_series) @@ -478,7 +478,7 @@ def test_point_granularity_evaluation(self): def test_series_granularity_evaluation(self): series_generator = HumiTempTimeseriesGenerator() - series = series_generator.generate(anomalies=['step_uv']) + series = series_generator.generate(include_effect_label=True, anomalies=['step_uv']) minmax = MinMaxAnomalyDetector() formatted_series,anomaly_labels = _format_for_anomaly_detector(series,synthetic=True) flagged_series = minmax.apply(formatted_series) @@ -489,7 +489,7 @@ def test_series_granularity_evaluation(self): self.assertEqual(len(evaluation_result),1) self.assertAlmostEqual(evaluation_result['step_uv'],1) - series1 = series_generator.generate(anomalies=[]) + series1 = series_generator.generate(include_effect_label=True, anomalies=[]) minmax1 = MinMaxAnomalyDetector() formatted_series1,anomaly_labels1 = _format_for_anomaly_detector(series1,synthetic=True) flagged_series1 = minmax.apply(formatted_series1) @@ -501,7 +501,7 @@ def test_series_granularity_evaluation(self): # } try: - series2 = series_generator.generate(anomalies=['spike_uv','step_uv']) + series2 = series_generator.generate(include_effect_label=True, anomalies=['spike_uv','step_uv']) formatted_series2,anomaly_labels2 = _format_for_anomaly_detector(series2,synthetic=True) flagged_series2 = minmax.apply(formatted_series2) evaluation_result2 = _series_granularity_evaluation(flagged_series2,anomaly_labels2) @@ -513,9 +513,9 @@ def test_double_evaluator(self): effects = [] series_generator = HumiTempTimeseriesGenerator() # series1 will be a true anomaly for the minmax - series1 = series_generator.generate(anomalies=anomalies,effects=effects) + series1 = series_generator.generate(include_effect_label=True, anomalies=anomalies,effects=effects) # series2 will be a false positive for minmax (it sees always 2 anomalous data points for each variable) - series2 = series_generator.generate(anomalies=[],effects=effects) + series2 = series_generator.generate(include_effect_label=True, anomalies=[],effects=effects) dataset = [series1,series2] evaluator = Evaluator(test_data=dataset) minmax1 = MinMaxAnomalyDetector() diff --git a/ats/tests/test_timeseries_generators.py b/ats/tests/test_timeseries_generators.py index 24db304..a35f252 100644 --- a/ats/tests/test_timeseries_generators.py +++ b/ats/tests/test_timeseries_generators.py @@ -30,7 +30,7 @@ def setUp(self): def test_defaults(self): default_generator = HumiTempTimeseriesGenerator() - default_timeseries_df = default_generator.generate(index_by_timestamp=False) + default_timeseries_df = default_generator.generate(include_effect_label=True, index_by_timestamp=False) self.assertIsInstance(default_timeseries_df,pd.DataFrame) self.assertEqual(len(default_timeseries_df),2880) @@ -58,7 +58,7 @@ def test_defaults(self): def test_pattern_uv_timeseries_generator(self): pattern_uv_anomaly_generator = HumiTempTimeseriesGenerator() - pattern_uv_timeseries_df = pattern_uv_anomaly_generator.generate(anomalies=['pattern_uv'],index_by_timestamp=False) + pattern_uv_timeseries_df = pattern_uv_anomaly_generator.generate(include_effect_label=True, anomalies=['pattern_uv'],index_by_timestamp=False) self.assertEqual(len(pattern_uv_timeseries_df),2880) anomaly_labels_and_counts = pattern_uv_timeseries_df['anomaly_label'].value_counts(dropna=False) @@ -74,7 +74,7 @@ def test_pattern_uv_timeseries_generator(self): def test_noise_uv_timeseries_generator(self): noise_uv_anomaly_generator = HumiTempTimeseriesGenerator() - noise_uv_timeseries_df = noise_uv_anomaly_generator.generate(anomalies=['noise_uv'],index_by_timestamp=False) + noise_uv_timeseries_df = noise_uv_anomaly_generator.generate(include_effect_label=True, anomalies=['noise_uv'],index_by_timestamp=False) self.assertEqual(len(noise_uv_timeseries_df),2880) @@ -91,7 +91,7 @@ def test_noise_uv_timeseries_generator(self): def test_spike_mv_timeseries_generator(self): spike_mv_timeseries_generator = HumiTempTimeseriesGenerator() - spike_mv_timeseries_df = spike_mv_timeseries_generator.generate(anomalies=['spike_mv'],index_by_timestamp=False) + spike_mv_timeseries_df = spike_mv_timeseries_generator.generate(include_effect_label=True, anomalies=['spike_mv'],index_by_timestamp=False) self.assertEqual(len(spike_mv_timeseries_df),2880) @@ -106,7 +106,7 @@ def test_spike_mv_timeseries_generator(self): def test_step_mv_timeseries_generator(self): step_mv_timeseries_generator = HumiTempTimeseriesGenerator() - step_mv_timeseries_df = step_mv_timeseries_generator.generate(anomalies=['step_mv'],index_by_timestamp=False) + step_mv_timeseries_df = step_mv_timeseries_generator.generate(include_effect_label=True, anomalies=['step_mv'],index_by_timestamp=False) self.assertEqual(len(step_mv_timeseries_df),2880) @@ -123,7 +123,7 @@ def test_step_mv_timeseries_generator(self): def test_pattern_mv_timeseries_generator(self): pattern_mv_timeseries_generator = HumiTempTimeseriesGenerator() - pattern_mv_timeseries_df = pattern_mv_timeseries_generator.generate(anomalies=['pattern_mv'],index_by_timestamp=False) + pattern_mv_timeseries_df = pattern_mv_timeseries_generator.generate(include_effect_label=True, anomalies=['pattern_mv'],index_by_timestamp=False) self.assertEqual(len(pattern_mv_timeseries_df),2880) @@ -140,7 +140,7 @@ def test_pattern_mv_timeseries_generator(self): def test_noise_mv_timeseries_generator(self): noise_mv_timeseries_generator = HumiTempTimeseriesGenerator() - noise_mv_timeseries_df = noise_mv_timeseries_generator.generate(anomalies=['noise_mv'],index_by_timestamp=False) + noise_mv_timeseries_df = noise_mv_timeseries_generator.generate(include_effect_label=True, anomalies=['noise_mv'],index_by_timestamp=False) self.assertEqual(len(noise_mv_timeseries_df),2880) @@ -157,7 +157,7 @@ def test_noise_mv_timeseries_generator(self): def test_clouds_mv_timeseries_generator(self): clouds_mv_timeseries_generator = HumiTempTimeseriesGenerator() - clouds_mv_timeseries_df = clouds_mv_timeseries_generator.generate(anomalies=['clouds'],effects=['clouds'],index_by_timestamp=False) + clouds_mv_timeseries_df = clouds_mv_timeseries_generator.generate(include_effect_label=True, anomalies=['clouds'],effects=['clouds'],index_by_timestamp=False) self.assertEqual(len(clouds_mv_timeseries_df),2880) @@ -174,7 +174,7 @@ def test_clouds_mv_timeseries_generator(self): def test_all_uv_anomalies_timeseries_generator(self): all_uv_anomalies_timeseries_generator = HumiTempTimeseriesGenerator() - all_uv_anomalies_timeseries_df = all_uv_anomalies_timeseries_generator.generate(anomalies=['spike_uv','step_uv','pattern_uv','noise_uv'],index_by_timestamp=False) + all_uv_anomalies_timeseries_df = all_uv_anomalies_timeseries_generator.generate(include_effect_label=True, anomalies=['spike_uv','step_uv','pattern_uv','noise_uv'],index_by_timestamp=False) self.assertEqual(len(all_uv_anomalies_timeseries_df),2880) @@ -198,7 +198,7 @@ def test_all_uv_anomalies_timeseries_generator(self): def test_all_mv_anomalies_timeseries_generator(self): all_mv_anomalies_timeseries_generator = HumiTempTimeseriesGenerator() - all_mv_anomalies_timeseries_df = all_mv_anomalies_timeseries_generator.generate(anomalies=['spike_mv','step_mv','pattern_mv','noise_mv','clouds'], effects=['clouds'],index_by_timestamp=False) + all_mv_anomalies_timeseries_df = all_mv_anomalies_timeseries_generator.generate(include_effect_label=True, anomalies=['spike_mv','step_mv','pattern_mv','noise_mv','clouds'], effects=['clouds'],index_by_timestamp=False) self.assertEqual(len(all_mv_anomalies_timeseries_df),2880) @@ -232,7 +232,7 @@ def test_generate_time_boundaries(self): def test_add_step_anomaly(self): bare_timeseries_generator = HumiTempTimeseriesGenerator() - bare_timeseries_df = bare_timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + bare_timeseries_df = bare_timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) step_uv_anomaly_timeseries_df = _add_step_anomaly(bare_timeseries_df,mode='uv',inplace=False) step_mv_anomaly_timeseries_df = _add_step_anomaly(bare_timeseries_df,mode='mv',inplace=False) @@ -249,7 +249,7 @@ def test_add_step_anomaly(self): def test__add_anomalous_noise(self): bare_timeseries_generator = HumiTempTimeseriesGenerator() - bare_timeseries_df = bare_timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + bare_timeseries_df = bare_timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) uv_noise_anomaly_timeseries_df = _add_anomalous_noise(bare_timeseries_df,inplace=False,mode='uv') mv_noise_anomaly_timeseries_df = _add_anomalous_noise(bare_timeseries_df,inplace=False,mode='mv') @@ -273,7 +273,7 @@ def test__add_anomalous_noise(self): def test_add_pattern_anomaly(self): bare_timeseries_generator = HumiTempTimeseriesGenerator() - bare_timeseries_df = bare_timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + bare_timeseries_df = bare_timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) sampling_interval = dt.timedelta(minutes=15) uv_pattern_anomaly_timeseries_df = _add_pattern_anomaly(bare_timeseries_df,sampling_interval,inplace=False,mode='uv') mv_pattern_anomaly_timeseries_df = _add_pattern_anomaly(bare_timeseries_df,sampling_interval,inplace=False,mode='mv') @@ -315,7 +315,7 @@ def test_add_pattern_anomaly(self): def test_add_clouds_effects(self): bare_timeseries_generator = HumiTempTimeseriesGenerator() - bare_timeseries_df = bare_timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + bare_timeseries_df = bare_timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) sampling_interval = dt.timedelta(minutes=15) clouds_effect_timeseries_df = _add_clouds_effect(bare_timeseries_df,sampling_interval,inplace=False,mv_anomaly=True) @@ -331,7 +331,7 @@ def test_add_clouds_effects(self): def test_add_spike_anomaly(self): bare_timeseries_generator = HumiTempTimeseriesGenerator() - bare_timeseries_df = bare_timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + bare_timeseries_df = bare_timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) uv_spiked_timeseries_df = _add_spike_anomaly(bare_timeseries_df,inplace=False,mode='uv') mv_spiked_timeseries_df = _add_spike_anomaly(bare_timeseries_df,inplace=False,mode='mv') @@ -353,17 +353,17 @@ def test_add_spike_anomaly(self): def test_default_effect_label(self): bare_timeseries_generator = HumiTempTimeseriesGenerator() - bare_timeseries_df = bare_timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + bare_timeseries_df = bare_timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) self.assertIsNone(bare_timeseries_df.loc[10,'effect_label']) def test_normal_timeseries_label(self): timeseries_generator = HumiTempTimeseriesGenerator() - timeseries_df = timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + timeseries_df = timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) self.assertIsNone(timeseries_df.loc[10,'anomaly_label']) def test_add_spike_effect(self): bare_timeseries_generator = HumiTempTimeseriesGenerator() - bare_timeseries_df = bare_timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + bare_timeseries_df = bare_timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) spike_effect_timeseries_df = _add_spike_effect(bare_timeseries_df,inplace=False) for i in range(len(bare_timeseries_df)): @@ -373,7 +373,7 @@ def test_add_spike_effect(self): def test_change_effect_label(self): bare_timeseries_generator = HumiTempTimeseriesGenerator() - bare_timeseries_df = bare_timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + bare_timeseries_df = bare_timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) _change_effect_label(bare_timeseries_df,4,'effect_1') self.assertEqual(bare_timeseries_df.loc[4,'effect_label'],'effect_1') @@ -383,52 +383,52 @@ def test_change_effect_label(self): def test_clouds_effect_label(self): timeseries_generator = HumiTempTimeseriesGenerator() - clouds_effect_timeseries_df = timeseries_generator.generate(effects=['clouds'],anomalies=[],index_by_timestamp=False) + clouds_effect_timeseries_df = timeseries_generator.generate(include_effect_label=True, effects=['clouds'],anomalies=[],index_by_timestamp=False) self.assertEqual(clouds_effect_timeseries_df.loc[1248,'effect_label'],'clouds') self.assertEqual(clouds_effect_timeseries_df.loc[1248+95,'effect_label'],'clouds') def test_noise_effect_label(self): timeseries_generator = HumiTempTimeseriesGenerator() - noise_effect_timeseries_df = timeseries_generator.generate(effects=['noise'],anomalies=[],index_by_timestamp=False) + noise_effect_timeseries_df = timeseries_generator.generate(include_effect_label=True, effects=['noise'],anomalies=[],index_by_timestamp=False) for i in range(len(noise_effect_timeseries_df)): self.assertEqual(noise_effect_timeseries_df.loc[i,'effect_label'],'noise') def test_calculate_seasonal_sin_value(self): timeseries_generator = HumiTempTimeseriesGenerator(starting_year=1999) - timeseries_df = timeseries_generator.generate(effects=[],anomalies=[],index_by_timestamp=False) + timeseries_df = timeseries_generator.generate(include_effect_label=True, effects=[],anomalies=[],index_by_timestamp=False) returned_timeseries = _calculate_seasonal_sin_value(timeseries_df,starting_year=timeseries_generator.starting_year) self.assertEqual(len(returned_timeseries),len(timeseries_df)) def test_seasons_effect_label(self): timeseries_generator = HumiTempTimeseriesGenerator() - season_effect_timeseries_df = timeseries_generator.generate(effects=['seasons'],anomalies=[],index_by_timestamp=False) + season_effect_timeseries_df = timeseries_generator.generate(include_effect_label=True, effects=['seasons'],anomalies=[],index_by_timestamp=False) for i in range(len(season_effect_timeseries_df)): self.assertEqual(season_effect_timeseries_df.loc[i,'effect_label'],'seasons') def test_spike_effect_label(self): timeseries_generator = HumiTempTimeseriesGenerator() - spike_effect_timeseries_df = timeseries_generator.generate(effects=['spike'],anomalies=[],index_by_timestamp=False) + spike_effect_timeseries_df = timeseries_generator.generate(include_effect_label=True, effects=['spike'],anomalies=[],index_by_timestamp=False) self.assertEqual(spike_effect_timeseries_df.loc[54,'effect_label'],'spike') def test_invalid_labels(self): generator = HumiTempTimeseriesGenerator() try: - timeseries_df = generator.generate(effects=['spke'],anomalies=[],index_by_timestamp=False) + timeseries_df = generator.generate(include_effect_label=True, effects=['spke'],anomalies=[],index_by_timestamp=False) except Exception as e: self.assertIsInstance(e, ValueError) try: - timeseries_df = generator.generate(effects=[],anomalies=['clud'],index_by_timestamp=False) + timeseries_df = generator.generate(include_effect_label=True, effects=[],anomalies=['clud'],index_by_timestamp=False) except Exception as e: self.assertIsInstance(e, ValueError) def test_external_use_plot_func(self): anomalies = ['step_uv'] generator = HumiTempTimeseriesGenerator() - timeseries_df = generator.generate(effects=[],anomalies=anomalies) + timeseries_df = generator.generate(include_effect_label=True, effects=[],anomalies=anomalies) _plot_func(timeseries_df,anomalies=anomalies) def test_internal_use_plot_func(self): anomalies = ['step_uv'] generator = HumiTempTimeseriesGenerator() - timeseries_df = generator.generate(effects=[],anomalies=anomalies,plot=True) + timeseries_df = generator.generate(include_effect_label=True, effects=[],anomalies=anomalies,plot=True) diff --git a/ats/timeseries_generators.py b/ats/timeseries_generators.py index 55318ae..b4b3f25 100644 --- a/ats/timeseries_generators.py +++ b/ats/timeseries_generators.py @@ -12,8 +12,10 @@ def _quantities_in(timeseries): quantities = list(timeseries.columns) if 'timestamp' in quantities: quantities.remove('timestamp') - quantities.remove('anomaly_label') - quantities.remove('effect_label') + if 'effect_label' in quantities: + quantities.remove('effect_label') + if 'anomaly_label' in quantities: + quantities.remove('anomaly_label') return quantities @@ -610,7 +612,7 @@ def __init__(self, sampling_interval= '15min', def generate(self,plot=False,generate_csv=False, csv_path='',anomalies=['spike_uv','step_uv'], - effects=['noise','seasons','clouds'],index_by_timestamp=True): + effects=['noise','seasons','clouds'],index_by_timestamp=True,include_effect_label=False): avaliable_anomalies = ['spike_uv','step_uv','noise_uv','pattern_uv','spike_mv','step_mv','noise_mv','pattern_mv','clouds'] avaliable_effects = ['spike','noise','seasons','clouds'] @@ -705,5 +707,8 @@ def generate(self,plot=False,generate_csv=False, if generate_csv: _csv_file_maker(final_humitemp_timeseries_df,anomalies,effects,path=csv_path) + if not include_effect_label: + final_humitemp_timeseries_df.drop(columns=['effect_label'],inplace=True) + return final_humitemp_timeseries_df