Spaces:
Sleeping
Sleeping
Commit ·
73e2237
1
Parent(s): 108a09e
Added custom marker color and y-axis (only for 1D)
Browse files
app.py
CHANGED
|
@@ -28,9 +28,8 @@ df = solara.reactive(df_original[features.value].copy)
|
|
| 28 |
@solara.component
|
| 29 |
def process_data():
|
| 30 |
df_out = df_original[features.value].copy()
|
| 31 |
-
df_out = df_out.dropna() if drop_nans.value else df_out
|
| 32 |
df_out = df_out.sample(frac=training_ratio.value/100.0, random_state=42)
|
| 33 |
-
|
| 34 |
info_string = ""
|
| 35 |
for f in features.value:
|
| 36 |
x = df_out[f].to_numpy()
|
|
@@ -52,9 +51,6 @@ def process_data():
|
|
| 52 |
info_string = str(e)
|
| 53 |
df.set(df_out)
|
| 54 |
solara.DataFrame(df_out, items_per_page=5)
|
| 55 |
-
#info_message.set(info_string)
|
| 56 |
-
|
| 57 |
-
|
| 58 |
|
| 59 |
def reset():
|
| 60 |
features.value = default_features
|
|
@@ -64,7 +60,6 @@ def reset():
|
|
| 64 |
feature_maps[f].set('x')
|
| 65 |
scaler.set('none')
|
| 66 |
|
| 67 |
-
|
| 68 |
@solara.component
|
| 69 |
def InfoBox():
|
| 70 |
if len(info_message.value) > 0:
|
|
@@ -72,37 +67,30 @@ def InfoBox():
|
|
| 72 |
|
| 73 |
@solara.component
|
| 74 |
def BoxPlot():
|
| 75 |
-
if df.value is None:
|
| 76 |
return
|
| 77 |
fig = Figure()
|
| 78 |
ax = fig.subplots()
|
| 79 |
df.value.plot.box(figsize=(20,5), ax=ax)
|
| 80 |
-
|
| 81 |
ymin = min(df.value.min(numeric_only=True))
|
| 82 |
ymax = max(df.value.max(numeric_only=True))
|
| 83 |
-
|
| 84 |
yrange = solara.use_reactive((ymin, ymax))
|
| 85 |
ax.set_ylim(yrange.value[0], yrange.value[1])
|
| 86 |
-
|
| 87 |
solara.SliderRangeFloat("yrange min and max", value=yrange,min=ymin, max=ymax)
|
| 88 |
solara.FigureMatplotlib(fig)
|
| 89 |
solara.Markdown(f'{yrange}')
|
| 90 |
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
@solara.component
|
| 95 |
def EmbeddingPlot():
|
| 96 |
-
print('embedding plot')
|
| 97 |
-
|
| 98 |
embedding_method, set_embedding_method = solara.use_state('PCA')
|
| 99 |
n_components, set_n_component = solara.use_state(2)
|
| 100 |
-
#power_iteration_normalizer, set_power_iteration_normalizer = solara.use_state('auto')
|
| 101 |
n_neighbors, set_n_neighbors = solara.use_state(5)
|
| 102 |
lle_methods = ['standard', 'hessian', 'modified', 'ltsa']
|
| 103 |
lle_method, set_lle_method = solara.use_state('standard')
|
| 104 |
eigen_solver, set_eigen_solver = solara.use_state('auto')
|
| 105 |
eigen_solver_se, set_eigen_solver_se = solara.use_state(None)
|
|
|
|
|
|
|
| 106 |
|
| 107 |
with solara.Row():
|
| 108 |
solara.ToggleButtonsSingle(value=embedding_method, values=['PCA','TSNE','ISOMAP','LLE','SE','MDS'], dense=True, on_value=set_embedding_method)
|
|
@@ -112,8 +100,6 @@ def EmbeddingPlot():
|
|
| 112 |
solara.Select(label='eigen_solver (LLE, Isomap)', value=eigen_solver, values=['auto', 'arpack', 'dense'], on_value=set_eigen_solver)
|
| 113 |
solara.Select(label='eigen_solver (SE)', value=eigen_solver_se, values=[None, 'arpack', 'lobpcg', 'amg'], on_value=set_eigen_solver_se)
|
| 114 |
|
| 115 |
-
|
| 116 |
-
|
| 117 |
if embedding_method == 'PCA':
|
| 118 |
embedder = PCA(n_components=n_components)
|
| 119 |
elif embedding_method == 'SE':
|
|
@@ -139,18 +125,38 @@ def EmbeddingPlot():
|
|
| 139 |
df_embedded = pd.DataFrame(data_embedded)
|
| 140 |
df_embedded['pha'] = list(df_original.loc[df.value.index,'pha'])
|
| 141 |
df_embedded['moid'] = list(df_original.loc[df.value.index,'moid'])
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 146 |
if n_components == 1:
|
| 147 |
-
fig = px.scatter(df_embedded, x=0, y=
|
|
|
|
| 148 |
elif n_components == 2:
|
| 149 |
-
|
|
|
|
|
|
|
| 150 |
elif n_components == 3:
|
| 151 |
-
fig = px.scatter_3d(df_embedded, x=0,y=1,z=2,color=
|
| 152 |
-
|
| 153 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 154 |
except Exception as e:
|
| 155 |
solara.Error(str(e))
|
| 156 |
|
|
@@ -174,18 +180,8 @@ def Page():
|
|
| 174 |
solara.ToggleButtonsSingle(value=scaler, values=scalers)
|
| 175 |
solara.SliderInt(label='Training Ratio %', value=training_ratio, min=1, max=99)
|
| 176 |
|
| 177 |
-
#solara.Markdown(f"""
|
| 178 |
-
# # Drop_nans: {drop_nans.value}
|
| 179 |
-
# # trn_ratio {training_ratio.value}
|
| 180 |
-
# # features: {features.value}
|
| 181 |
-
# # scaler: {scaler.value}
|
| 182 |
-
# # feature_maps: {feature_maps}
|
| 183 |
-
# # info_message: {info_message.value}
|
| 184 |
-
# """)
|
| 185 |
InfoBox()
|
| 186 |
EmbeddingPlot()
|
| 187 |
BoxPlot()
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
Page()
|
| 191 |
|
|
|
|
|
|
| 28 |
@solara.component
|
| 29 |
def process_data():
|
| 30 |
df_out = df_original[features.value].copy()
|
|
|
|
| 31 |
df_out = df_out.sample(frac=training_ratio.value/100.0, random_state=42)
|
| 32 |
+
df_out = df_out.dropna() if drop_nans.value else df_out
|
| 33 |
info_string = ""
|
| 34 |
for f in features.value:
|
| 35 |
x = df_out[f].to_numpy()
|
|
|
|
| 51 |
info_string = str(e)
|
| 52 |
df.set(df_out)
|
| 53 |
solara.DataFrame(df_out, items_per_page=5)
|
|
|
|
|
|
|
|
|
|
| 54 |
|
| 55 |
def reset():
|
| 56 |
features.value = default_features
|
|
|
|
| 60 |
feature_maps[f].set('x')
|
| 61 |
scaler.set('none')
|
| 62 |
|
|
|
|
| 63 |
@solara.component
|
| 64 |
def InfoBox():
|
| 65 |
if len(info_message.value) > 0:
|
|
|
|
| 67 |
|
| 68 |
@solara.component
|
| 69 |
def BoxPlot():
|
| 70 |
+
if df.value is None or len(df.value) == 0:
|
| 71 |
return
|
| 72 |
fig = Figure()
|
| 73 |
ax = fig.subplots()
|
| 74 |
df.value.plot.box(figsize=(20,5), ax=ax)
|
|
|
|
| 75 |
ymin = min(df.value.min(numeric_only=True))
|
| 76 |
ymax = max(df.value.max(numeric_only=True))
|
|
|
|
| 77 |
yrange = solara.use_reactive((ymin, ymax))
|
| 78 |
ax.set_ylim(yrange.value[0], yrange.value[1])
|
|
|
|
| 79 |
solara.SliderRangeFloat("yrange min and max", value=yrange,min=ymin, max=ymax)
|
| 80 |
solara.FigureMatplotlib(fig)
|
| 81 |
solara.Markdown(f'{yrange}')
|
| 82 |
|
|
|
|
|
|
|
|
|
|
| 83 |
@solara.component
|
| 84 |
def EmbeddingPlot():
|
|
|
|
|
|
|
| 85 |
embedding_method, set_embedding_method = solara.use_state('PCA')
|
| 86 |
n_components, set_n_component = solara.use_state(2)
|
|
|
|
| 87 |
n_neighbors, set_n_neighbors = solara.use_state(5)
|
| 88 |
lle_methods = ['standard', 'hessian', 'modified', 'ltsa']
|
| 89 |
lle_method, set_lle_method = solara.use_state('standard')
|
| 90 |
eigen_solver, set_eigen_solver = solara.use_state('auto')
|
| 91 |
eigen_solver_se, set_eigen_solver_se = solara.use_state(None)
|
| 92 |
+
marker_color, set_marker_color = solara.use_state('pha')
|
| 93 |
+
y_axis, set_y_axis = solara.use_state('moid')
|
| 94 |
|
| 95 |
with solara.Row():
|
| 96 |
solara.ToggleButtonsSingle(value=embedding_method, values=['PCA','TSNE','ISOMAP','LLE','SE','MDS'], dense=True, on_value=set_embedding_method)
|
|
|
|
| 100 |
solara.Select(label='eigen_solver (LLE, Isomap)', value=eigen_solver, values=['auto', 'arpack', 'dense'], on_value=set_eigen_solver)
|
| 101 |
solara.Select(label='eigen_solver (SE)', value=eigen_solver_se, values=[None, 'arpack', 'lobpcg', 'amg'], on_value=set_eigen_solver_se)
|
| 102 |
|
|
|
|
|
|
|
| 103 |
if embedding_method == 'PCA':
|
| 104 |
embedder = PCA(n_components=n_components)
|
| 105 |
elif embedding_method == 'SE':
|
|
|
|
| 125 |
df_embedded = pd.DataFrame(data_embedded)
|
| 126 |
df_embedded['pha'] = list(df_original.loc[df.value.index,'pha'])
|
| 127 |
df_embedded['moid'] = list(df_original.loc[df.value.index,'moid'])
|
| 128 |
+
df_embedded['H'] = list(df_original.loc[df.value.index,'H'])
|
| 129 |
+
df_embedded['pdes'] = list(df_original.loc[df.value.index,'pdes'])
|
| 130 |
+
df_embedded['a'] = list(df_original.loc[df.value.index,'a'])
|
| 131 |
+
df_embedded['e'] = list(df_original.loc[df.value.index,'e'])
|
| 132 |
+
df_embedded['i'] = list(df_original.loc[df.value.index,'i'])
|
| 133 |
+
df_embedded['om'] = list(df_original.loc[df.value.index,'om'])
|
| 134 |
+
df_embedded['w'] = list(df_original.loc[df.value.index,'w'])
|
| 135 |
+
|
| 136 |
+
df_embedded_clean = df_embedded.dropna()
|
| 137 |
if n_components == 1:
|
| 138 |
+
fig = px.scatter(df_embedded, x=0, y=y_axis, color=marker_color,
|
| 139 |
+
hover_name='pdes',width=1024, height=768)
|
| 140 |
elif n_components == 2:
|
| 141 |
+
|
| 142 |
+
fig = px.scatter(df_embedded_clean, x=0,y=1,color=marker_color,
|
| 143 |
+
hover_name='pdes',width=1024, height=768)
|
| 144 |
elif n_components == 3:
|
| 145 |
+
fig = px.scatter_3d(df_embedded, x=0,y=1,z=2,color=marker_color,
|
| 146 |
+
hover_name='pdes',width=1024, height=768)
|
| 147 |
+
|
| 148 |
+
with solara.Row():
|
| 149 |
+
with solara.Column():
|
| 150 |
+
solara.Select(label='Marker Color',
|
| 151 |
+
value=marker_color,
|
| 152 |
+
values=[None,'pha','moid','H','a','e','i','om','w'],
|
| 153 |
+
on_value=set_marker_color)
|
| 154 |
+
solara.Select(label='Y-Axis (only in 1D plot)',
|
| 155 |
+
value=y_axis,
|
| 156 |
+
values=['moid','H','a','e','i','om','w'],
|
| 157 |
+
on_value=set_y_axis)
|
| 158 |
+
solara.FigurePlotly(fig)
|
| 159 |
+
|
| 160 |
except Exception as e:
|
| 161 |
solara.Error(str(e))
|
| 162 |
|
|
|
|
| 180 |
solara.ToggleButtonsSingle(value=scaler, values=scalers)
|
| 181 |
solara.SliderInt(label='Training Ratio %', value=training_ratio, min=1, max=99)
|
| 182 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 183 |
InfoBox()
|
| 184 |
EmbeddingPlot()
|
| 185 |
BoxPlot()
|
|
|
|
|
|
|
|
|
|
| 186 |
|
| 187 |
+
Page()
|