Single web tool combining aggregation propensity, secondary structure prediction, and fibril-forming helix detection for peptide researchers.
Built around Ragonis-Bachar et al. 2022's 4-category classification (Helix Β· FF-Helix Β· SSW Β· FF-SSW). Five surfaces: web Β· Python package Β· CLI Β· MCP server Β· Docker self-host.
Try the live demo Β· Self-host in 3 min Β· Documentation site Β· API Β· Contribute Β· Cite
Team member joining the project? β Alex Onboarding is the primary responder / operator guided path; Handoff is the general developer on-ramp.
PVL is the only peptide-prediction tool that puts every analysis in one dashboard, overlays predictions on the AlphaFold structure, and turns each analysis into a citable URL. The competition is single-algorithm CLI tools that emit static PNGs.
| What you get | How others handle it |
|---|---|
| 𧬠Multi-tool consensus β TANGO + S4PRED + FF-Helix + biochem + AlphaFold + UniProt in one place | Switch tabs across 5 sites; merge CSVs in Excel |
| π¬ Live 3D structure overlay β TANGO peaks + S4PRED helix segments + FF-Helix candidates + SSW zones rendered ON the AlphaFold structure via Mol* | Read coords from a flat file; manually paint residues in PyMOL |
| π Reproducibility-as-permalink β every analysis becomes a URL with version + SHA + thresholds. Paste it in a paper; reviewers see the same view | Screenshot for the supplement; pray it stays accurate |
| π€ AI-platform-ready β designed for MCP, Python package, CLI, and embeddable widget | Web-only, no API, no integration story |
π Open source Β· MIT Β· runs on your laptop β docker compose up and your data never leaves your machine |
Closed-source, paid, or hosted-only |
PVL is built for interactivity β every part of the pipeline is measured and tuned to disappear behind the result.
| Operation | Cold | Warm | Notes |
|---|---|---|---|
| Quick Analyze (single 17-aa peptide) | ~420 ms | ~6 ms | Cache hit on identical sequence + thresholds |
| Batch (118 peptides, Peleg-validated set, β€40 aa) | ~9 s | β | Includes batched-forward S4PRED ensemble |
| Single S4PRED forward (5-BiLSTM ensemble) | ~334 ms | β | Padded-batch path for Nβ₯2; ~4Γ faster than per-peptide |
Measured 2026-06-22 on a fresh DESY VM (Hetzner CX33-class, 4 vCPU, container-bound). Per-stage timings are available via PVL_PERF_LOGS=1; see docs/internal/PERF_TRACE_RECIPE_2026_06_21.md.
flowchart TB
A["π€ Researcher<br/>(Browser Β· Claude Desktop Β· Cursor Β· Jupyter)"] --> B
M["π€ LLM Agent<br/>(MCP-aware client)"] -. "Phase G1<br/>(planned v0.2)" .-> Mcp
Mcp["π°οΈ MCP Server<br/>(Python SDK)"] --> B
B["βοΈ React + Vite + Mol*<br/>(hover-everywhere drill-down)"] -- "REST<br/>(Pydantic v2 strict)" --> C
C["π FastAPI Backend"] --> D["π¦ Predictor Pipeline"]
D --> E1["TANGO<br/>(subprocess)"]
D --> E2["S4PRED<br/>(BiLSTM)"]
D --> E3["FF-Helix<br/>(pure Python)"]
D --> E4["Biochem<br/>(vectorized)"]
C --> F1["UniProt API"]
C --> F2["AlphaFold DB"]
C --> G["π Sentry<br/>(release-tagged + rich context)"]
classDef planned stroke-dasharray: 5 5,opacity:0.7
class M,Mcp planned
Architectural decisions logged in docs/active/DECISIONS.md. Internal platform vision in docs/internal/TECH_PLATFORM_VISION.md.
git clone https://github.com/az-said/peptide_prediction.git
cd peptide_prediction
cp backend/.env.example backend/.env
make docker-upOpen http://localhost:3000. Done. Your data never leaves your machine.
| Tool | Purpose | Required? | Where |
|---|---|---|---|
| S4PRED | Secondary structure (helix / beta / coil) | Optional | tools/s4pred/models/ (5 model files) |
| TANGO | Aggregation propensity | Optional | tools/tango/bin/tango |
| FF-Helix | Fibril-forming helix detection | Always available | Built-in (pure Python) |
Without S4PRED or TANGO, PVL still computes FF-Helix %, charge, hydrophobicity, ΞΌH, biochem properties, and the full classification pipeline.
Developing locally? See
docs/active/HANDOFF.mdΒ§2 β Day-1 setup for the full venv + frontend + backend dev-server walkthrough.
PVL exposes an MCP server so any MCP-aware LLM client (Claude Desktop, Cursor, Continue, Cline, Windsurf) can call PVL natively β paste a UniProt accession, ask for amyloid candidates, and get back a structured analysis with a permalink you can cite.
-
Install
pvl-mcp. Until the PyPI release ships, install from source:# from a clone of this repo cd mcp_server && pip install -e . # (post-PyPI: pip install pvl-mcp)
-
Add to your Claude Desktop config (
~/Library/Application Support/Claude/claude_desktop_config.jsonon macOS,%APPDATA%\Claude\claude_desktop_config.jsonon Windows):{ "mcpServers": { "pvl": { "command": "python", "args": ["-m", "pvl_mcp"], "env": { "PVL_API_URL": "http://localhost:8000" } } } }Point
PVL_API_URLat your own PVL backend (a hosted instance, your VPS, or a localuvicorn api.main:app --port 8000). -
Restart Claude Desktop. Try these prompts:
"Use PVL to look up its version."
"Use PVL to analyze the sequence GIGAVLKVLTTGLPALISWIKRKRQQ and tell me whether it is FF-Helix."
"Use PVL to search UniProt for amyloid peptides from S. aureus, length 10β50, then rank the top 5 by FF-Helix score."
The MCP server exposes the same prediction pipeline used by the web UI β every result comes back with PVL's exact category definitions (Helix / FF-Helix / SSW / FF-SSW) so the LLM can't hallucinate a Chou-Fasman propensity or confuse aggregation with fibril formation.
See docs/active/MCP_RUNBOOK.md for full configuration, the tool reference, Cursor / Continue setup, and troubleshooting.
| Frontend | React 18 Β· TypeScript 5 Β· Vite Β· Tailwind Β· shadcn/ui Β· Zustand Β· Recharts Β· Mol* |
| Backend | Python 3.11 Β· FastAPI Β· Pydantic v2 Β· pandas Β· PyTorch (CPU) |
| Predictors | TANGO (Linux 64-bit subprocess) Β· S4PRED (5-model BiLSTM ensemble) Β· FF-Helix (pure Python) Β· biochem (vectorized) |
| Observability | Sentry (release-tagged + rich context + source maps + Slack alerts + Seer AI triage) |
| CI/CD | GitHub Actions Β· CodeRabbit (AI PR review) Β· Dependabot (weekly batched) |
| Deployment | Docker Compose + Caddy (auto-TLS) Β· DESY Kubernetes (planned) |
| Reproducibility | Permalink-encoded analysis state Β· Zenodo DOI per release Β· CITATION.cff |
flowchart LR
A["π Paste a sequence<br/>or upload CSV/FASTA"] --> B["π PVL runs<br/>TANGO Β· S4PRED Β· FF-Helix Β· biochem"]
B --> C["π Interactive dashboard<br/>(classifications Β· distributions Β· drill-down)"]
C --> D["π Copy permalink<br/>or export figure pack"]
D --> E["π Cite in your paper<br/>(Zenodo DOI Β· paste URL)"]
- Identify amyloid candidates in a UniProt query (e.g., S. aureus reference proteome length 10-50)
- Compare wild-type vs mutant peptide cohorts side-by-side with overlay distributions
- Generate a paper figure pack β multi-panel SVG ready for a Nature supplement
- Automate analysis from Claude Desktop (Phase G1, MCP server in v0.2)
- Find peptides similar to a reference via vector embedding search (Phase 2 v0.2)
FastAPI auto-generates OpenAPI documentation at runtime. Once the backend is running:
- Interactive docs: http://localhost:8000/api/docs
- OpenAPI JSON: http://localhost:8000/api/openapi.json
- ReDoc view: http://localhost:8000/api/redoc
Selected endpoints (full list in docs/active/CONTRACTS.md):
| Endpoint | Method | Description |
|---|---|---|
/api/predict |
POST | Single sequence prediction |
/api/upload |
POST | Batch CSV / FASTA / XLSX upload |
/api/uniprot/execute |
POST | UniProt query β analysis pipeline |
/api/jobs/{id} |
GET | Poll async job status |
/api/version |
GET | Build version + SHA + timestamp |
/api/health |
GET | Health check (Sentry cron monitor) |
All request schemas use Pydantic v2 with extra="forbid" β unknown fields fail loudly with 422 (per ADR-002).
The doc tree splits into three buckets per the project's clean-push policy: active (publishable architecture + scientific reference), internal (process docs kept in repo for the why-trail), and archive (frozen historical artifacts).
| Document | What it covers |
|---|---|
ACTIVE_CONTEXT.md |
Architecture overview Β· entry points Β· data flow |
MASTER_DEV_DOC.md |
Consolidated architecture + decisions reference |
DEVELOPER_REFERENCE.md |
Pipeline internals Β· null semantics Β· debugging |
CONTRACTS.md |
API endpoints Β· request/response shapes |
DECISIONS.md |
Architectural decision records (ADRs) |
ROADMAP.md |
Phases AβL plus O / S β every planned feature with effort estimates |
KNOWN_ISSUES.md |
Honest known-bug list |
TESTING_GUIDE.md |
Test patterns Β· golden fixtures Β· debugging |
DEPLOYMENT.md |
VM + Docker + Caddy step-by-step |
CHANGELOG_PELEG.md |
Scientific changelog reviewed by Peleg Ragonis-Bachar |
SPECIALS.md |
Special handling rules (AΞ²42 etc.) |
SENTRY_RUNBOOK.md |
Observability ops Β· alert rules Β· error fingerprints |
MCP_RUNBOOK.md |
MCP server install + usage |
MOL3D_OVERLAY_SPEC.md |
Mol* 3D overlay technical spec |
UNIPROT_ENRICHMENT_SPEC.md |
UniProt integration spec |
VECTOR_SEARCH_SPEC.md |
LanceDB + ESM-2 vector search architecture |
ECOSYSTEM_GUIDE.md |
5-surface reference (web Β· Python Β· CLI Β· MCP Β· self-host) |
PAPER_METHODS_REFERENCE.md |
Methods-section-ready algorithm + dataset + tooling reference for the paper |
HANDOFF.md |
One-page next-developer on-ramp |
| Reference datasets | backend/data/reference_datasets/ β Peleg-118 fibril-forming peptides β€40 aa (curated 2026-06; UniProt + AmyPro + literature) + schema docs |
DESIGN_SYSTEM.md |
Tailwind + shadcn conventions |
A4_BIO_TOOLS_SUBMISSION.md |
bio.tools submission packet |
A5_ZENODO_RELEASE.md |
Zenodo release procedure |
CONTRIBUTING.md |
How to contribute Β· what to expect from a part-time-maintained project |
make test # Backend (pytest) β 463 deterministic, no-network tests
cd ui && npx vitest run # Frontend (vitest) β 424 component tests
make lint # Linters (ruff + ESLint)
make typecheck # Type checks (mypy + tsc)
make ci # Full pipelineTotal: 887 tests, all green. Tests are deterministic and run without network access.
peptide_prediction/
βββ backend/ # FastAPI Python backend
β βββ api/routes/ # Route definitions
β βββ services/ # Business logic
β βββ schemas/ # Pydantic v2 models (extra="forbid")
β βββ auxiliary.py # FF-Helix + 4-category classification
β βββ tango.py Β· s4pred.py # External predictor wrappers
β βββ tests/ # 463 pytest tests
βββ ui/ # React + TypeScript frontend
β βββ src/components/ # ~120 components incl. Mol3DViewer, SetDiagram
β βββ src/components/drilldown/ # Universal drill-down system
β βββ src/components/hover/ # Universal hover system
β βββ src/lib/ # metricRegistry, permalink, sentryContext
β βββ src/stores/ # Zustand: dataset, threshold, hover, drilldown
β βββ src/pages/ # Index, Results, PeptideDetail, QuickAnalyze
βββ pvl-cli/ # `pvl analyze` CLI (scaffolded β Wave 2)
βββ pvl-py/ # `import pvl` Python package (scaffolded β Wave 2)
βββ docker/ # Multi-stage Dockerfiles + 4 compose files
βββ docs/active/ # Living documentation (24 docs)
βββ docs/images/ # README screenshots
PVL is currently v0.3.0 pre-release. The pipeline implements Dr. Peleg Ragonis-Bachar's 4-category classification algorithm from Ragonis-Bachar et al. 2022 (Biomacromolecules). Her monthly scientific review is in progress; the Zenodo DOI mints on release tag.
If you use PVL in your research, please cite both the software and the underlying algorithm:
@software{pvl_2026,
author = {Ragonis-Bachar, Peleg and Azaizah, Said and Golubev, Aleksandr and Landau, Meytal},
title = {Peptide Visual Lab (PVL)},
version = {0.3.0},
year = {2026},
url = {https://github.com/az-said/peptide_prediction},
doi = {10.5281/zenodo.PENDING},
license = {MIT}
}@article{ragonis_bachar_2022,
author = {Ragonis-Bachar, Peleg and Rayan, Bader and Barnea, Eilon and Engelberg, Yizhaq and Upcher, Alexander and Landau, Meytal},
title = {Natural Antimicrobial Peptides Self-assemble as Ξ±/Ξ² Chameleon Amyloids},
journal = {Biomacromolecules},
year = {2022},
volume = {23},
number = {9},
pages = {3713--3727},
doi = {10.1021/acs.biomac.2c00582}
}The Zenodo DOI is auto-assigned on each GitHub release; the badge above updates once v0.3.0 ships.
PVL also exposes a per-analysis citation hook: every analysis URL is copyable + citable via the in-app Reproducibility Ribbon. Paste a permalink in your paper to give readers the exact same view you analyzed.
See CITATION.cff for machine-readable citation metadata.
Author order on the software citation reflects scientific contribution. The corresponding author for the published paper will be Prof. Meytal Landau.
| Algorithms + scientific lead |
Dr. Peleg Ragonis-Bachar Β· Technion (Department of Biology)
4-category classification, threshold definitions, scientific review, validation cohort. |
| Software + platform |
Said Azaizah
Β· MIT (incoming) + DESY
Lead developer β backend, frontend, ecosystem (5-surface), CI/CD, observability, deployment. |
| Scientific advisor |
Dr. Aleksandr Golubev Β· DESY + Technion
Research direction, lab adoption, infrastructure. |
| Corresponding author |
Prof. Meytal Landau Β· Technion + EMBL Hamburg + Centre for Structural Systems Biology
Lab PI, structural biology direction, paper correspondence. |
PVL stands on the shoulders of these tools and groups. Cite them where appropriate.
- Ragonis-Bachar et al. 2022 β the 4-category classification (Helix Β· FF-Helix Β· SSW Β· FF-SSW) implemented in this tool. Biomacromolecules 24, 413β425.
- TANGO β Fernandez-Escamilla et al., Nat Biotechnol 22, 1302β1306 (2004)
- S4PRED β Moffat & Jones, Bioinformatics 37, 3744β3751 (2021), doi:10.1093/bioinformatics/btab491
- Mol* β RCSB PDB + EBI + ETH consortium
- AlphaFold DB β Jumper et al. (2021); Varadi et al. (2024)
- DESY / CSSB β Prof. Meytal Landau lab; Dr. Aleksandr Golubev
MIT. Maintained part-time by Said with support from Peleg and Alex. See CONTRIBUTING.md for what part-time means in practice (TL;DR: 1β4 week response times during academic terms; bigger releases batched in summer breaks).




