Bayesian toolbox for quantitative proteomics. In particular, this package provides functions to generate synthetic datasets, execute Bayesian differential analysis methods, and display results.
Installation
You can install the released version of ProteoBayes from CRAN with:
install.packages("ProteoBayes")
You can install the development version of ProteoBayes like so:
# install.packages("devtools")
devtools::install_github("mariechion/ProteoBayes")
If you want to use ProteoBayes without coding a single line, feel free use our dedicated web app: https://arthurleroy.shinyapps.io/ProteoBayes/.
For those who are keen to learn more about the R code behind, just scroll down below!
ProteoBayes in a nutshell
Generate a synthetic proteomics dataset with the correct format:
library(ProteoBayes)
set.seed(42)
## Generate a dataset without imputations
data = simu_db()
## Generate a dataset with multiple imputations
data_imp = simu_db(multi_imp = TRUE)
data
#> # A tibble: 50 x 4
#> Peptide Group Sample Output
#> <chr> <int> <int> <dbl>
#> 1 Peptide_1 1 1 48.8
#> 2 Peptide_1 1 2 46.5
#> 3 Peptide_1 1 3 49.8
#> 4 Peptide_1 1 4 49.9
#> 5 Peptide_1 1 5 47.4
#> 6 Peptide_1 2 1 54.9
#> 7 Peptide_1 2 2 49.4
#> 8 Peptide_1 2 3 52.0
#> 9 Peptide_1 2 4 49.6
#> 10 Peptide_1 2 5 55.0
#> # i 40 more rows
data_imp
#> # A tibble: 250 x 5
#> Peptide Group Sample Output Draw
#> <chr> <int> <int> <dbl> <int>
#> 1 Peptide_1 1 1 51.8 1
#> 2 Peptide_1 1 1 51.3 2
#> 3 Peptide_1 1 1 51.6 3
#> 4 Peptide_1 1 1 51.9 4
#> 5 Peptide_1 1 1 51.8 5
#> 6 Peptide_1 1 2 52.5 1
#> 7 Peptide_1 1 2 52.6 2
#> 8 Peptide_1 1 2 52.0 3
#> 9 Peptide_1 1 2 52.0 4
#> 10 Peptide_1 1 2 50.8 5
#> # i 240 more rows
The parameters of all posterior distributions can be computed thanks to:
post = posterior_mean(data)
post
#> # A tibble: 10 x 6
#> Peptide Group mu lambda alpha beta
#> <chr> <int> <dbl> <dbl> <dbl> <dbl>
#> 1 Peptide_1 1 48.8 6 3.5 6.81
#> 2 Peptide_1 2 51.9 6 3.5 17.2
#> 3 Peptide_2 1 51.5 6 3.5 3.54
#> 4 Peptide_2 2 53.5 6 3.5 10.6
#> 5 Peptide_3 1 18.6 6 3.5 6.61
#> 6 Peptide_3 2 20.9 6 3.5 11.8
#> 7 Peptide_4 1 44.0 6 3.5 7.00
#> 8 Peptide_4 2 46.0 6 3.5 17.8
#> 9 Peptide_5 1 34.0 6 3.5 30.7
#> 10 Peptide_5 2 37.7 6 3.5 5.40
When considering Peptides independently (no inter-Peptides correlations), the method is unaffected by missing values and no imputation is necessary.
We can also consider correlations between Peptides by using a multivariate version of the method. In this context, missing values need to be imputed beforehand (multiple imputations is accepted), and the dedicated function is:
post_imp = multi_posterior_mean(data_imp)
post_imp
#> # A tibble: 250 x 8
#> Draw Group Peptide Peptide2 mu lambda nu Sigma
#> <int> <int> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 1 1 Peptide_1 Peptide_1 50.4 6 15 57.4
#> 2 1 1 Peptide_1 Peptide_2 50.4 6 15 -1.25
#> 3 1 1 Peptide_1 Peptide_3 50.4 6 15 11.5
#> 4 1 1 Peptide_1 Peptide_4 50.4 6 15 -8.05
#> 5 1 1 Peptide_1 Peptide_5 50.4 6 15 -3.92
#> 6 1 1 Peptide_2 Peptide_1 41.7 6 15 -1.25
#> 7 1 1 Peptide_2 Peptide_2 41.7 6 15 6.08
#> 8 1 1 Peptide_2 Peptide_3 41.7 6 15 2.85
#> 9 1 1 Peptide_2 Peptide_4 41.7 6 15 -0.206
#> 10 1 1 Peptide_2 Peptide_5 41.7 6 15 -2.40
#> # i 240 more rows
Once parameters of the posterior distributions are available. We can sample from those distributions and visualise the differences between any groups for each peptide by using:
sample = sample_distrib(post)
plot_distrib(sample, group1 = 1, group2 = 2, peptide = 'Peptide_1' )
When comparing a large number of Peptides simultaneously, the function identify_diff()
can be used to check for probable differences between groups for each Peptide:
identify_diff(post)
#> # A tibble: 10 x 10
#> Peptide Group mu CI_inf CI_sup Group2 mu2 CI_inf2 CI_sup2 Distinct
#> <chr> <int> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <lgl>
#> 1 Peptide_1 1 48.8 47.5 50.2 2 51.9 49.7 54.0 FALSE
#> 2 Peptide_1 2 51.9 49.7 54.0 1 48.8 47.5 50.2 FALSE
#> 3 Peptide_2 1 51.5 50.6 52.5 2 53.5 51.9 55.2 FALSE
#> 4 Peptide_2 2 53.5 51.9 55.2 1 51.5 50.6 52.5 FALSE
#> 5 Peptide_3 1 18.6 17.3 20.0 2 20.9 19.1 22.7 FALSE
#> 6 Peptide_3 2 20.9 19.1 22.7 1 18.6 17.3 20.0 FALSE
#> 7 Peptide_4 1 44.0 42.6 45.4 2 46.0 43.8 48.2 FALSE
#> 8 Peptide_4 2 46.0 43.8 48.2 1 44.0 42.6 45.4 FALSE
#> 9 Peptide_5 1 34.0 31.1 36.8 2 37.7 36.5 38.9 FALSE
#> 10 Peptide_5 2 37.7 36.5 38.9 1 34.0 31.1 36.8 FALSE