in src/hpcadvisor/main_gui.py [0:0]
def view_advice():
st.write("### Advice ")
st.text("")
uploaded_file = st.file_uploader(
"Choose data filter file (optional)", accept_multiple_files=False, type=["json"]
)
datafilter_file = None
if uploaded_file:
bytes_data = uploaded_file.read()
datafilter_file = json.loads(bytes_data)
# st.write("loaded data filter file:", uploaded_file.name)
appname = None
deployment = None
# TODO support multiple deployments via GUI
if datafilter_file:
if "appname" in datafilter_file:
appname = datafilter_file["appname"]
if "deployment" in datafilter_file:
deployment = datafilter_file["deployment"]
appname = st.text_input("Application name", appname)
deployment = st.text_input("Deployment (optional)", deployment)
datafilter = {}
if appname:
datafilter["appname"] = appname
if deployment:
datafilter["deployment"] = deployment
dataset_file = utils.get_dataset_filename()
appinputs = []
if not os.path.exists(dataset_file):
log.error("Dataset file not found: " + dataset_file)
return
datapoints = dataset_handler.get_datapoints(dataset_file, datafilter)
if not datapoints:
log.error("No datapoints found. Check dataset and datafilter files")
return
appinputs = dataset_handler.get_appinput_combinations(datapoints)
datafilter_appinputs = []
for appinput in appinputs:
filter = {}
filter["appinputs"] = appinput
datafilter_appinputs.append(filter)
if st.button(
"Get advice",
key="run_createadvice_button",
):
st.write("## Advice ")
st.write("This will take a while. Please wait...")
advice_data = {}
if datafilter_appinputs:
for datafilter_appinput_entry in datafilter_appinputs:
title, pareto_front = gen_advice_table(
datapoints, datafilter_appinput_entry
)
advice_data[title] = pareto_front
else:
title, pareto_front = gen_advice_table(datapoints, datafilter_appinputs)
advice_data[title] = pareto_front
for title, pareto_front in advice_data.items():
if title != "noappinput":
st.markdown(f"##### Appinput: {title}")
df = pd.DataFrame(
pareto_front, columns=["Exectime", "Cost", "Nodes", "SKU"]
)
df["Cost"] = df["Cost"].astype(float).apply(lambda x: round(x, 4))
st.table(df)
st.text("")
st.text("")
st.text("")