library(beeswarm)
library(gplots)
## Warning: package 'gplots' was built under R version 4.3.2
##
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
##
## lowess
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(RColorBrewer)
library(tidyverse)
## Warning: package 'ggplot2' was built under R version 4.3.2
## Warning: package 'tidyr' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0.9000 ✔ readr 2.1.5
## ✔ ggplot2 3.5.1 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(WGCNA)
## Loading required package: dynamicTreeCut
## Loading required package: fastcluster
##
## Attaching package: 'fastcluster'
##
## The following object is masked from 'package:stats':
##
## hclust
##
##
##
## Attaching package: 'WGCNA'
##
## The following object is masked from 'package:stats':
##
## cor
library(flashClust)
##
## Attaching package: 'flashClust'
##
## The following object is masked from 'package:fastcluster':
##
## hclust
##
## The following object is masked from 'package:stats':
##
## hclust
#import WGCNA outputs
rootdir <- '/Users/usri/Desktop/Camk2a.WGCNA.8june/july/'
outputfigs <- '/Users/usri/Desktop/Camk2a.WGCNA.8june/july/'
FileBaseName <- 'camk2a.Wgcna.module'
cleanDat <- readRDS("~/Desktop/Camk2a.WGCNA.8june/july/cleanDat.after.outlier.removal.15samples.rds")
dim(cleanDat)
## [1] 1544 15
head(cleanDat, 3)
## X.106P2fractionIP X.120P2fractionIP X.117P2fractionIP
## AAK1|Q2M2I8 23.48784 23.92167 23.18945
## AAK1|Q2M2I8.1 25.21936 25.97150 25.12306
## ABAT|P80404 27.55898 27.40838 27.95464
## X.123P2fractionIP X.137P2fractionIP X.131P2fractionIP
## AAK1|Q2M2I8 23.31690 23.23492 22.92868
## AAK1|Q2M2I8.1 25.51681 25.18611 25.24855
## ABAT|P80404 27.51978 27.19804 27.35241
## X.143P2fractionIP X.133P2fractionIP X.106HomogenateIP
## AAK1|Q2M2I8 23.61881 22.99170 22.93829
## AAK1|Q2M2I8.1 25.07017 25.34287 25.46261
## ABAT|P80404 27.27474 27.16163 27.14351
## X.120HomogenateIP X.117HomogenateIP X.123HomogenateIP
## AAK1|Q2M2I8 23.87091 23.85305 23.11254
## AAK1|Q2M2I8.1 25.80004 25.22436 25.56972
## ABAT|P80404 26.87173 26.93971 26.87173
## X.131HomogenateIP X.143HomogenateIP X.133HomogenateIP
## AAK1|Q2M2I8 23.40135 19.97449 23.80321
## AAK1|Q2M2I8.1 25.29442 25.52288 25.54158
## ABAT|P80404 27.12597 27.27474 26.92225
net <- readRDS("~/Desktop/Camk2a.WGCNA.8june/july/camk2a.final.net.rds")
MEs <- net$MEs
MEs<-tmpMEs<-data.frame()
MEList = moduleEigengenes(t(cleanDat), colors = net$colors)
MEs = orderMEs(MEList$eigengenes)
colnames(MEs)<-gsub("ME","",colnames(MEs)) #let's be consistent in case prefix was added, remove it.
tmpMEs <- MEs #net$MEs
colnames(tmpMEs) <- paste("ME",colnames(MEs),sep="")
MEs[,"grey"] <- NULL
tmpMEs[,"MEgrey"] <- NULL
MEs <- tmpMEs
colnames(MEs)<-gsub("ME","",colnames(MEs))
MEs
## tan turquoise yellow greenyellow
## X.106P2fractionIP 0.002286292 -0.140061765 -0.27955616 -0.002570635
## X.120P2fractionIP -0.120859965 -0.031801206 -0.32547276 0.408460405
## X.117P2fractionIP -0.183685117 -0.108613605 -0.44123605 0.423884673
## X.123P2fractionIP -0.201417732 -0.009744013 -0.34286651 0.412058843
## X.137P2fractionIP -0.412131752 -0.383416336 -0.08059125 -0.265240843
## X.131P2fractionIP 0.359446246 -0.398738082 -0.10381111 -0.360464667
## X.143P2fractionIP -0.020596037 -0.301034794 -0.06961930 -0.153300089
## X.133P2fractionIP -0.396108527 -0.368437479 -0.13239815 -0.317628307
## X.106HomogenateIP 0.231776392 0.236850352 0.23919658 0.043715728
## X.120HomogenateIP -0.076339854 0.235162511 0.25794282 -0.138742698
## X.117HomogenateIP -0.195773544 0.239193849 0.17775195 -0.153816139
## X.123HomogenateIP 0.043415824 0.238581003 0.27887421 0.092151133
## X.131HomogenateIP 0.316620387 0.274321956 0.23482013 -0.116749780
## X.143HomogenateIP 0.470288615 0.271085934 0.33531843 0.268866448
## X.133HomogenateIP 0.183078771 0.246651674 0.25164717 -0.140624069
## pink magenta purple green blue
## X.106P2fractionIP 0.01887541 -0.19343566 0.261704219 0.14537444 0.2737437
## X.120P2fractionIP 0.17798158 0.43125082 0.502950915 -0.34025051 0.1520824
## X.117P2fractionIP 0.21990967 -0.37439010 -0.092544078 0.38555799 0.4707747
## X.123P2fractionIP 0.32838544 0.09049241 0.374687993 0.08071588 0.2301341
## X.137P2fractionIP -0.42986549 -0.12314501 -0.037425105 0.27410872 0.1484854
## X.131P2fractionIP -0.23091230 -0.10470751 -0.401823883 0.33794708 0.1676142
## X.143P2fractionIP -0.38813302 -0.26765805 0.038611506 0.34054666 0.2480337
## X.133P2fractionIP -0.45988970 -0.34163156 -0.245486895 0.23140313 0.1265096
## X.106HomogenateIP 0.22760904 0.07101496 -0.170744596 -0.26169039 -0.2183401
## X.120HomogenateIP 0.27838637 0.39525708 0.318379295 -0.17152034 -0.1980493
## X.117HomogenateIP 0.25784141 -0.29850892 -0.398736958 -0.06224406 -0.2018206
## X.123HomogenateIP 0.09274704 0.27694708 -0.058753328 -0.16971057 -0.3364152
## X.131HomogenateIP -0.08044073 0.06756535 -0.107710398 -0.22059390 -0.2554036
## X.143HomogenateIP 0.01079054 0.26708948 0.020100045 -0.34637129 -0.2358256
## X.133HomogenateIP -0.02328525 0.10385964 -0.003208732 -0.22327284 -0.3715233
## red brown black salmon
## X.106P2fractionIP 0.26595078 -0.35269404 0.25149258 -0.16269702
## X.120P2fractionIP 0.27800499 -0.38742119 0.36770638 0.39502611
## X.117P2fractionIP 0.50297334 -0.19016970 -0.27106026 -0.33982731
## X.123P2fractionIP 0.41260075 -0.36160886 0.01582102 -0.26720920
## X.137P2fractionIP -0.02007925 0.29636985 0.33917169 0.36540251
## X.131P2fractionIP -0.28062443 0.45243526 0.27711135 0.16767152
## X.143P2fractionIP 0.14761594 0.29257079 -0.14160357 -0.07940971
## X.133P2fractionIP 0.04719025 0.38342670 0.32639851 0.20657914
## X.106HomogenateIP -0.21758651 -0.10447807 0.01611855 -0.12455437
## X.120HomogenateIP 0.01676919 -0.11221520 -0.48714456 0.25612715
## X.117HomogenateIP -0.23341681 -0.03910131 -0.07488413 -0.54553163
## X.123HomogenateIP -0.19301170 0.05463966 -0.22127167 -0.02874865
## X.131HomogenateIP -0.32487724 -0.02710729 -0.07498642 -0.09345293
## X.143HomogenateIP -0.20704422 0.03941463 -0.33394578 0.13758446
## X.133HomogenateIP -0.19446510 0.05593878 0.01107632 0.11303993
## create orderedModules object from MEs
# Replace this with your actual data or method of creating orderedModules
orderedModules <- data.frame(
ModuleName = colnames(MEs),
Color = colnames(MEs))
colnames(orderedModules) <- c("ModuleName", "Color")
orderedModules
## ModuleName Color
## 1 tan tan
## 2 turquoise turquoise
## 3 yellow yellow
## 4 greenyellow greenyellow
## 5 pink pink
## 6 magenta magenta
## 7 purple purple
## 8 green green
## 9 blue blue
## 10 red red
## 11 brown brown
## 12 black black
## 13 salmon salmon
##create toplot object from MEs (no gray module included)
toplot <- MEs
colnames(toplot) <- colnames(MEs)
rownames(toplot) <- rownames(MEs)
toplot <- t(toplot) #may have to transpose sometimes: t(toplot)
#rownames(toplot) <- paste(orderedModules[match(colnames(MEs),orderedModules[,2]),1]," ",rownames(toplot),sep="")
toplot
## X.106P2fractionIP X.120P2fractionIP X.117P2fractionIP
## tan 0.002286292 -0.12085997 -0.18368512
## turquoise -0.140061765 -0.03180121 -0.10861361
## yellow -0.279556163 -0.32547276 -0.44123605
## greenyellow -0.002570635 0.40846040 0.42388467
## pink 0.018875406 0.17798158 0.21990967
## magenta -0.193435658 0.43125082 -0.37439010
## purple 0.261704219 0.50295091 -0.09254408
## green 0.145374437 -0.34025051 0.38555799
## blue 0.273743679 0.15208244 0.47077470
## red 0.265950779 0.27800499 0.50297334
## brown -0.352694041 -0.38742119 -0.19016970
## black 0.251492576 0.36770638 -0.27106026
## salmon -0.162697024 0.39502611 -0.33982731
## X.123P2fractionIP X.137P2fractionIP X.131P2fractionIP
## tan -0.201417732 -0.41213175 0.3594462
## turquoise -0.009744013 -0.38341634 -0.3987381
## yellow -0.342866509 -0.08059125 -0.1038111
## greenyellow 0.412058843 -0.26524084 -0.3604647
## pink 0.328385442 -0.42986549 -0.2309123
## magenta 0.090492407 -0.12314501 -0.1047075
## purple 0.374687993 -0.03742510 -0.4018239
## green 0.080715884 0.27410872 0.3379471
## blue 0.230134075 0.14848538 0.1676142
## red 0.412600748 -0.02007925 -0.2806244
## brown -0.361608862 0.29636985 0.4524353
## black 0.015821024 0.33917169 0.2771113
## salmon -0.267209201 0.36540251 0.1676715
## X.143P2fractionIP X.133P2fractionIP X.106HomogenateIP
## tan -0.02059604 -0.39610853 0.23177639
## turquoise -0.30103479 -0.36843748 0.23685035
## yellow -0.06961930 -0.13239815 0.23919658
## greenyellow -0.15330009 -0.31762831 0.04371573
## pink -0.38813302 -0.45988970 0.22760904
## magenta -0.26765805 -0.34163156 0.07101496
## purple 0.03861151 -0.24548689 -0.17074460
## green 0.34054666 0.23140313 -0.26169039
## blue 0.24803367 0.12650964 -0.21834013
## red 0.14761594 0.04719025 -0.21758651
## brown 0.29257079 0.38342670 -0.10447807
## black -0.14160357 0.32639851 0.01611855
## salmon -0.07940971 0.20657914 -0.12455437
## X.120HomogenateIP X.117HomogenateIP X.123HomogenateIP
## tan -0.07633985 -0.19577354 0.04341582
## turquoise 0.23516251 0.23919385 0.23858100
## yellow 0.25794282 0.17775195 0.27887421
## greenyellow -0.13874270 -0.15381614 0.09215113
## pink 0.27838637 0.25784141 0.09274704
## magenta 0.39525708 -0.29850892 0.27694708
## purple 0.31837929 -0.39873696 -0.05875333
## green -0.17152034 -0.06224406 -0.16971057
## blue -0.19804932 -0.20182060 -0.33641520
## red 0.01676919 -0.23341681 -0.19301170
## brown -0.11221520 -0.03910131 0.05463966
## black -0.48714456 -0.07488413 -0.22127167
## salmon 0.25612715 -0.54553163 -0.02874865
## X.131HomogenateIP X.143HomogenateIP X.133HomogenateIP
## tan 0.31662039 0.47028861 0.183078771
## turquoise 0.27432196 0.27108593 0.246651674
## yellow 0.23482013 0.33531843 0.251647170
## greenyellow -0.11674978 0.26886645 -0.140624069
## pink -0.08044073 0.01079054 -0.023285251
## magenta 0.06756535 0.26708948 0.103859637
## purple -0.10771040 0.02010005 -0.003208732
## green -0.22059390 -0.34637129 -0.223272839
## blue -0.25540361 -0.23582560 -0.371523340
## red -0.32487724 -0.20704422 -0.194465096
## brown -0.02710729 0.03941463 0.055938779
## black -0.07498642 -0.33394578 0.011076316
## salmon -0.09345293 0.13758446 0.113039934
numericMeta <- readRDS("~/Desktop/Camk2a.WGCNA.8june/JUNE30/numericMeta.rds")
numericMeta
## SampleID Treatment Group
## X.106P2fractionIP 106 P2fractionIP CamK2a + LPS P2fractionIP
## X.120P2fractionIP 120 P2fractionIP CamK2a + saline P2fractionIP
## X.117P2fractionIP 117 P2fractionIP CamK2a + LPS P2fractionIP
## X.123P2fractionIP 123 P2fractionIP CamK2a + saline P2fractionIP
## X.137P2fractionIP 137 P2fractionIP CamK2a + LPS P2fractionIP
## X.131P2fractionIP 131 P2fractionIP CamK2a + saline P2fractionIP
## X.143P2fractionIP 143 P2fractionIP CamK2a + LPS P2fractionIP
## X.133P2fractionIP 133 P2fractionIP CamK2a + saline P2fractionIP
## X.106HomogenateIP 106 HomogenateIP CamK2a + LPS HomogenateIP
## X.120HomogenateIP 120 HomogenateIP CamK2a + saline HomogenateIP
## X.117HomogenateIP 117 HomogenateIP CamK2a + LPS HomogenateIP
## X.123HomogenateIP 123 HomogenateIP CamK2a + saline HomogenateIP
## X.131HomogenateIP 131 HomogenateIP CamK2a + saline HomogenateIP
## X.143HomogenateIP 143 HomogenateIP CamK2a + LPS HomogenateIP
## X.133HomogenateIP 133 HomogenateIP CamK2a + saline HomogenateIP
## Condition Condition.Test Sample
## X.106P2fractionIP P2fractionIP.CamK2a + LPS 1 X.106P2fractionIP
## X.120P2fractionIP P2fractionIP.CamK2a + saline 0 X.120P2fractionIP
## X.117P2fractionIP P2fractionIP.CamK2a + LPS 1 X.117P2fractionIP
## X.123P2fractionIP P2fractionIP.CamK2a + saline 0 X.123P2fractionIP
## X.137P2fractionIP P2fractionIP.CamK2a + LPS 1 X.137P2fractionIP
## X.131P2fractionIP P2fractionIP.CamK2a + saline 0 X.131P2fractionIP
## X.143P2fractionIP P2fractionIP.CamK2a + LPS 1 X.143P2fractionIP
## X.133P2fractionIP P2fractionIP.CamK2a + saline 0 X.133P2fractionIP
## X.106HomogenateIP HomogenateIP.CamK2a + LPS 1 X.106HomogenateIP
## X.120HomogenateIP HomogenateIP.CamK2a + saline 0 X.120HomogenateIP
## X.117HomogenateIP HomogenateIP.CamK2a + LPS 1 X.117HomogenateIP
## X.123HomogenateIP HomogenateIP.CamK2a + saline 0 X.123HomogenateIP
## X.131HomogenateIP HomogenateIP.CamK2a + saline 0 X.131HomogenateIP
## X.143HomogenateIP HomogenateIP.CamK2a + LPS 1 X.143HomogenateIP
## X.133HomogenateIP HomogenateIP.CamK2a + saline 0 X.133HomogenateIP
## X Genotype
## X.106P2fractionIP P2fractionIP.CamK2a.LPS P2fractionIP.CamK2a + LPS
## X.120P2fractionIP P2fractionIP.CamK2a.saline P2fractionIP.CamK2a + saline
## X.117P2fractionIP P2fractionIP.CamK2a.LPS P2fractionIP.CamK2a + LPS
## X.123P2fractionIP P2fractionIP.CamK2a.saline P2fractionIP.CamK2a + saline
## X.137P2fractionIP P2fractionIP.CamK2a.LPS P2fractionIP.CamK2a + LPS
## X.131P2fractionIP P2fractionIP.CamK2a.saline P2fractionIP.CamK2a + saline
## X.143P2fractionIP P2fractionIP.CamK2a.LPS P2fractionIP.CamK2a + LPS
## X.133P2fractionIP P2fractionIP.CamK2a.saline P2fractionIP.CamK2a + saline
## X.106HomogenateIP P2fractionIP.CamK2a.LPS HomogenateIP.CamK2a + LPS
## X.120HomogenateIP P2fractionIP.CamK2a.saline HomogenateIP.CamK2a + saline
## X.117HomogenateIP P2fractionIP.CamK2a.LPS HomogenateIP.CamK2a + LPS
## X.123HomogenateIP P2fractionIP.CamK2a.saline HomogenateIP.CamK2a + saline
## X.131HomogenateIP P2fractionIP.CamK2a.saline HomogenateIP.CamK2a + saline
## X.143HomogenateIP P2fractionIP.CamK2a.LPS HomogenateIP.CamK2a + LPS
## X.133HomogenateIP P2fractionIP.CamK2a.saline HomogenateIP.CamK2a + saline
regvars <- data.frame(as.factor(numericMeta[,"Genotype"]))
colnames(regvars) <- c("Genotype")
lm <- lm(data.matrix(MEs)~Genotype,data=regvars)
pvec <- rep(NA,ncol(MEs))
for (i in 1:ncol(MEs)) {
f <- summary(lm)[[i]]$fstatistic ## Get F statistics
pvec[i] <- pf(f[1],f[2],f[3],lower.tail=F) ## Get the p-value corresponding to the whole model
}
names(pvec) <- colnames(MEs)
Groupingx <- numericMeta$Genotype
metdat <- data.frame(Status=Groupingx)
pvec
## tan turquoise yellow greenyellow pink magenta
## 3.139295e-01 2.442273e-04 9.386552e-05 9.344510e-01 4.842534e-01 1.097167e-01
## purple green blue red brown black
## 6.698333e-01 6.714808e-03 2.440795e-06 3.897617e-02 9.949859e-01 7.543990e-02
## salmon
## 5.048735e-01
metdat
## Status
## 1 P2fractionIP.CamK2a + LPS
## 2 P2fractionIP.CamK2a + saline
## 3 P2fractionIP.CamK2a + LPS
## 4 P2fractionIP.CamK2a + saline
## 5 P2fractionIP.CamK2a + LPS
## 6 P2fractionIP.CamK2a + saline
## 7 P2fractionIP.CamK2a + LPS
## 8 P2fractionIP.CamK2a + saline
## 9 HomogenateIP.CamK2a + LPS
## 10 HomogenateIP.CamK2a + saline
## 11 HomogenateIP.CamK2a + LPS
## 12 HomogenateIP.CamK2a + saline
## 13 HomogenateIP.CamK2a + saline
## 14 HomogenateIP.CamK2a + LPS
## 15 HomogenateIP.CamK2a + saline
par(mfrow=c(3,3))
par(mar=c(4.5,6,4.5,1.5))
#pdf(file=paste0(outputfigs,"/BoxPlots_",FileBaseName,".pdf"),width=18,height=11.25)
# Replace this with your actual data or method of creating orderedModules
orderedModules <- data.frame(
ModuleName = colnames(MEs),
Color = colnames(MEs))
colnames(orderedModules) <- c("ModuleName", "Color")
orderedModules
## ModuleName Color
## 1 tan tan
## 2 turquoise turquoise
## 3 yellow yellow
## 4 greenyellow greenyellow
## 5 pink pink
## 6 magenta magenta
## 7 purple purple
## 8 green green
## 9 blue blue
## 10 red red
## 11 brown brown
## 12 black black
## 13 salmon salmon
library(beeswarm)
library(gplots)
for (i in 1:(nrow(toplot))) { # grey already excluded, no -1
titlecolor<-if(signif(pvec,2)[i] <0.05) { "red" } else { "black" }
boxplot(toplot[i,]~factor(numericMeta$Genotype),col=colnames(MEs)[i],ylab="Eigenprotein Value",main=paste0(orderedModules[match(colnames(MEs)[i],orderedModules[,2]),1]," ",colnames(MEs)[i],"\nANOVA p = ",signif(pvec,2)[i]),xlab="Genotype",las=1,col.main=titlecolor) #no outliers: ,outline=FALSE)
transcol=paste0(col2hex(colnames(MEs)[i]),"99")
beeswarm(toplot[i,]~factor(numericMeta$Genotype),method="swarm",add=TRUE,corralWidth=0.5,vertical=TRUE,pch=21,bg=transcol,col="black",cex=0.8,corral="gutter") }

