Research write-up · in progress
From Splice Junctions to Neoepitopes
How a modernized, reproducible RNA-Seq pipeline turns tumor-exclusive splice junctions into candidate immunotherapy targets.
The question
Tumors do not only mutate their genes; they mis-splice them.
When a cancer cell joins two pieces of RNA that a healthy cell never would, the resulting messenger RNA can be translated into a short protein fragment that the immune system has never catalogued as "self."
Those fragments - neoepitopes - are candidate flags an immunotherapy could be taught to hunt.
This write-up walks through a pipeline that reads raw RNA-Seq data and works out, junction by junction, which of those flags are worth a closer look.
The pipeline
The whole thing is a directed acyclic graph of Snakemake rules: each box below is a step, each arrow a dependency.
Click a step to see what it consumes, what it produces, and the tool that does the work.
-
01 RNA-Seq FASTQ
- in
- Sequencer output
- out
- Paired-end reads
- tool
- -
-
02 Alignment (HISAT2 / STAR)
- in
- FASTQ + reference genome
- out
- Aligned BAM + splice junctions
- tool
- HISAT2 / STAR
-
03 Junction extraction
- in
- Aligned BAM
- out
- Observed splice junctions
- tool
- regtools / bedtools
-
04 Tumor-vs-normal filtering (GENCODE)
- in
- Tumor + matched-normal junctions
- out
- tumor_exclusive set
- tool
- bedtools + GENCODE
-
05 Translation to 9-mers
- in
- tumor_exclusive junctions
- out
- Junction-spanning peptides
- tool
- Python 3.11
-
06 HLA typing (OptiType)
- in
- RNA-Seq reads
- out
- Patient HLA-I alleles
- tool
- OptiType
-
07 MHC-I binding (MHCflurry)
- in
- 9-mers + HLA alleles
- out
- Ranked neoepitope candidates
- tool
- MHCflurry 2.x
-
08 TCR-pMHC structural validation (optional)
- in
- Top candidates
- out
- Modeled ternary complex
- tool
- TCRdock / AlphaFold v2
Finding tumor-exclusive junctions
A splice junction is only interesting if the tumor has it and the patient's matched-normal tissue does not.
Every observed junction is classified against the GENCODE annotation as annotated, normal_shared, or tumor_exclusive.
Toggle the matched-normal sample below to watch the tumor-exclusive set shrink to the junctions that survive the comparison.
Counts are illustrative, for explanation only.
From junction to neoepitope
A surviving junction is transcribed in silico, translated in all frames, and cut into the junction-spanning 9-mers that MHC class I molecules present on the cell surface.
The patient's own HLA alleles (called from the same RNA-Seq with OptiType) decide which peptides actually get presented; MHCflurry scores how well each one binds.
The widget below ranks an illustrative set of 9-mers by presentation score to convey what that step produces.
| # | 9-mer | HLA allele | |
|---|---|---|---|
| 1 | KLYQVEYAF | HLA-A*24:02 | 0.94 |
| 2 | SLLQHLIGL | HLA-A*02:01 | 0.88 |
| 3 | RTYGPVFMV | HLA-A*02:01 | 0.71 |
| 4 | AEFGQKLTV | HLA-B*07:02 | 0.63 |
| 5 | NQFPDVLLM | HLA-B*07:02 | 0.41 |
Peptides and scores are illustrative, for explanation only - not findings.
Reproducibility
The pipeline is a modernized reimplementation of a 2015 splice-junction neoepitope workflow, rebuilt so that a stranger can run it.
Every rule carries its own Conda environment; the graph runs locally, on a GCP GPU VM, or on a SLURM cluster with a config swap rather than a rewrite.
Nothing here depends on a dependency you have to install by hand.
Status and how to follow
Results are still cooking. This page presents the method and the shape of the output, not the final binders.
The citable scientific record will be a forthcoming preprint; this article is the amplifier that links to it and to the code.
Follow the work on GitHub: https://github.com/Jin-HoMLee/splice-neoepitope-pipeline.