Skip to content

Latest commit

 

History

479 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Peptide Visual Lab

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.

CI License: MIT Version DOI

Status PRs welcome CodeQL

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.


Why PVL is different

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

Performance

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.


Screenshots

Quick Analyze β€” paste a single sequence, see results in seconds.
Quick Analyze single peptide flow
Results Overview β€” classification landscape, click any region to filter.
Set diagram drill-down
Smart Candidate Ranking β€” adjustable metric weights + presets.
Smart candidate ranking with weight bars
2D Backbone β€” color-coded residues from AlphaFold PDB.
2D backbone visualization
Correlation Matrix β€” pairwise Pearson correlations with rotated headers + diverging palette.
Correlation matrix with rotated headers

Architecture

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
Loading

Architectural decisions logged in docs/active/DECISIONS.md. Internal platform vision in docs/internal/TECH_PLATFORM_VISION.md.


Self-host in 3 minutes

git clone https://github.com/az-said/peptide_prediction.git
cd peptide_prediction
cp backend/.env.example backend/.env
make docker-up

Open http://localhost:3000. Done. Your data never leaves your machine.

Optional prediction tools

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.


Use PVL from Claude Desktop

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.

Setup (Claude Desktop)

  1. 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)
  2. Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

    {
      "mcpServers": {
        "pvl": {
          "command": "python",
          "args": ["-m", "pvl_mcp"],
          "env": { "PVL_API_URL": "http://localhost:8000" }
        }
      }
    }

    Point PVL_API_URL at your own PVL backend (a hosted instance, your VPS, or a local uvicorn api.main:app --port 8000).

  3. 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.


Tech stack

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

How it works

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)"]
Loading

Use cases

  • 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)

API

FastAPI auto-generates OpenAPI documentation at runtime. Once the backend is running:

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).


Documentation

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).

Architecture + scientific reference (docs/active/)

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

Running tests

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 pipeline

Total: 887 tests, all green. Tests are deterministic and run without network access.


Project structure

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

Status

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.


Citing PVL

If you use PVL in your research, please cite both the software and the underlying algorithm:

Software

@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}
}

Underlying algorithm

@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.


Authors

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.

Acknowledgements

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

License

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).

About

Peptide Visual Lab β€” open-source web platform unifying TANGO aggregation propensity, S4PRED secondary-structure prediction, and FF-Helix/SSW classification with interactive visualization and citable permalinks. For amyloid, antimicrobial, and chameleon peptide researchers.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages