Introduction and Data files

This dataset contains nine tissues (heart, hippocampus, hypothalamus, kidney, liver, prefrontal cortex, skeletal muscle, small intestine, and spleen) from C57BL/6J mice that were fed 2-deoxyglucose (6g/L) through their drinking water for 96hrs or 4wks. 96hr mice were given their 2DG treatment 2 weeks after the other cohort started the 4 week treatment. The organs from the mice were harvested and processed for metabolomics and transcriptomics. The data in this document pertains to the transcriptomics data only. The counts that were used were FPKM normalized before being log transformed. It was determined that sample A113 had low RNAseq quality and through further analyses with PCA, MA plots, and clustering was an outlier and will be removed for the rest of the analyses performed. This document will determine the overall summary expression of each module across the main effects, as well as, assess the significance of each main effect and their interaction, using ANOVA, for each module and assess potential interactions visually for each module.

needed.packages <- c("tidyverse", "here", "functional", "gplots", "dplyr", "GeneOverlap", "R.utils", "reshape2","magrittr","data.table", "RColorBrewer","preprocessCore", "ARTool","emmeans", "phia", "gProfileR", "WGCNA","plotly", "pheatmap","pander", "kableExtra")
for(i in 1:length(needed.packages)){library(needed.packages[i], character.only = TRUE)}

source(here("source_files","WGCNA_source.R"))
source(here("source_files","plot_theme.R"))
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()

log.tdata.FPKM.sample.info.subset.skeletal.muscle <- log.tdata.FPKM.sample.info.subset %>% rownames_to_column() %>% filter(Tissue == "Skeletal Muscle") %>% column_to_rownames()

log.tdata.FPKM.sample.info.subset.skeletal.muscle$Treatment[log.tdata.FPKM.sample.info.subset.skeletal.muscle$Treatment=="None"] <- "Control"

log.tdata.FPKM.sample.info.subset.skeletal.muscle <- cbind(log.tdata.FPKM.sample.info.subset.skeletal.muscle, Time.Treatment = paste(log.tdata.FPKM.sample.info.subset.skeletal.muscle$Time, log.tdata.FPKM.sample.info.subset.skeletal.muscle$Treatment))

module.labels <- readRDS(here("Data","Skeletal Muscle","log.tdata.FPKM.sample.info.subset.skeletal.muscle.WGCNA.module.labels.RData"))
module.eigens <- readRDS(here("Data","Skeletal Muscle","log.tdata.FPKM.sample.info.subset.skeletal.muscle.WGCNA.module.eigens.RData"))
modules <- readRDS(here("Data","Skeletal Muscle","log.tdata.FPKM.sample.info.subset.skeletal.muscle.WGCNA.module.membership.RData"))
net.deg <- readRDS(here("Data","Skeletal Muscle","Chang_2DG_BL6_connectivity_skeletal_muscle.RData"))
ensembl.location <- readRDS(here("Data","Ensembl_gene_id_and_location.RData"))

Eigengene Stratification

Eigengene were stratified by time and treatment. The heatmap is a matrix of the average eigengene value for each level of the trait.

factors <- c("Time","Treatment","Time.Treatment")
eigenmetabolite(factors,log.tdata.FPKM.sample.info.subset.skeletal.muscle)

Time

Treatment

Time.Treatment

ANOVA

An ANOVA using aligned rank transformation was performed for each module. The full model is y ~ time + treatment + time:treatment.

# Three-Way ANOVA for each Eigenmetabolite
model.data = dplyr::bind_cols(module.eigens[rownames(log.tdata.FPKM.sample.info.subset.skeletal.muscle),], log.tdata.FPKM.sample.info.subset.skeletal.muscle[,c("Time","Treatment")])
model.data$Time <- as.factor(model.data$Time)
model.data$Treatment <- as.factor(model.data$Treatment)

final.anova <- list()
for (m in colnames(module.eigens)) {
  a <- art(data = model.data, model.data[,m] ~ Time*Treatment)
  model <- anova(a)
  adjust <- p.adjust(model$`Pr(>F)`, method = "BH")
  
  final.anova[[m]] <- cbind(model, adjust)
}

Brown4 Module

DT.table(final.anova[[1]])

Bisque4 Module

DT.table(final.anova[[2]])

Lightsteelblue1 Module

DT.table(final.anova[[3]])

Firebrick4 Module

DT.table(final.anova[[4]])

Turquoise Module

DT.table(final.anova[[5]])

Purple Module

DT.table(final.anova[[6]])

Green Module

DT.table(final.anova[[7]])

Darkgrey Module

DT.table(final.anova[[8]])

Grey Module

DT.table(final.anova[[10]])

Grey60 Module

DT.table(final.anova[[11]])

Thistle1 Module

DT.table(final.anova[[12]])

Brown2 Module

DT.table(final.anova[[13]])

Saddlebrown Module

DT.table(final.anova[[14]])

Mediumpurple3 Module

DT.table(final.anova[[15]])

Orangered4 Module

DT.table(final.anova[[16]])

Salmon2 Module

DT.table(final.anova[[17]])

Lightcyan1 Module

DT.table(final.anova[[18]])

Floralwhite Module

DT.table(final.anova[[19]])

Darkslateblue Module

DT.table(final.anova[[20]])

Lightpink4 Module

DT.table(final.anova[[21]])

Honeydew1 Module

DT.table(final.anova[[22]])

Coral2 Module

DT.table(final.anova[[23]])

Yellow4 Module

DT.table(final.anova[[24]])

Orangered3 Module

DT.table(final.anova[[25]])

Lightcoral Module

DT.table(final.anova[[26]])

Plum3 Module

DT.table(final.anova[[27]])

palevioletred2 Module

DT.table(final.anova[[28]])

Magenta4 Module

DT.table(final.anova[[29]])

Lightpink3 Module

DT.table(final.anova[[31]])

Lavenderblush2 Module

DT.table(final.anova[[32]])

Darkseagreen3 Module

DT.table(final.anova[[33]])

Honeydew Module

DT.table(final.anova[[34]])

Coral Module

DT.table(final.anova[[35]])

Antiquewhite2 Module

DT.table(final.anova[[36]])

Coral3 Module

DT.table(final.anova[[37]])

Skyblue4 Module

DT.table(final.anova[[38]])

Sienna4 Module

DT.table(final.anova[[39]])

Orangered1 Module

DT.table(final.anova[[40]])

Interaction plots

Interaction plots were created to identify which modules have a potential interaction between time and treatment. A potential interaction is identified when the two lines cross.

for (m in module.labels) {
  p = plot.interaction(model.data, "Time", "Treatment", resp = m)
  name <- sapply(str_split(m,"_"),"[",2)
  cat("\n###",name,"\n")
  print(p)
  cat("\n \n")
}

brown4

bisque4

lightsteelblue1

firebrick4

turquoise

purple

green

darkgrey

grey

grey60

thistle1

brown2

saddlebrown

mediumpurple3

orangered4

salmon2

lightcyan1

floralwhite

darkslateblue

lightpink4

honeydew1

coral2

yellow4

orangered3

lightcoral

plum3

palevioletred2

magenta4

lightpink3

lavenderblush2

darkseagreen3

honeydew

coral

antiquewhite2

coral3

skyblue4

sienna4

orangered1


Analysis performed by Ann Wells

The Carter Lab The Jackson Laboratory 2023

ann.wells@jax.org