PepMapViz: A Versatile Toolkit for Peptide Mapping, Visualization, and Comparative Exploration ================
PepMapViz is a versatile R visualization package that empowers researchers with comprehensive visualization tools for seamlessly mapping peptides to protein sequences, identifying distinct domains and regions of interest, accentuating mutations, and highlighting post-translational modifications, all while enabling comparisons across diverse experimental conditions. Potential applications of PepMapViz include the visualization of cross-software mass spectrometry results at the peptide level for specific protein and domain details in a linearized format and post-translational modification coverage across different experimental conditions; unraveling insights into disease mechanisms. It also enables visualization of MHC-presented peptide clusters in different antibody regions predicting immunogenicity in antibody drug development.
You can install the development version of PepMapViz from GitHub
using the devtools
package.
# Install devtools if you haven't already
install.packages("devtools")
# Install PepMapViz from the package
::build()
devtools::install() devtools
This is a basic example which shows you how to solve a common problem:
library(PepMapViz)
# Read all files from a folder
<- system.file("extdata", package = "PepMapViz")
folder_path <- combine_files_from_folder(folder_path)
resulting_df
# Strip the sequence
<- strip_sequence(resulting_df, "Peptide", "Sequence", "PEAKS")
striped_data_peaks
# Extract modifications information
<- data.frame(PTM_mass = c("15.99", ".98", "57.02"),
PTM_table PTM_type = c("Ox", "Deamid", "Cam"))
<- obtain_mod(
converted_data_peaks
striped_data_peaks,"Peptide",
"PEAKS",
strip_seq_col = NULL,
PTM_table,PTM_annotation = TRUE,
PTM_mass_column = "PTM_mass"
)
# Match peptide sequence with provided sequence and calculate positions
<- data.frame(
whole_seq Epitope = c("Boco", "Boco"),
Chain = c("HC", "LC"),
Region_Sequence = c("QVQLVQSGAEVKKPGASVKVSCKASGYTFTSYYMHWVRQAPGQGLEWMGEISPFGGRTNYNEKFKSRVTMTRDTSTSTVYMELSSLRSEDTAVYYCARERPLYASDLWGQGTTVTVSSASTKGPSVFPLAPCSRSTSESTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSGLYSLSSVVTVPSSNFGTQTYTCNVDHKPSNTKVDKTVERKCCVECPPCPAPPVAGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVQFNWYVDGVEVHNAKTKPREEQFNSTFRVVSVLTVVHQDWLNGKEYKCKVSNKGLPSSIEKTISKTKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPMLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK",
"DIQMTQSPSSLSASVGDRVTITCRASQGISSALAWYQQKPGKAPKLLIYSASYRYTGVPSRFSGSGSGTDFTFTISSLQPEDIATYYCQQRYSLWRTFGQGTKLEIKRTVAAPSVFIFPPSDEQLKSGTASVVCLLNNFYPREAKVQWKVDNALQSGNSQESVTEQDSKDSTYSLSSTLTLSKADYEKHKVYACEVTHQGLSSPVTKSFNRGEC"
)
)<- match_and_calculate_positions(
matching_result
converted_data_peaks,'Sequence',
whole_seq,match_columns = NULL,
sequence_length = c(10, 30),
column_keep = c(
"PTM_mass",
"PTM_position",
"reps",
"Area",
"Donor",
"PTM_type"
)
)
# Quantify matched peptide sequences by PSM
= c("Chain", "Epitope")
matching_columns = c("Donor")
distinct_columns <- peptide_quantification(
data_with_psm
whole_seq,
matching_result,
matching_columns,
distinct_columns,quantify_method = "PSM",
with_PTM = TRUE,
reps = TRUE
)<- data.frame(
region Epitope = c("Boco", "Boco", "Boco", "Boco", "Boco", "Boco"),
Chain = c("HC", "HC", "HC", "HC", "LC", "LC"),
Region = c("VH", "CH1", "CH2", "CH3", "VL", "CL"),
Region_start = c(1,119,229,338,1,108),
Region_end = c(118,228,337,444,107,214)
)<- data.frame()
result_with_psm for (i in 1:nrow(region)) {
<- region$Chain[i]
chain <- region$Region_start[i]
region_start <- region$Region_end[i]
region_end <- region$Region[i]
region_name
<- data_with_psm[data_with_psm$Chain == chain &
temp $Position >= region_start &
data_with_psm$Position <= region_end, ]
data_with_psm$Region <- region_name
temp
<- rbind(result_with_psm, temp)
result_with_psm
}
head(result_with_psm)
## Character Position Chain Epitope PSM Donor PTM PTM_type Region
## 1 Q 1 HC Boco 0 D1 FALSE <NA> VH
## 2 V 2 HC Boco 0 D1 FALSE <NA> VH
## 3 Q 3 HC Boco 0 D1 FALSE <NA> VH
## 4 L 4 HC Boco 0 D1 FALSE <NA> VH
## 5 V 5 HC Boco 0 D1 FALSE <NA> VH
## 6 Q 6 HC Boco 0 D1 FALSE <NA> VH
# Plotting peptide in whole provided sequence
<- data.frame(
domain domain_type = c("CDR H1", "CDR H2", "CDR H3", "CDR L1", "CDR L2", "CDR L3"),
Region = c("VH", "VH", "VH", "VL", "VL", "VL"),
Epitope = c("Boco", "Boco", "Boco", "Boco", "Boco", "Boco"),
domain_start = c(26, 50, 97, 24, 50, 89),
domain_end = c(35, 66, 107, 34, 56, 97)
)<- c("Region")
x_axis_vars <- c("Donor")
y_axis_vars <- list(
column_order Donor = "D1,D2,D3,D4,D5,D6,D7,D8",
Region = "VH,CH1,CH2,CH3,VL,CL"
)<- c(
domain_color "CDR H1" = "#F8766D",
"CDR H2" = "#B79F00",
"CDR H3" = "#00BA38",
"CDR L1" = "#00BFC4",
"CDR L2" = "#619CFF",
"CDR L3" = "#F564E3"
)<- c(
PTM_color "Ox" = "red",
"Deamid" = "cyan",
"Cam" = "blue",
"Acetyl" = "magenta"
)= list(Donor = "D1")
label_value
<- create_peptide_plot(
p_psm
result_with_psm,
y_axis_vars,
x_axis_vars,y_expand = c(0.2, 0.2),
x_expand = c(0.5, 0.5),
theme_options = list(legend.box = "horizontal"),
labs_options = list(title = "PSM Plot", x = "Position", fill = "PSM"),
color_fill_column = 'PSM',
fill_gradient_options = list(limits = c(0, 160)), # Set the limits for the color scale
label_size = 1.9,
add_domain = TRUE,
domain = domain,
domain_start_column = "domain_start",
domain_end_column = "domain_end",
domain_type_column = "domain_type",
domain_color = domain_color,
PTM = TRUE,
PTM_type_column = "PTM_type",
PTM_color = PTM_color,
add_label = TRUE,
label_column = "Character",
label_value = label_value,
column_order = column_order
)
For a detailed guide on how to use PepMapViz, please refer to our vignette and docuemntation under inst/doc.
This project is licensed under the MIT License - see the LICENSE file for details.