Please note that NetMHCPan and NetMHCIIPan modes are only available for users with a valid DTU Health Tech license agreement.

The epitope scan API runs the Rosetta MHC II epitope prediction algorithm, as well as the NetMHCPan and NetMHCIIPan prediction algorithms (provided that the user has a license to use those tools) on an input protein structure or sequence. This API uses a machine learning model to predict epitopes based entirely on the sequence of the protein.  Structure input is provided as a convenience but the API will produce identical results regardless of whether a sequence or structure is used as input.

Currently, API outputs and some inputs are specific to the algorithm chosen for prediction.

Further background information and advice on interpreting the results of the epitope scan tool can be found in the Cyrus Bench Documentation

Quickstart

Command Line Examples

Run Rosetta epitope scan on an input sequence:

cyrus engine submit epitope-scan NLYIQWLKDGGPSSGRPPPS --allele-list-file alleles.txt

Run epitope scan on an input pdb using NetMHCPan:

cyrus engine submit epitope-scan input.pdb --mode=netmhcpan --allele-list-file alleles.txt

Run NetMHCIIPan on an input pdb using only the alleles in the specified file. Alleles should be listed 1 per line:

cyrus engine submit epitope-scan input.pdb --mode=netmhciipan --allele-list-file alleles.txt

Run NetMHCIIPan on an input FASTA with default allele list:

cyrus engine submit epitope-scan --fasta-file input.fasta --mode=netmhciipan

Python Examples

When using the python library, the alleles you are interested in must be specified explicitly from the list in the introduction of this document. This behavior differs from the command line client, which defaults to searching for all alleles

Run epitope scan on an input sequence :

from engine.epitope_scan.client import EpitopeScanClient

client = EpitopeScanClient()
job_id = client.submit(pdb_path=None, sequence="NLYIQWLKDGGPSSGRPPPS",mhc_list=["H-2-IAb", "HLA-DRB10101"])

Run epitope scan on an input pdb :

from engine.epitope_scan.client import EpitopeScanClient

client = EpitopeScanClient()
job_id = client.submit(pdb_path="input.pdb",mhc_list=["H-2-IAb", "HLA-DRB10101"])

Inputs

You must specify one of a PDB file, a sequence, or a FASTA file.

When using fasta file input, you. must strictly follow the guidelines described here: https://services.healthtech.dtu.dk/examples/example.fasta.html

  • all sequences must have a header with a name for the sequence

  • there must be no space between the > character starting the header

  • the file can have no blank lines

Options

Outputs

Rosetta Mode Epitope Scan Outputs

The API with --mode=rosetta returns a CSV file (rosetta_epitope_scan.csv) with the following fields:

NetMHCIIPan Mode Epitope Scan Outputs

The API with --mode=netmhciipan returns a TSV file (NetMHCIIPan_results.tsv) with the following fields:

NetMHCPan Mode Epitope Scan Outputs

The API with --mode=netmhcpan returns a TSV file (NetMHCPan_results.tsv) with the following fields:

Outputs with --native-sequence

Notes

NetMHCIIPan Eluted Ligand (EL) vs. Binding Affinity (BA)

Interpreting epitope predictions

To replicate CAD-style "best practices", API users could:

  1. for each epitope, calculate 'n_hits' = number of alleles where rank_percentage < 10

  2. sort by n_hits

Supported Alleles

The epitope scan predicts the immunogenicity of the protein with respect to the following alleles:

The Rosetta and NetMHCIIPan models use slightly different names for some alleles

Rosetta epitope Scan Allele List (MHC Class II):

NetMHCIIPan Allele List(MHC Class II):

NetMHCPan Allele List (MHC Class I):

Default Allele Lists

If you do not specify an allele list when using either Rosetta Epitope Scan or NetMHCIIPan, A default set of alleles will be used. The default allele lists are below. There is no default allele list for NetMHCPan.

Rosetta Default Allele List:

NetMHCIIPan Default Allele List: