File size: 2,458 Bytes
5cd21b9
 
 
b57c1d3
 
26343ed
b57c1d3
 
 
5223b02
b57c1d3
 
 
 
 
 
5223b02
 
 
 
b533841
 
 
 
5223b02
 
 
 
 
 
 
b533841
5223b02
 
 
 
 
 
 
 
 
 
 
b533841
 
5223b02
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26343ed
5223b02
 
 
26343ed
 
 
 
b533841
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
os.system("pip install streamlit pandas xlsxwriter openpyxl")

import streamlit as st
import pandas as pd
from io import BytesIO

st.set_page_config(page_title="Protein Repeat Comparator", layout="centered")
st.title("🧬 Protein Repeat Comparator")
st.write("Upload two Excel files. Only changed repeat frequencies will be shown in the result.")

uploaded_file1 = st.file_uploader("Upload First Excel File", type=["xlsx"])
uploaded_file2 = st.file_uploader("Upload Second Excel File", type=["xlsx"])

if uploaded_file1 and uploaded_file2:
    try:
        # Read both Excel files, assuming header is in second row
        df1 = pd.read_excel(uploaded_file1, header=1)
        df2 = pd.read_excel(uploaded_file2, header=1)

        # Automatically detect first two columns
        id_col = df1.columns[0]
        name_col = df1.columns[1]
        repeat_cols = df1.columns[2:]

        records = []

        for _, row1 in df1.iterrows():
            entry_id = row1[id_col]
            protein_name = row1[name_col]

            # Match in second file
            match = df2[(df2[id_col] == entry_id) & (df2[name_col] == protein_name)]
            if match.empty:
                continue
            row2 = match.iloc[0]

            for repeat in repeat_cols:
                freq1 = row1[repeat]
                freq2 = row2[repeat]
                if freq1 != freq2:
                    diff = abs(freq1 - freq2)
                    records.append({
                        id_col: entry_id,
                        name_col: protein_name,
                        "Repeat": repeat,
                        "Frequency File 1": freq1,
                        "Frequency File 2": freq2,
                        "Difference": diff
                    })

        result_df = pd.DataFrame(records)
        result_df = result_df.sort_values(by="Difference", ascending=False)

        output = BytesIO()
        with pd.ExcelWriter(output, engine="openpyxl") as writer:
            result_df.to_excel(writer, index=False)
        output.seek(0)

        st.success("✅ Comparison complete! Showing only changed repeats.")
        st.download_button(
            label="📥 Download Changed Repeats Excel",
            data=output,
            file_name="changed_protein_repeats.xlsx",
            mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        )

    except Exception as e:
        st.error(f"⚠️ Error: {e}")