Skip to content
Back to skills

Ml Peptide Generation

ASecurity

Generates candidate binder peptides for a target protein using the PepMLM-650M masked language model — appends <mask> tokens to the target sequence and samples amino acids at each position, with illegal residues (X, B, Z) excluded from the sampling candidates. Reports pseudo-perplexity for each candidate, supports reproducible generation via an explicit random seed, and provides offline filtering and parameter-sweep analysis that needs no GPU. This skill should be used when designing peptides...

  • 75 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
datapythongobash

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add ssinder/bioinformatics-agent-skills --skill ml-peptide-generation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ml Peptide Generation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ml Peptide Generation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ssinder-ml-peptide-generation/badge)](https://www.skillsdirectory.com/skills/ssinder-ml-peptide-generation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ml-peptide-generation
description: >-
  Generates candidate binder peptides for a target protein using the PepMLM-650M
  masked language model — appends <mask> tokens to the target sequence and
  samples amino acids at each position, with illegal residues (X, B, Z)
  excluded from the sampling candidates. Reports pseudo-perplexity for each
  candidate, supports reproducible generation via an explicit random seed,
  and provides offline filtering and parameter-sweep analysis that needs no GPU.
  This skill should be used when designing peptides or protein fragments that
  should bind a target, generating a ranked candidate pool for a target
  sequence, or comparing how peptide length and top-k sampling settings affect
  candidate quality.
license: MIT
compatibility: Python 3.9+; generation needs torch + transformers; analysis needs only the standard library
metadata:
  version: "1.0"
  last-reviewed: "2026-10-26"
  skill-author: sinder
---

# ML Peptide Generation

## Overview

This skill generates candidate binder peptides for a target protein with
**PepMLM-650M**, a masked language model trained on protein sequences.

The mechanism is straightforward: append N `<mask>` tokens to the target
sequence, ask the model for its amino-acid distribution at each masked
position, and sample from it. Repeating that for N positions produces an
N-residue peptide.

Two things this skill does that a naive implementation does not:

- **Reproducible by construction.** Every run takes an explicit `--seed`.
  The same seed and the same input always produce the same peptides, so a
  parameter sweep is a controlled experiment rather than a lottery.
- **Illegal residues are excluded at sampling time, not afterwards.** The
  model's vocabulary contains `X` (unknown), `B` and `Z` (ambiguous amino
  acids). Sampling from the raw vocabulary produces peptides that are not
  chemically meaningful. Here those candidates are removed *before* the
  draw, so the sampling budget is not wasted on rejects.

## When to Use This Skill

- Designing a peptide or protein fragment intended to bind a target protein
- Producing a ranked candidate pool for a set of targets
- Comparing peptide lengths (10 / 12 / 15 aa) or top-k settings
- Screening candidates before committing to synthesis or wet-lab validation

## Quick Start

```bash
export PYTHONPATH="$PWD/packages"

# 生成(需要 torch + transformers)
python scripts/generate_peptides.py \
    --input-fasta targets.fasta \
    --output-dir results/ \
    --peptide-lengths 10,12,15 \
    --num-binders 20 \
    --seed 42

# 分析(只用标准库,无需 GPU)
python scripts/analyze_peptides.py \
    --input results/peptides.csv \
    --output-dir analysis/ \
    --max-ppl 5.0
```

## Workflow

1. **Collect targets** — `--input-fasta` (FASTA), `--input-csv` (needs `id`
   and `seq` columns) or `--input-seq` (a single sequence).
2. **Set the seed** — `--seed` fixes `random`, `numpy` and `torch`. The seed
   is written into every output row so a run can be reproduced later.
3. **Generate** — for each target × peptide length × top-k combination,
   sample `--num-binders` peptides and score each by pseudo-perplexity.
4. **Analyse** — `analyze_peptides.py` filters invalid peptides, applies
   optional PPL/length thresholds, and reports per-configuration statistics.
5. **Select** — rank by pseudo-perplexity and carry the top candidates into
   downstream validation.

## Parameters

### `generate_peptides.py`

| Parameter | Default | Description |
|---|---|---|
| `--input-fasta` | — | Target protein FASTA file |
| `--input-csv` | — | Target CSV file (needs `id` and `seq` columns) |
| `--input-seq` | — | A single target sequence |
| `--output-dir` | `peptide_results` | Output directory |
| `--per-target-dir` | off | Also write one CSV per target |
| `--peptide-lengths` | `10,12,15` | Peptide lengths to generate |
| `--top-ks` | `3` | Top-k values to sweep |
| `--num-binders` | `10` | Peptides per (target × length × top-k) |
| `--seed` | `42` | Random seed — same seed, same results |
| `--model` | `TianlaiChen/PepMLM-650M` | Pretrained model |
| `--device` | auto | Force `cuda` or `cpu` |
| `--allow-invalid-amino-acids` | off | Allow sampling `X`/`B`/`Z` |

### `analyze_peptides.py`

| Parameter | Default | Description |
|---|---|---|
| `--input` | required | One or more result CSV files |
| `--output-dir` | `peptide_analysis` | Output directory |
| `--max-ppl` | none | Keep only peptides with PPL ≤ this value |
| `--min-length` / `--max-length` | none | Peptide length bounds |
| `--keep-invalid` | off | Keep peptides containing non-standard residues |
| `--top-n` | `20` | How many to print |

## Outputs

| File | Content |
|---|---|
| `peptides.csv` | All candidates: rank, target, length, top-k, binder, pseudo-perplexity, validity flag, seed |
| `peptides.json` | Same content as JSON |
| `filtered_peptides.csv` | Candidates passing the filters, sorted by PPL |
| `parameter_analysis.csv` / `.json` | Per-configuration totals, mean/median/min/max PPL |

## Validation

- **Pseudo-perplexity measures the model's own belief, not binding affinity.**
  A low PPL means "this looks like a peptide the model would have generated",
  not "this binds the target". It is a triage filter for wet-lab follow-up,
  nothing more. Any claim about affinity needs an experimental or
  orthogonal computational check.
- **PPL is only comparable within one (target, length) pair.** The scale
  depends on the target sequence; do not compare PPL across different
  targets and conclude one target is "easier".
- **Check the validity flag.** `has_unknown_aa=True` means the peptide
  contains a residue the model could not decide on — such a peptide is not
  a real design. The skill excludes these at sampling time, but the flag
  stays in the output so the filter can be audited.
- **Verify reproducibility.** Re-run with the same `--seed` and diff
  `peptides.csv`; the files must be byte-identical apart from the
  `generated_at` timestamp.
- **Peptides shorter than about 8 residues rarely bind meaningfully.** Use
  `--min-length` to exclude them from a synthesis list.
- **The model truncates at 552 tokens.** Target sequences longer than that
  are rejected by the skill rather than silently truncated — a truncated
  target produces peptides for the wrong protein.

## References

- `references/methodology.md` — PepMLM mechanism, pseudo-perplexity derivation, sampling strategy
- `references/troubleshooting.md` — common failures and how to diagnose them
- Model card: <https://huggingface.co/TianlaiChen/PepMLM-650M>
- E-utilities context for target discovery: the `bioproject-search` skill

Files in this skill

  • SKILL.md6.6 KB
  • references/methodology.md8.8 KB
  • references/troubleshooting.md6.3 KB
  • requirements.txt606 B
  • scripts/analyze_peptides.py11.7 KB
  • scripts/generate_peptides.py11.6 KB
  • scripts/pepmlm_client.py20.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.