Matrix multiplication error to estimate telomere length
1
0
Entering edit mode
sharangiiv • 0
@d5fb3054
Last seen 8 weeks ago
Canada

I am trying to det telomere length values from processed dna methylation data. I am using the package methylclockdata

the code I used is as follows:

library(minfi)
library(knitr)
library(limma)
library(minfi)
library(IlluminaHumanMethylation450kanno.ilmn12.hg19)
library(IlluminaHumanMethylation450kmanifest)
library(RColorBrewer)
library(Gviz)
library(stringr)
library(ENmix)
library(tidyverse)
library(ggpubr)
library(methylclockData)
library(methylclock)
library(impute)

require(minfiData)
path <- file.path("C:/Users/Sarah Vasavan/Documents/DNA methylation project")
rgSet <- readidat(path = path,recursive = TRUE)
qc<-QCinfo(rgSet)
mdat<-preprocessENmix(rgSet, bgParaEst="oob", dyeCorr="RELIC", nCores=6)
mdat<-norm.quantile(mdat, method="quantile1")
beta_values <- getBeta(mdat)


knitr::opts_chunk$set(echo = TRUE)
library(ExperimentHub)
library(methylclockData)
eh <- ExperimentHub()
pData <- query(eh , "methylclockData")
df <- mcols(pData)
df
pData["EH6071"]

Telomere Length clock coefficients

coefTL <- get_coefTL()
head(coefTL)

Matrix multiplication to estimate telomere length

telomere_length_estimates <- beta_values %*% coefTL

the error I keep getting is:

requires numeric/complex matrix/vector arguments

based on chatgpt's recommendations, I then did the following steps:

Assuming beta_values is a matrix of beta values where rows represent CpG sites and columns represent samples

Check the class and structure of beta_values

class(beta_values)
str(beta_values)

Convert beta_values to a numeric matrix if it's not already in matrix format

beta_matrix <- as.matrix(beta_values)

Perform matrix multiplication

telomere_length_estimates <- beta_matrix %*% coefTL

The coefTL object is a data frame with 141 observations and 22 variables. To perform matrix multiplication, we need to extract the numeric coefficients from coefTL and convert them into a numeric matrix.

Extract numeric coefficients from coefTL

coefTL_numeric <- coefTL[, !(names(coefTL) %in% "CpGmarker")]
coefTL_matrix <- as.matrix(coefTL_numeric)

Check the structure of coefTL_matrix

str(coefTL_matrix)

Perform matrix multiplication

telomere_length_estimates <- beta_matrix %*% coefTL_matrix

Convert elements of coefTL_matrix to numeric

coefTL_matrix <- as.matrix(as.numeric(coefTL_matrix))

Check the structure of coefTL_matrix after conversion

str(coefTL_matrix)

Perform matrix multiplication

telomere_length_estimates <- beta_matrix %*% coefTL_matrix

Check dimensions of beta_matrix and coefTL_matrix

dim(beta_matrix)
[1] 473026     12
dim(coefTL_matrix)
[1] 2961    1

The issue is that the number of columns in beta_matrix (12) does not match the number of rows in coefTL_matrix (2961). To perform matrix multiplication, the number of columns in the first matrix must match the number of rows in the second matrix.

It seems like coefTL_matrix has only one column, which might not be what you intended. Double-check how you extracted or created coefTL_matrix to ensure it has the correct dimensions.

If coefTL_matrix should have more than one column, you need to revise how you extracted or created it so that it matches the expected dimensions for matrix multiplication with beta_matrix.

based on this feedback, I dont know what I should do next. any feedback is appreciated. thanks

methylclockData minfi methylclock minfidata • 172 views
ADD COMMENT
0
Entering edit mode
@james-w-macdonald-5106
Last seen 12 hours ago
United States

An easier way to proceed is to just read the vignette and emulate that with your data rather than trying to do all this stuff by hand. You can just run DNAmAge using your data and get the TL data from the resulting output.

Login before adding your answer.

Traffic: 575 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6