|
1 | 1 | from abc import ABC |
2 | 2 | from typing import Callable |
3 | | -from functools import wraps |
4 | 3 |
|
5 | 4 | import numpy as np |
6 | 5 | import pandas as pd |
|
10 | 9 | from pymoo.core.problem import ElementwiseProblem |
11 | 10 | from pymoo.core.variable import Integer, Real, Choice, Binary |
12 | 11 |
|
13 | | -import plotly.graph_objects as go |
14 | | - |
15 | 12 | from corrai.base.math import METHODS |
16 | 13 | from corrai.base.model import Model |
17 | 14 | from corrai.base.utils import check_indicators_configs |
18 | | -from corrai.sampling import Sample |
| 15 | +from corrai.sampling import Sample, SampleMethodsMixin |
19 | 16 | from corrai.base.parameter import Parameter |
20 | 17 |
|
21 | 18 |
|
@@ -577,7 +574,7 @@ def _evaluate(self, x, out, *args, **kwargs): |
577 | 574 | self._post_evaluate(pairs, out) |
578 | 575 |
|
579 | 576 |
|
580 | | -class SciOptimizer: |
| 577 | +class SciOptimizer(SampleMethodsMixin): |
581 | 578 | """ |
582 | 579 | Optimization wrapper for models using SciPy. |
583 | 580 |
|
@@ -635,6 +632,10 @@ def __init__( |
635 | 632 | def parameters(self): |
636 | 633 | return self.model_evaluator.parameters |
637 | 634 |
|
| 635 | + @property |
| 636 | + def sample(self): |
| 637 | + return self.model_evaluator.sample |
| 638 | + |
638 | 639 | @property |
639 | 640 | def values(self): |
640 | 641 | return self.model_evaluator.sample.values |
@@ -787,75 +788,3 @@ def diff_evo_minimize( |
787 | 788 | rng=rng, |
788 | 789 | workers=workers, |
789 | 790 | ) |
790 | | - |
791 | | - @wraps(Sample.plot_sample) |
792 | | - def plot_sample( |
793 | | - self, |
794 | | - indicator: str | None, |
795 | | - reference_timeseries: pd.Series | None = None, |
796 | | - title: str | None = None, |
797 | | - y_label: str | None = None, |
798 | | - x_label: str | None = None, |
799 | | - alpha: float = 0.5, |
800 | | - show_legends: bool = False, |
801 | | - round_ndigits: int = 2, |
802 | | - quantile_band: float = 0.75, |
803 | | - type_graph: str = "area", |
804 | | - ) -> go.Figure: |
805 | | - return self.model_evaluator.sample.plot_sample( |
806 | | - indicator=indicator, |
807 | | - reference_timeseries=reference_timeseries, |
808 | | - title=title, |
809 | | - y_label=y_label, |
810 | | - x_label=x_label, |
811 | | - alpha=alpha, |
812 | | - show_legends=show_legends, |
813 | | - round_ndigits=round_ndigits, |
814 | | - quantile_band=quantile_band, |
815 | | - type_graph=type_graph, |
816 | | - ) |
817 | | - |
818 | | - @wraps(Sample.plot_pcp) |
819 | | - def plot_pcp( |
820 | | - self, |
821 | | - indicators_configs: list[str] |
822 | | - | list[tuple[str, str | Callable] | tuple[str, str | Callable, pd.Series]], |
823 | | - color_by: str | None = None, |
824 | | - title: str | None = "Parallel Coordinates — Samples", |
825 | | - html_file_path: str | None = None, |
826 | | - ) -> go.Figure: |
827 | | - return self.model_evaluator.sample.plot_pcp( |
828 | | - indicators_configs=indicators_configs, |
829 | | - color_by=color_by, |
830 | | - title=title, |
831 | | - html_file_path=html_file_path, |
832 | | - ) |
833 | | - |
834 | | - @wraps(Sample.plot_hist) |
835 | | - def plot_hist( |
836 | | - self, |
837 | | - indicator: str, |
838 | | - method: str = "mean", |
839 | | - unit: str = "", |
840 | | - agg_method_kwarg: dict = None, |
841 | | - reference_time_series: pd.Series = None, |
842 | | - bins: int = 30, |
843 | | - colors: str = "orange", |
844 | | - reference_value: int | float = None, |
845 | | - reference_label: str = "Reference", |
846 | | - show_rug: bool = False, |
847 | | - title: str = None, |
848 | | - ): |
849 | | - return self.model_evaluator.sample.plot_hist( |
850 | | - indicator=indicator, |
851 | | - method=method, |
852 | | - unit=unit, |
853 | | - agg_method_kwarg=agg_method_kwarg, |
854 | | - reference_time_series=reference_time_series, |
855 | | - bins=bins, |
856 | | - colors=colors, |
857 | | - reference_value=reference_value, |
858 | | - reference_label=reference_label, |
859 | | - show_rug=show_rug, |
860 | | - title=title, |
861 | | - ) |
0 commit comments