import gradio as gr import pandas as pd def data_pre_processing(file_responses): # Financial Weights are in per decas and NOT per cents try: # Define the columns to be processed columns = [ '''Your financial allocation for Problem 1: Mention the percentage of your Tax Amount which you wish the Government would allocate through their annual budget, to implement a specific solution for your 1st problem.''', '''Your financial allocation for Problem 2: Mention the percentage of your Tax Amount which you wish the Government would allocate through their annual budget, to implement a solution specifically to your 2nd problem.''', '''Your financial allocation for Problem 3: Mention the percentage of your Tax Amount which you wish the Government would allocate through their annual budget, to implement a solution specifically to your 3rd problem.''' ] file_responses = file_responses[[ "Personal_TaxDirection_1_Wish", "Personal_TaxDirection_2_TaxPercentageAllocated" ]] # # Convert columns to numeric and fill NaN values with 0 # for col in columns: # file_responses[col] = pd.to_numeric(file_responses[col], errors='coerce').fillna(0) # # Calculate the Total Allocation # file_responses['Total Allocation'] = file_responses[columns].sum(axis=1) # # Convert the Tax Payment column to numeric # tax_payment_col = '''How much was your latest Tax payment (in U$D) ? # Please try to be as accurate as possible: # Eg.: If your last tax amount was INR 25,785/-; then convert it in U$D and enter only the amount as: 310. # If you have never paid tax, consider putting in a realistic donation amount which wish to contribute towards helping yourself obtain the desired relief.''' # file_responses[tax_payment_col] = pd.to_numeric(file_responses[tax_payment_col], errors='coerce').fillna(0) # # Calculate Financial Token Weights # for i, col in enumerate(columns, start=1): # file_responses[f'Financial Token Weight for Problem {i}'] = ( # file_responses[tax_payment_col] * file_responses[col] / file_responses['Total Allocation'] # ).fillna(0) return file_responses except Exception as e: return str(e) def nlp_pipeline(original_df): processed_df = data_pre_processing(original_df) return processed_df def process_excel(file): try: # Ensure the file path is correct file_path = file.name if hasattr(file, 'name') else file # Read the Excel file df = pd.read_excel(file_path) # Process the DataFrame result_df = nlp_pipeline(df) output_file = "Output_ProjectProposals.xlsx" result_df.to_excel(output_file, index=False) return output_file # Return the processed DataFrame as Excel file except Exception as e: return str(e) # Return the error message example_files = ['#TaxDirection (Responses)_BasicExample.xlsx', '#TaxDirection (Responses)_IntermediateExample.xlsx', '#TaxDirection (Responses)_UltimateExample.xlsx' ] # Define the Gradio interface interface = gr.Interface( fn=process_excel, # The function to process the uploaded file inputs=gr.File(type="filepath", label="Upload Excel File here. \t Be sure to check that the column headings in your upload are the same as in the Example files below. \t (Otherwise there will be Error during the processing)"), # File upload input examples=example_files, # Add the example files # outputs=gr.File(label="Download Processed Excel File"), # File download output outputs=gr.File(label="Download the processed Excel File containing the ** Project Proposals ** for each Location~Problem paired combination"), # File download output # title="Excel File Uploader", title="Upload Excel file containing #TaxDirections → Download HyperLocal Project Proposals\n", # description=( # "

Upload an Excel file to process and download the result " # "or use the example files.\n

" # "

\t The processed file will contain the project proposals for each " # "location-problem paired combination.

" # ) # Solid description with hyperlink description=( "

Upload an Excel file to process and download the result or use the example files (click on any of them to directly process the file and download the result).

" "

The processed output file (downloadable) will contain the project proposals for each Location~Problem paired combinations.\n

" "

Note: The example files provided above are for demonstration purposes. " "Feel free to upload your own Excel files to see the results. If you have any questions, refer to the documentation-links or contact " "support." "For more information, visit #TaxDirection weblink.

" ) # Solid description with right-aligned second sentence ) # Launch the interface if __name__ == "__main__": interface.launch()