tdata.FPKM.sample.info <- readRDS(here("Data","20190406_RNAseq_B6_4wk_2DG_counts_phenotypes.RData"))

tdata.FPKM <- readRDS(here("Data","20190406_RNAseq_B6_4wk_2DG_counts_numeric.RData"))

log.tdata.FPKM <- log(tdata.FPKM + 1)
log.tdata.FPKM <- as.data.frame(log.tdata.FPKM)

log.tdata.FPKM.sample.info <- cbind(log.tdata.FPKM, tdata.FPKM.sample.info[,27238:27240])

log.tdata.FPKM.sample.info <- log.tdata.FPKM.sample.info %>% rownames_to_column() %>% filter(rowname != "A113") %>% column_to_rownames()

log.tdata.FPKM.subset <- log.tdata.FPKM[,colMeans(log.tdata.FPKM != 0) > 0.5] 

log.tdata.FPKM.sample.info.subset <- cbind(log.tdata.FPKM.subset,tdata.FPKM.sample.info[,27238:27240])
log.tdata.FPKM.sample.info.subset <- log.tdata.FPKM.sample.info.subset %>% rownames_to_column() %>% filter(rowname != "A113") %>% column_to_rownames()

Wrangle Data

I will use Mouse IDs, Tissue, Treatment, and Time to keep track of the values in the matrices. All other covariates will be discarded.

# Set rownames by mouse ID and tissue
rownames(log.tdata.FPKM.sample.info.subset) <- paste0(rownames(log.tdata.FPKM.sample.info.subset),":", log.tdata.FPKM.sample.info.subset$Time, ":", log.tdata.FPKM.sample.info.subset$Treatment,":", log.tdata.FPKM.sample.info.subset$Tissue)

# Discard covariates from columns 17333-17336
log.tdata.FPKM.sample.info.subset <- log.tdata.FPKM.sample.info.subset[,-(17333:17335)]

head(log.tdata.FPKM.sample.info.subset[,1:5])
##                                 ENSMUSG00000000001 ENSMUSG00000000028
## A001:4 wks:None:Spleen                    3.819688          2.1770219
## A002:4 wks:None:Kidney                    3.378611          0.6981347
## A003:4 wks:None:Liver                     3.076390          0.2468601
## A004:4 wks:None:Heart                     1.771557          0.8415672
## A005:4 wks:None:Skeletal Muscle           1.921325          0.7371641
## A006:4 wks:None:Small Intestine           3.984158          1.7544037
##                                 ENSMUSG00000000031 ENSMUSG00000000037
## A001:4 wks:None:Spleen                   0.3435897        0.076961041
## A002:4 wks:None:Kidney                   0.1222176        0.292669614
## A003:4 wks:None:Liver                    0.0000000        0.000000000
## A004:4 wks:None:Heart                    2.3730436        0.058268908
## A005:4 wks:None:Skeletal Muscle          4.2101998        0.009950331
## A006:4 wks:None:Small Intestine          0.1655144        0.148420005
##                                 ENSMUSG00000000049
## A001:4 wks:None:Spleen                   0.7701082
## A002:4 wks:None:Kidney                   2.8419982
## A003:4 wks:None:Liver                    7.1628315
## A004:4 wks:None:Heart                    0.1310283
## A005:4 wks:None:Skeletal Muscle          0.3074847
## A006:4 wks:None:Small Intestine          0.7839015

Check Data for Missing Values

WGCNA will have poor results if the data have too many missing values. I checked if any metabolites fall into this category.

log.tdata.FPKM.sample.info.subset.missing <- missing(log.tdata.FPKM.sample.info.subset)
cat("logFPKM: ", goodSamplesGenes(log.tdata.FPKM.sample.info.subset.missing, verbose=0)$allOK, "\n")
## logFPKM:  TRUE

WGCNA reports that all data are good! I now use hierarchical clustering to detect any obvious outliers. I did not see any particularly egregious outliers.

sampleclustering(log.tdata.FPKM.sample.info.subset.missing)

saveRDS(log.tdata.FPKM.sample.info.subset.missing, here("Data","log.tdata.FPKM.sample.info.subset.missing.WGCNA.RData"))

Analysis performed by Ann Wells

The Carter Lab The Jackson Laboratory 2023

ann.wells@jax.org