| name | immunogenicity |
| description | Estimate how likely a protein therapeutic is to provoke an anti-drug antibody response, and locate the sequence regions responsible. Use this skill to tile a sequence into peptides, predict class II MHC presentation across a population-representative allele panel, aggregate predicted binders into a per-region and whole-molecule risk score, compare a candidate against its closest human germline, and decide which liabilities are worth deimmunising. Also trigger on immunogenicity, anti-drug antibody, ADA, T-cell epitope, MHC class II, HLA-DRB1, NetMHCIIpan, NetMHCpan, deimmunisation, tregitope, or population coverage. |
| license | MIT |
| allowed-tools | Read Write Edit Bash |
| compatibility | Requires Python 3.10+. The bundled scripts tile sequences, parse NetMHCpan/NetMHCIIpan output, and aggregate epitope burden using only the standard library. Running the predictor itself needs NetMHCIIpan or NetMHCpan from DTU Health Tech, which is free for academic use but requires a signed licence and is not redistributable. |
| metadata | {"version":"1.0","skill-author":"K-Dense Inc.","openclaw":{"emoji":"🛡️","homepage":"https://services.healthtech.dtu.dk/services/NetMHCIIpan-4.3/"},"hermes":{"category":"research"}} |
Immunogenicity Risk
A protein therapeutic can provoke antibodies against itself, and when it does the drug stops
working — or worse, cross-reacts with an endogenous counterpart. This skill locates the sequence
regions responsible and puts them in proportion against the factors that usually matter more.
No installation, no network, no key for the bundled scripts. Running the predictor needs
NetMHCIIpan from DTU Health Tech, free for academic use under a signed licence and not
redistributable — which is why these scripts prepare its input and parse its output rather than
wrapping it.
Read references/running-netmhciipan.md before your first
scan, references/deimmunisation.md before changing a sequence, and
references/what-drives-ada.md before drawing a conclusion —
that one is judgement, not syntax, and it is mostly about what the scan cannot see.
The two scripts
| Script | Answers |
|---|
epitope_scan.py | Which regions present peptides, on how many alleles? |
ada_risk.py | What does that add up to, and what else should I be worried about? |
Class II, and %Rank
Two things to get right before anything else.
Anti-drug antibodies need CD4 T-cell help, which is class II restricted. Scanning a biologic
against MHC-I answers a question about cytotoxic T cells that is rarely the one being asked. Use
NetMHCIIpan.
Use %Rank, not affinity. Predicted IC50 is not comparable between alleles — each has its own
affinity distribution — so nM cannot be thresholded uniformly. %Rank normalises against a
background of random peptides and can. Conventionally ≤2% is a strong binder, ≤10% weak.
Collapse peptides to cores, then count alleles
python skills/immunogenicity/scripts/epitope_scan.py peptides --sequence-file mab.fa > peptides.txt
python skills/immunogenicity/scripts/epitope_scan.py parse --output out.txt
core example_peptide alleles_bound allele_coverage_pct best_rank promiscuous
LVESGGGLV EVQLVESGGGLVQPG 3 75.0 0.85 true
Consecutive 15-mers overlap by 14 residues and share a 9-mer core, so peptide hits overcount
epitopes by up to sevenfold. Three predictions here collapse to one epitope.