yzhouchen001 commited on
Commit
649e64f
·
1 Parent(s): 48a221a

initial code

Browse files
Files changed (2) hide show
  1. app.py +102 -0
  2. requirements.txt +2 -0
app.py ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import io
4
+
5
+ st.set_page_config(page_title="Spectra Tool Demo", layout="wide")
6
+
7
+ st.title("Spectra Visualization Tool")
8
+
9
+ st.markdown("Provide inputs below or load one of the example datasets.")
10
+
11
+ # ------------------------
12
+ # Example presets
13
+ # ------------------------
14
+ examples = {
15
+ "Example 1": {
16
+ "spectra": """mz,intensity
17
+ 100,10
18
+ 150,50
19
+ 200,80
20
+ 250,40
21
+ 300,20
22
+ """,
23
+ "smiles": "CCO", # ethanol
24
+ "formula": "C2H6O",
25
+ "adduct": "[M+H]+",
26
+ },
27
+ "Example 2": {
28
+ "spectra": """mz,intensity
29
+ 120,15
30
+ 180,60
31
+ 240,30
32
+ 300,70
33
+ 360,25
34
+ """,
35
+ "smiles": "C6H6", # benzene
36
+ "formula": "C6H6",
37
+ "adduct": "[M+Na]+",
38
+ },
39
+ }
40
+
41
+ # ------------------------
42
+ # Session state defaults
43
+ # ------------------------
44
+ if "spectra" not in st.session_state:
45
+ st.session_state.spectra = ""
46
+ if "smiles" not in st.session_state:
47
+ st.session_state.smiles = ""
48
+ if "formula" not in st.session_state:
49
+ st.session_state.formula = ""
50
+ if "adduct" not in st.session_state:
51
+ st.session_state.adduct = ""
52
+
53
+ # ------------------------
54
+ # Example loader buttons
55
+ # ------------------------
56
+ cols = st.columns(len(examples))
57
+ for i, (ex_name, ex_data) in enumerate(examples.items()):
58
+ if cols[i].button(f"Load {ex_name}"):
59
+ st.session_state.spectra = ex_data["spectra"]
60
+ st.session_state.smiles = ex_data["smiles"]
61
+ st.session_state.formula = ex_data["formula"]
62
+ st.session_state.adduct = ex_data["adduct"]
63
+
64
+ # ------------------------
65
+ # Inputs
66
+ # ------------------------
67
+ st.subheader("Spectra (two-column CSV: mz, intensity)")
68
+ spectra_text = st.text_area(
69
+ "Paste spectra data here:",
70
+ value=st.session_state.spectra,
71
+ height=150,
72
+ placeholder="mz,intensity\n100,10\n150,50\n..."
73
+ )
74
+
75
+ st.subheader("SMILES")
76
+ smiles_input = st.text_input("Enter SMILES string:", value=st.session_state.smiles)
77
+
78
+ st.subheader("Formula")
79
+ formula_input = st.text_input("Enter molecular formula:", value=st.session_state.formula)
80
+
81
+ st.subheader("Adduct")
82
+ adduct_input = st.text_input("Enter adduct:", value=st.session_state.adduct)
83
+
84
+ # ------------------------
85
+ # Run button
86
+ # ------------------------
87
+ if st.button("Run"):
88
+ st.subheader("Results")
89
+
90
+ # Try parsing spectra
91
+ try:
92
+ spectra_df = pd.read_csv(io.StringIO(spectra_text))
93
+ st.write("Spectra Preview:")
94
+ st.dataframe(spectra_df.head())
95
+ except Exception as e:
96
+ st.error(f"Could not parse spectra: {e}")
97
+
98
+ st.write("**SMILES:**", smiles_input)
99
+ st.write("**Formula:**", formula_input)
100
+ st.write("**Adduct:**", adduct_input)
101
+
102
+ st.info("🔬 Interactive visualization will be displayed here.")
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ pandas
2
+ matplotlib