Analysis scripts and figures for the manuscript:
Meta-analysis of Human Serum DIA proteome: Combining Datasets for AI Analysis
This repository contains the R code used to reprocess, integrate, and analyse publicly available human serum/plasma data-independent acquisition (DIA) proteomics datasets. The pipeline combines quantitative protein data across studies, corrects for inter-dataset batch effects, characterises biological variability (age, sex, BMI), and prepares the merged dataset for downstream machine learning applications.
Public repositories allow for large-scale reanalysis, harmonisation and reuse of proteomics datasets. Here we perform such a reanalysis, focusing on human serum Data-Independent Acquisition (DIA) datasets. Our aim was to determine the feasibility of combining datasets, explore methods for removing batch effects and performing meta-analysis, and to see if statistical power could be gained in discovering associations between proteins and metadata variables (such as age and sex), without incurring false positives. Using eleven public DIA datasets, we compared three data manipulation methods: native iBAQ intensities; parts per billion (ppb); and ranked values, each with or without batch correction using ComBat and limma. Methods were evaluated by comparing associated proteins before and after batch correction. We were unable to effectively remove strong study batch effects, with false correlations frequently observed. Similarly, machine learning feature selection identified false positives. In these cases, batch effect from the source study was too strong to allow generation of a clean, combined dataset. We highlight the importance of treating datasets individually during reanalysis, and the difficulties of combining datasets for large-scale meta-analysis and AI-driven data mining.
Raw data for each dataset are publicly available from ProteomeXchange/PRIDE under the origional accessions. DIA-NN output files for the reanalysis can be found on Zenodo (https://doi.org/10.5281/zenodo.20282779).
HumanSerumDIAproteome/
├── DIASerum.qmd # Main analysis: integration, missingness, batch correction,
│ # PCA, GLM association testing, UpSet plots
├── DIAserum_functions.R # Helper functions sourced by DIASerum.qmd (e.g. GLM calculation)
├── Classifier_sex.qmd # Machine learning classifier predicting biological sex
│ # from serum protein abundance
├── assoc_functions.R # Functions for age/sex/BMI association analysis
├── assoc_plots.R # Plotting code for association results
├── files_meta_samples.csv # Sample-level metadata (PXD, file, sex, age, BMI, group)
├── Gene_lookup.rds # Protein accession → gene symbol lookup table
├── allIBAQ_edit.rds # Combined iBAQ intensity matrix (proteins × samples)
├── allInt_edit.rds # Combined (non-normalised) intensity matrix (proteins × samples)
└── Shiny_app/ # Interactive Shiny application for browsing GLM statistics of the merged dataset using ppb normalised intensities with limma correction
Analyses were run in R (via Quarto .qmd documents). The following R packages are required:
install.packages(c(
"dplyr", "tidyverse", "reshape", "stringr", "missForest",
"cowplot", "factoextra", "pheatmap", "paletteer", "plotrix",
"shiny"
))
# Bioconductor packages
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
BiocManager::install(c("sva", "limma", "ComplexHeatmap", "org.Hs.eg.db"))
# UpSetR (CRAN)
install.packages("UpSetR")A Dockerfile is also provided for a reproducible environment.
-
Clone the repository:
git clone https://github.com/PGB-LIV/HumanSerumDIAproteome.git cd HumanSerumDIAproteome -
Ensure
files_meta_samples.csv,Gene_lookup.rds,allIBAQ_edit.rds, andallInt_edit.rdsare present in the working directory (included in this repo). -
Render or step through the main analysis:
quarto render DIASerum.qmd
This reproduces protein/sample/patient coverage statistics, missingness filtering, biological variability (GLM) results, batch correction (ComBat/limma), PCA plots, and UpSet plots of cross-dataset associations. Intermediate objects are cached under
R_data/anddiann/to avoid recomputation. -
Run the sex classifier:
quarto render Classifier_sex.qmd
-
Launch the interactive Shiny app:
shiny::runApp("Shiny_app")
Key outputs generated by the pipeline include: - diann/Biological_variability_GLM.csv — master table of per-protein dataset/sample/patient coverage, mean abundance, missingness, variability (SD/SE/IQR), and GLM associations with age and sex - diann/Upset_meta/ — per-metadata-type, per-direction gene lists and UpSet plots showing overlap of significant associations across datasets - R_data/PCA/ — PCA plots before and after batch correction (uncorrected, ComBat, limma, rank-based) - R_data/GLM/ — GLM results under each normalisation/batch-correction strategy
If you use this code or the combined dataset, please cite:
Ramsbottom KA, Collins A, Prakash A, Perez-Riverol Y, Deutsch EW, Vizcaíno JA, Jones AR. Meta-analysis of Human Serum DIA proteome: Combining Datasets for AI Analysis. [Journal, in preparation].
Please also cite the original studies corresponding to the PXD datasets listed above.
For questions about this repository, please open an issue or contact the corresponding author of the manuscript.