import gradio as gr import pandas as pd def get_data_product_id_from_table(evt: gr.SelectData): id=evt.value return get_data_product_id(id) def get_data_product_id(id): print(id) image_path_front = dataset_merged_df.loc[dataset_merged_df['ID'] == id, 'Front photo'].values[0] image_path_ingredients = dataset_merged_df.loc[dataset_merged_df['ID'] == id, 'Ingredients photo'].values[0] image_path_nutritionals = dataset_merged_df.loc[dataset_merged_df['ID'] == id, 'Nutritionals photo'].values[0] features = ['brand', 'product_name', 'ingredients', 'energy_kj', 'energy_kcal', 'fat', 'saturated_fat', 'carbohydrates', 'sugars', 'fibers', 'proteins', 'salt'] data = [] for feature in features: product_values = dataset_merged_df.loc[dataset_merged_df['ID'] == id, [f'Reference_{feature}',f'Predicted_{feature}',f'accuracy_score_{feature}']] product_values_list = product_values.values.flatten().tolist() data.append([feature]+product_values_list) data = pd.DataFrame(data, columns=['Feature', 'Reference value', 'Predicted value', 'Accuracy score']) gradients = 1-data['Accuracy score'] data = data.map(lambda x: f'{x:g}' if isinstance(x, float) else x) data = data.style.background_gradient(axis=0, gmap=gradients, cmap='summer', vmin=0, vmax=1) plots = [image_path_front, image_path_ingredients, image_path_nutritionals] return {data_df: data, data_plot: plots, } def load_data(filepath): global dataset_merged_df global dataset_metadata dataset_merged_df = pd.read_csv(f"{filepath}") dataset_merged_df['mean_accuracy_score'] = dataset_merged_df.filter(regex='^accuracy_score').mean(axis=1) dataset_df = dataset_merged_df[['ID', 'Reference_brand', 'Reference_product_name', 'mean_accuracy_score']].copy() dataset_df = dataset_df.style.background_gradient(axis=0, gmap=1-dataset_df['mean_accuracy_score'], cmap='summer', vmin=0, vmax=1) return dataset_df def toggle_row_visibility(show): if show: return gr.update(visible=True) else: return gr.update(visible=False) # Custom CSS to set max height for the rows custom_css = """ .dataframe-wrap { max-height: 300px; /* Set the desired height */ overflow-y: scroll; } """ with gr.Blocks(css=custom_css) as demo: gr.HTML("