Work in Progress 🚧
A generic, reusable Panel app for exploring AIND (Allen Institute for Neural Dynamics) analysis results across multiple projects.
- 🔄 Multi-project support - Switch between different AIND projects via dropdown
- 📊 Interactive data table - Filter, sort, and select records with Tabulator
- 🖼️ Asset viewer - Display PNG figures from S3 based on selected records
- 🔗 URL state sync - Shareable links that preserve filters, selections, and view state
- 🧩 Modular architecture - Easy to extend for new projects via configuration
Results stored in DocDB (per-project collections), accessed via aind-analysis-arch-result-access:
| Project | Description |
|---|---|
| Dynamic Foraging Model Fitting | MLE model fitting results for behavioral data |
| Dynamic Foraging NM | Neural modulation analysis results |
| Dynamic Foraging Lifetime | Lifetime analysis results |
Session-level data loaded directly from Han's S3 pipeline (df_sessions.pkl), independent of DocDB:
| Project | Description |
|---|---|
| Dynamic Foraging Basic Analysis | Session table with behavioral metrics, training stages, and water/weight tracking. Uses the same session table and visualizations as the Streamlit foraging behavior browser. |
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment and install dependencies
uv sync# Development (auto-reload on changes)
panel serve code/app.py --dev --showcode/
├── app.py # Main entry point
├── config/ # Project configurations
├── core/ # BaseApp, DataHolder pattern
├── components/ # UI components (table, filters, asset viewer)
└── data/ # Data loaders (DocDB + S3)
The app uses Panel for reactive UI with param.Parameterized state management. Data flows from DocumentDB/MongoDB through a DataHolder to reactive components via pn.bind(). New projects are added by defining configuration in code/config/projects.py.
🤖 Credits - Developed by Han Hou with Claude Code