#Relative_Heatmap.R
#Import data and data preprocessing
setwd("D:/Ph.D_experiment_1/amplicon/FMT/hormone_gene/")
rows <- read.csv("hormone_FMT_FSD.csv",row.names = 1)
cols <- read.csv("Aggressive behavior_FMT_FSD.csv",row.names = 1)
#Transpose, if you don't need it, don't transpose again
#rows<-as.data.frame(t(rows))
#cols <- as.data.frame(t(cols))
#str(rows)
#str(cols)
#Build a correlation matrix
library(psych)
data.corr <- corr.test(rows, cols, method="spearman", adjust="none")
data.r <- data.corr$r
data.p <- data.corr$p
write.csv(data.r, "FMT_Aggressive behavior_FSD_r_test.csv")
write.csv(data.p,"FMT_Aggressive behavior_FSD_p_test.csv")
#Draw heatmap
library(pheatmap)
pheatmap(data.r, clustering_method="average")

data.r.fmt <- matrix(sprintf("%.2f", data.r), nrow=nrow(data.p))  # Only keep two decimal places
pheatmap(data.r, clustering_method="average",cluster_rows=F, cluster_cols=F, display_numbers=data.r.fmt)

#cluster, asterisk
getSig <- function(dc) {
  sc <- ''
  if (dc < 0.001) sc <- '***'
  else if (dc < 0.01) sc <- '**'
  else if (dc < 0.05) sc <- '*'
  sc
}
sig.mat <- matrix(sapply(data.p, getSig), nrow=nrow(data.p))
str(sig.mat)
pheatmap(data.r, color = colorRampPalette(c("navy", "white", "firebrick3"))(50),clustering_method="average", cluster_rows=F, cluster_cols=F,display_numbers=sig.mat)
pheatmap(data.r, color = colorRampPalette(c("steelblue", "white", "darkorange2"))(50),clustering_method="average", cluster_rows=F, cluster_cols=F,display_numbers=sig.mat)


#Forest plot.R
library(effsize)
data<-read.csv("D:/Rdata/zhuhanyi/Exp1 measurements.csv")
colnames(data)
attach(data)
cohen.d(Tmass,Group)
####################plot effect size##############
dataeffect<-read.csv("D:/Rdata/zhuhanyi/effectsize.csv")
#install.packages("devtools")
#devtools::install_github("NightingaleHealth/ggforestplot")
library(ggforestplot)
tiff("D:/Graphic/zhuhanyi/Fig.1.tiff",height=12,width=10,units="cm",res=500,compression = "lzw")
forestplot(
  df = dataeffect,
  name=Name,
  estimate = CD,
  se = se,
  colour = Group,
  xlab = "Cohen's D"
)
dev.off()


### LMM test.R
### 
setwd("D:/Ph.D_experiment_1/FMT/FMT_analysis/LMM_FMT")
library(ggplot2)
library(reshape2)
library(nlme)
library(tidyverse)
library(magrittr)
# install.packages("lme4")
# install.packages("lmerTest")
library(lme4)
library(lmerTest)
library(emmeans)
library(multcompView)
library(multcomp)
data_mix_modle_LH_4_no_male <- read.table("LMM_FMT_physiology.txt",header = T)
#####################################density ###############################
data_mix_modle_LH_4_no_male_dat <- data_mix_modle_LH_4_no_male %>%
  melt(id.var = c("EXP","density","num","cage"),variable.name = "serum_re",value.name = "value") %>%
  filter(EXP %in% "AnFM")
## test density exp linear mixed model
final_re_mix_modle_LH_4_no_male <- NULL
final_re_mix_modle_LH_4_no_male_pw <- NULL
final_re_mix_modle_LH_4_no_male_random <- NULL
for (i in unique (data_mix_modle_LH_4_no_male_dat$serum_re)) {
  temp_serum <- data_mix_modle_LH_4_no_male_dat[which(data_mix_modle_LH_4_no_male_dat$serum_re %in% i),] %>% 
    droplevels()
  temp_serum$cage<- as.factor(temp_serum$cage)
  # model result
  # lme_temp <- lmer(value ~ density + (1|cage),data = temp_serum,REML = TRUE) %>% anova()
  lme_temp <- lme(value ~ density,random = ~1|cage,data = temp_serum) %>% anova
  # pairwise test result
  pairwise <-lme(value ~ density,random = ~1|cage,data = temp_serum) %>%
    # emmeans(list(pairwise ~ density), adjust = "tukey") 
    lsmeans(.,~ density) %>%
    # cld(.,alpha = 0.05,
    #     adjust = "tukey",
    #     Letters = letters) %>%
    contrast(.,method = "pairwise",adjust = NULL) %>%
    as.data.frame()
  # random result
  random <- lme(value ~ density,random = ~1|cage,data = temp_serum)
  fixed <- gls(value ~ density,data = temp_serum,method = "REML") 
  # fixed2 <- lm(value ~ density,data = temp_serum)
  compare_random_fixed <- anova(fixed, random)
  # anova(fixed2,random)
  # generate model result
  temp_re <- data.frame(index = i, lme_temp,variable = rownames(lme_temp))
  final_re_mix_modle_LH_4_no_male <- rbind(final_re_mix_modle_LH_4_no_male,temp_re)
  # generate pairwise result
  pairwise_re_mix_modle_LH_4_no_male <- data.frame(index = i, 
                                                   pairwise_result = as.data.frame(pairwise))
  final_re_mix_modle_LH_4_no_male_pw <- rbind(final_re_mix_modle_LH_4_no_male_pw,pairwise_re_mix_modle_LH_4_no_male)
  # generate random result
  temp_random <- data.frame(index = i,
                            compare_random_fixed, 
                            model_type = rownames(compare_random_fixed))
  final_re_mix_modle_LH_4_no_male_random <- rbind(final_re_mix_modle_LH_4_no_male_random,temp_random)
}

total_mix_modle_LH_4_no_male <- rbind(final_re_mix_modle_LH_4_no_male %>% mutate(exp = "AnFM"))
total_pairwise_mix_modle_LH_4_no_male <- rbind(final_re_mix_modle_LH_4_no_male_pw %>% mutate(exp = "AnFM"))
total_random_mix_modle_LH_4_no_male <- rbind(final_re_mix_modle_LH_4_no_male_random %>% mutate(exp = "AnFM"))

total_mix_modle_LH_4_no_male %>%
  write.csv("D:/Ph.D_experiment_1/FMT/FMT_analysis/LMM_FMT/lmm_analysis_FMT_physiology_all groups.csv",quote = F)
total_pairwise_mix_modle_LH_4_no_male %>%
  write.csv("D:/Ph.D_experiment_1/FMT/FMT_analysis/LMM_FMT/pairwise_FMT_physiology_all groups.csv",quote = F)
total_random_mix_modle_LH_4_no_male %>%
  write.csv("D:/Ph.D_experiment_1/FMT/FMT_analysis/LMM_FMT/ranom_FMT_physiology_all groups.csv",quote = F)
## final_re_d :total result of density using lmm 
## final_re_d_pw : pairwise comparison for lmm 
## final_re_d_random : comparison of fixed and random effect