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.

Figure 1 · Pipeline explorer (click a step)
  1. 01 RNA-Seq FASTQ
    in
    Sequencer output
    out
    Paired-end reads
    tool
    -
  2. 02 Alignment (HISAT2 / STAR)
    in
    FASTQ + reference genome
    out
    Aligned BAM + splice junctions
    tool
    HISAT2 / STAR
  3. 03 Junction extraction
    in
    Aligned BAM
    out
    Observed splice junctions
    tool
    regtools / bedtools
  4. 04 Tumor-vs-normal filtering (GENCODE)
    in
    Tumor + matched-normal junctions
    out
    tumor_exclusive set
    tool
    bedtools + GENCODE
  5. 05 Translation to 9-mers
    in
    tumor_exclusive junctions
    out
    Junction-spanning peptides
    tool
    Python 3.11
  6. 06 HLA typing (OptiType)
    in
    RNA-Seq reads
    out
    Patient HLA-I alleles
    tool
    OptiType
  7. 07 MHC-I binding (MHCflurry)
    in
    9-mers + HLA alleles
    out
    Ranked neoepitope candidates
    tool
    MHCflurry 2.x
  8. 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.

Figure 2 · Junction-origin filter (illustrative)
tumor junctions 1,204
tumor_exclusive 312

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.

Figure 3 · MHC-I presentation ranking (illustrative)
# 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.