Interactive companion to the OmegAMP paper -- a generative diffusion framework for antimicrobial peptide design.
pip install modlamp
# Build locally
python build_dashboard.py --data-dir data --output docs/index.html
# Or build + encrypt with password
npm install -g staticrypt # only needed for password protection
./deploy.sh --password YOUR_SECRET_HEREThe repository includes a workflow that builds the dashboard and deploys it to GitHub Pages automatically on every push to main.
- Push this repo to GitHub.
- Go to Settings > Pages > Source and select GitHub Actions.
- (Optional) To enable password protection, go to Settings > Secrets and variables > Actions and add a repository secret named
DASHBOARD_PASSWORD. - Push to
mainor trigger the workflow manually from the Actions tab.
The workflow will:
- Install Python + modlAMP
- Run
build_dashboard.pyto produce the HTML - Encrypt with StatiCrypt if
DASHBOARD_PASSWORDis set - Deploy to GitHub Pages
If no password secret is configured the dashboard is published unprotected.
For environments without GitHub Actions, the deploy.sh script builds the dashboard into docs/ for branch-based Pages deployment:
./deploy.sh --password YOUR_SECRET_HERE
git add -A && git commit -m 'update dashboard' && git pushThen set Settings > Pages > Source to deploy from branch main, folder /docs.
The dashboard is AES-encrypted with StatiCrypt. Without the password, the page source is an encrypted blob -- peptide sequences, MIC data, and all assay results are unreadable.
- Visitors see a login page and must enter the password
- "Remember me" saves a hashed credential in the browser for 30 days
- To change the password: update the
DASHBOARD_PASSWORDsecret and re-run the workflow
| Tab | Description |
|---|---|
| Activity | MIC across 20 strains + CC50/HC50/TI, sortable by family, group, or any column |
| Physicochemical Landscape | 8 descriptors (charge, hydrophobicity, moment, aromaticity, ...) with strain-selectable MIC coloring |
| Membrane Activity | NPN/DiSC3(5) quadrant plots for membrane disruption profiling |
| Target Binding | LPS neutralization (dose-response +/- Ca2+) and DNA binding (deltaA), family-grouped bar charts |
| Structure | BeStSel secondary structure across 4 solvents |
| Safety | MIC vs CC50/HC50 scatter with TI diagonal lines, strain selector |
- Experiment group filters -- De novo, Inactive-to-active, LPS-binding, DNA-binding with All/None buttons
- Shared strain selector -- choose strains for MIC geometric mean across Safety and Physicochemical views
- Shared family/category filters across all tabs
- Search by peptide name
- Pin peptides -- persists across tab switches
- Brush-to-zoom on scatter plots
- Click column headers to sort in heatmap
- Export CSV -- download currently filtered data
- URL state -- shareable links that restore exact view
| File | Rows | Required | Description |
|---|---|---|---|
omegamp_reference_table.csv |
217 | yes | Peptide metadata |
mic.csv |
217 | yes | MIC across 20 bacterial strains |
cc50.csv |
215 | yes | Cytotoxicity CC50 |
hc50.csv |
215 | yes | Hemolysis HC50 |
disc.csv |
196 | DiSC3(5) membrane depolarization | |
npn.csv |
196 | NPN outer membrane permeabilization | |
bestsel.csv |
190 | BeStSel secondary structure | |
lps_binding.csv |
577 | LPS binding (BC displacement) | |
dna_binding.csv |
111 | DNA binding (deltaA) |
Optional files are loaded if present; tabs with missing data render empty.
20 strains (15 Gram-, 5 Gram+), including 8 MDR clinical isolates:
| Resistance | Strain | ATCC # |
|---|---|---|
| CRAB | A. baumannii | BAA-1605 |
| CRE | E. coli | AIC222, BAA-3170 |
| ESBL | K. pneumoniae | BAA-2342 |
| FQR | P. aeruginosa | BAA-3197 |
| MRSA | S. aureus | BAA-1556 |
| VRE | E. faecalis, E. faecium | 700802, 700221 |
- Python 3.8+ with modlAMP -- physicochemical descriptors
- Node.js with StatiCrypt -- password protection (optional)
- D3.js v7 -- loaded from CDN at runtime, no local install needed