library(omicade4)
## Loading required package: ade4
library(mogsa)
library(RSpectra)
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(glmnet)
## Loading required package: Matrix
## Loaded glmnet 4.1-7
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:mogsa':
##
## combine
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(cowplot)
##
## Attaching package: 'cowplot'
## The following object is masked from 'package:lubridate':
##
## stamp
library(ggplot2)
Requires additional MCIA source code from [https://github.com/akonstodata/mcia_mbpca]
source('https://raw.githubusercontent.com/akonstodata/mcia_mbpca/main/R/MCIA_mbpca_extra.R')
Data source: [https://github.com/joreynajr/cmi-pb-multiomics/tree/main/results/main/cmi_pb_datasets/processed/harmonized] Obtain files below from data source and save to local drive
# data_dir is path to local drive where data is saved
setwd("/Users/rnili/Desktop/repo/gitLab/cmi-pb-multiomics-main/results/main/cmi_pb_datasets/processed/harmonized")
# Read in tasks (2021)
task_mat<-read.table('task_matrix.common_names.mfi_normalised.tsv',sep='\t',header=TRUE,stringsAsFactors=TRUE,row.names=1)
# log normalize certain tasks
# task_mat[,1:7] = log2(task_mat[,1:7]+1)
# task_mat[,11:14] = log2(task_mat[,11:14]+1)
# Read in metadata
meta.2020<-read.table('clinical_metadata.2020.tsv',sep='\t',header=TRUE,stringsAsFactors=TRUE,row.names=1)
meta.2021<-read.table('clinical_metadata.2021.tsv',sep='\t',header=TRUE,stringsAsFactors=TRUE,row.names=1)
# Get age at boost
library(lubridate)
meta.2020$date_of_boost<-parse_date_time(meta.2020$date_of_boost,"ymd")
meta.2020$year_of_birth<-parse_date_time(meta.2020$year_of_birth,"ymd")
meta.2020$age_at_boost<- as.numeric(round(difftime(meta.2020$date_of_boost,
meta.2020$year_of_birth,units="weeks")/52,2))
meta.2021$date_of_boost<-parse_date_time(meta.2021$date_of_boost,"ymd")
meta.2021$year_of_birth<-parse_date_time(meta.2021$year_of_birth,"ymd")
meta.2021$age_at_boost<- as.numeric(round(difftime(meta.2021$date_of_boost,
meta.2021$year_of_birth,units="weeks")/52,2))
Data source: [https://github.com/joreynajr/cmi-pb-multiomics/tree/main/results/main/cmi_pb_datasets/processed/imputed]
Data was imputed using code in: [https://github.com/CMI-PB/2020_2021_data_merge/tree/main/scripts/CMIPB_2020_2021_imputation.Rmd]
Obtain files below from data source and save to local drive
##plot distributions
distPlot <- function(col, df){
p <-
ggplot(df) +
aes_string(col)
if(is.numeric(df[[col]])) {
p <- p + geom_density()
} else {
p <- p + geom_bar()
}
}
# is.vector(names(dataDf))
# length(dataDf)
# names(task_mat)[2:length(task_mat)]
typeof(task_mat)
## [1] "list"
#
distPlots <- lapply(names(task_mat), distPlot, df=task_mat)
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
plot_grid(plotlist = distPlots)
## Warning: Removed 37 rows containing non-finite values (`stat_density()`).
## Warning: Removed 40 rows containing non-finite values (`stat_density()`).
## Warning: Removed 37 rows containing non-finite values (`stat_density()`).
## Warning: Removed 21 rows containing non-finite values (`stat_density()`).
## Removed 21 rows containing non-finite values (`stat_density()`).
## Removed 21 rows containing non-finite values (`stat_density()`).
## Removed 21 rows containing non-finite values (`stat_density()`).
# imputed_dir is path to local drive where data is saved
setwd("/Users/rnili/Desktop/repo/gitLab/cmi-pb-multiomics-main/results/main/cmi_pb_datasets/processed/imputed")
# Import imputed datasets
rnaseq_baseline_mat_imputed_20 <- read.csv('rnaseq_baseline_mat_imputed_20_051022.csv',row.names=1)
cytof_baseline_mat_imputed_20 <- read.csv('cytof_baseline_mat_imputed_20_051022.csv',row.names=1)
olink_baseline_mat_imputed_20 <- read.csv('olink_baseline_mat_imputed_20_051022.csv',row.names=1)
abtiters_baseline_mat_imputed_20 <- read.csv('abtiters_baseline_mat_imputed_20_051022.csv',row.names=1)
rnaseq_baseline_mat_imputed_21 <- read.csv('rnaseq_baseline_mat_imputed_21_051022.csv',row.names=1)
cytof_baseline_mat_imputed_21 <- read.csv('cytof_baseline_mat_imputed_21_051022.csv',row.names=1)
olink_baseline_mat_imputed_21 <- read.csv('olink_baseline_mat_imputed_21_051022.csv',row.names=1)
abtiters_baseline_mat_imputed_21 <- read.csv('abtiters_baseline_mat_imputed_21_051022.csv',row.names=1)
# Check features the same
identical(colnames(rnaseq_baseline_mat_imputed_20),colnames(rnaseq_baseline_mat_imputed_21))
## [1] TRUE
identical(colnames(cytof_baseline_mat_imputed_20),colnames(cytof_baseline_mat_imputed_21))
## [1] TRUE
identical(colnames(olink_baseline_mat_imputed_20),colnames(olink_baseline_mat_imputed_21))
## [1] TRUE
identical(colnames(abtiters_baseline_mat_imputed_20),colnames(abtiters_baseline_mat_imputed_21))
## [1] TRUE
data_2020<-list(cytof=t(cytof_baseline_mat_imputed_20),
seq=t(rnaseq_baseline_mat_imputed_20),
olink=t(olink_baseline_mat_imputed_20),
abtiters=t(abtiters_baseline_mat_imputed_20))
lapply(data_2020,dim)
## $cytof
## [1] 22 36
##
## $seq
## [1] 11589 36
##
## $olink
## [1] 27 36
##
## $abtiters
## [1] 19 36
set.seed(0)
num_comps=10
mcia_out_gs<-mcia_mbpca(data_2020,num_comps=num_comps,preprocess='nsc',block_prep='lambda_all',
deflat_method="globalScore")
## Function 'svd' used, all singular vectors will be computed
## Function 'svd' used, all singular vectors will be computed
## Function 'svd' used, all singular vectors will be computed
## Function 'svd' used, all singular vectors will be computed
## calculating component 1 ...
## calculating component 2 ...
## calculating component 3 ...
## calculating component 4 ...
## calculating component 5 ...
## calculating component 6 ...
## calculating component 7 ...
## calculating component 8 ...
## calculating component 9 ...
## calculating component 10 ...
tasks_ab<-c('IgG.PT','IgG.FHA','IgG.PRN','IgG1.PT','IgG1.FHA','IgG1.PRN','IgG4.PT','IgG4.FHA','IgG4.PRN')
tasks_cytof<-c('Monocytes','ASCs..Plasmablasts.','CD4Tcells')
tasks_seq<-c('ENSG00000277632','ENSG00000136244','ENSG00000100906','ENSG00000229807')
Showing required tasks being added from imputed files are already normalized
names(rnaseq_baseline_mat_imputed_20[tasks_seq])
## [1] "ENSG00000277632" "ENSG00000136244" "ENSG00000100906" "ENSG00000229807"
distPlot <- function(col, df){
p <-
ggplot(df) +
aes_string(col)
if(is.numeric(df[[col]])) {
p <- p + geom_density()
} else {
p <- p + geom_bar()
}
}
#
distPlots <- lapply(tasks_seq, distPlot, df=rnaseq_baseline_mat_imputed_20)
plot_grid(plotlist = distPlots)
gs_2020_temp = mcia_out_gs$mcia_result$t
gs_2020<-data.frame(gs_2020_temp)
gs_2020$age<-meta.2020[rownames(gs_2020),"age_at_boost"]
gs_2020$infancy_vac<-as.numeric(meta.2020[rownames(gs_2020),'infancy_vac'])
gs_2020$biological_sex<-as.numeric(meta.2020[rownames(gs_2020),'biological_sex'])
n_cols = dim(gs_2020)[2]
gs_2020[,(n_cols+1):(n_cols+length(tasks_ab))]<-abtiters_baseline_mat_imputed_20[rownames(gs_2020),tasks_ab]
colnames(gs_2020)[(n_cols+1):(n_cols+length(tasks_ab))]<-tasks_ab
n_cols = dim(gs_2020)[2]
gs_2020[,(n_cols+1):(n_cols+length(tasks_seq))]<-rnaseq_baseline_mat_imputed_20[rownames(gs_2020),tasks_seq]
colnames(gs_2020)[(n_cols+1):(n_cols+length(tasks_seq))]<-tasks_seq
n_cols = dim(gs_2020)[2]
gs_2020[,(n_cols+1):(n_cols+length(tasks_cytof))]<-cytof_baseline_mat_imputed_20[rownames(gs_2020),tasks_cytof]
colnames(gs_2020)[(n_cols+1):(n_cols+length(tasks_cytof))]<-tasks_cytof
Showing everything except demographic data and MCIA results are normalized. Regardless of
names(gs_2020)
## [1] "X1" "X2" "X3"
## [4] "X4" "X5" "X6"
## [7] "X7" "X8" "X9"
## [10] "X10" "age" "infancy_vac"
## [13] "biological_sex" "IgG.PT" "IgG.FHA"
## [16] "IgG.PRN" "IgG1.PT" "IgG1.FHA"
## [19] "IgG1.PRN" "IgG4.PT" "IgG4.FHA"
## [22] "IgG4.PRN" "ENSG00000277632" "ENSG00000136244"
## [25] "ENSG00000100906" "ENSG00000229807" "Monocytes"
## [28] "ASCs..Plasmablasts." "CD4Tcells"
distPlot <- function(col, df){
p <-
ggplot(df) +
aes_string(col)
if(is.numeric(df[[col]])) {
p <- p + geom_density()
} else {
p <- p + geom_bar()
}
}
# is.vector(names(dataDf))
# length(dataDf)
# names(gs_2020)[2:length(gs_2020)]
typeof(gs_2020)
## [1] "list"
#
distPlots <- lapply(names(gs_2020), distPlot, df=gs_2020)
plot_grid(plotlist = distPlots)
Analyze correlation between predicted and true values in leave-one-out cross-validation assay
pred_cor<-data.frame(matrix(nrow=ncol(task_mat),ncol=3))
rownames(pred_cor)<-colnames(task_mat)
colnames(pred_cor)<-c('pearson.cor.pred.true', 'spearman.cor.pred.true', 'ranked.spearman.cor.pred.true')
# Loop through all tasks
for (i in 1:ncol(task_mat)){
all_preds<-c()
all_true<-c()
set.seed(1)
x_out <-data.frame(task_mat[,i])
rownames(x_out)<-rownames(task_mat)
x_out$temp<-'temp'
names(x_out)<-c('Y','temp')
x_out_r<-na.omit(x_out)
row_int<-intersect(rownames(x_out_r),rownames(gs_2020))
x_out_r<-x_out_r[row_int,]
gs_2020_filt<-gs_2020[rownames(x_out_r),]
#train = 1:nrow(gs_2020_filt)
# train all leave-one-out models
for (j in 1:nrow(gs_2020_filt)){
train = 1:nrow(gs_2020_filt)
train = train[-c(j)]
a <- colnames(gs_2020_filt)
# create lasso model
suppressWarnings(cvfit_out<-cv.glmnet(x=as.matrix(gs_2020_filt[train,]), x_out_r[train,'Y'], family='gaussian',
alpha=1,nfolds=nrow(gs_2020_filt[train,])))
preds<-predict(cvfit_out,newx=as.matrix(data.frame(gs_2020_filt[-train,])),s='lambda.min')
all_preds<-c(all_preds,preds)
all_true<-c(all_true,x_out_r[-train,'Y'])
}
# pred_cor[i,'cor.pred.true']<-cor(all_preds,all_true) # Can also use spearman correlation
pred_cor[i,'pearson.cor.pred.true'] <- cor(all_preds,all_true)
pred_cor[i,'spearman.cor.pred.true'] <- cor(all_preds,all_true, method="spearman")
pred_cor[i,'ranked.spearman.cor.pred.true'] <- cor(rank(all_preds,na.last="keep",ties.method="min"),rank(all_true,na.last="keep",ties.method="min"), method="spearman")
}
# print(pred_cor)
Consider only choosing models for follow-on analysis that show good correlation scores
all_models_coef<-vector(mode='list',length=14)
all_models_names<-vector(mode='list',length=14)
all_models<-vector(mode='list',length=14)
for (i in 1:14){
set.seed(1)
x_out <-data.frame(task_mat[,i])
rownames(x_out)<-rownames(task_mat)
x_out$temp<-'temp'
names(x_out)<-c('Y','temp')
x_out_r<-na.omit(x_out)
row_int<-intersect(rownames(x_out_r),rownames(gs_2020))
x_out_r<-x_out_r[row_int,]
gs_2020_filt<-gs_2020[rownames(x_out_r),]
# create lasso model
suppressWarnings(cvfit_out<-cv.glmnet(x=as.matrix(gs_2020_filt), y=as.matrix(x_out_r[,'Y']), family='gaussian',
alpha=1,nfolds=nrow(gs_2020_filt-1)))
all_models_coef[i]=list(coef(cvfit_out, s = 'lambda.min')[coef(cvfit_out, s = 'lambda.min')[,1]!= 0])
all_models_names[i]=list(rownames(coef(cvfit_out, s = 'lambda.min'))[coef(cvfit_out, s = 'lambda.min')[,1]!= 0])
}
names(all_models_coef)<-colnames(task_mat)
names(all_models_names)<-colnames(task_mat)
for (i in 1:14){
all_models[[i]] = data.frame(cbind(all_models_names[[i]],all_models_coef[[i]]))
colnames(all_models[[i]])<-c("Variable","Coefficient")
all_models[[i]]$Coefficient<-as.numeric(all_models[[i]]$Coefficient)
all_models[[i]]$Coefficient=round(all_models[[i]]$Coefficient,3)
}
names(all_models)<-colnames(task_mat)
for (i in 1:14){
all_models[[i]]$Variable[all_models[[i]]$Variable==tasks_seq[1]]="CCL3"
all_models[[i]]$Variable[all_models[[i]]$Variable==tasks_seq[2]]="IL6"
all_models[[i]]$Variable[all_models[[i]]$Variable==tasks_seq[3]]="NFKBIA"
all_models[[i]]$Variable[all_models[[i]]$Variable==tasks_seq[4]]="XIST"
all_models[[i]]<-all_models[[i]] %>% arrange(desc(abs(Coefficient)))
}
all_models[1]
## $IgG.PT_day14
## Variable Coefficient
## 1 X4 19.118
## 2 (Intercept) 5.326
## 3 IgG1.PT 0.965
#preprocess2021 data
num_comps=10
block_prep_use = 'lambda_all'
data_2021<-list(cytof=t(cytof_baseline_mat_imputed_21),
seq=t(rnaseq_baseline_mat_imputed_21),
olink=t(olink_baseline_mat_imputed_21),
abtiters=t(abtiters_baseline_mat_imputed_21))
table_out<-nsc_prep(data_2021, num_comps)
final_out<-processOpt(table_out,scale=FALSE,center=FALSE,num_comps,option=block_prep_use)
## Function 'svd' used, all singular vectors will be computed
## Function 'svd' used, all singular vectors will be computed
## Function 'svd' used, all singular vectors will be computed
## Function 'svd' used, all singular vectors will be computed
# generate 2021 global scores using 2020 models
gs_2021_temp=new_gs(final_out,mcia_out_gs$mcia_result)
rownames(gs_2021_temp)<-rownames(meta.2021)
gs_2021<-data.frame(gs_2021_temp)
# Add demographic variables to 2021 MCIA global scores
gs_2021$age<-meta.2021[rownames(gs_2021),"age_at_boost"]
gs_2021$infancy_vac<-as.numeric(meta.2021[rownames(gs_2021),'infancy_vac'])
gs_2021$biological_sex<-as.numeric(meta.2021[rownames(gs_2021),'biological_sex'])
# Add day 0 values of tasks to 2021 MCIA global scores to make 2021 'MCIAplus' model
n_cols = dim(gs_2021)[2]
gs_2021[,(n_cols+1):(n_cols+length(tasks_ab))]<-abtiters_baseline_mat_imputed_21[rownames(gs_2021),tasks_ab]
colnames(gs_2021)[(n_cols+1):(n_cols+length(tasks_ab))]<-tasks_ab
n_cols = dim(gs_2021)[2]
gs_2021[,(n_cols+1):(n_cols+length(tasks_seq))]<-rnaseq_baseline_mat_imputed_21[rownames(gs_2021),tasks_seq]
colnames(gs_2021)[(n_cols+1):(n_cols+length(tasks_seq))]<-tasks_seq
n_cols = dim(gs_2021)[2]
gs_2021[,(n_cols+1):(n_cols+length(tasks_cytof))]<-cytof_baseline_mat_imputed_21[rownames(gs_2021),tasks_cytof]
colnames(gs_2021)[(n_cols+1):(n_cols+length(tasks_cytof))]<-tasks_cytof
# initiate matrices
val_predict<-data.frame(matrix(nrow = nrow(gs_2021), ncol=ncol(task_mat)))
rank_predict<-data.frame(matrix(nrow=nrow(gs_2021),ncol=ncol(task_mat)))
rownames(rank_predict)<-rownames(val_predict)<-rownames(gs_2021)
colnames(rank_predict)<-colnames(val_predict)<-colnames(task_mat)
# If results of 2020 CV testing were poor, make predictions based on day 0 values
val_predict$IgG.FHA_day14<-gs_2021$IgG.FHA
val_predict$IgG.PRN_day14<-gs_2021$IgG.PRN
val_predict$IgG1.FHA_day14<-gs_2021$IgG1.FHA
val_predict$Monocytes_day1<-gs_2021$Monocytes
val_predict$ASCs..Plasmablasts._day7<-gs_2021$ASCs..Plasmablasts.
val_predict$CD4Tcells_day3<-gs_2021$CD4Tcells
# If results of 2020 CV testing were good, use model to make predictions
set.seed(1)
for (i in c(1,4,6,7,11,12,13,14)){ # choose variables here which to predict with model vs. with day 0 values
x_out <-data.frame(task_mat[,i])
rownames(x_out)<-rownames(task_mat)
x_out$temp<-'temp'
names(x_out)<-c('Y','temp')
x_out_r<-na.omit(x_out)
row_int<-intersect(rownames(x_out_r),rownames(gs_2020))
x_out_r<-x_out_r[row_int,]
gs_2020_filt<-gs_2020[rownames(x_out_r),]
# create lasso model using 2020 data
cvfit_out<-cv.glmnet(x=as.matrix(gs_2020_filt), x_out_r$Y, family='gaussian',
alpha=1,nfolds=nrow(gs_2020_filt),type.measure="mse")
# make predictions on 2021 data
preds<-data.frame(predict(cvfit_out,newx=as.matrix(gs_2021),s='lambda.min'))
val_predict[,i]<-preds
}
## Warning: Option grouped=FALSE enforced in cv.glmnet, since < 3 observations per
## fold
## Warning: Option grouped=FALSE enforced in cv.glmnet, since < 3 observations per
## fold
## Warning: Option grouped=FALSE enforced in cv.glmnet, since < 3 observations per
## fold
## Warning: Option grouped=FALSE enforced in cv.glmnet, since < 3 observations per
## fold
## Warning: Option grouped=FALSE enforced in cv.glmnet, since < 3 observations per
## fold
## Warning: Option grouped=FALSE enforced in cv.glmnet, since < 3 observations per
## fold
## Warning: Option grouped=FALSE enforced in cv.glmnet, since < 3 observations per
## fold
## Warning: Option grouped=FALSE enforced in cv.glmnet, since < 3 observations per
## fold
val_predict[c("61","62","75"),c("Monocytes_day1","ASCs..Plasmablasts._day7","CD4Tcells_day3")]<-NaN
val_predict[c("82","87","88"),1:7]<-NaN
for (i in 1:14){
rank_predict[,i]<-rank(-val_predict[,i],na.last="keep",ties.method="min")
}
rank_predict_reord<-colnames(rank_predict)
rank_predict_reord[8:10]<-c(rank_predict_reord[9],rank_predict_reord[10],rank_predict_reord[8])
rank_predict_out<-rank_predict[,rank_predict_reord]
rank_predict_out$subjectID = row.names(rank_predict_out)
print(row.names(rank_predict_out))
## [1] "61" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71" "72" "73" "74" "75"
## [16] "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" "90"
## [31] "91" "92" "93" "94" "95" "96"
new_rank_predict_out <- rank_predict_out %>% select(subjectID, rank_predict_reord)
## Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
## ℹ Please use `all_of()` or `any_of()` instead.
## # Was:
## data %>% select(rank_predict_reord)
##
## # Now:
## data %>% select(all_of(rank_predict_reord))
##
## See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
write.table(new_rank_predict_out,'Anna_cmipb_2020_preds_05132022.csv',sep=',', row.names = FALSE)
setwd("/Users/rnili/Desktop/repo/gitLab/cmi-pb-multiomics-main/rasteh/models")
a= append(list(pred_cor),all_models)
names(a)[1] <- 'pred_cor'
sink("allModels_predCor_annas_notNormalised.txt")
print(a)
## $pred_cor
## pearson.cor.pred.true spearman.cor.pred.true
## IgG.PT_day14 0.05005005 0.25199485
## IgG.FHA_day14 -0.97222212 -0.99903179
## IgG.PRN_day14 0.00249668 0.03140283
## IgG1.PT_day14 0.58118535 0.54337194
## IgG1.FHA_day14 0.18925577 0.22651223
## IgG4.PT_day14 0.65688921 0.71636669
## IgG4.FHA_day14 0.73200440 0.80746461
## Monocytes_day1 0.23070491 0.23235294
## ASCs..Plasmablasts._day7 -0.43629061 -0.76968380
## CD4Tcells_day3 0.29858463 0.44705882
## CCL3_day3 0.68393955 0.58249678
## IL.6_day3 0.39187182 0.40489060
## NFKBIA_day7 0.37273291 0.44555985
## XIST_day14 0.85969487 0.63552124
## ranked.spearman.cor.pred.true
## IgG.PT_day14 0.25199485
## IgG.FHA_day14 -0.99903179
## IgG.PRN_day14 0.03140283
## IgG1.PT_day14 0.54337194
## IgG1.FHA_day14 0.22651223
## IgG4.PT_day14 0.71636669
## IgG4.FHA_day14 0.80746461
## Monocytes_day1 0.23235294
## ASCs..Plasmablasts._day7 -0.76968380
## CD4Tcells_day3 0.44705882
## CCL3_day3 0.58249678
## IL.6_day3 0.40489060
## NFKBIA_day7 0.44555985
## XIST_day14 0.63552124
##
## $IgG.PT_day14
## Variable Coefficient
## 1 X4 19.118
## 2 (Intercept) 5.326
## 3 IgG1.PT 0.965
##
## $IgG.FHA_day14
## Variable Coefficient
## 1 (Intercept) 6.055
##
## $IgG.PRN_day14
## Variable Coefficient
## 1 X3 61.510
## 2 X5 34.396
## 3 X8 6.916
## 4 (Intercept) 4.895
## 5 IgG1.FHA 4.249
## 6 X4 2.755
## 7 IgG1.PT -1.329
## 8 IgG4.FHA -1.329
## 9 IgG.PT -0.221
## 10 biological_sex 0.089
##
## $IgG1.PT_day14
## Variable Coefficient
## 1 X4 20.327
## 2 (Intercept) 9.396
## 3 IgG1.PT 3.201
## 4 IgG4.PT -0.597
##
## $IgG1.FHA_day14
## Variable Coefficient
## 1 (Intercept) 2.389
## 2 X1 -1.080
## 3 IgG1.FHA 0.278
## 4 IgG.FHA 0.022
##
## $IgG4.PT_day14
## Variable Coefficient
## 1 X5 -187.127
## 2 (Intercept) -132.456
## 3 IgG4.PT 65.695
## 4 NFKBIA 3.739
## 5 Monocytes 3.346
## 6 ASCs..Plasmablasts. 0.047
##
## $IgG4.FHA_day14
## Variable Coefficient
## 1 X9 140.643
## 2 IgG4.FHA 7.474
## 3 IgG1.FHA -4.271
## 4 IL6 1.854
## 5 (Intercept) -1.102
## 6 ASCs..Plasmablasts. 0.657
## 7 infancy_vac -0.534
## 8 IgG1.PT -0.337
## 9 IgG4.PRN 0.312
##
## $Monocytes_day1
## Variable Coefficient
## 1 X7 -128.695
## 2 X10 -105.372
## 3 X2 78.080
## 4 (Intercept) 20.358
## 5 IL6 -1.872
## 6 Monocytes 0.319
## 7 X9 0.149
##
## $ASCs..Plasmablasts._day7
## Variable Coefficient
## 1 (Intercept) 1.642
##
## $CD4Tcells_day3
## Variable Coefficient
## 1 (Intercept) 28.882
## 2 biological_sex -6.052
## 3 CD4Tcells 0.321
##
## $CCL3_day3
## Variable Coefficient
## 1 (Intercept) -2441.556
## 2 X10 611.878
## 3 NFKBIA 267.649
## 4 infancy_vac -57.397
## 5 CCL3 2.808
##
## $IL.6_day3
## Variable Coefficient
## 1 (Intercept) -745.467
## 2 X10 485.221
## 3 NFKBIA 79.557
## 4 infancy_vac -2.439
##
## $NFKBIA_day7
## Variable Coefficient
## 1 IL6 431.859
## 2 infancy_vac -295.524
## 3 CCL3 172.327
## 4 (Intercept) -141.283
##
## $XIST_day14
## Variable Coefficient
## 1 X10 196.115
## 2 (Intercept) 146.176
## 3 X4 138.266
## 4 biological_sex -99.696
## 5 X1 -69.147
## 6 X6 13.201
## 7 NFKBIA 5.279
## 8 IgG.PRN -3.186
## 9 CCL3 1.807
## 10 IgG1.PT 1.446
## 11 ASCs..Plasmablasts. -0.183
sink()