Developed by: André Fonseca, PhD

devtools::install_github("antuneslab/crossdome", build_vignettes = TRUE)Crossdome: An interactive R package to predict cross-reactivity risk using immunopeptidomics databases
Currently, several clinical protocols are leveraging on distinct immune mechanisms, such as adoptive T-cell therapy and peptide-based vaccines. However, multiple factors can impact the accuracy of these immune-based applications, such as expression heterogeneity, immunogenicity, and cross-reactivity (CR) risk. Crossdome was created to measure cross-reactivity potential based on biochemical properties. Our approach aims to rank potential CR candidates and measure cross-reactivity risk using mRNA expression, immunogenicity score (TCR binding), and MHC presentation probability. Additionally, we provide the expression profile related to each CR candidate.
Figure 1. Crossdome workflow and strategy. Crossdome summarises biochemical properties per amino acid into 12 principal components. In turn, the principal components are used to convert peptide sequences into biochemical profiles (matrices). Next, given a target peptide, Crossdome screens an immunopeptidomics dataset for a similar biochemical profiler, i.e., CR candidates. A relatedness score between the target and candidate off-targets is calculated based on weighted linear distance. Finally, Crossdome incorporates expression levels and immunogenicity predictions for each potential off-target.
cross_backgroundPeptide database spanning eluted candidates (experimentally validated) and custom (user-defined).cross_pair_summaryCalculates relatedness score between peptides.cross_composePredicts relatedness among peptides in a given database. Low values are associated with cross-reactive candidates.cross_browserOpens an interactive shiny application.
cross_expression_matrixExtracts gene donor mRNA expression based on CR candidates.cross_substitution_matrixCalculates position-specific substitution across cross-reactive candidates.cross_peptide_propertiesConverts a peptide to biochemical profile.cross_writeExports Crossdome result slot for a tsv file.
cross_expression_plotA heatmap presenting the gene donor expression profile.cross_tissues_plotA bar plot summarizing the tissue-specificy groups.cross_prediction_plotPlot a dot plot showing the immunogenic predictions [UNDER CONSTRUCTION].cross_pairwise_plotCorrelation plot based on two peptide / biochemical profiles [UNDER CONSTRUCTION].cross_substitution_plotA heatmap combined with seqlogo displaying amino acid substitutions.
Examples of each function, including code, are available in the package
documentation. Please use: ?FUNCTION_NAME. Additionally, two vignettes
are available through the command browseVignettes('crossdome').
hla_databaseImmunopeptidomics spanning several MHC Class I alleles. Includes binding affinity, and immunogenicity score from MHC Flurry and DeepImmuno, respectively.hpa_databaseExpression database derived from Human Protein Atlas.peptide_annotationDatabase for mapping peptides to gene-donors derived from NCBI RefSeq Protein [UNDER CONSTRUCTION].mage_off_targetsCurated off-targets related to MAGEA3-specific TCR.
To inspect the data sets use: data(DATA_NAME)
library(crossdome)
database <- cross_background(off_targets = 'ESDPIVAQY', allele = "HLA-A*01:01")
result <- cross_compose(query = 'EVDPIGHLY', background = database)
#> ##------ Mon Mar 27 12:10:59 2023 ------##View(result@result)| rank | query | subject | n_positive | n_mismatch | relatedness_score | pvalue | hla_allele |
|---|---|---|---|---|---|---|---|
| 1 | EVDPIGHLY | EVDPIGHLY | 9 | 0 | 0.00 | 0.0000000 | HLA-A01:01 |
| 2 | EVDPIGHLY | EVDPIGHVY | 9 | 1 | 1.35 | 0.0000001 | HLA-A01:01 |
| 3 | EVDPIGHLY | EADPTGHSY | 6 | 3 | 8.72 | 0.0000336 | HLA-A01:01 |
| 4 | EVDPIGHLY | EVDPTSHSY | 6 | 3 | 10.43 | 0.0001107 | HLA-A01:01 |
| 5 | EVDPIGHLY | VSDPVGVLY | 6 | 4 | 10.95 | 0.0001567 | HLA-A01:01 |
| 6 | EVDPIGHLY | EMDPVTQLY | 8 | 4 | 11.23 | 0.0001889 | HLA-A01:01 |
| 7 | EVDPIGHLY | YTDPVGVLY | 6 | 4 | 11.53 | 0.0002293 | HLA-A01:01 |
| 8 | EVDPIGHLY | EHDPVGQMV | 7 | 5 | 11.69 | 0.0002542 | HLA-A01:01 |
| 9 | EVDPIGHLY | ESDPEGALW | 6 | 4 | 12.72 | 0.0004821 | HLA-A01:01 |
| 10 | EVDPIGHLY | EVAPAGASY | 5 | 4 | 12.95 | 0.0005563 | HLA-A01:01 |
| 11 | EVDPIGHLY | NVDPVQHTY | 6 | 4 | 12.97 | 0.0005612 | HLA-A01:01 |
| 12 | EVDPIGHLY | DSDPTGTAY | 5 | 5 | 13.04 | 0.0005853 | HLA-A01:01 |
| 13 | EVDPIGHLY | DVSPLMHLF | 7 | 5 | 13.49 | 0.0007682 | HLA-A01:01 |
| 14 | EVDPIGHLY | QIDPVLQVY | 8 | 6 | 13.55 | 0.0007944 | HLA-A01:01 |
| 15 | EVDPIGHLY | SLDPLAMLY | 6 | 5 | 13.58 | 0.0008085 | HLA-A01:01 |
| 16 | EVDPIGHLY | SVDPHGFIS | 5 | 5 | 13.60 | 0.0008169 | HLA-A01:01 |
| 17 | EVDPIGHLY | LLDPIKELY | 6 | 4 | 13.66 | 0.0008489 | HLA-A01:01 |
| 18 | EVDPIGHLY | FVEPVGLNY | 6 | 5 | 13.75 | 0.0008957 | HLA-A01:01 |
| 19 | EVDPIGHLY | FVNPISFVY | 6 | 5 | 13.88 | 0.0009614 | HLA-A01:01 |
| 20 | EVDPIGHLY | KFDPVGEIL | 6 | 6 | 14.04 | 0.0010592 | HLA-A01:01 |
| 21 | EVDPIGHLY | AVDPIKDMY | 6 | 4 | 14.06 | 0.0010678 | HLA-A01:01 |
| 22 | EVDPIGHLY | FLEPLGLAY | 6 | 6 | 14.08 | 0.0010839 | HLA-A01:01 |
| 23 | EVDPIGHLY | QLDPIYVAY | 6 | 5 | 14.15 | 0.0011284 | HLA-A01:01 |
| 24 | EVDPIGHLY | ELDPNNAVY | 6 | 5 | 14.18 | 0.0011473 | HLA-A01:01 |
| 25 | EVDPIGHLY | YVDSEGHLY | 6 | 3 | 14.20 | 0.0011600 | HLA-A01:01 |
| 26 | EVDPIGHLY | IISPVGDAY | 5 | 6 | 14.37 | 0.0012774 | HLA-A01:01 |
| 27 | EVDPIGHLY | ESDPIVAQY | 5 | 4 | 14.38 | 0.0012840 | HLA-A01:01 |
| 28 | EVDPIGHLY | NIDPITMAY | 5 | 5 | 14.38 | 0.0012849 | HLA-A01:01 |
| 29 | EVDPIGHLY | QVDPLSALK | 6 | 5 | 14.46 | 0.0013432 | HLA-A01:01 |
| 30 | EVDPIGHLY | KWDPTGHIL | 6 | 5 | 14.47 | 0.0013482 | HLA-A01:01 |
str(result)
#> Formal class 'xrResult' [package "crossdome"] with 7 slots
#> ..@ query : chr "EVDPIGHLY"
#> ..@ result :'data.frame': 37656 obs. of 10 variables:
#> .. ..$ rank : int [1:37656] 1 2 3 4 5 6 7 8 9 10 ...
#> .. ..$ query : chr [1:37656] "EVDPIGHLY" "EVDPIGHLY" "EVDPIGHLY" "EVDPIGHLY" ...
#> .. ..$ subject : chr [1:37656] "EVDPIGHLY" "EVDPIGHVY" "EADPTGHSY" "EVDPTSHSY" ...
#> .. ..$ n_positive : int [1:37656] 9 9 6 6 6 8 6 7 6 5 ...
#> .. ..$ n_mismatch : int [1:37656] 0 1 3 3 4 4 4 5 4 4 ...
#> .. ..$ relatedness_score: num [1:37656] 0 1.35 8.72 10.43 10.95 ...
#> .. ..$ zscore : num [1:37656] -5.48 -5.25 -3.99 -3.69 -3.6 ...
#> .. ..$ pvalue : num [1:37656] 2.12e-08 7.66e-08 3.36e-05 1.11e-04 1.57e-04 ...
#> .. ..$ hla_allele : chr [1:37656] "HLA-A*01:01" "HLA-A*01:01" "HLA-A*01:01" "HLA-A*01:01" ...
#> .. ..$ percentile_rank : num [1:37656] 0 0.00266 0.00531 0.00797 0.01062 ...
#> ..@ allele : chr "HLA-A*01:01"
#> ..@ expression : list()
#> ..@ analysis : list()
#> ..@ position_weight: num [1:9] 1 1 1 1 1 1 1 1 1
#> ..@ timestamp : chr "##------ Mon Mar 27 12:10:59 2023 ------##"
