Skip to content

Commit 31ffe7a

Browse files
Second attempt at updating the course to pVACtools 6.0
1 parent b3e9e6b commit 31ffe7a

5 files changed

Lines changed: 421 additions & 104 deletions

File tree

01-intro.Rmd

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ottrpal::set_knitr_image_path()
55

66
# Introduction
77

8-
This course has been developed recently (Summer 2023). We welcome any feedback at help@pvactools.org or by submission of [GitHub issues](https://github.com/griffithlab/pVACtools_Intro_Course/issues).
8+
This course was developed in Summer 2023 and updated in Fall 2025. We welcome any feedback at help@pvactools.org or by submission of [GitHub issues](https://github.com/griffithlab/pVACtools_Intro_Course/issues).
99

1010
## Motivation
1111

@@ -19,12 +19,12 @@ allele expression, peptide binding affinities, and determination of whether a mu
1919
users to efficiently generate, review, and interpret results, selecting candidate peptides for individual experiments or patient vaccine designs. Additional modules
2020
support design choices needed for competing vaccine delivery approaches. One such module optimizes peptide ordering to minimize junctional epitopes in DNA vector
2121
vaccines. Downstream analysis commands for synthetic long peptide vaccines are available to assess candidates for factors that influence peptide synthesis. All
22-
of the aforementioned steps are executed via a modular workflow consisting of tools for neoantigen prediction from somatic alterations (pVACseq, pVACfuse, and pVACbind),
22+
of the aforementioned steps are executed via a modular workflow consisting of tools for neoantigen prediction from somatic alterations (pVACseq, pVACfuse, pVACsplice, and pVACbind),
2323
prioritization, and selection using a graphical Web-based interface (pVACview), and design of DNA vector–based vaccines (pVACvector) and synthetic long peptide
2424
vaccines. pVACtools is available at [http://www.pvactools.org](http://www.pvactools.org).
2525

2626
```{r, fig.align='center', out.width="100%", echo = FALSE, fig.alt= "pVACtools is a cancer immunotherapy tools suite"}
27-
ottrpal::include_slide("https://docs.google.com/presentation/d/1uz39zaObDGKhEVCGzO0JO35CTbC0oRAM0mxgLcMAA9Y/edit#slide=id.g22b1533a196_0_0")
27+
ottrpal::include_slide("https://docs.google.com/presentation/d/1uz39zaObDGKhEVCGzO0JO35CTbC0oRAM0mxgLcMAA9Y/edit#slide=id.g3a37485c18b_1_0")
2828
```
2929

3030
## Background

02-prerequisites.Rmd

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ install.packages("RCurl", dependencies=TRUE)
6363
install.packages("curl", dependencies=TRUE)
6464
install.packages("string", dependencies=TRUE)
6565
install.packages("shinycssloaders", dependencies=TRUE)
66+
install.packages("plotly", dependencies=TRUE)
67+
install.packages("shinyWidgets", dependencies=TRUE)
68+
install.packages("colourpicker", dependencies=TRUE)
6669
```
6770

6871
## Data
@@ -97,6 +100,10 @@ For pVACfuse:
97100
- `star-fusion.fusion_predictions.tsv`: A STARFusion prediction file with fusion read support
98101
and expression information.
99102

103+
For pVACsplice:
104+
105+
- `HCC1395.splice_junctions.tsv`: A RegTools junctions output TSV file
106+
100107
General:
101108

102109
- `Homo_sapiens.GRCh38.pep.all.fa.gz`: A reference proteome peptide FASTA to use
@@ -109,7 +116,24 @@ wget https://raw.githubusercontent.com/griffithlab/pVACtools_Intro_Course/main/H
109116
unzip HCC1395_inputs.zip
110117
```
111118

119+
Additionally, to run pVACsplice, a set of reference files are required that
120+
are too large to include in the HCC1395_inputs.zip archive. To download these
121+
manually please run the following commands:
122+
123+
```{r, engine = 'bash', eval = FALSE}
124+
cd HCC1395_inputs
125+
wget https://ftp.ensembl.org/pub/release-105/gtf/homo_sapiens/Homo_sapiens.GRCh38.105.chr.gtf.gz
126+
wget http://genomedata.org/pmbio-workshop/references/genome/all/ref_genome.tar
127+
tar -xf ref_genome.tar ref_genome.fa.gz ref_genome.fa.fai
128+
gunzip ref_genome.fa.gz
129+
rm -rf ref_genome.tar
130+
```
131+
132+
This will add the following reference files
133+
134+
- `ref_genome.fa` and `.fai`: A reference DNA FASTA file and index
135+
- `Homo_sapiens.GRCh38.105.chr.gtf.gz`: A reference GTF file
136+
112137
This course will not cover the required pre-processing steps for the pVACtools
113138
input data but extensive instructions on how to prepare your own data for use
114139
with pVACtools can be found at [pvactools.org](http://www.pvactools.org).
115-

03-running_pvactools.Rmd

Lines changed: 177 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ mkdir pVACtools_outputs
2323
docker run \
2424
-v ${PWD}/HCC1395_inputs:/HCC1395_inputs \
2525
-v ${PWD}/pVACtools_outputs:/pVACtools_outputs \
26-
-it griffithlab/pvactools:4.0.0 \
26+
-it griffithlab/pvactools:6.0.3 \
2727
/bin/bash
2828
```
2929

30-
This will pull the 4.0.0 version of the griffithlab/pvactools Docker image and
30+
This will pull the 6.0.3 version of the griffithlab/pvactools Docker image and
3131
start an interactive session (`-it`) of that Docker image using the bash shell (`/bin/bash`).
3232
The `-v ${PWD}/HCC1395_inputs:/HCC1395_inputs`
3333
part of the command will mount the
@@ -65,12 +65,12 @@ following order:
6565
alleles can be specified using a comma-separated list. These should be the
6666
HLA alleles of your patient/sample. You might have clinical typing information for
6767
your patient. If not, you will need to computationally predict the patient's
68-
HLA type using software such as OptiType. The the HLA allele names should
69-
be in the following format: `HLA-A*02:01`.
68+
HLA type using software such as OptiType. The HLA allele names should
69+
be in the following format: `HLA-A*02:01`.
7070
- `prediction_algorithms`: The epitope prediction algorithms to use. Multiple
7171
prediction algorithms can be specified, separated by spaces. Use `all` to
7272
run all available prediction algorithms. pVACseq will automatically determine
73-
which algorithms are valid for each HLA allele.
73+
which algorithms are valid for each HLA allele.
7474
- `output_dir`: The directory for writing all result files.
7575

7676
### Optional Parameters for pVACseq
@@ -123,8 +123,14 @@ your run. Here are a list of parameters we generally recommend:
123123
- `--percentile-threshold`: When considering the peptide-MHC binding affinity
124124
for filtering and prioritizing neoantigen candidates, by default only the
125125
IC50 value is being used. Setting this parameter will additionally also filter
126-
on the predicted percentile. We recommend a value of 0.01 (1%) for this
126+
on the predicted percentile. We recommend a value of 2 (2%) for this
127127
threshold.
128+
- `--percentile-threshold-strategy`: When running pVACseq with a
129+
`--percentile-threshold` set, this parameter will influence how both the
130+
IC50 cutoff and the percentile cutoff are applied. The default,
131+
`conservative`, will require a candidate to pass both the binding and the
132+
percentile threshold, while the `exploratory` option will require a candidate
133+
to only pass either the binding or the percentile threshold.
128134

129135
Additionally there are a number of parameters that might be useful depending
130136
on your specific analysis needs:
@@ -141,6 +147,18 @@ on your specific analysis needs:
141147
unstable. This parameter allows users to set their own rules as to which
142148
peptides are considered problematic and peptides meeting those rules will be marked in the
143149
pVACseq results and deprioritized.
150+
- `--transcript-prioritization-strategy` and
151+
`--maximum-transcript-support-level`: Generally, multiple transcripts of a
152+
gene may code for a neoantigen candidate. When picking the best transcript
153+
coding for a candidate, the transcript prioritization strategy controls
154+
which factors to consider. By default the MANE Select status, the canonical
155+
status, and the Transcript Support Level (TSL) are all considered and any
156+
transcript meeting at least one of the specified factors will be considered
157+
as the best transcript. However, a more stringent approach might be desired,
158+
in which case the strategy could be adjusted to, for example, only consider
159+
the MANE Select status or the canonical status of a transcript. The maximum
160+
transcript support level parameters controls the TSL cutoff when considering
161+
TSL as a factor.
144162
- `--threads`: This argument will allow pVACseq to run in multi-processing
145163
mode.
146164
- `--keep-tmp-files`: Setting this flag will save intermediate files created by pVACseq.
@@ -191,7 +209,7 @@ all \
191209
--iedb-install-directory /opt/iedb \
192210
--pass-only \
193211
--allele-specific-binding-thresholds \
194-
--percentile-threshold 0.01 \
212+
--percentile-threshold 2 \
195213
--allele-specific-anchors \
196214
--run-reference-proteome-similarity \
197215
--peptide-fasta /HCC1395_inputs/Homo_sapiens.GRCh38.pep.all.fa.gz \
@@ -203,7 +221,7 @@ all \
203221

204222
## Running pVACfuse
205223

206-
pVACfuse is run to in order to predict neoantigens from fusion events. The
224+
pVACfuse is run in order to predict neoantigens from fusion events. The
207225
pipeline uses annotated fusion calls from either AGFusion or Arriba for this
208226
purpose. These annotators already include the fusion peptide sequence in their
209227
outputs which pVACfuse uses to extract neoantigens around the fusion position.
@@ -231,7 +249,7 @@ following order:
231249

232250
### Optional Parameters for pVACfuse
233251

234-
In addition to the required parameters, the `pvacseq run` command also offers
252+
In addition to the required parameters, the `pvacfuse run` command also offers
235253
optional arguments to fine-tune your run. You will find a lot of overlap
236254
between pVACfuse and pVACseq parameters and the same general considerations
237255
usually apply. Here are a list of parameters we generally recommend:
@@ -259,8 +277,14 @@ usually apply. Here are a list of parameters we generally recommend:
259277
- `--percentile-threshold`: When considering the peptide-MHC binding affinity
260278
for filtering and prioritizing neoantigen candidates, by default only the
261279
IC50 value is being used. Setting this parameter will additionally also filter
262-
on the predicted percentile. We recommend a value of 0.01 (1%) for this
280+
on the predicted percentile. We recommend a value of 2 (2%) for this
263281
threshold.
282+
- `--percentile-threshold-strategy`: When running pVACfuse with a
283+
`--percentile-threshold` set, this parameter will influence how both the
284+
IC50 cutoff and the percentile cutoff are applied. The default,
285+
`conservative`, will require a candidate to pass both the binding and the
286+
percentile threshold, while the `exploratory` option will require a candidate
287+
to only pass either the binding or the percentile threshold.
264288

265289
Additionally there are a number of parameters that might be useful depending
266290
on your specific analysis needs:
@@ -273,7 +297,7 @@ on your specific analysis needs:
273297
Cysteine is commonly considered problematic as it makes the peptide
274298
unstable. This parameter allows users to set their own rules as to which
275299
peptides are considered problematic and peptides meeting those rules will be marked in the
276-
pVACseq results and deprioritized.
300+
pVACfuse results and deprioritized.
277301
- `--threads`: This argument will allow pVACfuse to run in multi-processing
278302
mode.
279303
- `--keep-tmp-files`: Setting this flag will save intermediate files created by pVACfuse.
@@ -294,7 +318,7 @@ identified DQA1\*03:03, DQB1\*03:02, and DRB1\*04:05 as the patient's class II a
294318
For pVACfuse the sample name is not used for any parsing so it doesn't need to
295319
match any specific information in the AGFusion results. It is only used for
296320
naming result files. For consistency we will use the same `HCC1395_TUMOR_DNA`
297-
sample name we used in pVACfuse.
321+
sample name we used in pVACseq.
298322

299323
For our test run, please execute the `pvacfuse run` command below. The
300324
prediction run might take a while but pVACfuse will output progress messages as
@@ -309,7 +333,147 @@ all \
309333
/pVACtools_outputs/pvacfuse_predictions \
310334
--iedb-install-directory /opt/iedb \
311335
--allele-specific-binding-thresholds \
312-
--percentile-threshold 0.01 \
336+
--percentile-threshold 2 \
337+
--run-reference-proteome-similarity \
338+
--peptide-fasta /HCC1395_inputs/Homo_sapiens.GRCh38.pep.all.fa.gz \
339+
--problematic-amino-acids C \
340+
--downstream-sequence-length 100 \
341+
--n-threads 8 \
342+
--keep-tmp-files
343+
```
344+
345+
## Running pVACsplice
346+
347+
pVACsplice is run in order to predict neoantigens from tumor-specific alternative
348+
splicing patterns. The pipeline uses splice site variants predicted by RegTools
349+
for this purpose. The RegTools output is used by pVACsplice in combination with a
350+
GTF file to construct peptide sequences for the alternative splicing patterns and
351+
extract neoantigens around the splice site.
352+
353+
The pVACsplice pipeline is run using the `pvacsplice run` command.
354+
355+
### Required Parameters for pVACsplice
356+
357+
The `pvacsplice run` command takes a number of required parameters in the
358+
following order:
359+
360+
- `input_file`: A RegTools junctions output TSV file.
361+
- `sample_name`: The name of the tumor sample being processed.
362+
- `allele(s)`: The name of the HLA allele to use for epitope prediction. Multiple
363+
alleles can be specified using a comma-separated list. These should be the
364+
HLA alleles of your patient. You might have clinical typing information for
365+
your patient. If not, you will need to computationally predict the patient's
366+
HLA type using software such as OptiType.
367+
- `prediction_algorithms`: The epitope prediction algorithms to use. Multiple
368+
prediction algorithms can be specified, separated by spaces. Use `all` to
369+
run all available prediction algorithms.
370+
- `output_dir`: The directory for writing all result files.
371+
- `annotated_vcf`: A VEP-annotated single- or multi-sample VCF containing
372+
genotype and transcript information. This is generally the same input VCF
373+
used for pVACseq.
374+
- `ref_fasta`: A reference DNA FASTA file.
375+
- `gtf_file`: A reference GTF file.
376+
377+
### Optional Parameters for pVACsplice
378+
379+
In addition to the required parameters, the `pvacsplice run` command also offers
380+
optional arguments to fine-tune your run. You will find a lot of overlap
381+
between pVACsplice, pVACfuse, and pVACseq parameters, and the same general considerations
382+
usually apply. Here is a list of parameters we generally recommend:
383+
384+
- `--iedb-install-directory`: For speed and reliability, we generally recommend
385+
that users use a standalone installation of the IEDB software. The pVACtools
386+
Docker containers already come with this software pre-installed in the
387+
`/opt/iedb` directory.
388+
- `--allele-specific-binding-thresholds`: When filtering and tiering
389+
neoantigen candidates, one main criteria is the predicted peptide-MHC
390+
binding affinity. By default, pVACfuse uses a cutoff of <500 nmol IC50.
391+
However, for some HLA alleles, other cutoffs are more appropriate depending
392+
on the distribution of binding affinities across peptides. Setting
393+
this flag enables allele-specific binding cutoffs as recommended by
394+
[IEDB](https://help.iedb.org/hc/en-us/articles/114094152371-What-thresholds-cut-offs-should-I-use-for-MHC-class-I-and-II-binding-predictions).
395+
- `--run-reference-proteome-similarity`: One consideration when selecting
396+
neoantigen candidates is that the neoantigen should not occur natively in
397+
the patient's proteome. When this flag is set, pVACfuse will search for each
398+
neoantigen candidate in the reference proteome and report any hits found.
399+
By default this is done using BLASTp, but we recommend using a proteome FASTA
400+
file via the `--peptide-fasta` parameter to speed up this step.
401+
- `--percentile-threshold`: When considering the peptide-MHC binding affinity
402+
for filtering and prioritizing neoantigen candidates, by default only the
403+
IC50 value is being used. Setting this parameter will additionally filter
404+
on the predicted percentile. We recommend a value of 2 (2%) for this
405+
threshold.
406+
- `--percentile-threshold-strategy`: When running pVACsplice with a
407+
`--percentile-threshold` set, this parameter will influence how both the
408+
IC50 cutoff and the percentile cutoff are applied. The default,
409+
`conservative`, will require a candidate to pass both the binding and the
410+
percentile threshold, while the `exploratory` option will require a candidate
411+
to only pass either the binding or the percentile threshold.
412+
413+
Additionally there are a number of parameters that might be useful depending
414+
on your specific analysis needs:
415+
416+
- `--class-i-epitope-length` and `--class-ii-epitope-length`: By default 8,
417+
9, 10, 11 and 12, 13, 14, 15, 16, 17, 18 are set for these parameters,
418+
respectively, but different lengths might be desired.
419+
- `--problematic-amino-acids`: Some vaccine manufacturers will consider certain amino
420+
acids in the neoantigen candidates difficult to manufacture. For example, a
421+
Cysteine is commonly considered problematic as it makes the peptide
422+
unstable. This parameter allows users to set their own rules as to which
423+
peptides are considered problematic and peptides meeting those rules will be marked in the
424+
pVACsplice results and deprioritized.
425+
- `--transcript-prioritization-strategy` and
426+
`--maximum-transcript-support-level`: Generally, multiple transcripts of a
427+
gene may code for a neoantigen candidate. When picking the best transcript
428+
coding for a candidate, the transcript prioritization strategy controls
429+
which factors to consider. By default the MANE Select status, the canonical
430+
status, and the Transcript Support Level (TSL) are all considered and any
431+
transcript meeting at least one of the specified factors will be considered
432+
as the best transcript. However, a more stringent approach might be desired,
433+
in which case the strategy could be adjusted to, for example, only consider
434+
the MANE Select status or the canonical status of a transcript. The maximum
435+
transcript support level parameters controls the TSL cutoff when considering
436+
TSL as a factor.
437+
- `--threads`: This argument will allow pVACfuse to run in multi-processing
438+
mode.
439+
- `--keep-tmp-files`: Setting this flag will save intermediate files created by pVACsplice.
440+
- `--downstream-sequence-length`: For frameshift fusions, the downstream
441+
sequence can potentially be very long, which can be computationally
442+
expensive. This parameter limits how many amino acids of the downstream
443+
sequence are included in the prediction. We often set a limit of `100`.
444+
445+
### pVACsplice Command
446+
447+
Given the considerations outlined above, let's run pVACfuse on our sample data.
448+
449+
As with pVACsplice and pVACfuse, we can use the `optitype_normal_result.tsv` file to identify the patient's
450+
class I HLA alleles. These are HLA-A\*29:02, HLA-B\*45:01, HLA-B\*82:02, and HLA-C\*06:02.
451+
We also have clinical typing information that confirms these class I alleles as well as
452+
identified DQA1\*03:03, DQB1\*03:02, and DRB1\*04:05 as the patient's class II alleles.
453+
454+
As with pVACseq, the sample name needs to match the tumor sample ID in the input
455+
VCF #CHROM header. Because the input VCF used in pVACsplice is the same as the
456+
one used in pVACseq, we will use the same `HCC1395_TUMOR_DNA` sample name.
457+
458+
For our test run, please execute the `pvacsplice run` command below. The
459+
prediction run might take a while but pVACsplice will output progress messages as
460+
it runs through the pipeline.
461+
462+
463+
```{r, engine = 'bash', eval = FALSE}
464+
pvacsplice run \
465+
/HCC1395_inputs/HCC1395.splice_junctions.tsv \
466+
HCC1395_TUMOR_DNA \
467+
HLA-A*29:02,HLA-B*45:01,HLA-B*82:02,HLA-C*06:02,DQA1*03:03,DQB1*03:02,DRB1*04:05 \
468+
all \
469+
/pVACtools_outputs/pvacsplice_predictions \
470+
/HCC1395_inputs/annotated.expression.vcf.gz \
471+
/HCC1395_inputs/ref_genome.fa \
472+
/HCC1395_inputs/Homo_sapiens.GRCh38.105.chr.gtf.gz \
473+
--normal-sample-name HCC1395_NORMAL_DNA
474+
--iedb-install-directory /opt/iedb \
475+
--allele-specific-binding-thresholds \
476+
--percentile-threshold 2 \
313477
--run-reference-proteome-similarity \
314478
--peptide-fasta /HCC1395_inputs/Homo_sapiens.GRCh38.pep.all.fa.gz \
315479
--problematic-amino-acids C \

0 commit comments

Comments
 (0)