| name | bio-workflows-neoantigen-pipeline |
| description | End-to-end neoantigen discovery from somatic variants to ranked vaccine candidates. Integrates HLA typing, MHC binding prediction, pVACtools neoantigen calling, and immunogenicity scoring. Use when identifying tumor neoantigens for personalized vaccine design or checkpoint biomarkers. |
| tool_type | mixed |
| primary_tool | pVACtools |
| workflow | true |
| depends_on | ["clinical-databases/hla-typing","immunoinformatics/mhc-binding-prediction","immunoinformatics/neoantigen-prediction","immunoinformatics/immunogenicity-scoring","immunoinformatics/epitope-prediction"] |
| qc_checkpoints | [{"after_hla":"HLA types resolved to 4-digit, coverage adequate"},{"after_binding":"Predictions generated for all alleles, IC50 <500nM filter"},{"after_neoantigen":"Neoantigens identified with VAF >0.1, expressed"},{"after_scoring":"Top candidates prioritized by immunogenicity"}] |
Neoantigen Pipeline
Complete workflow from somatic variants to ranked neoantigen vaccine candidates for personalized cancer immunotherapy.
Workflow Overview
Somatic VCF (annotated) + Tumor RNA-seq (optional)
|
v
[1. HLA Typing] --> arcasHLA / OptiType (if types not provided)
|
v
[2. MHC Binding Prediction] --> MHCflurry / NetMHCpan
|
v
[3. Neoantigen Calling] --> pVACseq
|
v
[4. Immunogenicity Scoring] --> Multi-factor ranking
|
v
Ranked Vaccine Candidates (TSV + visualizations)
Prerequisites
pip install pvactools mhcflurry vatools
mhcflurry-downloads fetch
conda install -c bioconda vep arcashla optitype
Primary Path: pVACseq Pipeline
Step 1: HLA Typing (if not provided)
HLA types are critical for MHC binding prediction. If not already known from clinical testing:
arcasHLA extract tumor.bam -t 8 -o hla_output/
arcasHLA genotype hla_output/tumor.extracted.1.fq.gz hla_output/tumor.extracted.2.fq.gz \
-g A,B,C,DRB1,DQB1,DPB1 -t 8 -o hla_output/
cat hla_output/tumor.genotype.json
import json
with open('hla_output/tumor.genotype.json') as f:
hla_data = json.load(f)
hla_alleles = []
for gene, alleles in hla_data.items():
for allele in alleles:
hla_alleles.append(f'HLA-{allele}')
hla_string = ','.join(hla_alleles)
print(f'HLA alleles: {hla_string}')
Step 2: VCF Annotation with VEP
pVACseq requires VEP-annotated VCF with specific fields:
vep --input_file somatic.vcf \
--output_file somatic.vep.vcf \
--format vcf --vcf --symbol --terms SO \
--plugin Frameshift --plugin Wildtype \
--offline --cache \
--pick --fork 4
vcf-expression-annotator somatic.vep.vcf \
expression.tsv gene \
-s tumor_sample \
-o somatic.vep.expression.vcf