Skip to content

highdimexplorer

HighDimExplorer

An HighDimExplorer displays one high dim Dataframes on a scatter plot. This class is only responsible for displaying the provided projection dimensionality reduction is handled by ProjectedValueSelector

It can display in 3 or 2 dimensions.

Implementation details : It handles projections computation and switch through ProjectedValueSelector it can update its high dim dataframe through the update_pv method

Attributes are mostly privates (underscorred) since they are not meant to be used outside of the class.

Attributes :

Source code in src/antakia/gui/high_dim_exp/highdimexplorer.py
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
class HighDimExplorer:
    """
    An HighDimExplorer displays one high dim Dataframes on a scatter plot.
    This class is only responsible for displaying the provided projection
    dimensionality reduction is handled by ProjectedValueSelector

    It can display in 3 or 2 dimensions.

    Implementation details :
    It handles projections computation and switch through ProjectedValueSelector
    it can update its high dim dataframe through the update_pv method

    Attributes are mostly privates (underscorred) since they are not meant to be used outside of the class.

    Attributes :

    """

    def __init__(
            self,
            pv_bank: ProjectedValueBank,
            selection_changed: callable,
            space
    ):
        """

        Parameters
        ----------
        pv_bank: projected values storage
        selection_changed : callable called when a selection changed
        """
        self.pv_bank = pv_bank

        # projected values handler & widget
        self.projected_value_selector = ProjectedValuesSelector(
            pv_bank,
            self.refresh,
            space
        )

        self.figure = FigureDisplay(
            None,
            pv_bank.y,
            selection_changed
        )

        self.initialized = False

    def get_current_X_proj(self, dim=None, progress_callback=None) -> pd.DataFrame | None:
        return self.projected_value_selector.get_current_X_proj(dim, progress_callback)

    def initialize(self, progress_callback, X: pd.DataFrame):
        """
        inital computation (called at startup, after init to compute required values
        Parameters
        ----------
        progress_callback : callable to notify progress

        Returns
        -------

        """
        self.projected_value_selector.initialize(progress_callback, X)
        self.figure.initialize(self.get_current_X_proj())
        self.initialized = True

    def disable(self, disable_figure: bool, disable_projection: bool):
        """
        disable dropdown select
        Parameters
        ----------
        is_disabled: disable value

        Returns
        -------

        """
        self.figure.disable_selection(disable_figure)
        self.projected_value_selector.disable(disable_projection)

    def refresh(self, progress_callback=None):
        self.disable(True, True)
        self.figure.update_X(self.get_current_X_proj(progress_callback=progress_callback))
        self.disable(False, False)

    def update_X(self, X: pd.DataFrame, progress_callback=None):
        """
        changes the undelying projected value instance - update the data used in display
        Parameters
        ----------
        pv
        progress_callback

        Returns
        -------

        """
        self.projected_value_selector.update_X(X)
        self.refresh(progress_callback)

    @property
    def current_pv(self):
        return self.projected_value_selector.projected_value

    @property
    def current_X(self) -> pd.DataFrame | None:
        """
        return hde current X value (not projected)

        Returns
        -------

        """
        if self.projected_value_selector is None:
            return None  # When we're an ES HDE and no explanation have been imported nor computed yet
        return self.projected_value_selector.projected_value.X

    def set_tab(self, *args, **kwargs):
        return self.figure.set_tab(*args, **kwargs)

    def set_selection(self, *args, **kwargs):
        return self.figure.set_selection(*args, **kwargs)

    def set_dim(self, dim: int):
        self.projected_value_selector.update_dim(dim)

current_X: pd.DataFrame | None property

return hde current X value (not projected)

Returns

__init__(pv_bank, selection_changed, space)

Parameters

pv_bank: projected values storage selection_changed : callable called when a selection changed

Source code in src/antakia/gui/high_dim_exp/highdimexplorer.py
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
def __init__(
        self,
        pv_bank: ProjectedValueBank,
        selection_changed: callable,
        space
):
    """

    Parameters
    ----------
    pv_bank: projected values storage
    selection_changed : callable called when a selection changed
    """
    self.pv_bank = pv_bank

    # projected values handler & widget
    self.projected_value_selector = ProjectedValuesSelector(
        pv_bank,
        self.refresh,
        space
    )

    self.figure = FigureDisplay(
        None,
        pv_bank.y,
        selection_changed
    )

    self.initialized = False

disable(disable_figure, disable_projection)

disable dropdown select Parameters


is_disabled: disable value

Returns
Source code in src/antakia/gui/high_dim_exp/highdimexplorer.py
82
83
84
85
86
87
88
89
90
91
92
93
94
def disable(self, disable_figure: bool, disable_projection: bool):
    """
    disable dropdown select
    Parameters
    ----------
    is_disabled: disable value

    Returns
    -------

    """
    self.figure.disable_selection(disable_figure)
    self.projected_value_selector.disable(disable_projection)

initialize(progress_callback, X)

inital computation (called at startup, after init to compute required values Parameters


progress_callback : callable to notify progress

Returns
Source code in src/antakia/gui/high_dim_exp/highdimexplorer.py
67
68
69
70
71
72
73
74
75
76
77
78
79
80
def initialize(self, progress_callback, X: pd.DataFrame):
    """
    inital computation (called at startup, after init to compute required values
    Parameters
    ----------
    progress_callback : callable to notify progress

    Returns
    -------

    """
    self.projected_value_selector.initialize(progress_callback, X)
    self.figure.initialize(self.get_current_X_proj())
    self.initialized = True

update_X(X, progress_callback=None)

changes the undelying projected value instance - update the data used in display Parameters


pv progress_callback

Returns
Source code in src/antakia/gui/high_dim_exp/highdimexplorer.py
101
102
103
104
105
106
107
108
109
110
111
112
113
114
def update_X(self, X: pd.DataFrame, progress_callback=None):
    """
    changes the undelying projected value instance - update the data used in display
    Parameters
    ----------
    pv
    progress_callback

    Returns
    -------

    """
    self.projected_value_selector.update_X(X)
    self.refresh(progress_callback)