Introduction to DunedinPACE

DunedinPACE is a novel blood biomarker of the pace of aging for gerontology and geroscience. It shows high test-retest reliability, is associated with morbidity, disability, and mortality, and indicated faster aging in young adults with childhood adversity. DunedinPACE effect-sizes are similar to GrimAge Clock effect-sizes. In analysis of incident morbidity, disability, and mortality, DunedinPACE and added incremental prediction beyond GrimAge.

Citation for the original paper describing DunedinPACE() in more detail is provided below:

The PACEProjector function

The PACEProjector calculator requires a matrix or data.frame of beta values where rownames are probe ids and column names correspond to sample names. Beta values must be numeric and missing values must be coded as 'NA'.

#Load the library
library(DunedinPACE)
# Load the data
data("example_betas")
# Extract matrix of beta values
beta_matrix <-SummarizedExperiment::assay(example_betas)

For this example, we use a subset of a full 450k or EPIC array containing only the probes required for the normalization step and the PACE projection. This saves space. Your example should have at least these 20k probes (see getRequiredProbes() function, below).

# Dimensions of beta matrix 
dim(beta_matrix)

# Head of beta matrix
# Data should look like this

head(beta_matrix)

Generate the DunedinPACE projections as follows:

pace_values <-PACEProjector(beta_matrix)

The output will look like this

pace_values

Which you can extract as follows:

pace_values$DunedinPACE

The output, DunedinPACE, is equivalent to the pace of aging (in years) expected over a 1-year period. Higher values are equivalent to faster pace of aging, whereas lower values are equivalent to slower pace of aging.


The PACEProjector uses data from 20,000 CpGs. This includes 173 probes for PACE projection, and a background list that is used for normalization.

It is possible to account for missing data using the proportionOfProbesRequired argument in the PACEProjector() function, which by default is set to 0.8. If you run PACEProjector() on a full matrix of 450k or EPIC array data, you should not encounter any problems. If you are missing a lot of data, you can optionally lower this threshold to force the calculator to do its job. However, we do not recommend excluding the 19827 probes used for normalization and calculating DunedinPACE using only the 173 DunedinPACE associated probes, as this could affect DunedinPACE estimates.

The getRequiredProbes() function

CpGs used in the PACE projector can be accessed using the getRequiredProbes() command. For a list 173 CpGs used directly for DunedinPACE projection, use the argument getRequiredProbes(backgroundList = FALSE). For a list of all probes used in the PACEProjector(), which includes including an additional 19827 probes used for normalization, use the argument getRequiredProbes(backgroundList = TRUE)

Again, we do not recommend excluding the 19827 probes used for normalization and calculating DunedinPACE using only the 173 DunedinPACE associated probes, as this could affect DunedinPACE estimates.

getRequiredProbes(backgroundList = FALSE)


danbelsky/DunedinPACE documentation built on Feb. 24, 2024, 7:16 p.m.