https://github.com/shorvath/MammalianMethylationConsortium
Tip revision: da8c94df7c75063273be48b70db89ec5d7b6f8c8 authored by Amin Haghani on 12 August 2025, 18:58:48 UTC
Update README.md
Update README.md
Tip revision: da8c94d
3- Matching colors and dendograms.Rmd
---
Author: "Amin Haghani"
Paper: "DNA Methylation Networks Underlying Mammalian Traits"
Authors: "Amin Haghani1, 2 †*; Caesar Z. Li3, 4 †; Todd R. Robeck5; Joshua Zhang1; Ake T. Lu1, 2; Julia Ablaeva6; Victoria A. Acosta-Rodríguez7; Danielle M. Adams8; Abdulaziz N. Alagaili9, 10; Javier Almunia11; Ajoy Aloysius12; Nabil M.S. Amor13; Reza Ardehali14; Adriana Arneson15, 16; C. Scott Baker17; Gareth Banks18; Katherine Belov19; Nigel C. Bennett20; Peter Black21; Daniel T. Blumstein22, 23; Eleanor K. Bors17; Charles E. Breeze24; Robert T. Brooke25; Janine L. Brown26; Gerald Carter27; Alex Caulton28, 29; Julie M. Cavin30; Lisa Chakrabarti31; Ioulia Chatzistamou32; Andreas S. Chavez27, 33; Hao Chen34; Kaiyang Cheng35; Priscila Chiavellini36; Oi-Wa Choi37, 38; Shannon Clarke28; Joseph A. Cook39; Lisa N. Cooper40; Marie-Laurence Cossette41; Joanna Day42; Joseph DeYoung37, 38; Stacy Dirocco43; Christopher Dold44; Jonathan L. Dunnum39; Erin E. Ehmke45; Candice K. Emmons46; Stephan Emmrich6; Ebru Erbay47, 48, 49; Claire Erlacher-Reid43; Chris G. Faulkes50, 51; Zhe Fei3, 52; Steven H. Ferguson53, 54; Carrie J. Finno55; Jennifer E. Flower56; Jean-Michel Gaillard57; Eva Garde58; Livia Gerber59, 60; Vadim N. Gladyshev61; Rodolfo G. Goya36; Matthew J Grant62; Carla B. Green7; M. Bradley Hanson46; Daniel W. Hart20; Martin Haulena63; Kelsey Herrick64; Andrew N. Hogan65; Carolyn J. Hogg19; Timothy A. Hore66; Taosheng Huang67; Juan Carlos Izpisua Belmonte2; Anna J. Jasinska37, 68, 69; Gareth Jones70; Eve Jourdain71; Olga Kashpur72; Harold Katcher73; Etsuko Katsumata74; Vimala Kaza75; Hippokratis Kiaris76; Michael S. Kobor77; Pawel Kordowitzki78; William R. Koski79; Michael Krützen60; Soo Bin Kwon16, 15; Brenda Larison22, 80; Sang-Goo Lee61; Marianne Lehmann36; Jean-François Lemaître57; Andrew J. Levine81; Xinmin Li82; Cun Li83, 84; Andrea R. Lim1; David T.S. Lin85; Dana M. Lindemann43; Schuyler W. Liphardt86; Thomas J. Little87; Nicholas Macoretta6; Dewey Maddox88; Craig O. Matkin89; Julie A. Mattison90; Matthew McClure91; June Mergl92; Jennifer J. Meudt93; Gisele A. Montano5; Khyobeni Mozhui94; Jason Munshi-South95; William J. Murphy96, 97; Asieh Naderi76; Martina Nagy98; Pritika Narayan62; Peter W. Nathanielsz83, 84; Ngoc B. Nguyen14; Christof Niehrs99, 100; Batsaikhan Nyamsuren101; Justine K. O'Brien42; Perrie O'Tierney Ginn72; Duncan T Odom102, 103; Alexander G. Ophir104; Steve Osborn105; Elaine A. Ostrander65; Kim M. Parsons46; Kimberly C. Paul81; Amy B. Pedersen87; Matteo Pellegrini106; Katharina J. Peters60, 107; Jessica L. Petersen108; Darren W. Pietersen109; Gabriela M. Pinho22; Jocelyn Plassais65; Jesse R. Poganik61; Natalia A. Prado110, 26; Pradeep Reddy111, 2; Benjamin Rey57; Beate R. Ritz112, 113, 81; Jooke Robbins114; Magdalena Rodriguez115; Jennifer Russell105; Elena Rydkina6; Lindsay L. Sailer104; Adam B. Salmon116; Akshay Sanghavi73; Kyle M. Schachtschneider117, 118, 119; Dennis Schmitt120; Todd Schmitt64; Lars Schomacher99; Lawrence B. Schook117, 121; Karen E. Sears22; Ashley W. Seifert12; Aaron B.A. Shafer122; Anastasia V. Shindyapina61; Melanie Simmons45; Kavita Singh123; Ishani Sinha22; Jesse Slone67; Russel G. Snell62; Elham Soltanmohammadi76; Matthew L. Spangler108; Maria Spriggs21; Lydia Staggs43; Nancy Stedman21; Karen J. Steinman124; Donald T Stewart125; Victoria J. Sugrue66; Balazs Szladovits126; Joseph S. Takahashi7, 127; Masaki Takasugi6; Emma C. Teeling128; Michael J. Thompson106; Bill Van Bonn129; Sonja C. Vernes130, 131; Diego Villar132; Harry V. Vinters133; Ha Vu15, 16; Mary C. Wallingford72; Nan Wang37, 38; Gerald S. Wilkinson8; Robert W. Williams134; Qi Yan3, 2; Mingjia Yao3; Brent G. Young54; Bohan Zhang61; Zhihui Zhang6; Yang Zhao6; Peng Zhao14, 135; Wanding Zhou136, 137; Joseph A. Zoller3; Jason Ernst15, 16; Andrei Seluanov138; Vera Gorbunova138; X. William Yang37, 38; Ken Raj139; Steve Horvath1, 2 *"
Date: "07-24-2023"
output: html_document
---
```{r libraries, message=FALSE}
library(easypackages)
libraries("readxl", "psych", "tidyr", "dplyr","gplots", "RColorBrewer","limma", "ggplot2", "metap", "anRichment", "clusterProfiler", "RColorBrewer", "ggstatsplot", "gridExtra", "ggupset", "psych", "corrplot", "limma", "edgeR", "gridExtra", "ggupset", "ggrepel", "data.table", "stringr")
```
```{r Network 1, reference}
net1MEs <- readRDS("WGCNA results/No marsupials/Module MEs merged net 1.RDS")
net1KMEs <- readRDS("WGCNA results/No marsupials/Merged modules KME net 1.RDS")
net1geneTree <- readRDS("WGCNA results/No marsupials/geneTree net 1.RDS")
net1mergedColors <- readRDS("WGCNA results/No marsupials/mergedColors net 1.RDS")
```
```{r Network 2}
net2MEs <- readRDS("WGCNA results/All, mappability filter/Module MEs merged net 2.RDS")
net2KMEs <- readRDS("WGCNA results/All, mappability filter/Merged modules KME net 2.RDS")
net2geneTree <- readRDS("WGCNA results/All, mappability filter/geneTree net 2.RDS")
net2mergedColors <- readRDS("WGCNA results/All, mappability filter/mergedColors net 2.RDS")
mergedData <- net1KMEs %>% tibble::rownames_to_column(var = "CGid") %>% dplyr::select(CGid) %>% mutate(net1 = net1mergedColors)
mergedData <- net2KMEs %>% tibble::rownames_to_column(var = "CGid") %>% dplyr::select(CGid) %>% mutate(net2 = net2mergedColors) %>% left_join(mergedData) %>% mutate(net2Matched = as.vector(matchLabels(net2, reference = net1))) %>% filter(CGid %in% rownames(net2KMEs))
identical(rownames(net2KMEs),mergedData$CGid)
net2mergedColors <- mergedData$net2Matched
newModulName <- mergedData %>% dplyr::select(net2, net2Matched) %>% distinct() %>% dplyr::rename(modules =net2, net1Modules = net2Matched)
colnames(net2MEs) <- sapply(colnames(net2MEs), function(x){
a <- newModulName$net1Modules[grepl(paste("^",gsub("ME", "", x), "$", sep = ""), newModulName$modules)]
a <- paste("ME", a, sep = "")
})
colnames(net2KMEs) <- sapply(colnames(net2KMEs), function(x){
a <- newModulName$net1Modules[grepl(paste("^",gsub("MM.", "", x), "$", sep = ""), newModulName$modules)]
a <- paste("MM.", a, sep = "")
})
colnames(net2KMEs)[grepl("MM.$", colnames(net2KMEs))] <- "modules"
net2KMEs <- net2KMEs %>% tibble::rownames_to_column(var = "CGid") %>% left_join(mergedData, by = "CGid") %>% dplyr::select(-net2, -net1, -modules)%>% mutate(net2Matched = as.vector(net2Matched)) %>% dplyr::rename(modules = net2Matched)%>% tibble::column_to_rownames(var = "CGid")
# lapply(list("net2MEs", "net2KMEs", "net2mergedColors"), function(x){
# a <- get(paste(x))
# saveRDS(a, paste("WGCNA results/All, mappability filter/", x, "_matched", ".RDS", sep = ""))
# })
```
```{r cons networks}
#
load("~/Google Drive/My Drive/Amin documents/Steve projects/Research projects/WGCNA of the total data/WGCNA results/Consensus WGCNA 57 species tissues/Consensus-NetworkConstruction-mammals.RData")
cNetSpeciesTissuesColors <- moduleColors
cNetSpeciesTissuesTree <- consTree
rm(moduleColors, moduleLabels, consTree, consMEs)
#
load("~/Google Drive/My Drive/Amin documents/Steve projects/Research projects/WGCNA of the total data/WGCNA results/Consensus WGCNA 35 species/Consensus-NetworkConstruction-mammals.RData")
cNetSpeciesColors <- moduleColors
cNetSpeciesTree <- consTree
rm(moduleColors, moduleLabels, consTree, consMEs)
#
load("~/Google Drive/My Drive/Amin documents/Steve projects/Research projects/WGCNA of the total data/WGCNA results/Consensus WGCNA 15 tissues/Consensus-NetworkConstruction-mammals.RData")
cNetTissuesColors <- moduleColors
cNetTissuesTree <- consTree
rm(moduleColors, moduleLabels, consTree, consMEs)
#
colorFiles <- list.files("WGCNA results/Tissue specific Consensus network/", pattern = "moduleColors.RDS", full.names = T, recursive = T)
treeFiles <- list.files("WGCNA results/Tissue specific Consensus network/", pattern = "consTree.RDS", full.names = T, recursive = T)
targets <- gsub("(_moduleColors.RDS)|(AllRegions)", "", list.files("WGCNA results/Tissue specific Consensus network/", pattern = "moduleColors.RDS", full.names = F, recursive = F))
tissueConsColors <- bind_cols(lapply(1:length(colorFiles), function(x){
a <- readRDS(colorFiles[x])
}))
names(tissueConsColors) <- paste("cNetSpecies",targets, "Colors", sep = "")
tissueConsTrees <- lapply(1:length(treeFiles), function(x){
a <- readRDS(treeFiles[x])
})
names(tissueConsTrees) <- paste("cNetSpecies",targets, "Tree", sep = "")
```
```{r combined matched colors}
matchedNetworks <- data.frame(CGid = rownames(net1KMEs),net1 = net1mergedColors,
cNet57SpeciesTissues = as.vector(matchLabels(cNetSpeciesTissuesColors, reference = net1mergedColors)),
cNet35Species = as.vector(matchLabels(cNetSpeciesColors, reference = net1mergedColors)),
cNet15Tissues = as.vector(matchLabels(cNetTissuesColors, reference = net1mergedColors)),
cNet27SpeciesBlood = as.vector(matchLabels(tissueConsColors$cNetSpeciesBloodColors,
reference = net1mergedColors)),
cNet7SpeciesBrain= as.vector(matchLabels(tissueConsColors$cNetSpeciesBrainColors,
reference = net1mergedColors)),
cNet10SpeciesLiver = as.vector(matchLabels(tissueConsColors$cNetSpeciesLiverColors,
reference = net1mergedColors)),
cNet30SpeciesSkin = as.vector(matchLabels(tissueConsColors$cNetSpeciesSkinColors,
reference = net1mergedColors))) %>% left_join(mergedData[,c("CGid", "net2Matched")]) %>% dplyr::rename(net2 = net2Matched)
#saveRDS(matchedNetworks, "all networks with matched colors.RDS")
matchedNetworks <- readRDS("all networks with matched colors.RDS")
```
```{r EWAS results}
EWAS_Age <- read.delim("~/Dropbox/HorvathLabCoreMembers/Ake/UniversalClock/EWAS/final/EWASresult/Metal_pgm5_combine_all_species_tissue_stouffer_step2_1.HG38.txt.gz") %>% dplyr::select("CpG", "Meta.Z") %>% dplyr::rename(CGid = CpG, EWAS_Age = Meta.Z)
EWAS_Age_Blood <- read.csv("~/Dropbox/HorvathLabCoreMembers/Ake/UniversalClock/EWAS/final/EWASresult/Metal_pgm6_combine_all_species_Blood_tissue_stouffer_1.HG38.csv.gz") %>% dplyr::select("CpG", "Meta.Z") %>% dplyr::rename(CGid = CpG, EWAS_Age_blood = Meta.Z)
files <- list.files("~/Dropbox/HorvathLabCoreMembers/Ake/UniversalClock/EWAS/final/EWASresult/")
files <- files[grep(".gz$", files)]
targetFiles <- c("all_species_tissue", "Blood","Brain","Cortex", "Liver", "Skin", "Muscle")
targets <- c("all", "blood","brain","cortex", "liver", "skin", "muscle")
all <- read.delim("~/Dropbox/HorvathLabCoreMembers/Ake/UniversalClock/EWAS/final/EWASresult/Metal_pgm5_combine_all_species_tissue_stouffer_step2_1.HG38.txt.gz")
targetList <- lapply(2:length(targetFiles), function(x){
i <- grep(targetFiles[x], files)
r <- read.csv(file = paste("~/Dropbox/HorvathLabCoreMembers/Ake/UniversalClock/EWAS/final/EWASresult/", files[i], sep = ""))
})
names(targetList) <- targets[2:7]
targetList$all <- all
targetList <- targetList[c(7,1:6)]
EWAS_Age <- plyr::join_all(lapply(1:length(targetList), function(x){
nam <- paste("EWAS_age", names(targetList)[x], sep = "_")
a <- targetList[[x]] %>% dplyr::select("CpG", "Meta.Z") %>% setnames(new= c("CGid", paste(nam)))
}))
```
```{r EWAS max age}
### Use Pvalue and Correlations to get Z values:
## NOTE: change mypath accordingly to your path, and if it's Eutherian path, change them to Eutherian path
generic_association = readRDS("~/Steve Horvath Lab Dropbox/Amin Haghani/HorvathLabCoreMembers/Caesar/ProjectEWASmaxlifespan/allEWAS_maxlifespan/Feb2022/Eutherians_allEWAS_correlation.RDS")# corrs file
myanalysis = "lifespan" ## if this is phylo results, please change to "phylo",
# in the next step, getStouffer function will summarise the columns to those column tissues accordingly
### convert correlation to Z
stacked.p = readRDS("~/Steve Horvath Lab Dropbox/Amin Haghani/HorvathLabCoreMembers/Caesar/ProjectEWASmaxlifespan/allEWAS_maxlifespan/Feb2022/Eutherians_allEWAS_pvalue.RDS") # pvalue file
generic_association = sign(generic_association) * (- qnorm(stacked.p/2))
# If you want to summarise other columns, e.g. no logmaxAgeCaesar, but just maxAgeCaesar, or only a few tissues,
# you can change mycols = c(...) accordingly
# Gneeric Tissue columns, (in order): All, blood, skin, liver, brain, muscle. Phylo Tissues: All, Blood, skin, Liver, Brain, Muscle
if(myanalysis == "generic") {
mycols = c(1, 8, 15, 22, 25, 28)
} else {
mycols = c(1, 4, 7, 12, 15, 18)
}
getStouffer <- function(mydf, myweights = NA) {
if(!length(myweights) == ncol(mydf)) {
stop("Number of weights do not match number of columns")
}
return(apply(mydf, 1, function(x) return(sum(x * myweights) / sqrt(sum(myweights^2)))))
}
ns = sapply(strsplit(colnames(generic_association)[mycols], "\\.N"), "[", c(2))
ns = as.numeric(ns)[-1]
tissuesStouffer = getStouffer(generic_association[, mycols[-1]], myweights = sqrt(ns))
#stacked = cbind(stacked, tissuesStouffer); colnames(stacked)[ncol(stacked)] = "tissuesStouffer"
generic_association <- as.data.frame(generic_association)
generic_association$Meta <- tissuesStouffer
## Code produces a new column named "tissuesStouffer"
####
Log <- grep("(Log)", colnames(generic_association))
OrderALL <- grep("(OrderALL)|(OrderAll)", colnames(generic_association))
Log <- Log[Log%in%OrderALL]
targets <- c("ALL","Blood", "Brain","Liver","Skin","Meta")
i <- sapply(targets, function(x){
if(x=="Meta"){
a <- grep("Meta", colnames(generic_association))
} else {
a <- Log[which(Log %in% grep(paste("Tissue", x, sep = ""), colnames(generic_association)))]
}
return(a)
})
EWAS_maxAge <- generic_association[,i] %>% setnames(new = paste("EWAS_lifespan", tolower(targets), sep = "_")) %>% tibble::rownames_to_column(var = "CGid")
rm(generic_association, stacked.p)
```
```{r phylo}
### Use Pvalue and Correlations to get Z values:
## NOTE: change mypath accordingly to your path, and if it's Eutherian path, change them to Eutherian path
phylogenetic_association <- readRDS("~/Steve Horvath Lab Dropbox/Amin Haghani/HorvathLabCoreMembers/Caesar/ProjectEWASmaxlifespan/allEWAS_maxlifespan/Feb2022/Eutherians_allPhyloEWAS_zvalue.RDS")
# corrs file
myanalysis = "phylo" ## if this is phylo results, please change to "phylo",
# in the next step, getStouffer function will summarise the columns to those column tissues accordingly
# If you want to summarise other columns, e.g. no logmaxAgeCaesar, but just maxAgeCaesar, or only a few tissues,
# you can change mycols = c(...) accordingly
# Gneeric Tissue columns, (in order): All, blood, skin, liver, brain, muscle. Phylo Tissues: All, Blood, skin, Liver, Brain, Muscle
if(myanalysis == "generic") {
mycols = c(1, 8, 15, 22, 25, 28)
} else {
mycols = c(1, 4, 7, 12, 15, 18)
}
getStouffer <- function(mydf, myweights = NA) {
if(!length(myweights) == ncol(mydf)) {
stop("Number of weights do not match number of columns")
}
return(apply(mydf, 1, function(x) return(sum(x * myweights) / sqrt(sum(myweights^2)))))
}
ns = sapply(strsplit(colnames(phylogenetic_association)[mycols], "\\.N"), "[", c(2))
ns = as.numeric(ns)[-1]
tissuesStouffer = getStouffer(phylogenetic_association[, mycols[-1]], myweights = sqrt(ns))
#stacked = cbind(stacked, tissuesStouffer); colnames(stacked)[ncol(stacked)] = "tissuesStouffer"
phylogenetic_association <- as.data.frame(phylogenetic_association)
phylogenetic_association$Meta <- tissuesStouffer
## Code produces a new column named "tissuesStouffer"
####
Log <- grep("(Log)", colnames(phylogenetic_association))
OrderALL <- grep("(OrderALL)|(OrderAll)", colnames(phylogenetic_association))
Log <- Log[Log%in%OrderALL]
i <- sapply(targets, function(x){
if(x=="Meta"){
a <- grep("Meta", colnames(phylogenetic_association))
} else {
a <- Log[which(Log %in% grep(paste("Tissue", x, sep = ""), colnames(phylogenetic_association)))]
}
return(a)
})
EWAS_maxAgePhylo <- phylogenetic_association[,i] %>% setnames(new = paste("EWAS_lifespanPhylo", tolower(targets), sep = "_")) %>% tibble::rownames_to_column(var = "CGid")
rm(phylogenetic_association, stacked.p)
```
```{r traits}
# bValsNoMars <- readRDS("DNAmDataNoMarsupials.RDS")
# samplesNoMars <- readRDS("samplesNoMars.RDS")
datExpr <- t(bValsNoMars)
##
orders <- samplesNoMars %>% group_by(Order) %>% tally() %>% filter(n>100)
orders <- orders$Order
Order <- as.data.frame(sapply(orders, function(x){
a <- samplesNoMars %>% mutate(x = ifelse(Order==paste(x), 1, 0)) %>% dplyr::select(x)
return(a)
}))
colnames(Order) <- orders
datTraits <- samplesNoMars %>% dplyr::select(Basename, Female,relativeAge, maximum_age, average_weight, Gestation.days, Age.SexualMaturity)%>% mutate(Female = factor(Female, levels = c(0,1))) %>% droplevels() %>% mutate(log_max_age = log(maximum_age), log_ave_weight = log(average_weight)) %>% dplyr::select(Basename, Female, relativeAge,log_max_age,log_ave_weight, Gestation.days, Age.SexualMaturity)
datTraits <- samplesNoMars %>% filter(!is.na(relativeAge)&!is.na(Female))%>% mutate(log_max_age = log(maximum_age), log_ave_weight = log(average_weight)) %>% mutate(adjustedRelativeAge = residuals(lm(relativeAge~Tissue+SpeciesLatinName+Female))) %>% mutate(adjustedMaxAge = residuals(lm(log_max_age~relativeAge+Tissue+Female)))%>% mutate(adjustedWeight = residuals(lm(log_ave_weight~relativeAge+Tissue+Female))) %>% dplyr::select(Basename, adjustedRelativeAge, adjustedMaxAge, adjustedWeight) %>% right_join(datTraits) %>% tibble::column_to_rownames(var = "Basename") %>% relocate(adjustedRelativeAge, .after=relativeAge) %>% relocate(adjustedMaxAge, .after=log_max_age)%>% relocate(adjustedWeight, .after=log_ave_weight)
datTraits <- datTraits[samplesNoMars$Basename,]%>% bind_cols(Order)
traits <- corAndPvalue(datExpr,datTraits)$cor
# traits <- as.data.frame(traits) %>% tibble::rownames_to_column(var = "CGid") %>% left_join(EWAS_Age) %>% left_join(EWAS_maxAge) %>% left_join(EWAS_maxAgePhylo) %>%tibble::column_to_rownames(var = "CGid") %>% relocate(starts_with("EWAS_age"), .after=adjustedRelativeAge) %>% relocate(starts_with("EWAS_lifespan"), .after=Age.SexualMaturity)
traits <- as.data.frame(traits) %>% tibble::rownames_to_column(var = "CGid") %>% left_join(EWAS_maxAge) %>% left_join(EWAS_maxAgePhylo) %>%tibble::column_to_rownames(var = "CGid") %>% relocate(starts_with("EWAS_lifespan"), .after=Age.SexualMaturity)
names(traits) <- gsub("(max_age)|(maximum_age)|(MaxAge)", "lifespan",names(traits))
traits <- traits %>% dplyr::select(-ends_with("meta"))
traits.Color=numbers2colors(traits,signed=T)
names(traits.Color) <- names(traits)
```
```{r dendogram figures}
sum2 <- readxl::read_xlsx("Drafts/revision 2/7- Supplementary data, Haghani et al, V9.xlsx", sheet = 3) %>% mutate(moduleColors=gsub("ME", "",Modules )) %>% mutate(group=Group)
colnames(matchedNetworks)[2:12] <-c("Net1 (Eutherians)", "Net2 (Mammalian)", "netEPIC", "net450k", "cNet3.omit.Species+Tissues",
"cNet4.omit.Species", "cNet5.omit.Tissues", "cNet6.Blood.omit.Species","cNet7.Brain.omit.Species", "cNet8.Liver.omit.Species", "cNet9.Skin.omit.Species")
i <- sapply(c("Net1 \\(Eutherians\\)", "Net2 \\(Mammalian\\)", "cNet3.omit.Species\\+Tissues",
"cNet4.omit.Species", "cNet5.omit.Tissues", "cNet6.Blood.omit.Species","cNet7.Brain.omit.Species", "cNet8.Liver.omit.Species", "cNet9.Skin.omit.Species"), function(x){grep(x, colnames(matchedNetworks))})
j <- sapply(c("relativeAge", "log_lifespan", "log_ave_weight", "EWAS_lifespanPhylo_blood", "EWAS_lifespanPhylo_brain", "EWAS_lifespanPhylo_liver", "EWAS_lifespanPhylo_skin", "2.Proboscidea"), function(x){grep(x, colnames(traits))})
labels <- sum2 %>% dplyr::select(moduleColors, group)%>% mutate(labels=1:55) %>% mutate(labels = ifelse(group=="unclear", NA, labels)) %>% right_join(dplyr::select(.data=matchedNetworks, "Net1 (Eutherians)", CGid), by=c("moduleColors"="Net1 (Eutherians)")) %>% tibble::column_to_rownames("CGid")%>% mutate(moduleColors = ifelse(group=="unclear", "", moduleColors))
labels <- labels[matchedNetworks$CGid,]
dat <- cbind(matchedNetworks[,i], traits.Color[,-j])
pdf(file = "dendgram Network1.pdf", wi = 5, he = 12)
plotDendroAndColors(net1geneTree, cbind(matchedNetworks[,i], traits.Color[,-j]),
c(colnames(matchedNetworks)[i], colnames(traits)[-j]),
dendroLabels = F, hang = 0.03,
addGuide = T,guideHang = 0.05, main="Network 1",marAll = c(1,10,1,1), cex.colorLabels = 0.8, colorHeightMax = 0.8, cex.rowText = 0.7, rowText = spaste(labels$moduleColors), addTextGuide = T, textPositions = 1, rowWidths = c(1, 8, rep(0.8, 27)))
dev.off()
allTrees <- append(list(net1geneTree,net2geneTree,netEPICgeneTree, net450geneTree, cNetSpeciesTissuesTree, cNetSpeciesTree, cNetTissuesTree), tissueConsTrees)
pdf(file = paste("dendogram", "all", ".pdf"), width = 5, height = 5)
par(mfrow=c(3,3))
for(x in c(2,6:12)){
plotDendroAndColors(allTrees[[x-1]], cbind(matchedNetworks[,c(2,3,6:12)], traits.Color[,-j]),
c(colnames(matchedNetworks)[c(2,3,6:12)], colnames(traits)[-j]),
dendroLabels = FALSE, hang = 0.001,
addGuide = F, guideHang = 0.001, main=paste(names(matchedNetworks)[x]),marAll = c(1,5,1,1), cex.colorLabels = 0.5, colorHeightMax = 0.8)
}
dev.off()
```
