RoyAalekh commited on
Commit
5ef39c4
·
verified ·
1 Parent(s): 5658fb9

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -231
app.py DELETED
@@ -1,231 +0,0 @@
1
- import panel as pn
2
- import pandas as pd
3
- import os
4
-
5
- from consts import INVERTER_ID_MAPPING, TEMPERATURE_COLUMNS_TO_USE, CURRENT, IRRADIANCE, VOLTAGE, POWER_DC, POWER_AC, T_AMBIENT, T_MODULE, T_HEATSINK, T_CPU, T_BOARD
6
- from plotting import (
7
- create_heatmap,
8
- create_iv_plot_with_power_curves,
9
- create_iv_plot,
10
- create_iv_plot_with_power_and_temperature_curves,
11
- create_iv_plot_with_temperature_curves,
12
- )
13
-
14
- # Function to load chunked data based on month selection
15
- def load_timeseries_data_for_month(month):
16
- start_date = pd.to_datetime(month).strftime('%Y-%m-01')
17
- end_date = (pd.to_datetime(month) + pd.offsets.MonthEnd()).strftime('%Y-%m-%d')
18
- file_name = f"enel_timeseries_data_{start_date}_{end_date}.csv"
19
- if not os.path.exists(file_name):
20
- return None
21
- return pd.read_csv(file_name, index_col=0, header=[0, 1, 2], parse_dates=True)
22
-
23
- def load_other_features_data_for_month(month):
24
- start_date = pd.to_datetime(month).strftime('%Y-%m-01')
25
- end_date = (pd.to_datetime(month) + pd.offsets.MonthEnd()).strftime('%Y-%m-%d')
26
- file_name = f"enel_other_features_data_{start_date}_{end_date}.csv"
27
- if not os.path.exists(file_name):
28
- return None
29
- return pd.read_csv(file_name, index_col=0, header=0, parse_dates=True)
30
-
31
- # Define the available months
32
- months = pd.date_range(start='2022-09-01', end='2023-08-31', freq='MS').strftime('%Y-%m').tolist()
33
-
34
- kpi_data = pd.read_csv(
35
- "kpi_data.csv", index_col=0, header=0, parse_dates=True
36
- )
37
-
38
- daily_timeseries_data = pd.read_csv(
39
- "daily_aggregated_timeseries_data.csv",
40
- index_col=0,
41
- header=0,
42
- parse_dates=True,
43
- )
44
-
45
- # Initialize Panel extension
46
- pn.extension("plotly")
47
-
48
- # Widgets for selecting month and columns
49
- month_selector = pn.widgets.Select(
50
- name='Choose a Month',
51
- options=months,
52
- )
53
-
54
- inverter_ids = pn.widgets.MultiSelect(
55
- name="Inverter IDs",
56
- value=[list(INVERTER_ID_MAPPING.keys())[0]],
57
- options=list(INVERTER_ID_MAPPING.keys()),
58
- size=8,
59
- )
60
- # Line Plots
61
- plot_power_curves = pn.widgets.Checkbox(name="Plot P-dc and P-ac", value=False)
62
- plot_temperature_curves = pn.widgets.Checkbox(name="Plot Temperatures", value=False)
63
-
64
- # Heatmaps
65
- heatmap_pr = pn.widgets.Checkbox(name="Heat Map PR", value=False)
66
- heatmap_sy = pn.widgets.Checkbox(name="Heat Map SY", value=False)
67
- heatmap_current = pn.widgets.Checkbox(name="Heat Map - Current", value=False)
68
- heatmap_voltage = pn.widgets.Checkbox(name="Heat Map - Voltage", value=False)
69
- heatmap_power = pn.widgets.Checkbox(name="Heat Map - Power", value=False)
70
- heatmap_irradiance = pn.widgets.Checkbox(name="Heat Map - Irradiance", value=False)
71
- heatmap_temperature = pn.widgets.Checkbox(
72
- name="Heat Map - Temperature Heatsink", value=False
73
- )
74
-
75
- # Create a loading spinner
76
- loading_spinner = pn.indicators.LoadingSpinner(width=50, height=50)
77
-
78
- # Global variables to store loaded data
79
- loaded_timeseries_data = None
80
- loaded_other_features_data = None
81
-
82
- # Panel interactive functions
83
- @pn.depends(
84
- inverter_ids.param.value,
85
- plot_power_curves.param.value,
86
- plot_temperature_curves.param.value,
87
- month_selector.param.value
88
- )
89
- def update_iv_plot(inverter_ids, plot_power_curves, plot_temperature_curves, selected_month):
90
- global loaded_timeseries_data, loaded_other_features_data
91
- if not selected_month:
92
- return pn.pane.Markdown("Please select a month to load data.")
93
-
94
- if loaded_timeseries_data is None or loaded_other_features_data is None:
95
- loaded_timeseries_data = load_timeseries_data_for_month(selected_month)
96
- loaded_other_features_data = load_other_features_data_for_month(selected_month)
97
-
98
- if loaded_timeseries_data is None or loaded_other_features_data is None:
99
- return pn.pane.Markdown("No data available for the selected month.")
100
-
101
- if not inverter_ids:
102
- return pn.pane.Markdown("No Inverters selected for Plotting.")
103
- else:
104
- # Plot IV + Power + Temperature Curves
105
- if plot_power_curves and plot_temperature_curves:
106
- return create_iv_plot_with_power_and_temperature_curves(
107
- loaded_timeseries_data, loaded_other_features_data, inverter_ids
108
- )
109
- # Plot IV + Temperature Curves
110
- elif (not plot_power_curves) and plot_temperature_curves:
111
- return create_iv_plot_with_temperature_curves(
112
- loaded_timeseries_data, loaded_other_features_data, inverter_ids
113
- )
114
- # Plot IV + Power Curves
115
- elif plot_power_curves and (not plot_temperature_curves):
116
- return create_iv_plot_with_power_curves(loaded_timeseries_data, inverter_ids)
117
- # Plot only IV Curves
118
- else:
119
- return create_iv_plot(loaded_timeseries_data, inverter_ids)
120
-
121
-
122
- @pn.depends(heatmap_pr.param.value)
123
- def update_heatmap_pr(heatmap_pr):
124
- if heatmap_pr:
125
- pr_df = kpi_data.filter(like="pr")
126
- pr_df.columns = [i.split("-")[1] for i in pr_df.columns]
127
- pr_heatmap = create_heatmap(pr_df, "PR Heatmap")
128
- return pn.Row(pr_heatmap)
129
- return pn.pane.Markdown("")
130
-
131
-
132
- @pn.depends(heatmap_sy.param.value)
133
- def update_heatmap_sy(heatmap_sy):
134
- if heatmap_sy:
135
- sy_df = kpi_data.filter(like="daily_specific_yield")
136
- sy_df.columns = [i.split("-")[1] for i in sy_df.columns]
137
- sy_heatmap = create_heatmap(sy_df, "SY Heatmap")
138
- return pn.Row(sy_heatmap)
139
- return pn.pane.Markdown("")
140
-
141
-
142
- @pn.depends(heatmap_current.param.value)
143
- def update_heatmap_current(heatmap_current):
144
- if heatmap_current:
145
- current_df = daily_timeseries_data.filter(like="I")
146
- current_df.columns = [i.split("-")[1] for i in current_df.columns]
147
- current_heatmap = create_heatmap(current_df, "Current Heatmap")
148
- return pn.Row(current_heatmap)
149
- return pn.pane.Markdown("")
150
-
151
-
152
- @pn.depends(heatmap_voltage.param.value)
153
- def update_heatmap_voltage(heatmap_voltage):
154
- if heatmap_voltage:
155
- voltage_df = daily_timeseries_data.filter(like="V")
156
- voltage_df.columns = [i.split("-")[1] for i in voltage_df.columns]
157
- voltage_heatmap = create_heatmap(voltage_df, "Voltage Heatmap")
158
- return pn.Row(voltage_heatmap)
159
- return pn.pane.Markdown("")
160
-
161
-
162
- @pn.depends(heatmap_power.param.value)
163
- def update_heatmap_power(heatmap_power):
164
- if heatmap_power:
165
- power_df = daily_timeseries_data.filter(like="P")
166
- power_df.columns = [i.split("-")[1] for i in power_df.columns]
167
- power_heatmap = create_heatmap(power_df, "Power Heatmap")
168
- return pn.Row(power_heatmap)
169
- return pn.pane.Markdown("")
170
-
171
-
172
- @pn.depends(heatmap_irradiance.param.value)
173
- def update_heatmap_irradiance(heatmap_irradiance):
174
- if heatmap_irradiance:
175
- irradiance_df = daily_timeseries_data.filter(like="G")
176
- irradiance_df.columns = [i.split("-")[1] for i in irradiance_df.columns]
177
- irradiance_heatmap = create_heatmap(irradiance_df, "Irradiance Heatmap")
178
- return pn.Row(irradiance_heatmap)
179
- return pn.pane.Markdown("")
180
-
181
-
182
- @pn.depends(heatmap_temperature.param.value)
183
- def update_heatmap_temperature(heatmap_temperature):
184
- if heatmap_temperature:
185
- temp_df = daily_timeseries_data.filter(like="THeatSink")
186
- temp_df.columns = [i.split("-")[1] for i in temp_df.columns]
187
- temp_heatmap = create_heatmap(temp_df, "T-Heatsink Heatmap")
188
- return pn.Row(temp_heatmap)
189
- return pn.pane.Markdown("")
190
-
191
-
192
- # Create dashboard layout
193
- dashboard = pn.Column(
194
- "# ENEL Dashboard",
195
- month_selector,
196
- # IV Plots
197
- pn.Row(
198
- pn.Column(inverter_ids, plot_power_curves, plot_temperature_curves),
199
- pn.panel(update_iv_plot, sizing_mode="stretch_width"),
200
- ),
201
- # Heatmaps
202
- pn.Row(
203
- pn.Column(heatmap_pr), pn.panel(update_heatmap_pr, sizing_mode="stretch_width")
204
- ),
205
- pn.Row(
206
- pn.Column(heatmap_sy), pn.panel(update_heatmap_sy, sizing_mode="stretch_width")
207
- ),
208
- pn.Row(
209
- pn.Column(heatmap_current),
210
- pn.panel(update_heatmap_current, sizing_mode="stretch_width"),
211
- ),
212
- pn.Row(
213
- pn.Column(heatmap_voltage),
214
- pn.panel(update_heatmap_voltage, sizing_mode="stretch_width"),
215
- ),
216
- pn.Row(
217
- pn.Column(heatmap_power),
218
- pn.panel(update_heatmap_power, sizing_mode="stretch_width"),
219
- ),
220
- pn.Row(
221
- pn.Column(heatmap_irradiance),
222
- pn.panel(update_heatmap_irradiance, sizing_mode="stretch_width"),
223
- ),
224
- pn.Row(
225
- pn.Column(heatmap_temperature),
226
- pn.panel(update_heatmap_temperature, sizing_mode="stretch_width"),
227
- ),
228
- )
229
-
230
- # Serve the dashboard
231
- dashboard.servable()