Local web viewer for multi-echo fMRI datasets using a FastAPI backend, a React frontend, NiiVue for image rendering, and Plotly for quantitative voxel plots.
- Upload one or more 4D NIfTI files representing separate echoes.
- Build a session manifest that groups echoes into datasets.
- View data in single-echo and synchronized compare layouts.
- Keep compare-view echoes aligned on crosshair position, timepoint, and shared colormap/display bounds by default.
- Show two quantitative panels:
- echo curve at the selected voxel and current timepoint
- time course at the selected voxel for the active echo
- Reserve room for reversible preprocessing through
niivue-niimathsession revisions.
Out of scope for this first implementation slice:
- GIFTI and surface rendering
- long-term persistent session storage
- ROI analysis and derived QC dashboards
- Backend: Python 3.13 managed with
uv - Frontend: React managed and built with
Vite
These are required project choices, not interchangeable defaults.
.
├── backend/
├── docs/
└── frontend/
npm install
npm run devThis starts both the FastAPI backend and the Vite frontend together from the repository root.
cd backend
uv sync
uv run uvicorn me_view.main:app --reload --app-dir srccd frontend
npm install
npm run devThe Vite dev server proxies /api requests to the FastAPI backend on port 8000.
- Each uploaded echo is expected to be a NIfTI volume, typically one 4D file per echo.
- Echoes in the same dataset should share spatial dimensions, affine alignment, and timepoint count.
- Echo ordering is inferred from filenames when possible and can be finalized explicitly through the session API.