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_background
Peptide database spanning eluted candidates
(experimentally validated) and custom (user-defined).cross_pair_summary
Calculates relatedness score between
peptides.cross_compose
Predicts relatedness among peptides in a given
database. Low values are associated with cross-reactive candidates.cross_browser
Opens an interactive shiny application.cross_expression_matrix
Extracts gene donor mRNA expression
based on CR candidates.cross_substitution_matrix
Calculates position-specific
substitution across cross-reactive candidates.cross_peptide_properties
Converts a peptide to biochemical
profile.cross_write
Exports Crossdome result slot for a tsv file.cross_expression_plot
A heatmap presenting the gene donor
expression profile.cross_tissues_plot
A bar plot summarizing the tissue-specificy
groups.cross_prediction_plot
Plot a dot plot showing the immunogenic
predictions [UNDER CONSTRUCTION].cross_pairwise_plot
Correlation plot based on two peptide /
biochemical profiles [UNDER CONSTRUCTION].cross_substitution_plot
A heatmap combined with seqlogo
displaying amino acid substitutions.hla_database
Immunopeptidomics spanning several MHC Class I
alleles. Includes binding affinity, and immunogenicity score from MHC
Flurry
and
DeepImmuno,
respectively.hpa_database
Expression database derived from Human Protein
Atlas.peptide_annotation
Database for mapping peptides to gene-donors
derived from NCBI RefSeq
Protein [UNDER
CONSTRUCTION].mage_off_targets
Curated 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 09:50:18 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 09:50:18 2023 ------##"
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.