File size: 4,407 Bytes
e4ea87d
 
ed1d3d6
 
 
 
 
 
 
 
e4ea87d
ed1d3d6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14164b2
 
ed1d3d6
 
14164b2
ed1d3d6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
license: mit
library_name: pytorch
tags:
  - antimicrobial-peptides
  - protein-design
  - variational-autoencoder
  - cvae
  - bioinformatics
  - generative-model
---

# Controllable Antimicrobial Peptide Design — CVAE + Judge

Trained checkpoints for a conditional VAE that generates antimicrobial peptide (AMP)
sequences targeting a user-specified potency (MIC, minimum inhibitory concentration)
against *E. coli*, plus an independently trained CNN ("the Judge") that predicts MIC
from sequence and is used to evaluate generated candidates.

- **Code**: [github.com/Sloudis/controllable-amp-design](https://github.com/Sloudis/controllable-amp-design)
- **Dataset**: [Sloudis/controllable-amp-design-dataset](https://huggingface.co/datasets/Sloudis/controllable-amp-design-dataset)
- **Full report**: see `report/report.pdf` in the GitHub repo (methodology, training dynamics, evaluation)

## Files

| File | Model | Params | Description |
|---|---|---|---|
| `cvae_best.pt` | CVAE generator | ~3.99M | Bi-GRU encoder / autoregressive-GRU decoder, 32-dim latent |
| `judge_best.pt` | Judge predictor | ~329K | Multi-scale residual 1-D CNN (kernel sizes 3/5/7) |

## Architecture

**Generator (CVAE)**: a bidirectional, 3-layer GRU encoder (256 hidden units) maps a peptide
sequence + a shared learned embedding of the normalized target log10(MIC) to a 32-dimensional
diagonal-Gaussian latent. A 3-layer unidirectional GRU decoder (256 hidden units) is
re-conditioned on the latent sample and the score embedding at every timestep, generating
logits over a 22-symbol vocabulary (20 amino acids + PAD + EOS) autoregressively. Trained with
a β-rescaled, free-bits ELBO objective (free bits = 0.1, β annealed over 50 epochs) and 30%
word dropout to prevent posterior collapse.

**Judge**: parallel 1-D convolutions (kernel sizes 3, 5, 7) extract motifs at different
receptive fields, concatenated to 128 channels, expanded to 256, passed through a residual
block (with a 1×1-conv shortcut) back down to 128 channels, global-max-pooled, and regressed to
a scalar (normalized log10 MIC) through a small MLP head. Trained independently of the CVAE,
purely as a post-hoc evaluator — it never sees the conditioning score.

## Usage

Requires the model definitions from the [GitHub repo](https://github.com/Sloudis/controllable-amp-design)
(`src/models/cvae.py`, `src/models/judge.py`) and its `data/dataset.py` for the
vocabulary/encoding utilities.

```python
import torch
from huggingface_hub import hf_hub_download
from models.cvae import CVAE
from models.judge import Judge
from data.dataset import decode_sequence, normalize_score, denormalize_score

cvae_path = hf_hub_download("Sloudis/controllable-amp-design", "cvae_best.pt")
judge_path = hf_hub_download("Sloudis/controllable-amp-design", "judge_best.pt")

cvae = CVAE()
cvae.load_state_dict(torch.load(cvae_path, map_location="cpu"))
cvae.eval()

judge = Judge()
judge.load_state_dict(torch.load(judge_path, map_location="cpu"))
judge.eval()

# See src/evaluation/generate.py in the GitHub repo for a full generation CLI,
# including score normalization against the training set's log_mic mean/std.
```

## Evaluation

Measured on a held-out test set (1,000 sequences):

- **Judge**: Spearman ρ = 0.70, Pearson r = 0.73 (MIC prediction from sequence alone)
- **Generator**: 99.8% valid, 100% novel (not present in training data) sequences;
  amino-acid composition matches natural AMPs
- **Conditioning accuracy**: strongest in the densely-sampled mid-potency range
  (~65% hit rate within ±0.5 log10 MIC units), degrading toward the extremes of the
  potency range where training data is scarce

## Limitations

- Conditioning-accuracy numbers are only as good as the Judge itself (ρ=0.70, not a
  ground-truth oracle) — no generated peptide was synthesized or tested against live bacteria.
- Trained and conditioned on *E. coli* MIC only; says nothing about Gram-positive activity,
  selectivity, hemolysis/cytotoxicity, or synthesizability.
- Conditioning reliability degrades toward the extremes of the potency range (see the report,
  Sec. 6.3).

## Citation

```
Stavros Loudis. "Controllable Antimicrobial Peptide Design via Conditional Variational
Autoencoders." Technical University of Crete, 2026.
```

## License

MIT — see [LICENSE](https://github.com/Sloudis/controllable-amp-design/blob/main/LICENSE) in
the GitHub repo.