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.hippocampus <- log.tdata.FPKM.sample.info.subset %>% rownames_to_column() %>% filter(Tissue == "Hippocampus") %>% column_to_rownames()

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

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

module.labels <- readRDS(here("Data","Hippocampus","log.tdata.FPKM.sample.info.subset.hippocampus.WGCNA.module.labels.RData"))
module.eigens <- readRDS(here("Data","Hippocampus","log.tdata.FPKM.sample.info.subset.hippocampus.WGCNA.module.eigens.RData"))
modules <- readRDS(here("Data","Hippocampus","log.tdata.FPKM.sample.info.subset.hippocampus.WGCNA.module.membership.RData"))
net.deg <- readRDS(here("Data","Hippocampus","Chang_2DG_BL6_connectivity_hippocampus.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.hippocampus)

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.hippocampus),], log.tdata.FPKM.sample.info.subset.hippocampus[,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)
}

Goldenrod4 Module

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

Brown2 Module

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

Deepskyblue4 Module

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

Coral1 Module

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

Turquoise Module

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

Darkseagreen2 Module

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

Chocolate3 Module

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

Darkgrey Module

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

Brown1 Module

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

Pink1 Module

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

Indianred1 Module

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

Tan4 Module

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

Dodgerblue1 Module

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

Green Module

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

Darkslateblue Module

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

Grey Module

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

Lavenderblush2 Module

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

Indianred4 Module

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

Tomato Module

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

Pink4 Module

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

Slateblue1 Module

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

Blue3 Module

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

Blanchedalmond Module

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

Darkolivegreen Module

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

Green3 Module

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

Dodgerblue3 Module

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

Chocolate2 Module

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

Lavenderblush3 Module

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

Chocolate Module

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

Orangered1 Module

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

Firebrick3 Module

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

Deeppink Module

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

Salmon1 Module

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

Lavenderblush1 Module

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

Firebrick2 Module

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

Indianred2 Module

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

Blue1 Module

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

Darkgoldenrod4 Module

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

Antiquewhite Module

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

Orange3 Module

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

Tan1 Module

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

Darkgoldenrod1 Module

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

Rosybrown3 Module

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

Khaki3 Module

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

Bisque2 Module

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

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")
}

goldenrod4

brown2

deepskyblue4

coral1

turquoise

darkseagreen2

chocolate3

darkgrey

brown1

pink1

indianred1

tan4

dodgerblue1

green

darkslateblue

grey

lavenderblush2

indianred4

tomato

pink4

slateblue1

blue3

blanchedalmond

darkolivegreen

green3

dodgerblue3

chocolate2

lavenderblush3

chocolate

orangered1

firebrick3

deeppink

salmon1

lavenderblush1

firebrick2

indianred2

blue1

darkgoldenrod4

antiquewhite

orange3

tan1

darkgoldenrod1

rosybrown3

khaki3

bisque2


Analysis performed by Ann Wells

The Carter Lab The Jackson Laboratory 2023

ann.wells@jax.org