Blog
How to Check Epitope Allergenicity, Toxicity and Antigenicity: VaxiJen, AllerTOP and ToxinPred
- August 13, 2026
- Posted by: Ragini Mishra
- Category: Bioinformatics

Screen an epitope shortlist in three passes: toxicity on ToxinPred, allergenicity on a predictor such as AllerTOP or AllergenFP, and antigenicity on VaxiJen with the target organism set to match your pathogen. Run the disqualifying filters first, record the threshold and model you used, and treat every score as a prioritisation filter rather than a safety result.
Every immunoinformatics paper contains a sentence like “seven epitopes were predicted as antigenic, non-allergenic and non-toxic”. That sentence is the output of three or four web servers, each with settings that change the answer, and almost no tutorial says which settings were used. Students end up submitting peptides one at a time, accepting whatever the page returns, and then discovering at write-up that they cannot reconstruct how a number was produced.
This guide is about the servers themselves: which model to pick, which threshold to set, how to submit a whole list instead of one peptide, how to read the output line, and what to do when a score lands on the boundary. If you have not built the shortlist yet, start with B-cell epitope prediction in BepiPred and ABCpred and T-cell epitope prediction in NetMHCpan and IEDB, both part of the immunoinformatics learning track.
In what order should you run the three screens?
Run the cheapest disqualifying filter first. A peptide predicted toxic is out of your construct no matter how good its antigenicity score is, so computing that antigenicity score first wastes the effort. The practical order is toxicity, then allergenicity, then antigenicity, then the physicochemical check on the assembled construct.
The order matters for a second reason that has nothing to do with speed. Toxicity and allergenicity are binary calls that remove a peptide from the list. Antigenicity is a continuous score you use to rank what survives. Ranking a list you are still deleting from means re-ranking it later.
The screens also sit at two different levels. Individual epitopes get screened to build the shortlist. The assembled construct gets screened again, because joining peptides creates junction sequences that did not exist in any of the parts. The construct design guide covers that assembly step and the linkers that create those junctions. This guide stays at the level of the servers.
Which server does what, and which ones can you link to?
Four servers cover the standard screen. They differ in what they predict, what they accept as input, and whether they will respond to anything other than a browser.
| Server | What it predicts | Input it accepts | Submission mode | Threshold convention |
|---|---|---|---|---|
| VaxiJen v2.0 | Whole-protein antigenicity, alignment-free | Plain sequence or FASTA | Single or multiple sequences, target organism selected by the user | User-set score cut-off, reported in your methods |
| AllerTOP v2 | Allergen or non-allergen | Plain sequence, single-letter code | Single sequence | Binary call, no numeric cut-off to set |
| AllergenFP v1.0 | Allergen or non-allergen, descriptor fingerprints | Plain sequence, single-letter code | Single sequence | Binary call with a Tanimoto similarity index |
| ToxinPred | Peptide toxicity | FASTA text or uploaded file | Batch virtual scanning of a whole list | SVM threshold selected from a drop-down, default 0.0 |
| ExPASy ProtParam | Physicochemical properties | Plain sequence or a UniProt accession | Single sequence | Published cut-offs, for example instability index 40 |
Two of these are not linkable from this site. The server hosting VaxiJen and AllerTOP returns a 403 error to any client that is not a browser, so this article names both in prose without a hyperlink. ToxinPred and ProtParam respond normally and are linked below. That is a hosting quirk, not a comment on the tools.
How do you score antigenicity on VaxiJen without invalidating the result?
VaxiJen does not compare your sequence to known antigens. It converts the sequence into a fixed-length numeric vector and classifies that vector. The original paper by Doytchinova and Flower, published in BMC Bioinformatics in 2007, describes the method as based on “auto cross covariance (ACC) transformation of protein sequences into uniform vectors of principal amino acid properties”. That single design decision explains most of the practical advice that follows.
Because the method is alignment-free, a novel sequence with no similarity to any known antigen still gets a score. Because the models were derived separately for bacterial, viral and tumour antigens, from training sets of 100 known antigens and 100 non-antigens each, the model you select changes the number you get. The paper reports prediction accuracy of 70% to 89% across internal leave-one-out cross-validation and external test sets.
Three rules follow from that:
- Set the target organism to match your pathogen, and record it. The methods section of our own monkeypox study states plainly that “the target organism selected was the virus and the protein sequences in plain format were used as input”. Write your version of that sentence before you start, not afterwards.
- Never compare scores computed under two different models. A score of 0.51 from the viral model and 0.48 from the bacterial model are not two points on one scale.
- State the cut-off you applied. The threshold is a value you choose, not a property of the classifier. In our dengue study the four serotype polyprotein sequences were reported as antigenic at a score above 0.4, and the finished construct scored 0.463, which is stated in the paper’s results rather than left implicit.
One more limitation is worth being honest about, because it is the most common misuse. The models were derived for prediction of whole-protein antigenicity. Scoring a 9-mer with them is outside what the training data represented. Doing it is standard practice in the published literature, ours included, but it is an extrapolation, and the right way to handle an extrapolation is to say you made it.
How do you handle an allergenicity call that two servers disagree on?
Allergenicity predictors disagree with each other far more often than antigenicity predictors do, because they are trained on different allergen databases and use different classifiers. AllerTOP v2, described by Dimitrov and colleagues in the Journal of Molecular Modeling in 2014, uses amino acid E-descriptors with auto- and cross-covariance transformation, and compares logistic regression, decision trees, naive Bayes, random forest, a multilayer perceptron and k nearest neighbours. The best performer was kNN at 85.3% accuracy under 5-fold cross-validation.
An accuracy in the mid-eighties means roughly one call in seven is wrong. So a single PROBABLE ALLERGEN result is a reason to run a second predictor, not a reason to delete the peptide. Choose the second predictor deliberately and say why you chose it. Our monkeypox study used AllergenFP v1.0 for exactly this reason, on the stated grounds that it “was found to be the most accurate in identifying both allergens and non-allergens in comparison with different tools such as AlgPred, AllerTOP, AllerHunter, and APPEL”. That is a defensible methods sentence. “The peptide was non-allergenic” is not.
AllergenFP takes a different route to the same question. As described in Bioinformatics in 2014, it converts the ACC vectors into binary fingerprints and compares them by Tanimoto coefficient, and on a set of 2,427 known allergens and 2,427 non-allergens it classified 88% correctly with a Matthews correlation coefficient of 0.759. Two servers built by overlapping groups, on related descriptors, still land in different places on individual peptides. That is the reason to run two.
When two predictors disagree, the honest options are to drop the peptide, or to keep it and report both calls. Reporting one call and hiding the other is the version that fails a viva.
Want the guided, hands-on version?
Our live Molecular Modeling & MD Simulations cohort bootcamp takes you from zero to running real docking and MD workflows, with a portfolio project for your grad-school applications.
How do you run a whole epitope list through ToxinPred?
ToxinPred is the one server in this set built for lists. Its Virtual Scanning page takes a whole FASTA block or an uploaded file and returns one row per peptide, so a shortlist of 30 epitopes is a single submission rather than 30.
The method paper by Gupta and colleagues, published in PLOS ONE in 2013, reports that the dipeptide-composition model reached 94.50% accuracy with a Matthews correlation coefficient of 0.88, and around 90% accuracy on independent datasets. The training data matters for how you use it: toxic peptides of 35 or fewer residues were collected from toxin databases, with non-toxic sequences taken from Swiss-Prot and TrEMBL. The algorithm page gives the exact composition of the main dataset, which is 1,805 positive and 3,593 negative training sequences with an independent set of 303 positive and 300 negative sequences, and an alternative dataset that swaps in 12,541 TrEMBL negatives.
Three submission choices change your result, so decide them before you submit:
- SVM dataset. The Swiss-Prot and TrEMBL variants are trained against different negative sets. Pick one and use it for the whole list.
- SVM alone or SVM plus motif. The hybrid mode searches your peptide against motifs found in known toxins. A motif hit raises the SVM score by 5, which means the peptide is called toxic regardless of the threshold you set. That is intended behaviour, and it is why a peptide with a comfortable SVM score can still come back toxic.
- SVM threshold. The drop-down defaults to 0.0 and runs from minus 1.0 to plus 1.0. Moving it makes the classifier more or less willing to call a peptide toxic, so a threshold you never touched is still a threshold you chose.
The output includes the physicochemical columns you select, including hydrophobicity, charge, molecular weight and isoelectric point. Save that table. It is the evidence for your methods section, and regenerating it later under settings you have forgotten is how a chapter loses a day.
What does ProtParam tell you about the assembled construct?
The screens above operate on peptides. ExPASy ProtParam operates on the finished construct, and it is the step students skip because it produces no pass or fail banner. It computes molecular weight, theoretical pI, extinction coefficient, estimated half-life, instability index, aliphatic index and GRAVY.
Three of those have published interpretations, all documented on the ProtParam documentation page:
- Instability index. Derived by Guruprasad and colleagues (1990, PMID 2075190) from a statistical analysis of 12 unstable and 32 stable proteins, using an instability weight assigned to each of the 400 dipeptides. The documentation states that a protein whose index is “smaller than 40 is predicted as stable, a value above 40 predicts that the protein may be unstable”.
- Aliphatic index. Ikai (1980, PMID 7462208) defines it as X(Ala) + 2.9 x X(Val) + 3.9 x (X(Ile) + X(Leu)), where the coefficients are the relative side-chain volumes of valine and of leucine and isoleucine against alanine. A higher value is associated with thermostability in globular proteins.
- GRAVY. The sum of Kyte and Doolittle hydropathy values across the sequence divided by the number of residues. A negative value indicates a hydrophilic protein.
For a worked example, the dengue construct from our own group came out at 32.6 kDa with a pI of 9.99, 22 negatively charged and 32 positively charged residues, and an aliphatic index of 88.19. Those are the kind of numbers your results table should carry, alongside the antigenicity score.
What do you do with a borderline score?
A score of 0.41 against a 0.4 cut-off is the situation no tutorial addresses. There are four defensible responses, and one that is not.
| Situation | Action | What you report |
|---|---|---|
| Score just above your cut-off | Keep the epitope, flag it in the table | The score and the cut-off, so the reader can see it was marginal |
| Score computed under the wrong organism model | Re-run under the correct model | Only the corrected run, with the model named |
| Score just below cut-off, and the epitope is otherwise strong | Keep it only if you say so explicitly, or replace it from your ranked list | Either the exception and its justification, or the replacement |
| Allergenicity call disputed between two servers | Report both calls, or drop the peptide | Both predictor names and both results |
| Any of the above | Lowering the cut-off until the peptide passes | Nothing defensible |
Trimming or extending the flanking residues is a fifth option, and it is a real one, since these predictors are composition-sensitive and a two-residue change alters the vector. It is also a change to the epitope, so the trimmed peptide has to go back through binding prediction before it goes back through screening.
The framing that keeps all of this honest: these servers are prioritisation filters. They tell you which of 40 candidate peptides deserve the next six months of work. They are not evidence that a peptide is safe in an animal, which is what in-vivo work is for. Our dengue construct went to rabbit immunisation for precisely that reason.
Troubleshooting: what these screening failures actually mean
The VaxiJen or AllerTOP page returns 403 or a blank result. The host blocks non-browser clients, so scripted submissions and command-line fetches fail while the same request from a browser tab works. Submit through a browser. If you are automating a large screen, this is the constraint that decides your pipeline design, not a transient outage.
Your batch run returns fewer rows than you submitted. The usual cause is FASTA headers. A header containing spaces, pipes or non-ASCII characters can truncate a record or merge it with the next one. Rename every sequence to a short plain identifier such as EP01 through EP30 before submitting, and keep a lookup table mapping those back to the real epitopes.
You submitted the whole construct to a peptide-level toxicity model. ToxinPred’s models were built on peptides of 35 or fewer residues. A 250-residue construct is outside that range, which is what the protein-scanning mode exists for. Use the peptide mode for epitopes and the scanning mode for the assembly.
Two epitopes have antigenicity scores you cannot compare. Check whether they were run under the same target organism model. Scores from different models belong in different columns, or the earlier one gets re-run.
The same peptide gives a different score on re-submission. Check the settings first, since the drop-downs reset to defaults on a fresh page load and a threshold or dataset selection does not survive a browser reload. If the settings are identical and the score still differs, the server version has changed, which is a reason to re-run the whole list rather than mix results from two versions.
Frequently asked questions
Do I have to use VaxiJen for antigenicity?
No. It is the most widely used server in this workflow and it is free, which is why it appears in most published pipelines. Any antigenicity predictor is acceptable if you name it, state the model and threshold you used, and apply the same one across the whole shortlist.
What antigenicity threshold should I use?
Whatever value you can justify and will report. Published work using the viral model commonly applies a cut-off around 0.4, which is what our dengue study reported. The failure mode is not picking the wrong number, it is picking a number after seeing the scores.
Is a non-toxic prediction the same as a safety result?
No. ToxinPred returns a classifier output trained on known toxic peptides of 35 residues or fewer. It narrows a candidate list. Safety is established in vivo, which is why studies that reach animal work report both the prediction and the experimental outcome.
Should I screen epitopes, the construct, or both?
Both. Epitope-level screening builds the shortlist. Construct-level screening catches what assembly created at the junctions between epitopes and linkers. A result that changes between the two levels is informative and belongs in your discussion.
Can I automate this screen with a script?
Partly. ToxinPred accepts batch submissions and file uploads, so a list goes through in one pass. The servers that block non-browser clients have to be driven manually. Plan the manual steps into your timeline rather than discovering them the week before submission.
Where does this fit in the overall workflow?
After epitope prediction and before construct assembly, then again after assembly. The computational biology skills roadmap places screening inside the wider sequence of skills, and the immunoinformatics pillar covers the steps on either side.
Who wrote this
This guide was written by the StemSkills Lab team, whose members have more than a decade of combined work in sequence and structural bioinformatics, drug discovery and design, and multiscale molecular modeling. The screening workflow described here is the one used in the team’s published designs, including a monkeypox multi-epitope vaccine in which seven epitopes, two T-helper, four cytotoxic T-cell and one linear B-cell, were selected as antigenic, non-allergenic, interferon-gamma activating and non-toxic, and a cross-reactive dengue vaccine that carried ten conserved epitopes through to in-vivo validation. The full list is on the research and publications page.
Want the guided, hands-on version?
Our live Molecular Modeling & MD Simulations cohort bootcamp takes you from zero to running real docking and MD workflows, with a portfolio project for your grad-school applications.