-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
268 lines (242 loc) · 9.34 KB
/
index.html
File metadata and controls
268 lines (242 loc) · 9.34 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home - OpenSpectro</title>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<style>
/* Common styles from original index.html */
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Poppins', sans-serif; background: #fdfdfd; }
header { padding: 1rem; background: linear-gradient(135deg, #7f7fd5, #86a8e7, #91eae4); color: #fff; }
main { padding: 1rem 2rem; background-color: #fafafa; }
h1 { font-size: 1.8rem; font-weight: 700; text-shadow: 1px 1px 2px rgba(0,0,0,0.2); }
.logo-container {
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 20px;
}
.logo {
width: 80px;
height: auto;
margin-bottom: -3px;
}
.logo-text {
font-family: 'ChalkBoard'; /* Playful, childlike font */
font-size: 4.5rem; /* Adjust as needed */
font-weight: 700; /* Thicker weight */
margin-left: 20px; /* Adjust as needed */
text-transform: uppercase; /* Optional: Make it uppercase for more impact */
letter-spacing: 2px; /* Add spacing between letters for a unique look */
/* Visible spectrum gradient */
background: linear-gradient(
to right,
violet,
indigo,
blue,
green,
yellow,
orange,
red
);
-webkit-background-clip: text; /* Clip the background to the text */
-webkit-text-fill-color: transparent; /* Make the text transparent */
background-clip: text;
}
.hero-section {
background: linear-gradient(135deg, #7f7fd5 0%, #86a8e7 100%);
padding: 4rem 0;
text-align: center;
color: white;
}
.paper-card {
background: white;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
padding: 2.5rem;
margin-top: -50px;
position: relative;
}
.features-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
margin: 3rem 0;
}
.feature-card {
text-align: center;
padding: 1.5rem;
border-radius: 10px;
background: #f8f9fa;
transition: transform 0.3s ease;
}
.feature-card:hover {
transform: translateY(-5px);
}
.usage-steps {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
margin: 2rem 0;
}
.step {
text-align: center;
padding: 1.5rem;
border: 2px solid #7f7fd5;
border-radius: 10px;
}
.citation-box, .github-box {
background: #f8f9fa;
padding: 1.5rem;
border-left: 4px solid #7f7fd5;
margin: 2rem 0;
position: relative;
}
.copy-button {
position: absolute;
right: 1rem;
top: 1rem;
background: #7f7fd5;
color: white;
border: none;
padding: 0.5rem 1rem;
border-radius: 5px;
cursor: pointer;
}
.copy-button:hover {
background: #86a8e7;
}
.acc-button {
display: inline-flex;
align-items: center;
padding: 1rem 2rem;
background: linear-gradient(135deg, #7f7fd5 0%, #86a8e7 100%);
color: white;
border-radius: 30px;
text-decoration: none;
font-weight: 600;
transition: transform 0.3s ease;
}
.acc-button:hover {
transform: translateY(-2px);
}
.fas {
margin-right: 0.5rem;
}
pre {
margin: 0;
padding: 1rem;
background: #f8f9fa;
border-radius: 5px;
font-family: monospace;
white-space: pre-wrap; /* Ensures text wraps if it exceeds the container width */
}
</style>
</head>
<body>
<header>
<h1>OpenSpectro: An Open-Source 3D Spectroscopic Profiling Platform</h1>
</header>
<main>
<section class="hero-section">
<div class="container">
<div class="logo-container">
<img src="openspectro/static/figure/home/logo.png" alt="OpenSpectro Logo" class="logo">
<span class="logo-text">OpenSpectro</span>
</div>
<h1>Spectroscopic Profiling for Biomedical Analysis</h1>
</div>
</section>
<section class="content-section">
<div class="container">
<div class="paper-card">
<div class="abstract-section">
<h2><i class="fas fa-file-alt"></i>Abstract</h2>
<p>Spectroscopic analysis is essential for identifying optical-based molecular signatures—distinct patterns observed across various wavelengths. Understanding these signatures provides critical insights for designing wearable health-monitoring devices. In particular, constructing three-dimensional (3D) spectroscopic graphs of molecular spectra enables the optimization of multi-wavelength photoplethysmography (PPG) sensors, improving their accuracy and performance. However, no prior work has systematically mapped spectroscopic signatures to optimize wavelength combinations, slowing advancements in multi-wavelength PPG sensor deployment. To address this gap, we introduce OpenSpectro, an open-source spectroscopic profiling platform for visualizing and sharing molecular spectral data, particularly human physiological biomarkers. OpenSpectro features a preliminary spectroscopic database containing 17 biomarkers and a spectral attention optimization model that identifies customized wavelength attention weights for each biomarker. </p>
</div>
<div class="features-grid">
<div class="feature-card">
<h3>3D Visualization</h3>
<p>Interactive 3D molecular signature analysis with real-time manipulation</p>
</div>
<div class="feature-card">
<h3>Wavelength Optimization</h3>
<p>Multi-PPG wavelength optimization given target biomarker signature</p>
</div>
<div class="feature-card">
<h3>Collaborative Platform</h3>
<p>Share and compare spectroscopic profiles with researchers worldwide</p>
</div>
</div>
<!-- <div class="citation-section">
<h2><i class="fas fa-quote-right"></i> Citation</h2>
<div class="citation-box">
<p>Please cite our work as:</p>
<code id="citation-text">
Haoran Zhang, Elizabeth Courtney, Kyle Quinn, Amanda Watson (2025). "OpenSpectro: 3D Spectroscopic Profiling for Biomedical Analysis".
IEEE Engineering in Medicine and Biology Society. DOI: 10.xxxx/xxxxxx
</code>
<button class="copy-button" onclick="copyToClipboard('citation-text')">Copy</button>
</div>
</div> -->
<div class="github-section">
<h2><i class="fab fa-github"></i> GitHub</h2>
<div class="github-box">
<p>Check out our GitHub repository for usage instructions and datasets:</p>
<code id="github-code">
<pre>
git clone https://github.com/OpenSpectro/openspectro.github.io.git
cd openspectro.github.io
pip install -r requirements.txt
gunicorn main:app
</pre>
</code>
<button class="copy-button" onclick="copyToClipboard('github-code')">Copy</button>
</div>
</div>
<div class="usage-section">
<h2><i class="fas fa-graduation-cap"></i> Platform Guide</h2>
<div class="usage-steps">
<div class="step">
<div class="step-number">1</div>
<h4>Database Navigation</h4>
<p>Access our comprehensive biomarker library through intuitive search filters</p>
</div>
<div class="step">
<div class="step-number">2</div>
<h4>Biomarker Selection</h4>
<p>Choose from 17+ physiological markers with detailed spectral profiles</p>
</div>
<div class="step">
<div class="step-number">3</div>
<h4>Interactive Analysis</h4>
<p>Utilize our 3D visualization tools and threshold sliders for optimal configuration</p>
</div>
</div>
</div>
<!-- <div class="cta-section">
<a href="{{ url_for('database.page') }}" class="acc-button">
Explore Database <i class="fas fa-arrow-right"></i>
</a>
</div> -->
</div>
</div>
</section>
</main>
<script>
function copyToClipboard(elementId) {
const element = document.getElementById(elementId);
const text = element.innerText;
navigator.clipboard.writeText(text).then(() => {
alert('Copied to clipboard!');
}).catch(err => {
console.error('Failed to copy text: ', err);
});
}
</script>
</body>
</html>