3  Disease Associated Proteins (DAPs)

For each outcome, we calculated a 5% False Discovery Rate (FDR)-corrected p-value using both unpaired t-tests (assuming unequal variance) and logistic regression, applying the Benjamini-Hochberg (BH) procedure for multiple testing correction. Proteins with a BH-adjusted p-value < 0.05 are referred to as “disease-associated proteins” (DAPs).

DAPs were identified using the find_DEP() function. Logistic regression and t-tests were performed using the lreg() and ttest() functions, respectively, all defined in _libs/MethodD_function.R.

3.1 POPS

3.1.1 No. of DAPs

Code
DAPs_summary <- data.frame(
  Outcome = character(),
  GA = character(),
  DAPs_Count = integer(),
  stringsAsFactors = FALSE)
add_DAPs_count <- function(outcome, GA, data) {
  DAPs <- find_DEP(data.frame(data), mc.cores = 12, pvalue = 0.05)#POPSID+proteins+y or proteins+y
  DAPs_summary <<- rbind(DAPs_summary, data.frame(
    Outcome = outcome,
    GA = GA,
    DAPs_Count = dim(DAPs)[1],
    stringsAsFactors = FALSE))}
# Compute DAPs for each condition and GA
#proteins+y 
add_DAPs_count("PE_pure", "12wk", dl.npxz5.Roche.ISM2$PE_pure$`12wk`%>%dplyr::select(-c(POPSID, Comparator,Roche_PlGF,Roche_PAPP_A,Roche_AFP,Roche_hCGbeta)))
add_DAPs_count("FGR_pure", "12wk", dl.npxz5.Roche.ISM2$FGR_pure$`12wk`%>%dplyr::select(-c(POPSID, Comparator,Roche_PlGF,Roche_PAPP_A,Roche_AFP,Roche_hCGbeta)))
add_DAPs_count("PE_with_FGR", "12wk", dl.npxz5.Roche.ISM2$PE_and_FGR$`12wk`%>%dplyr::select(-c(POPSID, Comparator,Roche_PlGF,Roche_PAPP_A,Roche_AFP,Roche_hCGbeta,case_type)))
datatable(DAPs_summary, rownames = FALSE, caption = "Summary of DAPs for POPS",
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 4))

3.1.2 Logistic Regression

3.1.2.1 PE only

Code
DAPs_PE_pure=find_DEP(data.frame(dl.npxz5.Roche.ISM2$PE_pure$`12wk`%>%dplyr::select(-c(POPSID, Comparator,Roche_PlGF,Roche_PAPP_A,Roche_AFP,Roche_hCGbeta))), mc.cores = 12, pvalue = 0.05)
lreg_PE_pure=lreg(data.frame(dl.npxz5.Roche.ISM2$PE_pure$`12wk`%>%dplyr::select(c(DAPs_PE_pure$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
lreg_PE_pure_df <- as.data.frame(lreg_PE_pure)
lreg_PE_pure_df_sorted <- lreg_PE_pure_df[order(lreg_PE_pure_df$pval), ]
datatable(lreg_PE_pure_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("log_odds","se","zval","odds","odds_lo","odds_hi","auc","auc_lo","auc_hi"), digits = 4)

3.1.2.2 FGR only

Code
DAPs_FGR_pure=find_DEP(data.frame(dl.npxz5.Roche.ISM2$FGR_pure$`12wk`%>%dplyr::select(-c(POPSID, Comparator,Roche_PlGF,Roche_PAPP_A,Roche_AFP,Roche_hCGbeta))), mc.cores = 12, pvalue = 0.05)
DAPs_FGR_pure <- DAPs_FGR_pure %>%
  mutate(feature = gsub("ERVV\\.1", "ERVV-1", feature))
lreg_FGR_pure=lreg(data.frame(dl.npxz5.Roche.ISM2$FGR_pure$`12wk`%>%dplyr::select(c(DAPs_FGR_pure$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
lreg_FGR_pure_df <- as.data.frame(lreg_FGR_pure)
lreg_FGR_pure_df_sorted <- lreg_FGR_pure_df[order(lreg_FGR_pure_df$pval), ]
datatable(lreg_FGR_pure_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("log_odds","se","zval","odds","odds_lo","odds_hi","auc","auc_lo","auc_hi"), digits = 4)

3.1.2.3 PE with FGR

Code
DAPs_PE_FGR=find_DEP(data.frame(dl.npxz5.Roche.ISM2$PE_and_FGR$`12wk`%>%dplyr::select(-c(POPSID, Comparator,Roche_PlGF,Roche_PAPP_A,Roche_AFP,Roche_hCGbeta,case_type))), mc.cores = 12, pvalue = 0.05)
lreg_PE_FGR=lreg(data.frame(dl.npxz5.Roche.ISM2$PE_and_FGR$`12wk`%>%dplyr::select(c(DAPs_PE_FGR$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
lreg_PE_FGR_df <- as.data.frame(lreg_PE_FGR)
lreg_PE_FGR_df_sorted <- lreg_PE_FGR_df[order(lreg_PE_FGR_df$pval), ]
datatable(lreg_PE_FGR_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("log_odds","se","zval","odds","odds_lo","odds_hi","auc","auc_lo","auc_hi"), digits = 4)

3.1.3 T Test

3.1.3.1 PE only

Code
ttest_PE_pure=ttest(data.frame(dl.npxz5.Roche.ISM2$PE_pure$`12wk`%>%dplyr::select(c(DAPs_PE_pure$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
ttest_PE_pure_df <- as.data.frame(ttest_PE_pure)
ttest_PE_pure_df_sorted <- ttest_PE_pure_df[order(ttest_PE_pure_df$pval), ]
datatable(ttest_PE_pure_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("case","ctrl","se"), digits = 4)

3.1.3.2 FGR only

Code
ttest_FGR_pure=ttest(data.frame(dl.npxz5.Roche.ISM2$FGR_pure$`12wk`%>%dplyr::select(c(DAPs_FGR_pure$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
ttest_FGR_pure_df <- as.data.frame(ttest_FGR_pure)
ttest_FGR_pure_df_sorted <- ttest_FGR_pure_df[order(ttest_FGR_pure_df$pval), ]
datatable(ttest_FGR_pure_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("case","ctrl","se"), digits = 4)

3.1.3.3 PE with FGR

Code
ttest_PE_FGR=ttest(data.frame(dl.npxz5.Roche.ISM2$PE_and_FGR$`12wk`%>%dplyr::select(c(DAPs_PE_FGR$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
ttest_PE_FGR_df <- as.data.frame(ttest_PE_FGR)
ttest_PE_FGR_df_sorted <- ttest_PE_FGR_df[order(ttest_PE_FGR_df$pval), ]
datatable(ttest_PE_FGR_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("case","ctrl","se"), digits = 4)

3.2 POPS2

3.2.1 No. of DAPs

Code
DAPs_summary <- data.frame(
  Outcome = character(),
  GA = character(),
  DAPs_Count = integer(),
  stringsAsFactors = FALSE)
add_DAPs_count <- function(outcome, GA, data) {
  DAPs <- find_DEP(data.frame(data), mc.cores = 12, pvalue = 0.05)#POPSID+proteins+y or proteins+y
  DAPs_summary <<- rbind(DAPs_summary, data.frame(
    Outcome = outcome,
    GA = GA,
    DAPs_Count = dim(DAPs)[1],
    stringsAsFactors = FALSE ))}
# Compute DAPs for each condition and GA
#proteins+y 
add_DAPs_count("PE_pure", "12wk", dl.npxz5.pops2.ISM2$`12wk`$PE_pure%>%dplyr::select(-c(POPSID)))
add_DAPs_count("FGR_pure", "12wk", dl.npxz5.pops2.ISM2$`12wk`$FGR_pure%>%dplyr::select(-c(POPSID)))
add_DAPs_count("PE_with_FGR", "12wk", dl.npxz5.pops2.ISM2$`12wk`$PE_and_FGR%>%dplyr::select(-c(POPSID)))
datatable(DAPs_summary, rownames = FALSE, caption = "Summary of DAPs for POPS2",
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 4))

3.2.2 Logistic Regression

3.2.2.1 PE only

Code
DAPs_PE_pure=find_DEP(data.frame(dl.npxz5.pops2.ISM2$`12wk`$PE_pure%>%dplyr::select(-c(POPSID))), mc.cores = 12, pvalue = 0.05)
lreg_PE_pure=lreg(data.frame(dl.npxz5.pops2.ISM2$`12wk`$PE_pure%>%dplyr::select(c(DAPs_PE_pure$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
lreg_PE_pure_df <- as.data.frame(lreg_PE_pure)
lreg_PE_pure_df_sorted <- lreg_PE_pure_df[order(lreg_PE_pure_df$pval), ]
datatable(lreg_PE_pure_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("log_odds","se","zval","odds","odds_lo","odds_hi","auc","auc_lo","auc_hi"), digits = 4)

3.2.2.2 FGR only

Code
DAPs_FGR_pure=find_DEP(data.frame(dl.npxz5.pops2.ISM2$`12wk`$FGR_pure%>%dplyr::select(-c(POPSID))), mc.cores = 12, pvalue = 0.05)
lreg_FGR_pure=lreg(data.frame(dl.npxz5.pops2.ISM2$`12wk`$FGR_pure%>%dplyr::select(c(DAPs_FGR_pure$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
lreg_FGR_pure_df <- as.data.frame(lreg_FGR_pure)
lreg_FGR_pure_df_sorted <- lreg_FGR_pure_df[order(lreg_FGR_pure_df$pval), ]
datatable(lreg_FGR_pure_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("log_odds","se","zval","odds","odds_lo","odds_hi","auc","auc_lo","auc_hi"), digits = 4)

3.2.2.3 PE with FGR

Code
DAPs_PE_FGR=find_DEP(data.frame(dl.npxz5.pops2.ISM2$`12wk`$PE_and_FGR%>%dplyr::select(-c(POPSID))), mc.cores = 12, pvalue = 0.05)
lreg_PE_FGR=lreg(data.frame(dl.npxz5.pops2.ISM2$`12wk`$FGR_pure%>%dplyr::select(c(DAPs_PE_FGR$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
lreg_PE_FGR_df <- as.data.frame(lreg_PE_FGR)
lreg_PE_FGR_df_sorted <- lreg_PE_FGR_df[order(lreg_PE_FGR_df$pval), ]
datatable(lreg_PE_FGR_df_sorted%>%
    mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("log_odds","se","zval","odds","odds_lo","odds_hi","auc","auc_lo","auc_hi"), digits = 4)

3.2.3 T Test

3.2.3.1 PE only

Code
ttest_PE_pure=ttest(data.frame(dl.npxz5.pops2.ISM2$`12wk`$PE_pure%>%dplyr::select(c(DAPs_PE_pure$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
ttest_PE_pure_df <- as.data.frame(ttest_PE_pure)
ttest_PE_pure_df_sorted <- ttest_PE_pure_df[order(ttest_PE_pure_df$pval), ]
datatable(ttest_PE_pure_df_sorted%>%
            mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("case","ctrl","se"), digits = 4)

3.2.3.2 FGR only

Code
ttest_FGR_pure=ttest(data.frame(dl.npxz5.pops2.ISM2$`12wk`$FGR_pure%>%dplyr::select(c(DAPs_FGR_pure$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
ttest_FGR_pure_df <- as.data.frame(ttest_FGR_pure)
ttest_FGR_pure_df_sorted <- ttest_FGR_pure_df[order(ttest_FGR_pure_df$pval), ]
datatable(ttest_FGR_pure_df_sorted%>%
            mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("case","ctrl","se"), digits = 4)

3.2.3.3 PE with FGR

Code
ttest_PE_FGR=ttest(data.frame(dl.npxz5.pops2.ISM2$`12wk`$FGR_pure%>%dplyr::select(c(DAPs_PE_FGR$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
ttest_PE_FGR_df <- as.data.frame(ttest_PE_FGR)
ttest_PE_FGR_df_sorted <- ttest_PE_FGR_df[order(ttest_PE_FGR_df$pval), ]
datatable(ttest_PE_FGR_df_sorted%>%
            mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("case","ctrl","se"), digits = 4)

3.3 Composite outcomes

3.3.1 No. of DAPs

Code
DAPs_summary <- data.frame(
  Outcome = character(),
  GA = character(),
  DAPs_Count = integer(),
  stringsAsFactors = FALSE)
add_DAPs_count <- function(outcome, GA, data) {
  DAPs <- find_DEP(data.frame(data), mc.cores = 12, pvalue = 0.05)#POPSID+proteins+y or proteins+y
  DAPs_summary <<- rbind(DAPs_summary, data.frame(
    Outcome = outcome,
    GA = GA,
    DAPs_Count = dim(DAPs)[1],
    stringsAsFactors = FALSE ))}
# Compute DAPs for each condition and GA
#proteins+y 
add_DAPs_count("Composite POPS", "12wk", dl.npxz5.Roche.pops.composite.12wk%>%dplyr::select(-c(POPSID, Comparator,Roche_PlGF,Roche_PAPP_A,Roche_AFP,Roche_hCGbeta)))
add_DAPs_count("Composite POPS2", "12wk",dl.npxz5.pops2.composite.12wk%>%dplyr::select(-c(POPSID)))
datatable(DAPs_summary, rownames = FALSE, caption = "Summary of DAPs for composite outcomes",
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 40))

3.3.2 Logistic Regression

3.3.2.1 Composite POPS

Code
DAPs_com_pops=find_DEP(data.frame(dl.npxz5.Roche.pops.composite.12wk%>%dplyr::select(-c(POPSID, Comparator,Roche_PlGF,Roche_PAPP_A,Roche_AFP,Roche_hCGbeta))), mc.cores = 12, pvalue = 0.05)
DAPs_com_pops <- DAPs_com_pops %>%
  mutate(feature = gsub("ERVV\\.1", "ERVV-1", feature))
lreg_com_pops=lreg(data.frame(dl.npxz5.Roche.pops.composite.12wk%>%dplyr::select(c(DAPs_com_pops$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
lreg_com_pops_df <- as.data.frame(lreg_com_pops)
lreg_com_pops_df_sorted <- lreg_com_pops_df[order(lreg_com_pops_df$pval), ]
datatable(lreg_com_pops_df_sorted%>%
            mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("log_odds","se","zval","odds","odds_lo","odds_hi","auc","auc_lo","auc_hi"), digits = 4)

3.3.2.2 Composite POPS2

Code
DAPs_com_pops2=find_DEP(data.frame(dl.npxz5.pops2.composite.12wk%>%dplyr::select(-c(POPSID))), mc.cores = 12, pvalue = 0.05)
DAPs_com_pops2 <- DAPs_com_pops2 %>%
  mutate(feature = gsub("ERVV\\.1", "ERVV-1", feature))
lreg_com_pops2=lreg(data.frame(dl.npxz5.pops2.composite.12wk%>%dplyr::select(c(DAPs_com_pops2$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
lreg_com_pops2_df <- as.data.frame(lreg_com_pops2)
lreg_com_pops2_df_sorted <- lreg_com_pops2_df[order(lreg_com_pops2_df$pval), ]
datatable(lreg_com_pops2_df_sorted%>%
            mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("log_odds","se","zval","odds","odds_lo","odds_hi","auc","auc_lo","auc_hi"), digits = 4)

3.3.3 T Test

3.3.3.1 Composite POPS

Code
ttest_com_pops=ttest(data.frame(dl.npxz5.Roche.pops.composite.12wk%>%dplyr::select(c(DAPs_com_pops$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
ttest_com_pops_df <- as.data.frame(ttest_com_pops)
ttest_com_pops_df_sorted <- ttest_com_pops_df[order(ttest_com_pops_df$pval), ]
datatable(ttest_com_pops_df_sorted%>%
            mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("case","ctrl","se"), digits = 4)

3.3.3.2 Composite POPS2

Code
ttest_com_pops2=ttest(data.frame(dl.npxz5.pops2.composite.12wk%>%dplyr::select(c(DAPs_com_pops2$feature,y))%>%
                              dplyr::rename_with(~ gsub("-", "__", .))), mc.cores=12) 
ttest_com_pops2_df <- as.data.frame(ttest_com_pops2)
ttest_com_pops2_df_sorted <- ttest_com_pops2_df[order(ttest_com_pops2_df$pval), ]
datatable(ttest_com_pops2_df_sorted%>%
            mutate(pval = sprintf("%.3e", pval)), rownames = FALSE, 
          options = list(
            scrollX = TRUE,
            scrollCollapse = TRUE,
            pageLength = 10))%>%
  formatRound(columns = c("case","ctrl","se"), digits = 4)