import gradio as gr import pandas as pd import json import functions # Assuming functions.py has necessary imports and functions import tempfile def process_tables(table1_path, table2_path, params_file_path): # Load tables table1 = pd.read_excel(table1_path.name) table2 = pd.read_excel(table2_path.name) # Load parameters from the JSON file with open(params_file_path.name, 'r') as f: params = json.load(f) # Extract parameters harmonization = params.get("harmonization", True) columns_embeddings_col1 = params.get("columns_embeddings_col1", "Indicator Name") columns_embeddings_col2 = params.get("columns_embeddings_col2", "Indicator name (leonardo)") # Process column names into lists columns_embeddings_col1 = [col.strip() for col in columns_embeddings_col1.split(',')] columns_embeddings_col2 = [col.strip() for col in columns_embeddings_col2.split(',')] # Process the tables using a function from functions.py result_final = functions.process_similarity_results( table1=table1, table2=table2, columns_embeddings_col1=columns_embeddings_col1, columns_embeddings_col2=columns_embeddings_col2, harmonization=harmonization ) # Save the result to a temporary CSV file result_path = tempfile.NamedTemporaryFile(suffix=".csv", delete=False).name result_final.to_csv(result_path, index=False) return result_path # Define the Gradio interface iface = gr.Interface( fn=process_tables, inputs=[ gr.File(label="Upload Table 1 (Client Indicators or Framework Table)"), gr.File(label="Upload Table 2 (Internal Indicator or Indicator Table)"), gr.File(label="Upload Parameters File (JSON format)") ], outputs="file", description=( "Upload two tables and a JSON parameters file to process them. The parameters file should include: " "'harmonization' (True or False), 'columns_embeddings_col1' (comma-separated column names), " "and 'columns_embeddings_col2' (comma-separated column names)." ) ) iface.launch()