Interactive web application for browsing and processing data from the SMI beamline at NSLS-II, served from the Tiled catalog.
Built with Panel and Bokeh for interactive visualization, and smi-tiled for data reduction.
- Search & filter — Stackable filters (text match, exact match, fulltext)
against the
smi/migrationcatalog (~2.7M scans). Results are shown newest-first with pagination. - Metadata — Full run metadata displayed as collapsible JSON tree.
- Primary — Scalar data table with configurable X/Y line plots.
- Baseline — Before/after baseline readings with column filtering.
- Explore — Side-by-side linked 1D plot and 2D detector image with a synced frame cursor.
- Process — Transmission and grazing-incidence reduction via
smi-tiled (
reduce_smi_combined,reduce_smi_gi). Produces 2D q-chi / qxy-qz maps and merged I(q) curves. - Scan Collection — Add processed scans for side-by-side I(q) comparison.
- pixi package manager
- A local editable clone of
smi-tiled
at the path referenced in
pixi.toml(defaults to../smi-tiled)
# Install all dependencies (first run takes a few minutes)
pixi install
# Launch the browser
pixi run serveThis opens the app at http://localhost:5006/smi_app.
The Tiled catalog URI defaults to https://tiled.nsls2.bnl.gov and the
catalog path to smi/migration. To change these, edit the constants at
the top of smi_app.py:
TILED_URI = "https://tiled.nsls2.bnl.gov"
CATALOG_PATH = "smi/migration"smi-browser/
├── smi_app.py # Main Panel application
├── tiled_browser.py # Tiled REST helpers (search, fetch, metadata)
├── pixi.toml # Pixi environment & dependencies
└── README.md
Default detector masks (
pil2M_mask_polygons.json,900KW_mask_polygons.json) are now bundled with smi-tiled and loaded automatically; the Process tab "Masks" expander shows the default name in its placeholder. Use the Explore tab's Mask overlay card to view, edit (PolyDraw / PolyEdit), or save a custom mask, then click Use in Process to apply it.
# Auto-reload on file changes
pixi run serve
# (--autoreload is already included in the task)
# Quick import check
pixi run checkTBD