def view_advice()

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