pVACseq, Part 2: What pVACseq Does and When to Use It

pVACseq · neoantigen prediction · NetMHCpan · MHCflurry · cancer vaccine pipeline

pVACseq Series · Part 2 of 2

What pVACseq Does and When to Use It

pVACseq is the most widely used pipeline for neoantigen prediction from somatic variants. It takes a VCF file and HLA alleles, generates peptide sequences around each mutation, runs binding predictions against multiple algorithms in parallel, and produces a ranked list of candidate neoepitopes.

It is the right tool when you have a VCF from tumor-normal WES and want a systematically generated, reproducible neoantigen list for research or vaccine design. It is not a one-click solution — the output requires biological interpretation and filtering before it is useful.

Figure 1. Left: binding prediction counts by peptide length for HLA-A*02:01. Right: the prioritization funnel from ~2,800 raw predictions to ~20 final vaccine candidates.

Installation and Input Requirements

# Install via pip (Python 3.8+)
pip install pvactools

# Required inputs:
# 1. Annotated VCF (run through VEP first)
vep --input_file tumor_somatic.vcf \
    --output_file tumor_somatic.vep.vcf \
    --format vcf \
    --vcf \
    --symbol \
    --terms SO \
    --tsl \
    --hgvs \
    --fasta GRCh38.fa \
    --offline

# 2. HLA alleles from OptiType or HLA-HD (see Post 17)
# Format: HLA-A*02:01,HLA-A*24:02,HLA-B*07:02,...

Running pVACseq

pvacseq run \
    tumor_somatic.vep.vcf \            # VEP-annotated VCF
    sample_01 \                        # sample name (output prefix)
    "HLA-A*02:01,HLA-A*24:02,HLA-B*07:02,HLA-B*35:01,HLA-C*07:01,HLA-C*04:01" \
    NetMHCpan MHCflurry \              # prediction algorithms (can combine)
    output_dir/ \                      # output directory
    --iedb-install-directory /opt/iedb/ \
    --class-i-epitope-length 8,9,10,11 \  # peptide lengths (pVACtools 2.0+: -e for class I was split into -e1/-e2)
    --binding-threshold 500 \          # IC50 cutoff (nM)
    --percentile-threshold 2 \         # alternatively: top 2% binders
    --minimum-fold-change 1 \          # MT/WT binding ratio filter
    --normal-cov 40 \                  # minimum normal coverage
    --tdna-cov 25 \                    # minimum tumor DNA coverage
    --trna-cov 10 \                    # minimum tumor RNA coverage
    --expn-val 1 \                     # minimum expression (TPM)
    --net-chop-method cterm \          # proteasomal cleavage prediction
    --netmhc-stab \                    # HLA-peptide stability (add Kd½)
    -t 8

Understanding the Output

pVACseq produces several output files. The most important:

  • sample_01.filtered.condensed.ranked.tsv — Final ranked list, one row per candidate neoepitope
  • sample_01.all_epitopes.tsv — All predictions before filtering
import pandas as pd

results = pd.read_csv("output_dir/MHC_Class_I/sample_01.filtered.condensed.ranked.tsv", sep="\t")

# Key columns to check:
# Mutation - gene + amino acid change
# MT Epitope Seq - mutant peptide sequence
# Best MT IC50 Score - lowest predicted binding affinity (nM)
# Best WT IC50 Score - wild-type peptide binding (for fold-change)
# Fold Change - MT/WT ratio (higher = more tumor-specific)
# Tumor DNA VAF - variant allele frequency (clonality proxy)
# Gene Expression - RNA-seq expression level

# Recommended final filters for vaccine design:
high_priority = results[
    (results["Best MT IC50 Score"] < 50) &       # strong binder
    (results["Fold Change"] > 10) &               # tumor-specific (not self)
    (results["Tumor DNA VAF"] > 0.2) &            # clonal
    (results["Gene Expression"] > 2)              # expressed
].sort_values("Best MT IC50 Score")

print(f"Final candidates: {len(high_priority)}")}

Common Mistakes

  • Not filtering by VAF: Subclonal mutations (VAF <0.1) produce neoantigens in only a fraction of tumor cells. Vaccines targeting subclonal mutations have low probability of impacting disease.
  • Ignoring fold change: A mutation in a gene that is also expressed as wild-type can generate peptides that are similar to self. High MT/WT fold change (>10) indicates the mutant peptide is genuinely foreign.
  • Using only one prediction algorithm: Ensemble predictions (NetMHCpan + MHCflurry) are more reliable than either alone. pVACseq handles this natively — always specify at least two algorithms.

Working with spatial transcriptomics and want to map immune infiltration patterns? See the companion blog SpatiaBio — Squidpy tutorials and spatial omics workflows.

댓글

이 블로그의 인기 게시물

What Is a Neoantigen? A Practical Guide for Experimental Researchers

NetMHCpan Explained: How MHC Binding Prediction Works and How to Read the Output

Tumor Mutational Burden (TMB): What It Measures, What It Doesn't, and How to Interpret It