Spaces:
Sleeping
Sleeping
| import dash | |
| from dash import html, dcc | |
| import dash_bootstrap_components as dbc | |
| dash.register_page(__name__, path='/spectroscopy') | |
| layout = html.Div([ | |
| html.Div([ | |
| html.H1("Spectroscopy: The Digital Fingerprint", className="text-white fw-bold mb-2"), | |
| html.P("The Golden Standard for Cosmic Mapping", className="lead text-info"), | |
| ], className="mb-5"), | |
| dbc.Card([ | |
| dbc.CardBody([ | |
| html.H3("The Golden Standard (L'étalon-or)", className="text-white mb-4"), | |
| html.P([ | |
| "By decomposing the light from a galaxy, we can identify specific 'lines' (peaks or dips) caused by ", | |
| "atoms such as ", html.B("Hydrogen"), " or ", html.B("Oxygen"), ". Since we know the exact ", | |
| "laboratory wavelength of these lines, we can precisely measure how much they have been shifted." | |
| ], className="text-light mb-4"), | |
| # Your new asset: spectro.png | |
| html.Div([ | |
| html.Img( | |
| src=dash.get_asset_url('spectro.png'), | |
| style={ | |
| "width": "100%", "maxHeight": "350px", "objectFit": "contain", | |
| "borderRadius": "15px", "marginBottom": "10px", | |
| "border": "1px solid rgba(0, 210, 255, 0.2)" | |
| } | |
| ), | |
| html.P("Galaxy Spectrum: Identifying H-alpha and OIII lines to calculate precise redshift.", | |
| className="text-muted small italic") | |
| ], className="text-center mb-5"), | |
| dbc.Row([ | |
| dbc.Col([ | |
| html.Div([ | |
| html.H5("The Insight", className="text-success"), | |
| html.P( | |
| "If we can identify these lines, the calculation of redshift is trivial and extremely precise. " | |
| "This is the ideal method, known as Spectroscopic Redshift." | |
| ), | |
| ], className="p-3 mb-4 rounded bg-dark border-start border-success border-4"), | |
| ], width=12, lg=6), | |
| dbc.Col([ | |
| html.Div([ | |
| html.H5("The Problem", className="text-warning"), | |
| html.P( | |
| "This method is very expensive in terms of exposure time. It is impossible to apply " | |
| "this to the billions of galaxies we must map to see the large-scale structure." | |
| ), | |
| ], className="p-3 mb-4 rounded bg-dark border-start border-warning border-4"), | |
| ], width=12, lg=6), | |
| ]), | |
| html.H4("The Mathematics of the Fingerprint", className="text-info mt-4 mb-3"), | |
| html.P([ | |
| "To find the redshift (", html.Span("z", className="text-info"), | |
| "), we compare the observed wavelength of a line to its rest wavelength:" | |
| ], className="text-light"), | |
| dcc.Markdown( | |
| r""" | |
| $$z = \frac{\lambda_{obs} - \lambda_{rest}}{\lambda_{rest}}$$ | |
| """, | |
| mathjax=True, | |
| style={"textAlign": "center", "fontSize": "28px", "color": "#00d2ff", "padding": "20px"} | |
| ) | |
| ]) | |
| ], className="modern-card p-4"), | |
| ]) |