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)
|