|
import gradio as gr |
|
import pandas as pd |
|
|
|
def compare_protein_repeat_frequencies(file1, file2): |
|
|
|
df1 = pd.read_excel(file1.name) |
|
df2 = pd.read_excel(file2.name) |
|
|
|
|
|
common_cols = df1.columns.intersection(df2.columns) |
|
df1 = df1[common_cols] |
|
df2 = df2[common_cols] |
|
|
|
|
|
merged = pd.merge(df1, df2, on=["Entry ID", "Protein Name"], suffixes=('_file1', '_file2')) |
|
|
|
|
|
repeat_cols = common_cols[2:] |
|
diff_data = { |
|
"Entry ID": merged["Entry ID"], |
|
"Protein Name": merged["Protein Name"] |
|
} |
|
|
|
for col in repeat_cols: |
|
diff_data[col + "_diff"] = (merged[col + "_file1"] - merged[col + "_file2"]).abs() |
|
|
|
|
|
diff_df = pd.DataFrame(diff_data) |
|
diff_df["Total Difference"] = diff_df.iloc[:, 2:].sum(axis=1) |
|
diff_df_sorted = diff_df.sort_values(by="Total Difference", ascending=False) |
|
|
|
|
|
output_path = "comparison_output.xlsx" |
|
diff_df_sorted.to_excel(output_path, index=False) |
|
return output_path |
|
|
|
|
|
interface = gr.Interface( |
|
fn=compare_protein_repeat_frequencies, |
|
inputs=[ |
|
gr.File(label="Upload First Excel File"), |
|
gr.File(label="Upload Second Excel File") |
|
], |
|
outputs=gr.File(label="Download Comparison Excel"), |
|
title="Protein Repeat Comparator", |
|
description="Upload two Excel files containing protein repeat data. The app will compare frequencies and return a sorted Excel file showing differences." |
|
) |
|
|
|
interface.launch() |