An expanded verion of the Somascan aptamer-based platform [1,2] allows the measuring of over 7000 proteins [3]. The goal of this SomaPreg package is to define expected values for gestation age and maternal characteristics to enable the development of predictive models in obstretics. Maternal plasma protein abundance was determined using the SOMAmer (Slow Off-rate Modified Aptamers) platform and its reagents.
The package SomaPreg implements linear mixed-effect models with quadratic splines (one knot) for predicting protein abundance as a function of gestational age. Maternal age, parity, body mass index, and smoking status were also considered as covariates and retained if they improved the model fit for a given protein. Covariate selection was based on the significance (p<0.05) of a likelihood ratio test implemented in the glmerselect function available in the StatisticalModels package under the R statistical language and environment (www.r-project.org). Linear mixed-effects models were fit using the lme4 package [4]. To account for the repeated, and possible correlated, measurements from the same patient, the models included patient identifiers as random effects.
Two input data frames are necessary in order to employ all the features of the SomaPreg package:
The five predictors from the ano data frame are mandatory (their names should kept as listed). The rownames of the ano data frame should be the samples of the experiment. prodat data frame should reference the same samples as the ano data frame. An example of ano and prodat is listed below:
library(SomaPreg)
ano = read.csv("ano.csv")
protdat = read.csv("protdat.csv")
## Loading required package: mgcv
## Warning: package 'mgcv' was built under R version 3.5.2
## Loading required package: nlme
## This is mgcv 1.8-26. For overview type 'help("mgcv-package")'.
head(ano)
## GA Smoker BMI Age Nulliparous
## Sample_1 25.9 0 24.1 20 0
## Sample_2 13.9 0 17.8 27 0
## Sample_3 36.6 0 26.7 25 0
## Sample_4 24.6 0 29.1 32 0
## Sample_5 25.3 1 31.6 22 0
## Sample_6 27.2 0 22.5 31 0
protdat[1:6,1:6]
## Sample_1 Sample_2 Sample_3 Sample_4 Sample_5 Sample_6
## CRYBB2.10000.28 816.3984 483.7502 514.5816 510.7371 762.3118 482.5492
## RAF1.10001.7 285.5129 275.6294 278.9488 279.0344 300.5729 292.8326
## ZNF41.10003.15 164.6035 190.4290 161.4146 183.5495 186.4078 171.7531
## ELK1.10006.25 541.1689 503.6445 603.8754 547.3105 599.4161 621.8591
## GUCA1A.10008.43 452.8714 444.3997 463.6268 391.4135 458.7825 415.3779
## BECN1.10010.10 318.1040 299.4018 298.0816 306.2926 335.1303 302.1876
predictRFU function is used to predict the protein abundance expressed as relative fluorescence units (RFU), for the proteins and samples provided by the user:
predictRFU(protvect=rownames(protdat),ano)[1:6,1:4]
## CRYBB2.10000.28 RAF1.10001.7 ZNF41.10003.15 ELK1.10006.25
## Sample_1 9.188978 8.269322 7.406323 9.211692
## Sample_2 9.081251 8.269322 7.427188 9.211692
## Sample_3 9.233437 8.269322 7.354447 9.211692
## Sample_4 9.274476 8.269322 7.409540 9.211692
## Sample_5 9.317224 8.269322 7.407837 9.211692
## Sample_6 9.161619 8.269322 7.402660 9.211692
We can plot the protein abundance from protdat data frame provided by the user, across all samples, with the plotRFU function:
plotRFU(prot="PGF.3078.1",protdat,ano)

computeMOM calculates the predicted the log2 multiple of the mean (MoM) of protein abundance expressed as relative fluorescence units (RFU), for the proteins and samples provided by the user:
computeMOM(rownames(protdat)[1:4],protdat,ano)[1:6,]
## CRYBB2.10000.28 RAF1.10001.7 ZNF41.10003.15 ELK1.10006.25
## Sample_1 0.4841513 -0.11190947 -0.04347107 -0.13175734
## Sample_2 -0.1631328 -0.16273574 0.14592176 -0.23543061
## Sample_3 -0.2261808 -0.14546487 -0.01981964 0.02641472
## Sample_4 -0.2780387 -0.14502232 0.11048552 -0.11547661
## Sample_5 0.2570130 -0.03775062 0.13448182 0.01572165
## Sample_6 -0.2470867 -0.07538913 0.02153189 0.06875136
The estimates of the log2 multiple of the mean (MoM) of protein abundance predicted with computeMOM can be plotted with the plotMOM function:
plotMOM(prot="PGF.3078.1",protdat,ano)

log2 RFU trend for user selected values of the predictors can be plotted with the plotProtTrend function. The user selected values are given in a list called ano. This ano list contains one value for each predictor in the model, except for one of the predictors, which will have at least two values, and will be used for comparisons of the trends. Please note that the ano list argument of the plotProtTrend function is different from the ano input data frame.
plotProtTrend(prot="PGF.3078.1",ano=list(Smoker="0",BMI=c(22,31),Age=24,Nulliparous=c("1")),
legendgroups=c("BMI, 25th percentile","BMI, 75th percentile"))

The predictor with multiple values, used for the comparison of the trends, should have the same number of levels and colors in the legend. The vector of multiple values of this predictor can be either numeric (like BMI in the example above) or character (like Smoker in the example below):
plotProtTrend(prot="PGF.3078.1",ano=list(Smoker=c("0","1"),BMI=26,Age=24,Nulliparous="1"),
legendgroups=c("Non-smoker","Smoker"),ylim=c(9,14))

Please a allow a minute for the first call to any of the functions in the package to load lazily the models.
DAVIES DR, GELINAS AD, ZHANG C, et al. Unique motifs and hydrophobic interactions shape the binding of modified DNA ligands to protein targets. Proceedings of the National Academy of Sciences of the United States of America 2012;109:19971-6.
GOLD L, AYERS D, BERTINO J, et al. Aptamer-based multiplexed proteomic technology for biomarker discovery. PloS one 2010;5:e15004.
SOMALOGIC. SOMAmer Technical notes: http://www.somalogic.com/somalogic/media/Assets/PDFs/SSM-017-Rev-3-SOMAmer-Technical-Note-3-7-15.pdf (vol March 3, 2016).
BATES D, MÄCHLER M, BOLKER B, WALKER S. Fitting Linear Mixed-Effects Models Using lme4. Journal of Statistical Software 2015;67.