|
19 | 19 | import cesnet_tszoo.utils.anomaly_handler.factory as anomaly_handler_factories |
20 | 20 | import cesnet_tszoo.utils.custom_handler.factory as custom_handler_factories |
21 | 21 | from cesnet_tszoo.utils.custom_handler.factory import PerSeriesCustomHandlerFactory, AllSeriesCustomHandlerFactory, NoFitCustomHandlerFactory |
| 22 | +import cesnet_tszoo.utils.css_styles.utils as css_utils |
22 | 23 | from cesnet_tszoo.data_models.holders import FillingHolder, AnomalyHandlerHolder, TransformerHolder, PerSeriesCustomHandlerHolder, NoFitCustomHandlerHolder, AllSeriesCustomHandlerHolder |
23 | 24 |
|
24 | 25 |
|
@@ -535,6 +536,104 @@ def __set_all_series_custom_handler(self, factory: AllSeriesCustomHandlerFactory |
535 | 536 | self.test_preprocess_order.append(PreprocessNote(factory.preprocess_enum_type, True, False, factory.can_apply_to_test and self.has_test(), False, AllSeriesCustomHandlerHolder(handler))) |
536 | 537 | self.all_preprocess_order.append(PreprocessNote(factory.preprocess_enum_type, True, False, factory.can_apply_to_all and self.has_all(), False, AllSeriesCustomHandlerHolder(handler))) |
537 | 538 |
|
| 539 | + def _get_summary_steps(self) -> list[css_utils.SummaryDiagramStep]: |
| 540 | + steps = [] |
| 541 | + |
| 542 | + steps.append(self._get_summary_dataset()) |
| 543 | + steps.append(self._get_summary_filter_time_series()) |
| 544 | + steps.append(self._get_summary_filter_features()) |
| 545 | + steps += self._get_summary_preprocessing() |
| 546 | + steps += self._get_summary_loader() |
| 547 | + |
| 548 | + return steps |
| 549 | + |
| 550 | + def _get_summary_dataset(self) -> css_utils.SummaryDiagramStep: |
| 551 | + attributes = [css_utils.StepAttribute("Database", self.database_name), |
| 552 | + css_utils.StepAttribute("Aggregation", self.aggregation), |
| 553 | + css_utils.StepAttribute("Source", self.source_type)] |
| 554 | + |
| 555 | + return css_utils.SummaryDiagramStep("Load from dataset", attributes) |
| 556 | + |
| 557 | + @abstractmethod |
| 558 | + def _get_summary_filter_time_series(self) -> css_utils.SummaryDiagramStep: |
| 559 | + ... |
| 560 | + |
| 561 | + def _get_summary_filter_features(self) -> css_utils.SummaryDiagramStep: |
| 562 | + attributes = [css_utils.StepAttribute("Taken features", self.features_to_take_without_ids), |
| 563 | + css_utils.StepAttribute("Time series ID included", self.include_ts_id), |
| 564 | + css_utils.StepAttribute("Time included", self.include_time), |
| 565 | + css_utils.StepAttribute("Time format", self.time_format)] |
| 566 | + |
| 567 | + return css_utils.SummaryDiagramStep("Filter features", attributes) |
| 568 | + |
| 569 | + def _get_summary_preprocessing(self) -> list[css_utils.SummaryDiagramStep]: |
| 570 | + steps = [] |
| 571 | + |
| 572 | + for preprocess_type, train_pr, val_pr, test_pr, all_pr in list(zip(self.preprocess_order, self.train_preprocess_order, self.val_preprocess_order, self.test_preprocess_order, self.all_preprocess_order)): |
| 573 | + preprocess_title = None |
| 574 | + preprocess_type_name = None |
| 575 | + is_per_time_series = train_pr.is_inner_preprocess |
| 576 | + target_sets = [] |
| 577 | + requires_fitting = False |
| 578 | + if train_pr.can_be_applied: |
| 579 | + target_sets.append("train") |
| 580 | + requires_fitting = train_pr.should_be_fitted |
| 581 | + if val_pr.can_be_applied: |
| 582 | + target_sets.append("val") |
| 583 | + if test_pr.can_be_applied: |
| 584 | + target_sets.append("test") |
| 585 | + if all_pr.can_be_applied: |
| 586 | + target_sets.append("all") |
| 587 | + |
| 588 | + if len(target_sets) == 0: |
| 589 | + continue |
| 590 | + |
| 591 | + if train_pr.preprocess_type == PreprocessType.HANDLING_ANOMALIES: |
| 592 | + preprocess_title = "Handle anomalies" |
| 593 | + preprocess_type_name = self.anomaly_handler_factory.anomaly_handler_type.__name__ |
| 594 | + |
| 595 | + if self.anomaly_handler_factory.is_empty_factory: |
| 596 | + continue |
| 597 | + |
| 598 | + elif train_pr.preprocess_type == PreprocessType.FILLING_GAPS: |
| 599 | + preprocess_title = "Handle missing values" |
| 600 | + preprocess_type_name = f"{self.filler_factory.filler_type.__name__}" |
| 601 | + |
| 602 | + steps.append(css_utils.SummaryDiagramStep("Pre-fill with default values", [css_utils.StepAttribute("Default values", self.default_values)])) |
| 603 | + |
| 604 | + if self.filler_factory.is_empty_factory: |
| 605 | + continue |
| 606 | + |
| 607 | + elif train_pr.preprocess_type == PreprocessType.TRANSFORMING: |
| 608 | + preprocess_title = "Apply transformer" |
| 609 | + preprocess_type_name = self.transformer_factory.transformer_type.__name__ |
| 610 | + |
| 611 | + if self.transformer_factory.is_empty_factory: |
| 612 | + continue |
| 613 | + |
| 614 | + is_per_time_series = self.create_transformer_per_time_series |
| 615 | + elif train_pr.preprocess_type == PreprocessType.PER_SERIES_CUSTOM: |
| 616 | + preprocess_title = f"Apply {preprocess_type.__name__}" |
| 617 | + preprocess_type_name = preprocess_type.__name__ |
| 618 | + elif train_pr.preprocess_type == PreprocessType.ALL_SERIES_CUSTOM: |
| 619 | + preprocess_title = f"Apply {preprocess_type.__name__}" |
| 620 | + preprocess_type_name = preprocess_type.__name__ |
| 621 | + elif train_pr.preprocess_type == PreprocessType.NO_FIT_CUSTOM: |
| 622 | + preprocess_title = f"Apply {preprocess_type.__name__}" |
| 623 | + preprocess_type_name = preprocess_type.__name__ |
| 624 | + |
| 625 | + step = css_utils.SummaryDiagramStep(preprocess_title, [css_utils.StepAttribute("Type", preprocess_type_name), |
| 626 | + css_utils.StepAttribute("Requires fitting", requires_fitting), |
| 627 | + css_utils.StepAttribute("Is per time series", is_per_time_series), |
| 628 | + css_utils.StepAttribute("Target sets", target_sets)]) |
| 629 | + steps.append(step) |
| 630 | + |
| 631 | + return steps |
| 632 | + |
| 633 | + @abstractmethod |
| 634 | + def _get_summary_loader(self) -> list[css_utils.SummaryDiagramStep]: |
| 635 | + ... |
| 636 | + |
538 | 637 | @abstractmethod |
539 | 638 | def _set_no_fit_custom_handler(self, factory: NoFitCustomHandlerFactory): |
540 | 639 | ... |
|
0 commit comments