From 37f9befd35458ce73f04f7785cf2aae6c2eb09ab Mon Sep 17 00:00:00 2001
From: MWA_AG_Fernie_MPIMP <Wijesingha@mpimp-golm.mpg.de>
Date: Tue, 6 Jun 2023 20:04:31 +0200
Subject: [PATCH] uploaded scripts and datasets

---
 .gitattributes                                |    1 +
 Figure_1.pdf                                  |  Bin 90039 -> 0 bytes
 .../210809_lip_lib_cmQTL_val_adapt.txt        |    3 +
 .../dataset/cmQTL_val_1_2_lipids_clusters.gda |    3 +
 .../dataset/Sly_sec_met_library.txt           |    3 +
 .../dataset/all_clusters_summed_intensity.gda |    3 +
 runs/GC-MS analysis/Thumbs.db                 |  Bin 96768 -> 96256 bytes
 .../Cross_metabolite_comparisons.R            | 1455 ++++++++++++++++
 .../Get_metabolite_data.R                     |  382 ++++
 .../Whole_metabolome_analysis/Get_raw_data.R  |  798 +++++++++
 .../simplified_classes.csv                    |   43 +
 .../210813_lipid_analysis_cmQTL_val_1.R       | 1516 ++++++++++++++++
 .../Figure maker_cmQTL1_paper.R               |  937 ++++++++++
 .../Lipid_mod.R                               |  103 ++
 .../210812_lipid_normalization.R              |  811 +++++++++
 .../210903_secondary_analysis_cmQTL_val_1.R   | 1535 +++++++++++++++++
 .../Figure maker_cmQTL1_paper.R               |  917 ++++++++++
 .../210903_secondary_normalization.R          |  823 +++++++++
 18 files changed, 9333 insertions(+)
 delete mode 100644 Figure_1.pdf
 create mode 100644 assays/cmQTL_val1_GH_2020_apolar_LC_MS/dataset/210809_lip_lib_cmQTL_val_adapt.txt
 create mode 100644 assays/cmQTL_val1_GH_2020_apolar_LC_MS/dataset/cmQTL_val_1_2_lipids_clusters.gda
 create mode 100644 assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/Sly_sec_met_library.txt
 create mode 100644 assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/all_clusters_summed_intensity.gda
 create mode 100644 workflows/Whole_metabolome_analysis/Cross_metabolite_comparisons.R
 create mode 100644 workflows/Whole_metabolome_analysis/Get_metabolite_data.R
 create mode 100644 workflows/Whole_metabolome_analysis/Get_raw_data.R
 create mode 100644 workflows/Whole_metabolome_analysis/simplified_classes.csv
 create mode 100644 workflows/apolar_LC_MS_analysis/210813_lipid_analysis_cmQTL_val_1.R
 create mode 100644 workflows/apolar_LC_MS_figures/Figure maker_cmQTL1_paper.R
 create mode 100644 workflows/apolar_LC_MS_library_annotation/Lipid_mod.R
 create mode 100644 workflows/apolar_LC_MS_normalization/210812_lipid_normalization.R
 create mode 100644 workflows/polar_LC_MS_analysis/210903_secondary_analysis_cmQTL_val_1.R
 create mode 100644 workflows/polar_LC_MS_figures/Figure maker_cmQTL1_paper.R
 create mode 100644 workflows/polar_LC_MS_normalization/210903_secondary_normalization.R

diff --git a/.gitattributes b/.gitattributes
index 2635f9c..253b394 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,2 @@
 **/dataset/** filter=lfs diff=lfs merge=lfs -text
+/assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/all_clusters_summed_intensity.gda filter=lfs diff=lfs merge=lfs -text
diff --git a/Figure_1.pdf b/Figure_1.pdf
deleted file mode 100644
index ddc10317c7b00be259947516552980f2cdaacbd2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 90039
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

diff --git a/assays/cmQTL_val1_GH_2020_apolar_LC_MS/dataset/210809_lip_lib_cmQTL_val_adapt.txt b/assays/cmQTL_val1_GH_2020_apolar_LC_MS/dataset/210809_lip_lib_cmQTL_val_adapt.txt
new file mode 100644
index 0000000..bffba32
--- /dev/null
+++ b/assays/cmQTL_val1_GH_2020_apolar_LC_MS/dataset/210809_lip_lib_cmQTL_val_adapt.txt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6a668c5bc864494c525e2987d756602950e9f8360de94d640ac2f6e080e5bfd
+size 30452
diff --git a/assays/cmQTL_val1_GH_2020_apolar_LC_MS/dataset/cmQTL_val_1_2_lipids_clusters.gda b/assays/cmQTL_val1_GH_2020_apolar_LC_MS/dataset/cmQTL_val_1_2_lipids_clusters.gda
new file mode 100644
index 0000000..7796d09
--- /dev/null
+++ b/assays/cmQTL_val1_GH_2020_apolar_LC_MS/dataset/cmQTL_val_1_2_lipids_clusters.gda
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e88be16b85b21c08c6c59e794bf1c60b8ac6b46e6ff03b1fefbea142add8b86
+size 30445094
diff --git a/assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/Sly_sec_met_library.txt b/assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/Sly_sec_met_library.txt
new file mode 100644
index 0000000..3e76289
--- /dev/null
+++ b/assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/Sly_sec_met_library.txt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bd81c4ed24e00a1c9370cc70cae9f3be40be3f416631be3134526d544acf9980
+size 57995
diff --git a/assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/all_clusters_summed_intensity.gda b/assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/all_clusters_summed_intensity.gda
new file mode 100644
index 0000000..a63a422
--- /dev/null
+++ b/assays/cmQTL_val1_GH_2020_polar_LC_MS/dataset/all_clusters_summed_intensity.gda
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b73eb94d6c6b4e8afcea7a587af2587ead21eceeb773d59129c2403745b35ed
+size 196568863
diff --git a/runs/GC-MS analysis/Thumbs.db b/runs/GC-MS analysis/Thumbs.db
index 3f4eebbb10fd9cde90e60abe568afd1e90f063f8..d2ecd2542cdac8bfa6cab7fed27e06343956beca 100644
GIT binary patch
delta 82451
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

delta 82574
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%0A%f(8hY@X
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
S{##DgsI5-^Qu`CRlKwBn_cUz)

diff --git a/workflows/Whole_metabolome_analysis/Cross_metabolite_comparisons.R b/workflows/Whole_metabolome_analysis/Cross_metabolite_comparisons.R
new file mode 100644
index 0000000..3ea02a7
--- /dev/null
+++ b/workflows/Whole_metabolome_analysis/Cross_metabolite_comparisons.R
@@ -0,0 +1,1455 @@
+rm(list = ls())
+library(tidyverse)
+library(ggpubr)
+library(glue)
+library(ggtext)
+library(cowplot)
+library(ggbeeswarm)
+library(extrafont)
+library(ggprism)
+library(viridis)
+
+# Directory setting -------------------------------------------------------
+
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "Figures", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+# Primary loading ---------------------------------------------------------
+setwd(source)
+prim_source <- str_c(getwd(), "/1. Primary")
+setwd(prim_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(prim_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_prim <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "prim")
+
+genotypes <- fc_1_prim %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_prim <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_prim <- read_csv("p_values.csv")
+
+fc_1_cv_prim <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_cv_prim <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_prim_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_prim <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_lt_prim <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_prim_lt <- read_csv("p_values_levene.csv") 
+
+met_prim <- fc_1_prim %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+cv_prim_out <- fc_1_cv_prim %>% 
+  left_join(met_prim) %>% 
+  left_join(sig_prim_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "prim")
+
+# Secondary loading ---------------------------------------------------------
+setwd(source)
+sec_source <- str_c(getwd(), "/2. Secondary")
+setwd(sec_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(sec_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_sec <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "sec")
+
+genotypes <- fc_1_sec %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_sec <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_sec <- read_csv("p_values.csv")
+
+fc_1_cv_sec <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_cv_sec <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_sec_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_sec <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_lt_sec <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_sec_lt <- read_csv("p_values_levene.csv")
+
+met_sec <- fc_1_sec %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+cv_sec_out <- fc_1_cv_sec %>% 
+  left_join(met_sec) %>% 
+  left_join(sig_sec_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "sec")
+
+# Lipids loading ---------------------------------------------------------
+setwd(source)
+lip_source <- str_c(getwd(), "/3. Lipids")
+setwd(lip_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(lip_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_lip <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))%>% 
+  mutate(platform = "lip")
+
+genotypes <- fc_1_lip %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_lip <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_lip <- read_csv("p_values.csv")
+
+fc_1_cv_lip <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_cv_lip <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_lip_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_lip <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_lt_lip <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_lip_lt <- read_csv("p_values_levene.csv")
+
+met_lip <- fc_1_lip %>% 
+ distinct(met, Compound_Name, Compound_Class)
+
+cv_lip_out <- fc_1_cv_lip %>% 
+  left_join(met_lip) %>% 
+  left_join(sig_lip_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "lip")
+
+# Data combination --------------------------------------------------------
+setwd(out_dir)
+
+fc_1 <- fc_1_prim %>% 
+  bind_rows(fc_1_sec, fc_1_lip)
+
+fc_1_ind <- fc_1_ind_prim %>% 
+  bind_rows(fc_1_ind_sec, fc_1_ind_lip)
+
+fc_1_cv <- fc_1_cv_prim %>% 
+  bind_rows(fc_1_cv_sec, fc_1_cv_lip)
+
+met_dat <- fc_1 %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+classes_tidy <- met_dat %>% 
+  mutate(`ChEBI simplified` = if_else(str_detect(Compound_Class,"carbohydrate"),"carbohydrate or derivative",
+                                      if_else(str_detect(Compound_Class,"amino_acid"), "amino acid or derivative",
+                                              if_else(str_detect(Compound_Class,"carboxylic_acid"), "carboxylic acid",
+                                                      "other"))))
+
+genotypes <- fc_1 %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+per_comp_y <- fc_1 %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(tot_val = max(mean_fc + se))
+
+sig_lt <- sig_prim_lt %>% 
+  bind_rows(sig_sec_lt, sig_lip_lt)
+
+sig <- sig_prim %>% 
+  bind_rows(sig_sec, sig_lip)
+
+sig_cv <- sig_prim_cv %>% 
+  bind_rows(sig_sec_cv, sig_lip_cv)
+
+cb_scale <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442",
+              "#0072B2", "#D55E00", "#CC79A7","#000000")
+bw_scale <- c("black", "black", "black", "black", "black", "black", "black")
+vir_scale <- plasma(4, begin = 0.2, end = 1)
+
+cv_out <- bind_rows(cv_prim_out, cv_sec_out, cv_lip_out)
+
+write_csv(cv_out, "CV_supplementary.csv")
+
+# Theme --------------------------------------------------------------
+setwd(out_dir)
+com_theme <- theme(axis.text.x = element_markdown(angle = 45, hjust = 1, size = 6, family = "sans"),
+                   axis.text.y = element_text(size = 6, family = "sans"),
+                   axis.title.x = element_blank(),
+                   axis.title.y = element_text(size = 6, family = "sans"),
+                   panel.background = element_rect(fill = "white"),
+                   panel.border = element_rect(color = "black",fill = NA),
+                   strip.text = element_text(size = 8, family = "sans", margin = margin(t = 1, r = 1, b = 1, l = 1 , unit = "pt")),
+                   text = element_text(size = 6, family = "sans"),
+                   legend.title = element_blank(),
+                   legend.text = element_markdown(size = 6),
+                   plot.margin = unit(c(1,1,1,1), "mm"),
+                   legend.margin = margin(t = 0, r = 2, b = 0, l = 2 , unit = "mm"))
+
+
+# CV distribution ---------------------------------------------------------
+
+fruit_cv <- fc_1_cv %>% 
+  filter(tissue == "fruits", genotype == "MoneyMaker") %>% 
+  select(met, fruit_cv = mean_cv)
+
+leaf_cv <- fc_1_cv %>% 
+  filter(tissue == "leaves", genotype == "MoneyMaker") %>% 
+  select(met, leaf_cv = mean_cv)
+
+fl_cv <- full_join(fruit_cv, leaf_cv)
+
+t.test(fl_cv$fruit_cv, fl_cv$leaf_cv)
+cor(fl_cv$fruit_cv, fl_cv$leaf_cv)
+
+fc_1_cv %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  ggplot(aes(x = tissue, y = mean_cv)) +
+  geom_boxplot() +
+  geom_line(aes(group = met), alpha = 0.1)
+
+fl_cv %>% 
+  ggplot(aes(x = leaf_cv, y = fruit_cv)) +
+  geom_point()
+
+# Clustering k-means---------------------------------------------------------
+
+library(pheatmap)
+
+heat_base <- fc_1 %>% 
+  group_by(met,tissue, treatment, Compound_Name, Compound_Class) %>% 
+  summarise(mean_fc = mean(mean_fc)) %>% 
+  filter(#Compound_Class %in% c("Phospholipid", "Phosphatidylcholine"),
+    #genotype %in% c("MoneyMaker"),
+    tissue == "fruits")
+
+heat.GC <- heat_base %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, Compound_Class, met),
+              names_from = group,
+              values_from = z_score) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.GC) <- heat.GC$met
+
+mat.heat.GC <- heat.GC %>% 
+  select(contains("0.4"), contains("0.6"),
+         contains("0.8"),
+         contains("1"),
+         contains("leaves"), contains("fruits")) %>% as.matrix()
+
+set.seed(1640)
+k_means <- kmeans(mat.heat.GC, centers = 6)
+
+clusters <- k_means$cluster
+
+clust_tidy <- tibble("clust" = clusters) %>% 
+  mutate(met = names(clusters))
+
+heat_base %>% 
+  left_join(clust_tidy) %>% 
+  #left_join(classes_tidy) %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  group_by(clust, treatment) %>% 
+  mutate(n = n()) %>% 
+  ungroup() %>% 
+  ggplot(aes(x = treatment, y = z_score)) +
+  #geom_line(aes(group = met)) +
+  geom_smooth(aes(group = clust), method = "lm", formula = y~poly(x,3)) + 
+  geom_label(aes(x = 0.7, y = -0.5, label = n), size = 3, inherit.aes = F) +
+  facet_wrap(vars(clust), nrow = 2) +
+  scale_color_manual(values = cb_scale[5:8]) +
+  com_theme +
+  ylab("range-scaled level") +
+  theme(legend.position = "bottom")
+
+ggsave("clusters_all_lines.png",
+       width = 10.5,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+
+saveRDS(last_plot(), "met_clust_all_lines.RDS")
+# Clustering k-means leaves---------------------------------------------------------
+
+library(pheatmap)
+
+heat_base <- fc_1 %>% 
+  group_by(met,tissue, treatment, Compound_Name, Compound_Class) %>% 
+  summarise(mean_fc = mean(mean_fc)) %>% 
+  filter(#Compound_Class %in% c("Phospholipid", "Phosphatidylcholine"),
+    #genotype %in% c("MoneyMaker"),
+    tissue == "leaves")
+
+heat.GC <- heat_base %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, Compound_Class, met),
+              names_from = group,
+              values_from = z_score) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.GC) <- heat.GC$met
+
+mat.heat.GC <- heat.GC %>% 
+  select(contains("0.4"), contains("0.6"),
+         contains("0.8"),
+         contains("1"),
+         contains("leaves"), contains("fruits")) %>% as.matrix()
+
+set.seed(1640)
+k_means <- kmeans(mat.heat.GC, centers = 6)
+
+clusters <- k_means$cluster
+
+clust_tidy <- tibble("clust" = clusters) %>% 
+  mutate(met = names(clusters))
+
+heat_base %>% 
+  left_join(clust_tidy) %>% 
+  #left_join(classes_tidy) %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  group_by(clust, treatment) %>% 
+  mutate(n = n()) %>% 
+  ungroup() %>% 
+  ggplot(aes(x = treatment, y = z_score)) +
+  #geom_line(aes(group = met)) +
+  geom_smooth(aes(group = clust), method = "lm", formula = y~poly(x,3)) + 
+  geom_label(aes(x = 0.7, y = -0.55, label = n), size = 3, inherit.aes = F) +
+  facet_wrap(vars(clust), nrow = 2) +
+  scale_color_manual(values = cb_scale[5:8]) +
+  com_theme +
+  ylab("range-scaled level") +
+  theme(legend.position = "bottom")
+
+ggsave("clusters_all_lines_leaves.png",
+       width = 10.5,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+
+saveRDS(last_plot(), "met_clust_all_lines_leaves.RDS")
+
+# Clustering k-means levene---------------------------------------------------------
+
+fc_1_ind_lt <- fc_1_ind_lt_prim %>% 
+  bind_rows(fc_1_ind_lt_sec, fc_1_ind_lt_lip)
+
+library(pheatmap)
+
+heat_base <- fc_1_ind_lt %>% 
+  left_join(met_dat) %>% 
+  group_by(met,tissue, treatment, Compound_Name, Compound_Class) %>% 
+  summarise(mean_fc = mean(lev_t)) %>% 
+  filter(#Compound_Class %in% c("Phospholipid", "Phosphatidylcholine"),
+    #genotype %in% c("MoneyMaker"),
+    tissue == "fruits")
+
+heat.GC <- heat_base %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, Compound_Class, met),
+              names_from = group,
+              values_from = z_score) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.GC) <- heat.GC$met
+
+mat.heat.GC <- heat.GC %>% 
+  select(contains("0.4"), contains("0.6"),
+         contains("0.8"),
+         contains("1"),
+         contains("leaves"), contains("fruits")) %>% as.matrix()
+
+set.seed(1640)
+k_means <- kmeans(mat.heat.GC, centers = 6)
+
+clusters <- k_means$cluster
+
+clust_tidy <- tibble("clust" = clusters) %>% 
+  mutate(met = names(clusters))
+
+heat_base %>% 
+  left_join(clust_tidy) %>% 
+  #left_join(classes_tidy) %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  group_by(clust, treatment) %>% 
+  mutate(n = n()) %>% 
+  ungroup() %>% 
+  ggplot(aes(x = treatment, y = z_score)) +
+  #geom_line(aes(group = met)) +
+  geom_smooth(aes(group = clust), method = "lm", formula = y~poly(x,3)) + 
+  geom_label(aes(x = 0.7, y = -0.6, label = n), size = 3, inherit.aes = F) +
+  facet_wrap(facets = vars(clust), nrow = 2) +
+  scale_color_manual(values = cb_scale[5:8]) +
+  com_theme +
+  ylab("range-scaled level") +
+  theme(legend.position = "bottom")
+
+saveRDS(last_plot(), "clusters_all_lines_levene.RDS")
+
+ggsave("clusters_all_lines_levene.png",
+       width = 10.5,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+
+# Heatmap Phospholipids transp1-1 ----------------------------------------------------------------
+
+fc_1_wt <- fc_1 %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(mean_fc_wt = mean_fc, tissue, treatment, met)
+
+heat_base <- fc_1 %>% 
+  left_join(fc_1_wt) %>% 
+  mutate(mean_fc = mean_fc/mean_fc_wt) %>% 
+  filter(Compound_Class %in% c("Phospholipid"),
+    genotype %in% c("*transp1-1*"),
+    tissue == "fruits")
+
+heat_nom <- heat_base %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, treatment, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, Compound_Class, met),
+              names_from = group,
+              values_from = log_norm) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat_nom) <- heat_nom$Compound_Name
+
+mat.heat_nom <- heat_nom %>% 
+  select(contains("0.4"), contains("0.6"),
+         contains("0.8"),
+         contains("1"),
+         contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat_nom %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat_nom$Compound_Name
+
+annotation_col <- heat_base %>% 
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+#heat_nom_signif <- heat_base %>% 
+#  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+#  left_join(sig_GC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  #left_join(sig_mets) %>% 
+  #filter(sig == T) %>% 
+#  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+#         signif = if_else(p.value >= 0.05| is.na(p.value), "","X")) %>%
+#  pivot_wider(id_cols = c(met),
+#              names_from = group,
+#              values_from = signif) %>% 
+#  left_join(met_dat) %>% 
+  #left_join(GCid_classes) %>% 
+#  arrange(Compound_Class, Compound_Name) %>% 
+#  as.data.frame()
+
+heat_cols <- colnames(mat.heat_nom)
+
+#rownames(heat_nom_signif) <- heat_nom_signif$met
+
+#mat.heat_nom_signif <- heat_nom_signif %>% 
+#  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = cb_scale[1], `*panK4-1*` = "brown", `log2-1` = "blue", `*transp1-1*` = cb_scale[4]),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+pheatmap.GC <- pheatmap(mat.heat_nom,
+                        color = colorRampPalette(c("blue", "white", "red"))(65),
+                        #cellwidth = 16,
+                        #cellheight = 4,
+                        breaks = seq(-3.25, 3.25, 0.1),
+                        #clustering_distance_rows = dist((mat.heat_nom), method = "euclidean"),
+                        cluster_rows = T,
+                        cluster_cols = F,
+                        annotation_names_row = F,
+                        show_rownames = F,
+                        annotation_row = annotation_row,
+                        #annotation_col = annotation_col,
+                        #display_numbers = mat.heat_nom_signif,
+                        number_color = "black",
+                        fontsize_number = 6,
+                        # annotation_colors = ann_colors,
+                        #filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                        #                "cmQTL_val_1_heatmap_rel_tissue_wt.jpg",
+                        #                 sep = "_")
+)
+
+dev.off()
+
+
+## CV ----------------------------------------------------------------------
+setwd(current)
+simple_class <- read_csv(file = "simplified_classes.csv")
+setwd(out_dir)
+
+fc_1_cv_wt <- fc_1_cv %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(mean_cv_wt = mean_cv, tissue, met)
+
+heat_base <- fc_1_cv %>% 
+  left_join(met_dat) %>% 
+  left_join(simple_class) %>% 
+  left_join(fc_1_cv_wt) %>% 
+  left_join(sig_cv) %>% 
+  mutate(mean_cv_fc = mean_cv/mean_cv_wt,
+         adj.p.value = p.adjust(p.value, method = "fdr"),
+         treatment = as_factor("CV")) %>% 
+  filter(Compound_Class %in% c("Phospholipid"),
+    genotype %in% c("transp1-1"), group2 == "*transp1-1*",
+    tissue == "fruits",
+    #adj.p.value <= 0.05
+    )
+
+heat_cv <- heat_base %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_cv_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_cv - mean(mean_cv))/(max(mean_cv)-min(mean_cv))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, treatment, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, Compound_Class, Compound_Class_simple, met),
+              names_from = group,
+              values_from = log_norm) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat_cv) <- heat_cv$Compound_Name
+
+mat.heat_cv <- heat_cv %>% 
+  select(contains("0.4"), contains("0.6"),
+         contains("0.8"),
+         contains("1"),
+         contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat_cv %>% 
+  select(Compound_Class_simple)
+
+rownames(annotation_row) <- heat_cv$Compound_Name
+
+annotation_col <- heat_base %>% 
+  distinct(tissue, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, tissue, genotype)
+
+#heat_cv_signif <- heat_base %>% 
+#  distinct(tissue, alias, genotype, met) %>% 
+#  #filter(genotype != "MoneyMaker") %>% 
+#  left_join(sig_GC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+#  #left_join(sig_mets) %>% 
+#  #filter(sig == T) %>% 
+#  mutate(group = as_factor(str_c(tissue, genotype, sep = "_")),
+#         signif = if_else(p.value >= 0.05| is.na(p.value), "","X")) %>%
+#  pivot_wider(id_cols = c(met),
+#              names_from = group,
+#              values_from = signif) %>% 
+#  left_join(met_dat) %>% 
+#  #left_join(GCid_classes) %>% 
+#  arrange(Compound_Class_simple, Compound_Name) %>% 
+#  as.data.frame()
+
+heat_cols <- colnames(mat.heat_cv)
+
+#rownames(heat_cv_signif) <- heat_cv_signif$met
+
+#mat.heat_cv_signif <- heat_cv_signif %>% 
+#  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = cb_scale[1], `*panK4-1*` = "brown", `log2-1` = "blue", `*transp1-1*` = cb_scale[4]),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+pheatmap.GC <- pheatmap(mat.heat_cv,
+                        color = colorRampPalette(c("blue", "white", "red"))(33),
+                        #cellwidth = 16,
+                        #cellheight = 4,
+                        breaks = seq(-1.65, 1.65, 0.1),
+                        #clustering_distance_rows = dist((mat.heat_cv), method = "euclidean"),
+                        cluster_rows = T,
+                        cluster_cols = F,
+                        annotation_names_row = F,
+                        show_rownames = F,
+                        annotation_row = annotation_row,
+                        #annotation_col = annotation_col,
+                        #display_numbers = mat.heat_cv_signif,
+                        number_color = "black",
+                        fontsize_number = 6,
+                        # annotation_colors = ann_colors,
+                        #filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                        #                "cmQTL_val_1_heatmap_rel_tissue_wt.jpg",
+                        #                 sep = "_")
+)
+
+dev.off()
+
+
+## combined ----------------------------------------------------------------
+
+mat_heat_comb <- mat.heat_nom %>% 
+  cbind(mat.heat_cv)
+
+annotation_col <- tibble(group = colnames(mat_heat_comb)) %>% 
+  mutate(sep = group) %>% 
+  separate(col = sep,sep = "_",
+           into = c("tissue", "genotype", "treatment")) %>% 
+  select(group, treatment) %>% 
+  #mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group)
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = cb_scale[1], `*panK4-1*` = "brown", `log2-1` = "blue", `*transp1-1*` = cb_scale[4]),
+  treatment = c("0.4" = vir_scale[1], "0.6" = vir_scale[2], "0.8" = vir_scale[3], "1" = vir_scale[4], "CV" = "gray"))
+
+
+pheatmap.GC <- pheatmap(mat_heat_comb,
+                        gaps_col = 4,
+                        colorRampPalette(c("#440154FF", "white", "#FDE725FF"))(33),
+                        #cellwidth = 16,
+                        #cellheight = 4,
+                        breaks = seq(-1.65, 1.65, 0.1),
+                        #clustering_distance_rows = dist((mat.heat_nom), method = "euclidean"),
+                        cluster_rows = T,
+                        cluster_cols = F,
+                        annotation_names_row = F,
+                        show_rownames = T,
+                        show_colnames = F,
+                        #annotation_row = annotation_row,
+                        annotation_col = annotation_col,
+                        #display_numbers = mat.heat_nom_signif,
+                        number_color = "black",
+                        fontsize_number = 6,
+                        treeheight_row = 10,
+                        width = 1.5,
+                        height = 3.25,
+                        fontsize = 8,
+                        annotation_colors = ann_colors
+                        #filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                         #               "Heatmap_transp1-1.png",
+                          #               sep = "_")
+)
+
+#dev.off()
+
+heat_phos <- ggplotify::as.ggplot(pheatmap.GC)
+saveRDS(heat_phos, "Phospholipids_transp1.RDS")
+
+ggsave(plot = heat_phos,
+       "Heatmap_transp1-1.png",
+       width = 6,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+
+if(!is.null(dev.cur())){
+  dev.off()
+}
+
+# Heatmap WT all primary----------------------------------------------------------------
+
+red_met_class <- read_csv(file = "H:/3. cmQTL mapping/Shared_source_files/reduced_met_classes.csv") %>% 
+  select(-n)
+
+fc_1_wt <- fc_1 %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(mean_fc_wt = mean_fc, tissue, treatment, met)
+
+heat_base <- fc_1 %>% 
+  #left_join(fc_1_wt) %>% 
+ # mutate(mean_fc = mean_fc/mean_fc_wt) %>% 
+  filter(#Compound_Class %in% c("Phospholipid"),
+         genotype %in% c("MoneyMaker"),
+         tissue == "fruits", platform == "prim")
+
+heat_nom <- heat_base %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, treatment, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, Compound_Class, met),
+              names_from = group,
+              values_from = z_score) %>% 
+  left_join(red_met_class) %>% 
+  select(-Compound_Class, Compound_Class = Compound_Class_dense) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat_nom) <- heat_nom$met
+
+mat.heat_nom <- heat_nom %>% 
+  select(contains("0.4"), contains("0.6"),
+         contains("0.8"),
+         contains("1"),
+         contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat_nom %>% 
+  mutate(ChEBI = if_else(str_detect(Compound_Class,"Carbohydrate"),"CH",
+                         if_else(str_detect(Compound_Class,"Amino Acid"), "AA",
+                                 if_else(str_detect(Compound_Class,"Carboxylic Acid"), "CA",
+                                         "other"))),
+         #ChEBI = as_factor(ChEBI))#,
+         ChEBI = fct_relevel(ChEBI, c("AA", "CH", "CA", "other"))) %>% 
+  select(ChEBI)
+
+rownames(annotation_row) <- heat_nom$met
+
+annotation_col <- heat_base %>% 
+  arrange(genotype, treatment) %>% 
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, treatment, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, -tissue, -genotype)
+
+#heat_nom_signif <- heat_base %>% 
+#  distinct(tissue, treatment, alias, genotype, met) %>% 
+#filter(genotype != "MoneyMaker") %>% 
+#  left_join(sig_GC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+#left_join(sig_mets) %>% 
+#filter(sig == T) %>% 
+#  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+#         signif = if_else(p.value >= 0.05| is.na(p.value), "","X")) %>%
+#  pivot_wider(id_cols = c(met),
+#              names_from = group,
+#              values_from = signif) %>% 
+#  left_join(met_dat) %>% 
+#left_join(GCid_classes) %>% 
+#  arrange(Compound_Class, Compound_Name) %>% 
+#  as.data.frame()
+
+heat_cols <- colnames(mat.heat_nom)
+
+#rownames(heat_nom_signif) <- heat_nom_signif$met
+
+#mat.heat_nom_signif <- heat_nom_signif %>% 
+#  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  #tissue = c(fruits = "red",leaves = "darkgreen"),
+  #genotype = c(MoneyMaker = cb_scale[1], `*panK4-1*` = cb_scale[2], `log2-1` = cb_scale[3], `*transp1-1*` = cb_scale[4]),
+  treatment = c("0.4" = vir_scale[1], "0.6" = vir_scale[2], "0.8" = vir_scale[3], "1" = vir_scale[4]),
+  ChEBI = c("AA" = "#0072B2",
+                     "CH" = "#D55E00",
+                     "CA" = "#CC79A7",
+                     "other" = "#000000"))
+
+pheatmap.GC <- pheatmap(mat.heat_nom,
+                        colorRampPalette(c("#440154FF", "white", "#FDE725FF"))(45),
+                        #cellwidth = 16,
+                        #cellheight = 4,
+                        breaks = seq(-0.45, 0.45, 0.02),
+                        #clustering_distance_rows = dist((mat.heat_nom), method = "euclidean"),
+                        cluster_rows = T,
+                        cluster_cols = F,
+                        annotation_names_row = F,
+                        show_rownames = F,
+                        show_colnames = F,
+                        annotation_row = annotation_row,
+                        annotation_col = annotation_col,
+                        #display_numbers = mat.heat_nom_signif,
+                        number_color = "black",
+                        fontsize_number = 6,
+                        annotation_colors = ann_colors,
+                        #filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                        #                "cmQTL_val_1_heatmap_rel_tissue_wt_all_metabolites.jpg",
+                        #                 sep = "_")
+)
+
+#dev.off()
+
+heat_prim_wt <- ggplotify::as.ggplot(pheatmap.GC)
+saveRDS(heat_prim_wt, "MoneyMaker_heatmap.RDS")
+
+ggsave("MoneyMaker.png",
+       width = 6,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+
+if(!is.null(dev.cur())){
+  dev.off()
+}
+
+# Heatmap all genotypes all metabolites----------------------------------------------------------------
+
+red_met_class <- read_csv(file = "H:/3. cmQTL mapping/Shared_source_files/reduced_met_classes.csv") %>% 
+  select(-n)
+
+fc_1_wt <- fc_1 %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(mean_fc_wt = mean_fc, tissue, treatment, met)
+
+heat_base <- fc_1 %>% 
+  left_join(fc_1_wt) %>% 
+   mutate(mean_fc = mean_fc/mean_fc_wt,
+          genotype = str_remove_all(genotype, "\\*"))# %>% 
+  #filter(#Compound_Class %in% c("Phospholipid"),
+    #genotype %in% c("MoneyMaker"),
+#)
+
+heat_nom <- heat_base %>% 
+  left_join(sig) %>% 
+  group_by(Compound_Name, met, tissue) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(p.signif == "*", log_norm, 0),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         z_score = (mean_fc - mean(mean_fc))/(max(mean_fc)-min(mean_fc))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, treatment, sep = "_"))) %>% 
+  arrange(tissue, treatment, genotype) %>% 
+  pivot_wider(id_cols = c(Compound_Name, Compound_Class, met),
+              names_from = group,
+              values_from = log_norm) %>% 
+  left_join(red_met_class) %>% 
+  select(-Compound_Class, Compound_Class = Compound_Class_dense) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat_nom) <- heat_nom$met
+
+mat.heat_nom <- heat_nom %>% 
+  select(#contains("0.4"), contains("0.6"),
+         #contains("0.8"),
+         #contains("1"),
+         contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat_nom %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat_nom$met
+
+annotation_col <- heat_base %>% 
+  arrange(genotype, treatment) %>% 
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, treatment, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+#heat_nom_signif <- heat_base %>% 
+#  distinct(tissue, treatment, alias, genotype, met) %>% 
+#filter(genotype != "MoneyMaker") %>% 
+#  left_join(sig_GC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+#left_join(sig_mets) %>% 
+#filter(sig == T) %>% 
+#  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+#         signif = if_else(p.value >= 0.05| is.na(p.value), "","X")) %>%
+#  pivot_wider(id_cols = c(met),
+#              names_from = group,
+#              values_from = signif) %>% 
+#  left_join(met_dat) %>% 
+#left_join(GCid_classes) %>% 
+#  arrange(Compound_Class, Compound_Name) %>% 
+#  as.data.frame()
+
+heat_cols <- colnames(mat.heat_nom)
+
+#rownames(heat_nom_signif) <- heat_nom_signif$met
+
+#mat.heat_nom_signif <- heat_nom_signif %>% 
+#  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "magenta",leaves = "green"),
+  genotype = c(MoneyMaker = cb_scale[1], `panK4-1` = cb_scale[2], `log2-1` = cb_scale[3], `transp1-1` = cb_scale[4]),
+  treatment = c("0.4" = vir_scale[1], "0.6" = vir_scale[2], "0.8" = vir_scale[3], "1" = vir_scale[4]),
+  Compound_Class = c("Amino Acid or derivative" = "#0072B2",
+                     "Carboxylic Acid" = "#D55E00",
+                     "Carbohydrate or derivative" = "#CC79A7",
+                     "Cinnamic Acid" = "#484E37",
+                     "Dipeptide" = "#4AEE2F",
+                     "Flavonoid (glycosides)" = "#BAD23A",
+                     "Galactolipid" = "#EF000B",
+                     "Phospholipid" = "#19605B",
+                     "Steroidal Glycoalkaloids" = "#7A5DF0",
+                     "Triacylglyceride" = "#6E3455",
+                     "Other" = "#000000")
+  )
+
+pheatmap.GC <- pheatmap(mat.heat_nom,
+                        colorRampPalette(c("#440154FF", "white", "#FDE725FF"))(41),
+                        #cellwidth = 16,
+                        #cellheight = 4,
+                        breaks = seq(-2.05, 2.05, 0.1),
+                        #clustering_distance_rows = dist((mat.heat_nom), method = "euclidean"),
+                        cluster_rows = T,
+                        cluster_cols = F,
+                        annotation_names_row = F,
+                        show_rownames = F,
+                        show_colnames = F,
+                        annotation_row = annotation_row,
+                        annotation_col = annotation_col,
+                        #display_numbers = mat.heat_nom_signif,
+                        number_color = "black",
+                        fontsize_number = 6,
+                        annotation_colors = ann_colors,
+                        #filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                        #                 "cmQTL_val_1_heatmap_rel_tissue_all_genotypes_all_metabolites.jpg",
+                        #                 sep = "_")
+)
+
+heat_all <- ggplotify::as.ggplot(pheatmap.GC)
+saveRDS(heat_all, "Heat_all.RDS")
+
+ggsave(plot = heat_all,
+       "Heatmap_all.png",
+       width = 6,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+
+if(!is.null(dev.cur())){
+  dev.off()
+}
+
+# PCA ---------------------------------------------------------------------
+
+pca_theme <- theme(axis.text.x = element_markdown(size = 6, family = "sans"),
+                   axis.text.y = element_text(size = 6, family = "sans"),
+                   axis.title.x = element_text(size = 6, family = "sans"),
+                   axis.title.y = element_text(size = 6, family = "sans"),
+                   panel.background = element_rect(fill = "white"),
+                   panel.border = element_rect(color = "black",fill = NA),
+                   panel.spacing = margin(t = 0, r = 0, b = 0, l = 0 , unit = "mm"),
+                   strip.text = element_text(size = 10, family = "sans"),
+                   text = element_text(size = 6, family = "sans"),
+                   legend.position = "right",
+                   legend.title = element_text(size = 6, family = "sans"),
+                   legend.text = element_markdown(size = 6),
+                   legend.box.spacing = unit(1, "mm"),
+                   plot.margin = unit(c(1,1,1,1), "mm"),
+                   legend.margin = margin(t = 0, r = 0, b = 0, l = 0 , unit = "mm"))
+
+pca_base <- fc_1_ind %>% 
+  arrange(met, tissue, treatment, genotype, LIMS_ID, fc) %>%
+  mutate(log_fc = log2(mean_tec_rep),
+         log_fc = if_else(!is.finite(log_fc), 1, log_fc)) %>% 
+  pivot_wider(id_cols = c(tissue, treatment, genotype, LIMS_ID),
+              names_from = met,
+              values_from = log_fc) %>% 
+  #mutate(across(where(is.numeric), ~if_else(is.na(.x), 0, .x))) %>% 
+  filter(!is.na(m_9))
+
+pca <- summary(prcomp(
+  pca_base%>%
+    select(starts_with("m_"), starts_with("Cluster_"))))
+
+sam_vars <- pca_base %>% select(-starts_with("m_"), -starts_with("Cluster_")) %>% colnames()
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  left_join(pca_base %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  #left_join(sam_dat) %>% 
+  mutate(treatment= as_factor(treatment),
+         tissue= as_factor(tissue)) %>% 
+  select(all_of(sam_vars), everything())
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = tissue)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = tissue)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = treatment, shape = tissue)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)")) +
+  pca_theme +
+  scale_color_manual(values = cb_scale[5:8]) 
+
+ggsave("PCA_all_lines_all_metabolites.png",
+       width = 6,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+
+saveRDS(last_plot(), "PCA_all_met.RDS")
+
+## sub PCA fruits ----------------------------------------------------------
+
+pca_base <- fc_1_ind %>% 
+  filter(tissue == "fruits") %>% 
+  arrange(met, tissue, treatment, genotype, LIMS_ID, fc) %>%
+  mutate(log_fc = log2(mean_tec_rep),
+         log_fc = if_else(!is.finite(log_fc), 1, log_fc)) %>% 
+  pivot_wider(id_cols = c(tissue, treatment, genotype, LIMS_ID),
+              names_from = met,
+              values_from = log_fc) %>% 
+  #mutate(across(where(is.numeric), ~if_else(is.na(.x), 0, .x))) %>% 
+  filter(!is.na(m_9))
+
+pca <- summary(prcomp(
+  pca_base%>%
+    select(starts_with("m_"), starts_with("Cluster_"))))
+
+sam_vars <- pca_base %>% select(-starts_with("m_"), -starts_with("Cluster_")) %>% colnames()
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  left_join(pca_base %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  #left_join(sam_dat) %>% 
+  mutate(treatment= as_factor(treatment),
+         tissue= as_factor(tissue)) %>% 
+  select(all_of(sam_vars), everything())
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = treatment)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)")) +
+  pca_theme +
+  scale_color_manual(values = cb_scale[5:8]) 
+
+ggsave("PCA_all_lines_all_metabolites_fruits.png",
+       width = 8.25,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+saveRDS(last_plot(), "PCA_all_met_fruits.RDS")
+
+## sub PCA leaves ----------------------------------------------------------
+
+pca_base <- fc_1_ind %>% 
+  filter(tissue == "leaves") %>% 
+  arrange(met, tissue, treatment, genotype, LIMS_ID, fc) %>%
+  mutate(log_fc = log2(mean_tec_rep),
+         log_fc = if_else(!is.finite(log_fc), 1, log_fc)) %>% 
+  pivot_wider(id_cols = c(tissue, treatment, genotype, LIMS_ID),
+              names_from = met,
+              values_from = log_fc) %>% 
+  filter(!is.na(m_9))
+
+pca <- summary(prcomp(
+  pca_base%>%
+    select(starts_with("m_"), starts_with("Cluster_"))))
+
+sam_vars <- pca_base %>% select(-starts_with("m_"), -starts_with("Cluster_")) %>% colnames()
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  left_join(pca_base %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  mutate(treatment= as_factor(treatment),
+         tissue= as_factor(tissue)) %>% 
+  select(all_of(sam_vars), everything())
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = treatment)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)")) +
+  pca_theme +
+  scale_color_manual(values = cb_scale[5:8]) 
+
+ggsave("PCA_all_lines_all_metabolites_leaves.png",
+       width = 8.25,
+       height = 8.25,
+       units = "cm",
+       dpi = 300)
+
+saveRDS(last_plot(), "PCA_all_met_leaves.RDS")
+
+
+# Levene p-value distribution ---------------------------------------------
+
+sig_lt %>% 
+  ggplot( aes(x = p.value)) + geom_histogram(binwidth = 0.05, boundary = T) +
+  geom_hline(aes(yintercept = 9840*5/100), color = "red") +
+  xlab("p-value") +
+  pca_theme
+
+ggsave("p_val_dist_lt.png",
+       width = 16.5,
+       height = 6,
+       units = "cm",
+       dpi = 300)
+
+saveRDS(last_plot(), "p_val_dist_lt.RDS")
+
+
+sig %>% 
+  ggplot(aes(x = p.value)) + geom_histogram(binwidth = 0.05, boundary = T) +
+  geom_hline(aes(yintercept = 9840*5/100), color = "red") +
+  xlab("p-value") +
+  pca_theme
+
+ggsave("p_val_dist_nom.png",
+       width = 16.5,
+       height = 6,
+       units = "cm",
+       dpi = 300)
+
+saveRDS(last_plot(), "pval_dist_nom.RDS")
+
+
+sig_cv %>% 
+  ggplot(aes(x = p.value)) + geom_histogram(binwidth = 0.05, boundary = T) +
+  geom_hline(aes(yintercept = 2460*5/100), color = "red") +
+  xlab("p-value") +
+  pca_theme
+
+ggsave("p_val_dist_cv.png",
+       width = 16.5,
+       height = 6,
+       units = "cm",
+       dpi = 300)
+
+saveRDS(last_plot(), "p_val_dist_cv.RDS")
+
+
+# Miniplots ---------------------------------------------------------------
+
+min_theme <- theme(axis.text.x = element_markdown(vjust = 2, hjust = 0.5, size = 6, family = "sans", margin = margin(t = 0, r = 0, b = 0, l = 0 , unit = "mm")),
+                   axis.text.y = element_text(size = 6, vjust = 0.5, hjust = 1, family = "sans",  margin = margin(t = 0, r = 0, b = 0, l = 0 , unit = "mm")),
+                   axis.title.x = element_text(size = 6, family = "sans",  margin = margin(t = 0, r = 0, b = 0, l = 0 , unit = "mm")),
+                   axis.title.y = element_text(size = 6, family = "sans",  margin = margin(t = 0, r = 0, b = 0, l = 0 , unit = "mm")),
+                   panel.background = element_rect(fill = "white"),
+                   panel.border = element_rect(color = "black",fill = NA),
+                   strip.text = element_text(size = 10, family = "sans"),
+                   text = element_text(size = 6, family = "sans"),
+                   legend.title = element_blank(),
+                   legend.text = element_markdown(size = 6),
+                   legend.position = "",
+                   plot.margin = unit(c(2,1,1,2), "pt"),
+                   legend.margin = margin(t = 0, r = 2, b = 0, l = 2 , unit = "mm"))
+
+
+
+
+make_pointrange_line_plot <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes, plot_fill){
+ 
+  per_comp_y <- fc_1 %>%
+    filter(met == plot_met, tissue == plot_tissue,
+           genotype %in% plot_genotypes) %>% 
+    group_by(tissue, treatment, met) %>% 
+    summarise(tot_val = max(mean_fc + se))
+  
+  sig_bar <- sig %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           treatment = as_factor(treatment)) %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes)
+  
+  ylim_top <- max(sig_bar$tot_val)
+  
+  breaks = seq(0,round(ylim_top), ylim_top %/% 5 + 1)
+
+  
+  labels = replace(breaks, list = breaks %% 1 != 0, values = "")
+ 
+  min_scale_y <- scale_y_continuous(expand = expansion(mult = 0.05),
+                                  limits = c(0, ylim_top), guide =  guide_prism_minor(),
+                                  breaks = breaks)
+  min_scale_x <- scale_x_discrete(expand = expansion(mult = 0.1))
+   
+  fc_1_plot <- fc_1%>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    mutate(treatment = as_factor(treatment))
+  
+  plot_out <- fc_1 %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    mutate(treatment = as_factor(treatment)) %>% 
+    ggplot(aes(x = treatment, y = mean_fc)) +
+    geom_line(aes(x = treatment, y = mean_fc, color = genotype, group = genotype), size = 0.25) +
+    geom_point(aes(color = genotype), size = 0.4) +
+    geom_errorbar(aes(ymin = mean_fc-se, ymax = mean_fc +se, color = genotype), size = 0.25, width = 0.25) +
+    #stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+    #                   step.increase = 0.07,
+    #                   hide.ns = T) +
+    ylab("FC")+
+    xlab("irrigation") +
+    #ggtitle(label = plot_label) +
+    scale_color_manual(values = cb_scale[plot_fill], aesthetics = "color") +
+    min_theme +
+    min_scale_x +
+    min_scale_y
+  
+  plot_out
+  
+}
+
+p1 <- make_pointrange_line_plot("m_70", "fruits", "Malic acid", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Malic_acid_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Malic_acid_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+
+p1 <- make_pointrange_line_plot("m_90", "fruits", "Pyruvate", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Pyruvate_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Pyruvate_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_21", "fruits", "Citrate", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Citrate_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Citrate_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_63", "fruits", "Isocitrate", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Isocitrate_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Isocitrate_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_48", "fruits", "Oxoglutaric acid", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Oxoglutarate_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Oxoglutarate_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_102", "fruits", "Succinnic acid", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Succinate_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Succinate_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_32", "fruits", "Fumaric acid", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Fumarate_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Fumarate_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+
+p1 <- make_pointrange_line_plot("m_47", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Glutamine_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Glutamine_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+
+p1 <- make_pointrange_line_plot("m_17", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("GABA_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("GABA_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_13", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Aspartate_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Aspartate_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_12", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Asparagine_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_6", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Alanine_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Alanine_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_8", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("beta-Alanine_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("beta-Alanine_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_122", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("valine_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("valine_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("Cluster_029173", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Pantothenate_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Pantothenate_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_120", "fruits", "", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+ggsave("Uracil_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+ggsave("Uracil_pointrange_line_plot_nominal.svg",width = 2, height = 2, units = "cm", dpi = 300)
+
+#log2
+
+p1 <- make_pointrange_line_plot("Cluster_025242", "fruits", "", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+ggsave("Phenylalanine_log2-1_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("Cluster_024086", "fruits", "", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+ggsave("Trans-cinnamic_acid_log2-1_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+
+p1 <- make_pointrange_line_plot("m_91", "fruits", "", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+ggsave("Trans-cinnamic_acid_log2-1_pointrange_line_plot_nominal.png",width = 2, height = 2, units = "cm", dpi = 300)
+
+
+# File output for metaboanalyst -------------------------------------------
+
+met_out <- met_dat %>% 
+  select(Compound_Name)
+
+write_csv(met_out, "metabolite_raw_names.csv")
diff --git a/workflows/Whole_metabolome_analysis/Get_metabolite_data.R b/workflows/Whole_metabolome_analysis/Get_metabolite_data.R
new file mode 100644
index 0000000..08553d2
--- /dev/null
+++ b/workflows/Whole_metabolome_analysis/Get_metabolite_data.R
@@ -0,0 +1,382 @@
+rm(list = ls())
+library(tidyverse)
+library(ggpubr)
+library(glue)
+library(ggtext)
+library(cowplot)
+library(ggbeeswarm)
+library(extrafont)
+library(ggprism)
+library(viridis)
+
+# Directory setting -------------------------------------------------------
+
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "Metabolitedata", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+# Primary loading ---------------------------------------------------------
+setwd(source)
+prim_source <- str_c(getwd(), "/1. Primary")
+setwd(prim_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(prim_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_prim <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         platform = "polar GC-MS")
+
+genotypes <- fc_1_prim %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_prim <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_prim <- read_csv("p_values.csv")
+
+fc_1_cv_prim <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_cv_prim <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_prim_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_prim <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "polar GC-MS")
+
+fc_1_ind_lt_prim <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_prim_lt <- read_csv("p_values_levene.csv") 
+
+met_prim <- fc_1_prim %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+cv_prim_out <- fc_1_cv_prim %>% 
+  left_join(met_prim) %>% 
+  left_join(sig_prim_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "polar GC-MS")
+
+
+setwd(prim_source)
+
+prim_met_lib <- readxl::read_xlsx("H:/3. cmQTL mapping/Shared_source_files/210118_primary_metabolites_classification.xlsx")
+prim_met_lib_tidy <- prim_met_lib %>% 
+  select(component = Xcal_name_xreport, mz_mean = mz)
+
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_normalization$"),
+                               pattern = "^\\d{6}_normalization"),
+                   decreasing = T)[[1]]
+
+latest_normalization <- str_c(prim_source, "/", latest)
+latest_normalization_date <- str_extract(latest, pattern = "^\\d{6}")
+
+setwd(latest_normalization)
+prim_met_dat <- read_csv(str_c(latest_normalization_date, "_cmQTL_val_1_2_met_dat_GC.csv")) %>% 
+  select(Compound_Name, met, RT_mean, component)
+
+prim_met_total <- met_prim %>% 
+  left_join(prim_met_dat) %>% 
+  left_join(prim_met_lib_tidy) %>% 
+  mutate(platform = "polar GC-MS") %>% 
+  mutate(Compound_Class = if_else(str_detect(Compound_Class,"carbohydrate"),"carbohydrate or derivative",
+                                      if_else(str_detect(Compound_Class,"amino_acid"), "amino acid or derivative",
+                                              if_else(str_detect(Compound_Class,"carboxylic_acid"), "carboxylic acid",
+                                                      "other"))))
+
+# Secondary loading ---------------------------------------------------------
+setwd(source)
+sec_source <- str_c(getwd(), "/2. Secondary")
+setwd(sec_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(sec_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_sec <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "polar LC-MS") %>% 
+  rename(n = n.x)
+
+genotypes <- fc_1_sec %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_sec <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_sec <- read_csv("p_values.csv")
+
+fc_1_cv_sec <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_cv_sec <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_sec_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_sec <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "polar LC-MS") %>% 
+  rename(n = n.x)
+
+fc_1_ind_lt_sec <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_sec_lt <- read_csv("p_values_levene.csv")
+
+met_sec <- fc_1_sec %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+cv_sec_out <- fc_1_cv_sec %>% 
+  left_join(met_sec) %>% 
+  left_join(sig_sec_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "polar LC-MS")
+
+setwd(sec_source)
+sec_met_lib <- read_delim("cmQTL_val1_selected_secondary.txt", delim = "\t")
+sec_met_lib_tidy <- sec_met_lib %>% 
+  select(Name, mz_mean = mz_mean_new, RT_mean = RT_mean_new, mode, adduct_pos, adduct_neg,
+         Mol.formula, mz_lit_pos, mz_lit_neg,
+         RT_lit, adduct_lit, Species.detected.before, lit) %>% 
+  distinct(mz_mean, RT_mean, .keep_all = T)
+
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_normalization$"),
+                               pattern = "^\\d{6}_normalization"),
+                   decreasing = T)[[1]]
+
+latest_normalization <- str_c(sec_source, "/", latest)
+latest_normalization_date <- str_extract(latest, pattern = "^\\d{6}")
+
+setwd(latest_normalization)
+sec_met_dat <- read_csv(str_c(latest_normalization_date, "_cmQTL_val_1_2_met_dat_LC.csv"))
+
+sec_met_total <- met_sec %>% 
+  left_join(sec_met_dat) %>% 
+  left_join(sec_met_lib_tidy, by = c("mz_mean", "RT_mean")) %>% 
+  mutate(platform = "polar LC-MS")
+
+# Lipids loading ---------------------------------------------------------
+setwd(source)
+lip_source <- str_c(getwd(), "/3. Lipids")
+setwd(lip_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(lip_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_lip <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))%>% 
+  mutate(platform = "apolar LC-MS") %>% 
+  rename(n = n.x)
+
+genotypes <- fc_1_lip %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_lip <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_lip <- read_csv("p_values.csv")
+
+fc_1_cv_lip <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_cv_lip <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_lip_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_lip <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "apolar LC-MS") %>% 
+  rename(n = n.x)
+
+fc_1_ind_lt_lip <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_lip_lt <- read_csv("p_values_levene.csv")
+
+met_lip <- fc_1_lip %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+cv_lip_out <- fc_1_cv_lip %>% 
+  left_join(met_lip) %>% 
+  left_join(sig_lip_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "apolar LC-MS")
+
+setwd(lip_source)
+lip_met_lib <- read_delim("cmQTL_val1_selected_lipids.txt", delim = "\t")
+lip_met_lib_tidy <- lip_met_lib %>% 
+  select(Name, mz_mean = mz_mean_new, RT_mean = RT_mean_new, adduct_pos = Adduct, 
+         Mol.formula = Chemical_Formula) %>% 
+  mutate(mode = "pos",
+         mz_mean = round(mz_mean, 4),
+         RT_mean = round(RT_mean, 6)) %>% 
+  distinct(mz_mean, RT_mean, .keep_all = T)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_normalization$"),
+                               pattern = "^\\d{6}_normalization"),
+                   decreasing = T)[[1]]
+
+latest_normalization <- str_c(lip_source, "/", latest)
+latest_normalization_date <- str_extract(latest, pattern = "^\\d{6}")
+
+setwd(latest_normalization)
+lip_met_dat <- read_csv(str_c(latest_normalization_date, "_cmQTL_val_1_2_met_dat_lip.csv")) %>% 
+  mutate(mz_mean = round(mz_mean, 4),
+         RT_mean = round(RT_mean, 6))
+
+lip_met_total <- met_lip %>% 
+  left_join(lip_met_dat) %>% 
+  left_join(lip_met_lib_tidy) %>% 
+  mutate(platform = "apolar LC-MS")
+
+# Data combination --------------------------------------------------------
+setwd(out_dir)
+
+fc_1 <- fc_1_prim %>% 
+  bind_rows(fc_1_sec, fc_1_lip) %>% 
+  select(Tissue = tissue, Irrigation = treatment, Genotype = genotype,
+         Compound = Compound_Name, `Relative fold change` = mean_fc,
+         SD	= sd, SE = se, N = n, 'P-value' = p.value,	Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Irrigation, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+fc_1_lt <- fc_1_lt_prim %>% 
+  bind_rows(fc_1_lt_sec, fc_1_lt_lip) %>% 
+  select(Tissue = tissue, Irrigation = treatment, Genotype = genotype,
+         Compound = Compound_Name, `Relative fold change` = mean_fc,
+         SD	= sd, SE = se, N = n, 'P-value' = p.value,	Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Irrigation, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+fc_1_ind <- fc_1_ind_prim %>% 
+  bind_rows(fc_1_ind_sec, fc_1_ind_lip)
+
+fc_1_cv <- fc_1_cv_prim %>% 
+  bind_rows(fc_1_cv_sec, fc_1_cv_lip)
+
+met_dat <- fc_1 %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+classes_tidy <- met_dat %>% 
+  mutate(`ChEBI simplified` = if_else(str_detect(Compound_Class,"carbohydrate"),"carbohydrate or derivative",
+                                      if_else(str_detect(Compound_Class,"amino_acid"), "amino acid or derivative",
+                                              if_else(str_detect(Compound_Class,"carboxylic_acid"), "carboxylic acid",
+                                                      "other"))))
+
+genotypes <- fc_1 %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+per_comp_y <- fc_1 %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(tot_val = max(mean_fc + se))
+
+sig_lt <- sig_prim_lt %>% 
+  bind_rows(sig_sec_lt, sig_lip_lt)
+
+sig <- sig_prim %>% 
+  bind_rows(sig_sec, sig_lip)
+
+sig_cv <- sig_prim_cv %>% 
+  bind_rows(sig_sec_cv, sig_lip_cv)
+
+cb_scale <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442",
+              "#0072B2", "#D55E00", "#CC79A7","#000000")
+bw_scale <- c("black", "black", "black", "black", "black", "black", "black")
+vir_scale <- plasma(4, begin = 0.2, end = 1)
+
+cv_out <- bind_rows(cv_prim_out, cv_sec_out, cv_lip_out) %>% 
+  select(Tissue = tissue, Genotype = genotype,
+         Compound = Compound_Name, `Mean CV` = mean_cv,
+         SD	= sd_cv, SE = se_cv, N = n, 'P-value' = p.value,	Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+met_dat <- prim_met_total %>% 
+  bind_rows(sec_met_total, lip_met_total) %>% 
+  select(Platform = platform, everything()) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, RT_mean, Compound_Name) %>% 
+  mutate('Peak no.' = str_c("M",row_number()),
+         'Identification level' = "") %>% 
+  select('Peak no.', Compound = Compound_Name, 'Compound Class' = Compound_Class, 'm/z' = mz_mean,
+         'Ret. Time' = RT_mean, 'Identification level', Platform)
+
+write_csv(fc_1, "FC1_supplementary.csv")
+write_csv(fc_1_lt, "FC1_LT_supplementary.csv")
+write_csv(cv_out, "CV_supplementary.csv")
+write_csv(met_dat, "met_dat_supplementary.csv")
+
diff --git a/workflows/Whole_metabolome_analysis/Get_raw_data.R b/workflows/Whole_metabolome_analysis/Get_raw_data.R
new file mode 100644
index 0000000..9be1f5d
--- /dev/null
+++ b/workflows/Whole_metabolome_analysis/Get_raw_data.R
@@ -0,0 +1,798 @@
+rm(list = ls())
+library(tidyverse)
+library(ggpubr)
+library(glue)
+library(ggtext)
+library(cowplot)
+library(ggbeeswarm)
+library(extrafont)
+library(ggprism)
+library(viridis)
+
+# Directory setting -------------------------------------------------------
+
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "Raw_data_normalized", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+# Primary loading ---------------------------------------------------------
+setwd(source)
+prim_source <- str_c(getwd(), "/1. Primary")
+setwd(prim_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(prim_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_prim <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         platform = "polar GC-MS")
+
+genotypes <- fc_1_prim %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_prim <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>% 
+  mutate(platform = "polar GC-MS")
+
+sig_prim <- read_csv("p_values.csv")
+
+fc_1_cv_prim <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(platform = "polar GC-MS")
+
+fc_1_ind_cv_prim <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>% 
+  mutate(platform = "polar GC-MS")
+
+sig_prim_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_prim <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "polar GC-MS")
+
+fc_1_ind_lt_prim <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>% 
+  mutate(platform = "polar GC-MS")
+
+sig_prim_lt <- read_csv("p_values_levene.csv") 
+
+met_prim <- fc_1_prim %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+cv_prim_out <- fc_1_cv_prim %>% 
+  left_join(met_prim) %>% 
+  left_join(sig_prim_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "polar GC-MS")
+
+
+setwd(prim_source)
+
+prim_met_lib <- readxl::read_xlsx("H:/3. cmQTL mapping/Shared_source_files/210118_primary_metabolites_classification.xlsx")
+prim_met_lib_tidy <- prim_met_lib %>% 
+  select(component = Xcal_name_xreport, mz_mean = mz)
+
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_normalization$"),
+                               pattern = "^\\d{6}_normalization"),
+                   decreasing = T)[[1]]
+
+latest_normalization <- str_c(prim_source, "/", latest)
+latest_normalization_date <- str_extract(latest, pattern = "^\\d{6}")
+
+setwd(latest_normalization)
+prim_met_dat <- read_csv(str_c(latest_normalization_date, "_cmQTL_val_1_2_met_dat_GC.csv")) %>% 
+  select(Compound_Name, met, RT_mean, component)
+
+prim_met_total <- met_prim %>% 
+  left_join(prim_met_dat) %>% 
+  left_join(prim_met_lib_tidy) %>% 
+  mutate(platform = "polar GC-MS") %>% 
+  mutate(Compound_Class = if_else(str_detect(Compound_Class,"carbohydrate"),"carbohydrate or derivative",
+                                      if_else(str_detect(Compound_Class,"amino_acid"), "amino acid or derivative",
+                                              if_else(str_detect(Compound_Class,"carboxylic_acid"), "carboxylic acid",
+                                                      "other"))))
+fc_1_ind_prim <- fc_1_ind_prim %>% 
+  left_join(met_prim)
+
+fc_1_ind_lt_prim <- fc_1_ind_lt_prim %>% 
+  left_join(met_prim)
+
+fc_1_ind_cv_prim <- fc_1_ind_cv_prim %>% 
+  left_join(met_prim)
+
+# Secondary loading ---------------------------------------------------------
+setwd(source)
+sec_source <- str_c(getwd(), "/2. Secondary")
+setwd(sec_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(sec_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_sec <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "polar LC-MS") %>% 
+  rename(n = n.x)
+
+genotypes <- fc_1_sec %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_sec <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>% 
+  mutate(platform = "polar LC-MS") 
+
+sig_sec <- read_csv("p_values.csv")
+
+fc_1_cv_sec <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "polar LC-MS")
+
+fc_1_ind_cv_sec <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>% 
+  mutate(platform = "polar LC-MS")
+
+sig_sec_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_sec <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "polar LC-MS") %>% 
+  rename(n = n.x)
+
+fc_1_ind_lt_sec <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>% 
+  mutate(platform = "polar LC-MS") 
+
+sig_sec_lt <- read_csv("p_values_levene.csv")
+
+met_sec <- fc_1_sec %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+cv_sec_out <- fc_1_cv_sec %>% 
+  left_join(met_sec) %>% 
+  left_join(sig_sec_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "polar LC-MS")
+
+setwd(sec_source)
+sec_met_lib <- read_delim("cmQTL_val1_selected_secondary.txt", delim = "\t")
+sec_met_lib_tidy <- sec_met_lib %>% 
+  select(Name, mz_mean = mz_mean_new, RT_mean = RT_mean_new, mode, adduct_pos, adduct_neg,
+         Mol.formula, mz_lit_pos, mz_lit_neg,
+         RT_lit, adduct_lit, Species.detected.before, lit) %>% 
+  distinct(mz_mean, RT_mean, .keep_all = T)
+
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_normalization$"),
+                               pattern = "^\\d{6}_normalization"),
+                   decreasing = T)[[1]]
+
+latest_normalization <- str_c(sec_source, "/", latest)
+latest_normalization_date <- str_extract(latest, pattern = "^\\d{6}")
+
+setwd(latest_normalization)
+sec_met_dat <- read_csv(str_c(latest_normalization_date, "_cmQTL_val_1_2_met_dat_LC.csv"))
+
+sec_met_total <- met_sec %>% 
+  left_join(sec_met_dat) %>% 
+  left_join(sec_met_lib_tidy, by = c("mz_mean", "RT_mean")) %>% 
+  mutate(platform = "polar LC-MS")
+
+fc_1_ind_sec <- fc_1_ind_sec %>% 
+  left_join(met_sec)
+
+fc_1_ind_lt_sec <- fc_1_ind_lt_sec %>% 
+  left_join(met_sec)
+
+fc_1_ind_cv_sec <- fc_1_ind_cv_sec %>% 
+  left_join(met_sec)
+
+# Lipids loading ---------------------------------------------------------
+setwd(source)
+lip_source <- str_c(getwd(), "/3. Lipids")
+setwd(lip_source)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(lip_source, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+fc_1_lip <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))%>% 
+  mutate(platform = "apolar LC-MS") %>% 
+  rename(n = n.x)
+
+genotypes <- fc_1_lip %>% 
+  distinct(alias, genotype) %>% 
+  mutate(genotype_label = str_remove_all(genotype, "\\*"))
+
+fc_1_ind_lip <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>%
+  mutate(platform = "apolar LC-MS")
+
+sig_lip <- read_csv("p_values.csv")
+
+fc_1_cv_lip <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "apolar LC-MS")
+
+fc_1_ind_cv_lip <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>% 
+  mutate(platform = "apolar LC-MS")
+
+sig_lip_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_lt_lip <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+  mutate(platform = "apolar LC-MS") %>% 
+  rename(n = n.x)
+
+fc_1_ind_lt_lip <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes) %>% 
+  mutate(platform = "apolar LC-MS")
+
+sig_lip_lt <- read_csv("p_values_levene.csv")
+
+met_lip <- fc_1_lip %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+cv_lip_out <- fc_1_cv_lip %>% 
+  left_join(met_lip) %>% 
+  left_join(sig_lip_cv, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  select(tissue, genotype, Compound_Name, mean_cv, sd_cv, se_cv, n, p.value) %>% 
+  mutate(platform = "apolar LC-MS")
+
+setwd(lip_source)
+lip_met_lib <- read_delim("cmQTL_val1_selected_lipids.txt", delim = "\t")
+lip_met_lib_tidy <- lip_met_lib %>% 
+  select(Name, mz_mean = mz_mean_new, RT_mean = RT_mean_new, adduct_pos = Adduct, 
+         Mol.formula = Chemical_Formula) %>% 
+  mutate(mode = "pos",
+         mz_mean = round(mz_mean, 4),
+         RT_mean = round(RT_mean, 6)) %>% 
+  distinct(mz_mean, RT_mean, .keep_all = T)
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_normalization$"),
+                               pattern = "^\\d{6}_normalization"),
+                   decreasing = T)[[1]]
+
+latest_normalization <- str_c(lip_source, "/", latest)
+latest_normalization_date <- str_extract(latest, pattern = "^\\d{6}")
+
+setwd(latest_normalization)
+lip_met_dat <- read_csv(str_c(latest_normalization_date, "_cmQTL_val_1_2_met_dat_lip.csv")) %>% 
+  mutate(mz_mean = round(mz_mean, 4),
+         RT_mean = round(RT_mean, 6))
+
+lip_met_total <- met_lip %>% 
+  left_join(lip_met_dat) %>% 
+  left_join(lip_met_lib_tidy) %>% 
+  mutate(platform = "apolar LC-MS")
+
+fc_1_ind_lip <- fc_1_ind_lip %>% 
+  left_join(met_lip)
+
+fc_1_ind_lt_lip <- fc_1_ind_lt_lip %>% 
+  left_join(met_lip)
+
+fc_1_ind_cv_lip <- fc_1_ind_cv_lip %>% 
+  left_join(met_lip)
+
+# Data combination --------------------------------------------------------
+setwd(out_dir)
+
+fc_1 <- fc_1_prim %>% 
+  bind_rows(fc_1_sec, fc_1_lip) %>% 
+  select(Tissue = tissue, Irrigation = treatment, Genotype = genotype,
+         Compound = Compound_Name, `Relative fold change` = mean_fc,
+         SD	= sd, SE = se, N = n, 'P-value' = p.value,	Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Irrigation, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+fc_1_lt <- fc_1_lt_prim %>% 
+  bind_rows(fc_1_lt_sec, fc_1_lt_lip) %>% 
+  select(Tissue = tissue, Irrigation = treatment, Genotype = genotype,
+         Compound = Compound_Name, `Relative fold change` = mean_fc,
+         SD	= sd, SE = se, N = n, 'P-value' = p.value,	Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Irrigation, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+fc_1_cv <- fc_1_cv_prim %>% 
+  bind_rows(fc_1_cv_sec, fc_1_cv_lip)
+
+fc_1_ind <- fc_1_ind_prim %>% 
+  bind_rows(fc_1_ind_sec, fc_1_ind_lip) %>% 
+  select(Tissue = tissue, Irrigation = treatment, Genotype = genotype,
+         Compound = Compound_Name, `Relative fold change` = fc, Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Irrigation, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+fc_1_ind_lt <- fc_1_ind_lt_prim %>% 
+  bind_rows(fc_1_ind_lt_sec, fc_1_ind_lt_lip) %>% 
+  select(Tissue = tissue, Irrigation = treatment, Genotype = genotype,
+         Compound = Compound_Name, `Levene's transformed value` = lev_t, Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Irrigation, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+fc_1_ind_cv <- fc_1_ind_cv_prim %>% 
+  bind_rows(fc_1_ind_cv_sec, fc_1_ind_cv_lip) %>% 
+  select(Tissue = tissue, Genotype = genotype,
+         Compound = Compound_Name, `Jack-value` = cv, Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+sig_lt <- sig_prim_lt %>% 
+  bind_rows(sig_sec_lt, sig_lip_lt)
+
+sig <- sig_prim %>% 
+  bind_rows(sig_sec, sig_lip)
+
+sig_cv <- sig_prim_cv %>% 
+  bind_rows(sig_sec_cv, sig_lip_cv)
+
+cb_scale <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442",
+              "#0072B2", "#D55E00", "#CC79A7","#000000")
+bw_scale <- c("black", "black", "black", "black", "black", "black", "black")
+vir_scale <- plasma(4, begin = 0.2, end = 1)
+
+cv_out <- bind_rows(cv_prim_out, cv_sec_out, cv_lip_out) %>% 
+  select(Tissue = tissue, Genotype = genotype,
+         Compound = Compound_Name, `Mean CV` = mean_cv,
+         SD	= sd_cv, SE = se_cv, N = n, 'P-value' = p.value,	Platform = platform) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, Tissue, Compound, Genotype) %>% 
+  mutate(Genotype = str_remove_all(Genotype, "\\*"))
+
+met_dat <- prim_met_total %>% 
+  bind_rows(sec_met_total, lip_met_total) %>% 
+  select(Platform = platform, everything()) %>% 
+  mutate(Platform = as_factor(Platform),
+         Platform = fct_relevel(Platform, c("polar GC-MS", "polar LC-MS", "apolar LC-MS"))) %>% 
+  arrange(Platform, RT_mean, Compound_Name) %>% 
+  mutate('Peak no.' = str_c("M",row_number()),
+         'Identification level' = "") %>% 
+  select('Peak no.', Compound = Compound_Name, 'Compound Class' = Compound_Class, 'm/z' = mz_mean,
+         'Ret. Time' = RT_mean, 'Identification level', Platform)
+
+write_csv(fc_1, "FC1_supplementary.csv")
+write_csv(fc_1_lt, "FC1_LT_supplementary.csv")
+write_csv(cv_out, "CV_supplementary.csv")
+write_csv(met_dat, "met_dat_supplementary.csv")
+
+write_csv(fc_1_ind, "FC1_all_supplementary.csv")
+write_csv(fc_1_ind_lt, "FC1_LT_all_supplementary.csv")
+write_csv(fc_1_ind_cv, "CV_all_supplementary.csv")
+
+
+# Prerequisite tests ------------------------------------------------------
+
+library(RVAideMemoire)
+library(ggbeeswarm)
+
+
+## Nominal -----------------------------------------------------------------
+
+normality <- fc_1_ind %>% 
+  group_by(Tissue, Irrigation, Genotype, Platform, Compound) %>%
+  summarise(normality = shapiro.test(`Relative fold change`)$p.value) %>% 
+  ungroup() #%>% 
+  #mutate(normality = p.adjust(normality, method = "fdr"))
+
+normality_summary <- normality %>% 
+  mutate(normal = if_else(normality <= 0.05, T, F)) %>% 
+  group_by(normal) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+normality %>% 
+  ggplot(aes(x = normality)) +
+  stat_bin(boundary = T, binwidth = 0.05) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_vline(xintercept = 0.05, color = "red") +
+  facet_grid(rows = vars(Platform), cols = vars(Tissue))
+
+
+normality_wt <- normality %>% 
+  filter(Genotype == "MoneyMaker") %>% 
+  select(Tissue, Irrigation, Compound, Platform,
+         group2 = Genotype, normality2 = normality)
+
+normality_mut <- normality %>% 
+  filter(Genotype != "MoneyMaker") %>% 
+  select(Tissue, Irrigation, Compound, Platform,
+         group1 = Genotype, normality1 = normality)
+
+normality_comb <- normality_mut %>% 
+  left_join(normality_wt)
+
+normality %>% 
+  mutate(log_p = -log10(normality), x = "x") %>% 
+  ggplot(aes(x = x, y = normality)) +
+  geom_quasirandom() +
+  #geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 0.01) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_hline(yintercept = (0.05), color = "red") #+
+facet_grid(cols = vars(Tissue))
+
+variance <- fc_1_ind %>% 
+  mutate(Genotype = as_factor(Genotype)) %>% 
+  group_by(Tissue, Irrigation, Compound, Platform) %>% 
+  nest() %>% 
+  mutate(lev = map(.x = data, .f = ~pairwise.var.test(.x$`Relative fold change`, .x$Genotype, p.method = "none")$p.value))
+
+variance_tidy <- variance %>% 
+  mutate(var_tbl = map(.x = lev, .f = ~as_tibble(as.data.frame(.x), rownames = "group1")))
+
+variance_unnest <- variance_tidy %>% 
+  select(Tissue, Irrigation, Compound, Platform, var_tbl) %>% 
+  unnest(cols = Tissue, Irrigation, Compound, Platform, var_tbl) %>% 
+  mutate(group2 = "MoneyMaker") %>% 
+  select(Tissue, Irrigation, Compound, Platform, group1, group2, var_p = MoneyMaker) #%>% 
+  #mutate(var_p = p.adjust(var_p, method = "fdr"))
+
+variance_unnest %>% 
+  ggplot(aes(x = var_p)) +
+  stat_bin(boundary = T, binwidth = 0.05) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_vline(xintercept = 0.05, color = "red") +
+  facet_grid(rows = vars(Platform), cols = vars(Tissue))
+
+variance_unnest %>% 
+  mutate(log_p = -log10(var_p), x = "x") %>% 
+  ggplot(aes(x = x, y = var_p)) +
+  geom_quasirandom() +
+  #geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 0.01) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_hline(yintercept = (0.05), color = "red") #+
+  facet_grid(cols = vars(Tissue))
+
+variance_summary <- variance_unnest %>% 
+  mutate(normal = if_else(var_p <= 0.05, T, F)) %>% 
+  group_by(normal) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+prereq <- normality_comb %>% 
+  left_join(variance_unnest) %>% 
+  mutate(fulfill = if_else(normality1 >= 0.05 & normality2 >= 0.05 & var_p >= 0.05, T, F))
+
+prereq_summary <- prereq %>% 
+  group_by(fulfill) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+variance_wt <- variance_unnest %>% 
+  select(Tissue, Irrigation, Compound, Platform,
+         Genotype = group2) %>% 
+  distinct(Tissue, Irrigation, Compound, Platform, Genotype) %>% 
+  mutate(var_p = NA)
+
+variance_mut <- variance_unnest %>% 
+  select(Tissue, Irrigation, Compound, Platform,
+         Genotype = group1, var_p)
+
+variance_long <- variance_mut %>%
+  bind_rows(variance_wt)
+
+prereq_long <- normality %>% 
+  left_join(variance_long) %>% 
+  rename(normality = normality,
+         `Equal variance` = var_p)
+
+fc_1 <- fc_1 %>% 
+  left_join(prereq_long)
+
+## Levene -----------------------------------------------------------------
+
+normality_lt <- fc_1_ind_lt %>% 
+  group_by(Tissue, Irrigation, Genotype, Platform, Compound) %>%
+  summarise(normality_lt = shapiro.test(`Levene's transformed value`)$p.value) %>% 
+  ungroup() #%>% 
+#mutate(normality_lt = p.adjust(normality_lt, method = "fdr"))
+
+normality_lt_summary <- normality_lt %>% 
+  mutate(normal = if_else(normality_lt <= 0.05, T, F)) %>% 
+  group_by(normal) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+normality_lt %>% 
+  ggplot(aes(x = normality_lt)) +
+  stat_bin(boundary = T, binwidth = 0.05) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_vline(xintercept = 0.05, color = "red") +
+  facet_grid(rows = vars(Platform), cols = vars(Tissue))
+
+
+normality_lt_wt <- normality_lt %>% 
+  filter(Genotype == "MoneyMaker") %>% 
+  select(Tissue, Irrigation, Compound, Platform,
+         group2 = Genotype, normality_lt2 = normality_lt)
+
+normality_lt_mut <- normality_lt %>% 
+  filter(Genotype != "MoneyMaker") %>% 
+  select(Tissue, Irrigation, Compound, Platform,
+         group1 = Genotype, normality_lt1 = normality_lt)
+
+normality_lt_comb <- normality_lt_mut %>% 
+  left_join(normality_lt_wt)
+
+normality_lt %>% 
+  mutate(log_p = -log10(normality_lt), x = "x") %>% 
+  ggplot(aes(x = x, y = normality_lt)) +
+  geom_quasirandom() +
+  #geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 0.01) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_hline(yintercept = (0.05), color = "red") #+
+facet_grid(cols = vars(Tissue))
+
+variance_lt <- fc_1_ind_lt %>% 
+  mutate(Genotype = as_factor(Genotype)) %>% 
+  group_by(Tissue, Irrigation, Compound, Platform) %>% 
+  nest() %>% 
+  mutate(lev = map(.x = data, .f = ~pairwise.var.test(.x$`Levene's transformed value`, .x$Genotype, p.method = "none")$p.value))
+
+variance_lt_tidy <- variance_lt %>% 
+  mutate(var_tbl = map(.x = lev, .f = ~as_tibble(as.data.frame(.x), rownames = "group1")))
+
+variance_lt_unnest <- variance_lt_tidy %>% 
+  select(Tissue, Irrigation, Compound, Platform, var_tbl) %>% 
+  unnest(cols = Tissue, Irrigation, Compound, Platform, var_tbl) %>% 
+  mutate(group2 = "MoneyMaker") %>% 
+  select(Tissue, Irrigation, Compound, Platform, group1, group2, var_p = MoneyMaker) #%>% 
+#mutate(var_p = p.adjust(var_p, method = "fdr"))
+
+variance_lt_unnest %>% 
+  ggplot(aes(x = var_p)) +
+  stat_bin(boundary = T, binwidth = 0.05) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_vline(xintercept = 0.05, color = "red") +
+  facet_grid(rows = vars(Platform), cols = vars(Tissue))
+
+variance_lt_unnest %>% 
+  mutate(log_p = -log10(var_p), x = "x") %>% 
+  ggplot(aes(x = x, y = var_p)) +
+  geom_quasirandom() +
+  #geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 0.01) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_hline(yintercept = (0.05), color = "red") #+
+facet_grid(cols = vars(Tissue))
+
+variance_lt_summary <- variance_lt_unnest %>% 
+  mutate(normal = if_else(var_p <= 0.05, T, F)) %>% 
+  group_by(normal) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+prereq_lt <- normality_lt_comb %>% 
+  left_join(variance_lt_unnest) %>% 
+  mutate(fulfill = if_else(normality_lt1 >= 0.05 & normality_lt2 >= 0.05 & var_p >= 0.05, T, F))
+
+prereq_summary_lt <- prereq_lt %>% 
+  group_by(fulfill) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+variance_lt_wt <- variance_lt_unnest %>% 
+  select(Tissue, Irrigation, Compound, Platform,
+         Genotype = group2) %>% 
+  distinct(Tissue, Irrigation, Compound, Platform, Genotype) %>% 
+  mutate(var_p = NA)
+
+variance_lt_mut <- variance_lt_unnest %>% 
+  select(Tissue, Irrigation, Compound, Platform,
+         Genotype = group1, var_p)
+
+variance_lt_long <- variance_lt_mut %>%
+  bind_rows(variance_lt_wt)
+
+prereq_long_lt <- normality_lt %>% 
+  left_join(variance_lt_long) %>% 
+  rename(Normality = normality_lt,
+         `Equal variance` = var_p)
+
+fc_1_lt <- fc_1_lt %>% 
+  left_join(prereq_long_lt)
+
+## CV -----------------------------------------------------------------
+
+normality_cv <- fc_1_ind_cv %>% 
+  group_by(Tissue, Genotype, Platform, Compound) %>%
+  summarise(normality_cv = shapiro.test(`Jack-value`)$p.value) %>% 
+  ungroup() #%>% 
+#mutate(normality_lt = p.adjust(normality_lt, method = "fdr"))
+
+normality_cv_summary <- normality_cv %>% 
+  mutate(normal = if_else(normality_cv <= 0.05, T, F)) %>% 
+  group_by(normal) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+normality_cv %>% 
+  ggplot(aes(x = normality_cv)) +
+  stat_bin(boundary = T, binwidth = 0.05) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_vline(xintercept = 0.05, color = "red") +
+  facet_grid(rows = vars(Platform), cols = vars(Tissue))
+
+
+normality_cv_wt <- normality_cv %>% 
+  filter(Genotype == "MoneyMaker") %>% 
+  select(Tissue, Compound, Platform,
+         group2 = Genotype, normality_cv2 = normality_cv)
+
+normality_cv_mut <- normality_cv %>% 
+  filter(Genotype != "MoneyMaker") %>% 
+  select(Tissue, Compound, Platform,
+         group1 = Genotype, normality_cv1 = normality_cv)
+
+normality_cv_comb <- normality_cv_mut %>% 
+  left_join(normality_cv_wt)
+
+normality_cv %>% 
+  mutate(log_p = -log10(normality_cv), x = "x") %>% 
+  ggplot(aes(x = x, y = normality_cv)) +
+  geom_quasirandom() +
+  #geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 0.01) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_hline(yintercept = (0.05), color = "red") #+
+facet_grid(cols = vars(Tissue))
+
+variance_cv <- fc_1_ind_cv %>% 
+  mutate(Genotype = as_factor(Genotype)) %>% 
+  group_by(Tissue, Compound, Platform) %>% 
+  nest() %>% 
+  mutate(cv = map(.x = data, .f = ~pairwise.var.test(.x$`Jack-value`, .x$Genotype, p.method = "none")$p.value))
+
+variance_cv_tidy <- variance_cv %>% 
+  mutate(var_tbl = map(.x = cv, .f = ~as_tibble(as.data.frame(.x), rownames = "group1")))
+
+variance_cv_unnest <- variance_cv_tidy %>% 
+  select(Tissue, Compound, Platform, var_tbl) %>% 
+  unnest(cols = Tissue, Compound, Platform, var_tbl) %>% 
+  mutate(group2 = "MoneyMaker") %>% 
+  select(Tissue, Compound, Platform, group1, group2, var_p = MoneyMaker) #%>% 
+#mutate(var_p = p.adjust(var_p, method = "fdr"))
+
+variance_cv_unnest %>% 
+  ggplot(aes(x = var_p)) +
+  stat_bin(boundary = T, binwidth = 0.05) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_vline(xintercept = 0.05, color = "red") +
+  facet_grid(rows = vars(Platform), cols = vars(Tissue))
+
+variance_cv_unnest %>% 
+  mutate(log_p = -log10(var_p), x = "x") %>% 
+  ggplot(aes(x = x, y = var_p)) +
+  geom_quasirandom() +
+  #geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 0.01) +
+  #geom_histogram(binwidth =  0.05, ) +
+  geom_hline(yintercept = (0.05), color = "red") #+
+facet_grid(cols = vars(Tissue))
+
+variance_cv_summary <- variance_cv_unnest %>% 
+  mutate(normal = if_else(var_p <= 0.05, T, F)) %>% 
+  group_by(normal) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+prereq_cv <- normality_cv_comb %>% 
+  left_join(variance_cv_unnest) %>% 
+  mutate(fulfill = if_else(normality_cv1 >= 0.05 & normality_cv2 >= 0.05 & var_p >= 0.05, T, F))
+
+prereq_cv_summary <- prereq_cv %>% 
+  group_by(fulfill) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+
+variance_cv_wt <- variance_cv_unnest %>% 
+  select(Tissue, Compound, Platform,
+         Genotype = group2) %>% 
+  distinct(Tissue, Compound, Platform, Genotype) %>% 
+  mutate(var_p = NA)
+
+variance_cv_mut <- variance_cv_unnest %>% 
+  select(Tissue, Compound, Platform,
+         Genotype = group1, var_p)
+
+variance_cv_long <- variance_cv_mut %>%
+  bind_rows(variance_cv_wt)
+
+prereq_cv_long <- normality_cv %>% 
+  left_join(variance_cv_long) %>% 
+  rename(Normality = normality_cv,
+         `Equal variance` = var_p)
+
+fc_1_cv <- cv_out %>% 
+  left_join(prereq_cv_long)
+
+write_csv(fc_1, "FC1_supplementary.csv")
+write_csv(fc_1_lt, "FC1_LT_supplementary.csv")
+write_csv(fc_1_cv, "CV_supplementary.csv")
+
+# All combined ------------------------------------------------------------
+
+
+prereq_all <- prereq %>% 
+  bind_rows(prereq_lt, prereq_cv)
+
+prereq_sum_all <- prereq_all %>%
+  group_by(fulfill) %>% 
+  summarise(n = n()) %>% 
+  ungroup() %>% 
+  mutate(percentage = n/sum(n))
+  
\ No newline at end of file
diff --git a/workflows/Whole_metabolome_analysis/simplified_classes.csv b/workflows/Whole_metabolome_analysis/simplified_classes.csv
new file mode 100644
index 0000000..b97be65
--- /dev/null
+++ b/workflows/Whole_metabolome_analysis/simplified_classes.csv
@@ -0,0 +1,43 @@
+Compound_Class,Compound_Class_simple
+purines,other
+amino_acid,Amino acid or derivative
+carboxylic_acid,Carboxylic acid
+alcohol,other
+no_chebi,other
+organic_heterocyclic_compound,other
+polyol,other
+carbohydrate_phosphate,Carbohydrate or derivative
+carbohydrate,Carbohydrate or derivative
+carbohydrate_derivative,Carbohydrate or derivative
+unannotated,other
+one_carbon_compound,other
+pyridines,other
+phosphoric_acids,other
+polyamine,other
+amino_acid_derivative,Amino acid or derivative
+primary_amino_compound,Amino acid or derivative
+pyrimidines,other
+Cinnamic acid,Cinnamic acid
+Metabolism: Amino acid,Amino acid or derivative
+Amino acid,Amino acid or derivative
+Aromatic acid derivatives,other
+Cofactor,other
+Metabolism:TCA,other
+Dipeptide,Dipeptide
+Metabolism: Chlorophyll,other
+Nucleotide,other
+Steroidal Glycoalkaloids,Glycoalkaloid
+Aliphatic acid glycosides,other
+Aromatic alcohol glycosides,other
+Flavonoid (glycosides),Flavonoid (glycosides)
+lyso Phospholipid,Phospholipid
+Lyso-Monogalactosyldiacylglycerol,Galactolipid
+Lyso-Digalactosyl-Diacylglycerol,Galactolipid
+Diacylglycerol,DAG
+Phospholipid,Phospholipid
+Phosphatidylcholine,Phospholipid
+Sphingolipid,Sphingolipid
+Monogalactosyldiacylglycerol,Galactolipid
+Digalactosyl-Diacylglycerol,Galactolipid
+Phosphatidylethanolamine,Phospholipid
+Triacylglyceride,TAG
diff --git a/workflows/apolar_LC_MS_analysis/210813_lipid_analysis_cmQTL_val_1.R b/workflows/apolar_LC_MS_analysis/210813_lipid_analysis_cmQTL_val_1.R
new file mode 100644
index 0000000..6dc9f8a
--- /dev/null
+++ b/workflows/apolar_LC_MS_analysis/210813_lipid_analysis_cmQTL_val_1.R
@@ -0,0 +1,1516 @@
+rm(list = ls())
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+
+library(openxlsx)
+library(tidyverse)
+library(car)
+library(pheatmap)
+library(broom)
+library(ggpubr)
+library(viridisLite)
+library(ggtext)
+library(glue)
+
+# Directory setting -------------------------------------------------------
+
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "analysis", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+# Data loading ------------------------------------------------------------
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_normalization$"),
+                               pattern = "^\\d{6}_normalization"),
+                   decreasing = T)[[1]]
+
+latest_norm <- str_c(current, "/", latest)
+
+setwd(latest_norm)
+
+latest_norm_date <- str_extract(latest, pattern = "^\\d{6}")
+
+sam_dat <- read_csv(str_c(latest_norm_date, "_cmQTL_val_1_2_sam_dat_lip.csv"))
+met_dat <- read_csv(str_c(latest_norm_date, "_cmQTL_val_1_2_met_dat_lip.csv"), col_types = "cddcf")
+feat_dat <- read_csv(str_c(latest_norm_date, "_cmQTL_val_1_2_feat_dat_lip.csv"), col_types = "fcffffTiifidfficccfdddd")
+
+setwd(out_dir)
+# Data combination --------------------------------------------------------
+
+mets <- met_dat$met
+genotypes <- sam_dat %>% distinct(genotype,.keep_all = T) %>% 
+  select(genotype, alias)
+
+lipid_classes <- feat_dat %>% 
+  distinct(Compound_Class, Compound_Name, met)
+
+lip_long <- feat_dat %>% 
+  filter(exp == 1, class == "sample")
+
+
+# Means -------------------------------------------------------------------
+
+means_tec_rep <- lip_long %>% 
+  group_by(plantline, alias, genotype, treatment, met, tissue, LIMS_ID) %>% 
+  summarise(mean_tec_rep = mean(rescaled)) %>% 
+  ungroup()
+
+means <- means_tec_rep %>% 
+  group_by(met, tissue, treatment, genotype, alias) %>% 
+  summarise(mean = mean(mean_tec_rep),
+            sd = sd(mean_tec_rep),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(se = sd/sqrt(n))
+
+miss_per_treat <- lip_long %>% 
+  group_by(met, tissue, treatment) %>% 
+  summarise(na = sum(is.na(area)),
+            n = n()) %>% 
+  mutate(percent_na = na/n*100) %>% 
+  ungroup()
+
+
+# Significance analysis ---------------------------------------------------
+
+
+
+lip_tidy <- means_tec_rep %>% 
+  pivot_wider(id_cols = c(genotype, alias, treatment, tissue, LIMS_ID),
+              names_from = met,
+              values_from = mean_tec_rep)
+
+lip_tidy_numeric <- lip_tidy %>% 
+  select(all_of(mets))
+
+lip_aov <- map(.x = lip_tidy_numeric, .f = ~aov(.x ~ alias * treatment*tissue, data = lip_tidy))
+
+
+lip_tuk <- map(.x = lip_aov, .f = ~TukeyHSD(.x)) %>% 
+  map(.f = tidy) %>% 
+  map2(.y = names(lip_aov), .f = ~.x %>% mutate(var = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+sig_lip_groups <- lip_tuk %>% 
+  filter(term == "alias:treatment:tissue") %>% 
+  separate(col = contrast, into = c("group1", "group2"), sep = "-")
+
+sig_lip <- sig_lip_groups %>%  
+  separate(group1, into = c("alias1", "treatment1", "tissue1"), sep = ":") %>% 
+  separate(group2, into = c("alias2", "treatment2", "tissue2"), sep = ":") %>% 
+  filter(treatment1 == treatment2, tissue1 == tissue2) %>% 
+  filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT") %>% 
+  ungroup() %>% 
+  mutate(p.signif = if_else(adj.p.value <= 0.05, "*", "ns")) %>% 
+  left_join(means, by = c("var" = "met", "treatment1" = "treatment", "alias1" = "alias", "tissue1" = "tissue")) %>% 
+  select(var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1 = mean, se1 = se) %>%
+  left_join(means, by = c("var" = "met", "treatment2" = "treatment", "alias2" = "alias", "tissue2" = "tissue")) %>% 
+  select(var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1, mean2 = mean, se1, se2 = se) %>% 
+  group_by(treatment1, tissue1, var) %>% 
+  mutate(tot_val1 = mean1 + se1,
+         tot_val2 = mean2 + se2,
+         y.position = 1.1*(max(tot_val1, tot_val2))) %>% 
+  rename(met = var,
+         group1 = alias1,
+         group2 = alias2,
+         treatment = treatment1,
+         tissue = tissue1) %>% 
+  mutate(met = as_factor(met),
+         group1 = as_factor(group1),
+         group2 = as_factor(group2),
+         treatment = as_factor(treatment),
+         tissue = as_factor(tissue)) %>% 
+  ungroup()
+
+sig_mets <- sig_lip %>% 
+  filter(p.signif == "*") %>% 
+  distinct(met) %>% 
+  mutate(sig = T)
+
+
+# Significance with t-test ------------------------------------------------
+
+lip_tidy <- means_tec_rep %>% 
+  pivot_wider(id_cols = c(genotype, alias, treatment, tissue, LIMS_ID),
+              names_from = met,
+              values_from = mean_tec_rep) %>% 
+  mutate(group = str_c(tissue, treatment, alias, sep = "_"))
+
+lip_tidy_numeric <- lip_tidy %>% 
+  select(all_of(mets))
+
+lip_t <- map(.x = lip_tidy_numeric,
+             .f = ~pairwise.t.test(x = .x ,
+                                   g = lip_tidy$group,
+                                   p.adjust.method = "none",
+                                   pool.sd = F)) %>% 
+  map(.f = tidy)
+
+lip_t_tidy <- lip_t %>% 
+  map2(.y = names(lip_t), .f = ~.x %>% mutate(var = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+sig_lip<- lip_t_tidy %>% 
+  separate(group1, into = c("tissue1", "treatment1", "alias1"), sep = "_") %>% 
+  separate(group2, into = c("tissue2", "treatment2", "alias2"), sep = "_") %>% 
+  filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT",
+         tissue1 == tissue2, treatment1 == treatment2) %>% 
+  group_by(var) %>% 
+  mutate(adj.p.value = p.adjust(p.value)) %>% 
+  ungroup() %>% 
+  mutate(p.signif = if_else(adj.p.value <= 0.05, "*", "ns")) %>% 
+  left_join(means, by = c("var" = "met", "treatment1" = "treatment", "alias1" = "alias", "tissue1" = "tissue")) %>% 
+  select(p.value, var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1 = mean, se1 = se) %>%
+  left_join(means, by = c("var" = "met", "treatment2" = "treatment", "alias2" = "alias", "tissue2" = "tissue")) %>% 
+  select(p.value, var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1, mean2 = mean, se1, se2 = se) %>% 
+  group_by(treatment1, tissue1, var) %>% 
+  mutate(tot_val1 = mean1 + se1,
+         tot_val2 = mean2 + se2,
+         y.position = 1.1*(max(tot_val1, tot_val2))) %>% 
+  ungroup() %>% 
+  rename(met = var,
+         group1 = alias1,
+         group2 = alias2,
+         treatment = treatment1,
+         tissue = tissue1) %>% 
+  left_join(miss_per_treat) %>% 
+  mutate(met = as_factor(met),
+         group1 = as_factor(group1),
+         group2 = as_factor(group2),
+         treatment = as_factor(treatment),
+         tissue = as_factor(tissue),
+         p.signif = if_else(percent_na >= 60, "ns", p.signif))
+  
+
+sig_mets <- sig_lip %>% 
+  filter(p.signif == "*") %>% 
+  distinct(met) %>% 
+  mutate(sig = T)
+
+# Heatmap scaled all-----------------------------------------------------------------
+
+heat.lip <- means %>% 
+  group_by(met) %>% 
+  mutate(se = sd/sqrt(n),
+         total_norm = mean/mean(mean),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.na(log_norm)| is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         log_norm_level = if_else(is.na(log_norm_level), 0, log_norm_level)) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm_level) %>% 
+  left_join(met_dat) %>%
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.lip) <- heat.lip$met
+
+mat.heat.lip <- heat.lip %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.lip %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.lip$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.lip_signif <- means %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_lip, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.lip)
+
+rownames(heat.lip_signif) <- heat.lip_signif$met
+
+mat.heat.lip_signif <- heat.lip_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+pheatmap.lip <- pheatmap(mat.heat.lip,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.lip_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_heatmap_rel_all.jpg",
+                                          sep = "_")
+)
+
+# Heatmap scaled per tissue-----------------------------------------------------------------
+
+heat.lip <- means%>% 
+  group_by(tissue, met) %>% 
+  mutate(total_norm = mean/mean(mean),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm_level) %>% 
+  left_join(met_dat) %>%
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.lip) <- heat.lip$met
+
+mat.heat.lip <- heat.lip %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.lip %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.lip$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.lip_signif <- means %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_lip, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.lip)
+
+rownames(heat.lip_signif) <- heat.lip_signif$met
+
+mat.heat.lip_signif <- heat.lip_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.lip <- pheatmap(mat.heat.lip,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.lip_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_heatmap_rel_tissue.jpg",
+                                          sep = "_")
+)
+
+
+# Heatmap scaled per tissue and treatment-----------------------------------------------------------------
+
+heat.lip <- means%>% 
+  group_by(tissue, met, treatment) %>% 
+  mutate(total_norm = mean/mean(mean),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm_level) %>% 
+  left_join(met_dat) %>%
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.lip) <- heat.lip$met
+
+mat.heat.lip <- heat.lip %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.lip %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.lip$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.lip_signif <- means %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_lip, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.lip)
+
+rownames(heat.lip_signif) <- heat.lip_signif$met
+
+mat.heat.lip_signif <- heat.lip_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.lip <- pheatmap(mat.heat.lip,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.lip_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_heatmap_rel_tissue_treatment.jpg",
+                                          sep = "_")
+)
+
+
+
+# Per metabolite comparisons ----------------------------------------------
+
+norm_MM <- means %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(tissue, treatment, met, MM_mean = mean)
+
+fc <- means_tec_rep %>% 
+  left_join(norm_MM) %>% 
+  mutate(fc = mean_tec_rep/MM_mean) %>% 
+  group_by(tissue, treatment, alias, genotype, met) %>% 
+  summarise(mean_fc = mean(fc),
+            sd = sd(fc),
+            n = n()) %>% 
+  mutate(se = sd/sqrt(n),
+         group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  left_join(sig_lip, by = c("tissue", "treatment", "met", "alias" = "group2")) %>% 
+  group_by(met) %>% 
+  filter(any(p.signif == "*"), all(is.finite(mean_fc)), tissue != "flowers") %>% 
+  left_join(met_dat) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  ungroup()
+
+plotmets <- fc %>% distinct(met) %>% as_vector()
+plottissues <- fc %>% distinct(tissue) %>% as_vector() %>% as.character
+
+labelnames <- plotmets %>% as_tibble() %>% 
+  rename(met = value) %>% 
+  left_join(met_dat) %>% left_join(lipid_classes) %>%
+  select(Compound_Name) %>% as_vector()
+
+
+plot_out <- vector("list", length = length(plotmets))
+per_comp_y <- fc %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(mean = max(mean_fc),
+            se = max(se))
+
+for(tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    
+    
+    sig_bar <- fc %>% 
+      group_by(tissue, treatment, met) %>% 
+      mutate(tot_val = max(mean_fc + se)) %>%
+      mutate(y.position = tot_val + 0.25*max(tot_val)) %>%
+      ungroup() %>% 
+      left_join(genotypes, by = c("group1" = "alias")) %>% 
+      select(-group1) %>% 
+      rename(group1 = genotype.x, group2 = genotype.y) %>% 
+      filter(!is.na(p.signif)) %>% 
+      filter(met == plotmets[[meta]], tissue2 == plottissues[[tiss]])
+    
+    
+    plot_out[[tiss]][[meta]] <- fc %>% 
+      filter(met == plotmets[[meta]], tissue == plottissues[[tiss]]) %>% 
+      mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "panK4-1", "log2-1", "transp1-1")),
+             treatment = fct_relevel(treatment, c("0.4", "0.6", "0.8", "1"))) %>% 
+      ggplot(aes(x = genotype, y = mean_fc)) +
+      geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+      geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+      stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                         step.increase = 0.07,
+                         hide.ns = T) +
+      facet_grid(cols = vars(treatment)) +
+      theme(axis.text.x = element_text(angle = 45, hjust = 1),
+            panel.background = element_rect(fill = "white"),
+            panel.border = element_rect(color = "black",fill = NA),
+            text = element_text(size = 8)) +
+      ggtitle(label = str_c(labelnames[[meta]], "in", plottissues[[tiss]], sep = " ")) +
+      scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  }
+  
+}
+
+plot_out[[1]][[2]]
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"cmQTL_val1_lip_col_plots.pdf"))
+
+for (tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    print(plot_out[[tiss]][[meta]])  
+  }
+  
+}
+
+dev.off()
+
+# Per metabolite comparisons scaled 1----------------------------------------------
+
+norm_MM_1 <- means %>% 
+  filter(genotype == "MoneyMaker", treatment == 1) %>% 
+  select(tissue, met, MM_mean = mean)
+
+fc_1_ind <- means_tec_rep %>% 
+  left_join(norm_MM_1) %>% 
+  mutate(fc = mean_tec_rep/MM_mean)
+
+fc_1 <- means_tec_rep %>% 
+  left_join(norm_MM_1) %>% 
+  mutate(fc = mean_tec_rep/MM_mean) %>% 
+  group_by(tissue, treatment, alias, genotype, met) %>% 
+  summarise(mean_fc = mean(fc),
+            sd = sd(fc),
+            n = n()) %>% 
+  mutate(se = sd/sqrt(n),
+         group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  left_join(sig_lip, by = c("tissue", "treatment", "met", "alias" = "group2")) %>% 
+  group_by(met) %>% 
+  #filter(any(p.signif == "*"), all(is.finite(mean_fc)), tissue != "flowers") %>% 
+  left_join(met_dat) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  ungroup() %>% 
+  mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*"))),
+         genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+
+plotmets <- fc_1 %>% distinct(met) %>% as_vector()
+plottissues <- fc_1 %>% distinct(tissue) %>% as_vector() %>% as.character
+
+labelnames <- plotmets %>% as_tibble() %>% 
+  rename(met = value) %>% 
+  left_join(met_dat) %>% left_join(lipid_classes) %>%
+  select(Compound_Name) %>% as_vector()
+
+
+plot_out <- vector("list", length = length(plotmets))
+per_comp_y <- fc_1 %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(mean = max(mean_fc),
+            se = max(se))
+
+for(tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    
+    
+    sig_bar <- fc_1 %>% 
+      group_by(tissue, treatment, met) %>% 
+      mutate(tot_val = max(mean_fc + se)) %>%
+      mutate(y.position = tot_val + 0.25*max(tot_val)) %>%
+      ungroup() %>% 
+      rename(genotype1 = genotype) %>% 
+      left_join(genotypes, by = c("group1" = "alias")) %>% 
+      select(-group1) %>% 
+      mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*")))) %>% 
+      rename(group1 = genotype1, group2 = genotype) %>% 
+      filter(!is.na(p.signif)) %>% 
+      filter(met == plotmets[[meta]], tissue2 == plottissues[[tiss]])
+    
+    plot_out[[tiss]][[meta]] <- fc_1 %>% 
+      filter(met == plotmets[[meta]], tissue == plottissues[[tiss]]) %>% 
+      mutate(treatment = fct_relevel(treatment, c("0.4", "0.6", "0.8", "1"))) %>% 
+      ggplot(aes(x = genotype, y = mean_fc)) +
+      geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+      geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+      stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                         step.increase = 0.07,
+                         hide.ns = T) +
+      facet_grid(cols = vars(treatment)) +
+      theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+            panel.background = element_rect(fill = "white"),
+            panel.border = element_rect(color = "black",fill = NA),
+            text = element_text(size = 14),
+            legend.text = element_markdown()) +
+      ylab("Mean fold-change")+
+      ggtitle(label = str_c(labelnames[[meta]], "in", plottissues[[tiss]], sep = " ")) +
+      scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  }
+  
+}
+
+plot_out[[1]][[2]]
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"cmQTL_val1_lip_col_plots_scaled_1.pdf"),
+    width = 15.8/2.54,
+    height = 8/2.54)
+
+for (tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    print(plot_out[[tiss]][[meta]])  
+  }
+  
+}
+
+dev.off()
+
+
+# Heatmap scaled Wildtype-----------------------------------------------------------------
+
+heat.lip <- fc %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, met),
+              names_from = group,
+              values_from = log_norm) %>% 
+  left_join(lipid_classes) %>%  
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.lip) <- heat.lip$met
+
+mat.heat.lip <- heat.lip %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.lip %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.lip$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.lip_signif <- means %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_lip, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.lip)
+
+rownames(heat.lip_signif) <- heat.lip_signif$met
+
+mat.heat.lip_signif <- heat.lip_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+pheatmap.lip <- pheatmap(mat.heat.lip,
+                         #color = RColorBrewer::brewer.pal(7,"BuRd"),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-2.5,-1.5, -0.5 ,0.5,1.5,2.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.lip_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val_1_heatmap_rel_tissue_wt.jpg",
+                                          sep = "_")
+)
+
+
+# Levene analysis simple anova-------------------------------------------------------------
+
+miss_per_clust <- lip_long %>% 
+  group_by(met, tissue) %>% 
+  summarise(na = sum(is.na(area)),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(percent_na_clust = na/n*100) %>% 
+  select(met, tissue, percent_na_clust)
+
+miss_any_treat <- miss_per_treat %>% 
+  group_by(met, tissue) %>% 
+  summarise(miss_comp_treat = if_else(any(percent_na == 100), T,F))
+
+means_tec_rep_lt <- means_tec_rep %>% 
+  group_by(met, tissue, treatment, genotype, alias) %>% 
+  mutate(lev_t = abs(log10(mean_tec_rep) - log10(median(mean_tec_rep)))) %>% 
+  ungroup()
+
+
+means_lt <- means_tec_rep_lt %>% 
+  ungroup() %>% 
+  group_by(met, tissue, treatment, genotype, alias) %>% 
+  summarise(mean = mean(lev_t),
+            sd = sd(lev_t),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(se = sd/sqrt(n))
+
+lt_tidy <- means_tec_rep_lt %>% 
+  filter(tissue == "fruits") %>% 
+  ungroup() %>% 
+  pivot_wider(id_cols = c(tissue, treatment, genotype, alias, LIMS_ID),
+              names_from = met,
+              values_from = lev_t)
+
+lt_tidy_numeric <- lt_tidy %>% 
+  select(all_of(mets))
+
+lt_aov <- map(.x = lt_tidy_numeric, .f = ~aov(.x ~ alias*treatment, data = lt_tidy))
+
+lt_aov_tidy <- lt_aov %>% 
+  map(tidy) %>% 
+  map2(.y = names(lt_aov), .f = ~.x %>% mutate(lt_vars = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+lt_tuk <- map(.x = lt_aov, .f = ~TukeyHSD(.x)) %>% 
+  map(.f = tidy) %>% 
+  map2(.y = names(lt_aov), .f = ~.x %>% mutate(var = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+sig_lip_lt_groups <- lt_tuk %>% 
+  filter(term == "alias:treatment") %>% 
+  separate(col = contrast, into = c("group1", "group2"), sep = "-")
+
+sig_lip_lt <- sig_lip_lt_groups %>%  
+  separate(group1, into = c("alias1", "treatment1"), sep = ":") %>% 
+  separate(group2, into = c("alias2", "treatment2"), sep = ":") %>% 
+  filter(treatment1 == treatment2) %>% 
+  filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT") %>% 
+  ungroup() %>% 
+  mutate(p.signif = if_else(adj.p.value <= 0.05, "*", "ns")) %>% 
+  left_join(means_lt, by = c("var" = "met", "treatment1" = "treatment", "alias1" = "alias")) %>% 
+  select(var, treatment1, treatment2, alias1, alias2,  p.signif, mean1 = mean, se1 = se) %>%
+  left_join(means_lt, by = c("var" = "met", "treatment2" = "treatment", "alias2" = "alias")) %>% 
+  select(var, treatment1, treatment2, alias1, alias2,  p.signif, mean1, mean2 = mean, se1, se2 = se) %>% 
+  group_by(treatment1,  var) %>% 
+  mutate(tot_val1 = mean1 + se1,
+         tot_val2 = mean2 + se2,
+         y.position = 1.1*(max(tot_val1, tot_val2))) %>% 
+  rename(met = var,
+         group1 = alias1,
+         group2 = alias2,
+         treatment = treatment1) %>% 
+  mutate(met = as_factor(met),
+         group1 = as_factor(group1),
+         group2 = as_factor(group2),
+         treatment = as_factor(treatment)) %>% 
+  ungroup()
+
+sig_mets <- sig_lip_lt %>% 
+  filter(p.signif == "*") %>% 
+  distinct(met) %>% 
+  mutate(sig = T)
+
+# Levene with t-test ------------------------------------------------
+skip <-  F
+
+if(skip == T) {
+  print("Levene t-test skipped") 
+} else {
+  lip_tidy <- means_tec_rep_lt %>% 
+    pivot_wider(id_cols = c( genotype, alias, treatment, tissue, LIMS_ID),
+                names_from = met,
+                values_from = lev_t) %>% 
+    mutate(group = str_c(tissue, treatment, alias, sep = "_"))
+  
+  lip_tidy_numeric <- lip_tidy %>% 
+    select(all_of(mets))
+  
+  lip_t <- map(.x = lip_tidy_numeric,
+              .f = ~pairwise.t.test(x = .x ,
+                                    g = lip_tidy$group,
+                                    p.adjust.method = "none",
+                                    pool.sd = F)) %>% 
+    map(.f = tidy)
+  
+  lip_t_tidy <- lip_t %>% 
+    map2(.y = names(lip_t), .f = ~.x %>% mutate(var = .y)) %>% 
+    purrr::reduce(bind_rows)
+  
+  sig_lip_lt<- lip_t_tidy %>% 
+    separate(group1, into = c("tissue1", "treatment1", "alias1"), sep = "_") %>% 
+    separate(group2, into = c("tissue2", "treatment2", "alias2"), sep = "_") %>% 
+    filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT",
+           tissue1 == tissue2, treatment1 == treatment2) %>% 
+    group_by(var) %>% 
+    mutate(adj.p.value = p.adjust(p.value)) %>% 
+    #mutate(adj.p.value = p.value * 121) %>% 
+    ungroup() %>% 
+    mutate(p.signif = if_else(p.value <= 0.05, "*", "ns")) %>% 
+    left_join(means_lt, by = c("var" = "met", "treatment1" = "treatment", "alias1" = "alias", "tissue1" = "tissue")) %>% 
+    select(var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1 = mean, se1 = se, p.value, adj.p.value) %>%
+    left_join(means_lt, by = c("var" = "met", "treatment2" = "treatment", "alias2" = "alias", "tissue2" = "tissue")) %>% 
+    select(var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1, mean2 = mean, se1, se2 = se, p.value, adj.p.value) %>% 
+    group_by(treatment1, tissue1, var) %>% 
+    mutate(tot_val1 = mean1 + se1,
+           tot_val2 = mean2 + se2,
+           y.position = 1.1*(max(tot_val1, tot_val2))) %>% 
+    ungroup() %>% 
+    rename(met = var,
+           group1 = alias1,
+           group2 = alias2,
+           treatment = treatment1,
+           tissue = tissue1) %>% 
+    left_join(miss_per_treat) %>% 
+    mutate(met = as_factor(met),
+           group1 = as_factor(group1),
+           group2 = as_factor(group2),
+           treatment = as_factor(treatment),
+           tissue = as_factor(tissue),
+           p.signif = if_else(percent_na >= 60, "ns", p.signif))
+  
+  
+  sig_mets <- sig_lip_lt %>% 
+    filter(p.signif == "*") %>% 
+    distinct(met) %>% 
+    mutate(sig = T)
+  
+}
+# Per metabolite comparisons unscaled levene----------------------------------------------
+
+norm_MM_1_lt <- means_lt %>% 
+  filter(genotype == "MoneyMaker", treatment == 1) %>% 
+  select(tissue, met, MM_mean = mean)
+
+fc_1_lt <- means_tec_rep_lt %>% 
+  #left_join(norm_MM_1) %>% 
+  #mutate(fc = mean_tec_rep/MM_mean) %>% 
+  group_by(tissue, treatment, alias, genotype, met) %>% 
+  summarise(mean_fc = mean(lev_t),
+            sd = sd(lev_t),
+            n = n()) %>% 
+  mutate(se = sd/sqrt(n),
+         group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  left_join(sig_lip_lt, by = c("tissue", "treatment", "met", "alias" = "group2")) %>% 
+  group_by(met) %>% 
+  #filter(any(p.signif == "*"), all(is.finite(mean_fc)), tissue != "flowers") %>% 
+  left_join(met_dat) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  ungroup() %>% 
+  mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*"))),
+         genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+
+plotmets <- fc_1_lt %>% distinct(met) %>% as_vector()
+plottissues <- fc_1_lt %>% distinct(tissue) %>% as_vector() %>% as.character
+
+labelnames <- plotmets %>% as_tibble() %>% 
+  rename(met = value) %>% 
+  left_join(met_dat) %>% left_join(lipid_classes) %>%
+  select(Compound_Name) %>% as_vector()
+
+
+plot_out <- vector("list", length = length(plotmets))
+per_comp_y <- fc_1_lt %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(mean = max(mean_fc),
+            se = max(se))
+
+for(tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    
+    
+    sig_bar <- fc_1_lt %>% 
+      group_by(tissue, treatment, met) %>% 
+      mutate(tot_val = max(mean_fc + se)) %>%
+      mutate(y.position = tot_val + 0.25*max(tot_val)) %>%
+      ungroup() %>% 
+      rename(genotype1 = genotype) %>% 
+      left_join(genotypes, by = c("group1" = "alias")) %>% 
+      select(-group1) %>% 
+      mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*")))) %>% 
+      rename(group1 = genotype1, group2 = genotype) %>% 
+      filter(!is.na(p.signif)) %>% 
+      filter(met == plotmets[[meta]], tissue2 == plottissues[[tiss]])
+    
+    
+    plot_out[[tiss]][[meta]] <- fc_1_lt %>% 
+      filter(met == plotmets[[meta]], tissue == plottissues[[tiss]]) %>% 
+      mutate(treatment = fct_relevel(treatment, c("0.4", "0.6", "0.8", "1"))) %>% 
+      ggplot(aes(x = genotype, y = mean_fc)) +
+      geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+      geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+      stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                         step.increase = 0.07,
+                         hide.ns = T) +
+      facet_grid(cols = vars(treatment)) +
+      theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+            panel.background = element_rect(fill = "white"),
+            panel.border = element_rect(color = "black",fill = NA),
+            text = element_text(size = 14),
+            legend.text = element_markdown()) +
+      ylab("Mean fold-change")+
+      ggtitle(label = str_c(labelnames[[meta]], "in", plottissues[[tiss]], sep = " ")) +
+      scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  }
+  
+}
+
+plot_out[[tiss]][[meta]]
+plot_out[[1]][[2]]
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"cmQTL_val1_scaled1_lip_lev_t_col_plots.pdf"),
+    width = 15.8/2.54,
+    height = 8/2.54)
+
+for (tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    print(plot_out[[tiss]][[meta]])  
+  }
+  
+}
+
+dev.off()
+
+
+
+
+# CV analysis -------------------------------------------------------------
+
+miss_per_clust <- lip_long %>% 
+  group_by(met, tissue) %>% 
+  summarise(na = sum(is.na(area)),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(percent_na_clust = na/n*100) %>% 
+  select(met, tissue, percent_na_clust)
+
+miss_any_treat <- miss_per_treat %>% 
+  group_by(met, tissue) %>% 
+  summarise(miss_comp_treat = if_else(any(percent_na == 100), T,F))
+
+library(bootstrap)
+
+theta <- function(x){
+  sd(x)/mean(x)
+}
+
+cv <- means %>% 
+  ungroup() %>% 
+  group_by(genotype, tissue, alias, met) %>% 
+  summarise(grand_mean = mean(mean),
+            grand_sd = sd(mean),
+            n = n()) %>% 
+  mutate(cv = grand_sd/grand_mean)
+
+cv_jack <- means %>% 
+  group_by(genotype, tissue, alias, met) %>% 
+  summarise(cv = jackknife(mean, theta)$jack.values) %>% 
+  mutate(jack_rep = row_number()) %>% 
+  ungroup()
+
+cv_jack_mean <- cv_jack %>% 
+  group_by(genotype,tissue, alias, met) %>% 
+  summarise(mean_cv = mean(cv),
+            sd_cv = sd(cv),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(se_cv = sd_cv/sqrt(n))
+
+cv_jack_wide <- cv_jack %>% 
+  pivot_wider(id_cols = c(genotype, tissue, alias, jack_rep),
+              names_from = met,
+              values_from = cv) %>% 
+  mutate(group = str_c(tissue, alias, sep = "_"))
+
+cv_jack_numeric <- cv_jack_wide %>% 
+  select(-c(genotype, tissue, alias, jack_rep, group))
+
+lip_cv_jack <- map(.x = cv_jack_numeric, .f = ~aov(.x ~ alias, data = cv_jack_wide))
+
+
+lip_jack_t <- map(.x = cv_jack_numeric, .f = ~pairwise.t.test(x = .x , g = cv_jack_wide$group,                                                              p.adjust.method = "none")) %>% 
+  map(.f = tidy)
+
+lip_jack_t_tidy <- lip_jack_t %>% 
+  map2(.y = names(lip_jack_t), .f = ~.x %>% mutate(var = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+sig_lip_cv_groups <- lip_jack_t_tidy %>% 
+  separate(group1, into = c("tissue1", "alias1"), sep = "_") %>% 
+  separate(group2, into = c("tissue2", "alias2"), sep = "_") %>% 
+  filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT",
+         tissue1 == tissue2) %>% 
+  group_by(var) %>% 
+  mutate(adj.p.value = p.adjust(p.value)) %>% 
+  ungroup() %>% 
+  mutate(p.signif = if_else(adj.p.value <= 0.05, "*", "ns")) %>% 
+  left_join(cv_jack_mean, by = c("var" = "met", "alias1" = "alias", "tissue1" = "tissue")) %>% 
+  select(p.value, var,  alias1, alias2, p.signif, mean_cv1 = mean_cv, se_cv1 = se_cv, tissue1, tissue2) %>%
+  left_join(cv_jack_mean, by = c("var" = "met", "alias2" = "alias", "tissue2" = "tissue")) %>% 
+  select(p.value, var, alias1, alias2, p.signif, mean_cv1, mean_cv2 = mean_cv, se_cv1, se_cv2 = se_cv, tissue1, tissue2) %>% 
+  group_by(var, tissue1) %>% 
+  mutate(tot_val1 = mean_cv1 + se_cv1,
+         tot_val2 = mean_cv2 + se_cv2,
+         y.position = 1.1*(max(tot_val1, tot_val2))) %>%
+  ungroup() %>% 
+  left_join(genotypes, by = c("alias1" = "alias")) %>% 
+  rename(genotype1 = genotype) %>% 
+  left_join(genotypes, by = c("alias2" = "alias")) %>% 
+  rename(genotype2 = genotype) %>% 
+  rename(met = var,
+         group1 = genotype1,
+         group2 = genotype2,
+         tissue = tissue1) %>% 
+  left_join(miss_any_treat) %>% 
+  left_join(miss_per_clust) %>% 
+  group_by(met, tissue) %>% 
+  mutate(p.signif = if_else(miss_comp_treat == T| percent_na_clust >= 50, "ns", p.signif),
+         met = as_factor(met),
+         group1 = as_factor(group1),
+         group2 = as_factor(group2)) %>% 
+  ungroup()
+
+
+sig_mets_cv <- sig_lip_cv_groups %>% 
+  filter(p.signif == "*") %>% 
+  distinct(met, .keep_all = T) %>% 
+  mutate(sig = T) %>% 
+  select(met, sig)
+
+# CV Heatmap scaled per tissue-----------------------------------------------------------------
+
+heat.lip <- cv_jack_mean%>% 
+  group_by(tissue, met) %>% 
+  mutate(total_norm = mean_cv/mean(mean_cv),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets_cv) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm_level) %>% 
+  left_join(met_dat) %>%
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.lip) <- heat.lip$met
+
+mat.heat.lip <- heat.lip %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.lip %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.lip$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, tissue, genotype)
+
+heat.lip_signif <- cv_jack_mean %>% 
+  distinct(tissue, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_lip_cv_groups, by = c("met", "tissue" = "tissue2", "alias" = "alias2")) %>% 
+  left_join(sig_mets_cv) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.lip)
+
+rownames(heat.lip_signif) <- heat.lip_signif$met
+
+mat.heat.lip_signif <- heat.lip_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.lip <- pheatmap(mat.heat.lip,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.lip_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_cv_heatmap_rel_tissue.jpg",
+                                          sep = "_")
+)
+
+
+
+# CV Heatmap unscaled-----------------------------------------------------------------
+
+heat.lip <- cv_jack_mean%>% 
+  group_by(tissue, met) %>% 
+  mutate(total_norm = mean_cv/mean(mean_cv),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets_cv) %>% 
+  #filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = mean_cv) %>% 
+  left_join(met_dat) %>%
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.lip) <- heat.lip$met
+
+mat.heat.lip <- heat.lip %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.lip %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.lip$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, tissue, genotype)
+
+heat.lip_signif <- cv_jack_mean %>% 
+  distinct(tissue, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_lip_cv_groups, by = c("met", "tissue" = "tissue2", "alias" = "alias2")) %>% 
+  left_join(sig_mets_cv) %>% 
+  #filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.lip)
+
+rownames(heat.lip_signif) <- heat.lip_signif$met
+
+mat.heat.lip_signif <- heat.lip_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.lip <- pheatmap(mat.heat.lip,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         #display_numbers = mat.heat.lip_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_cv_unscaled.jpg",
+                                          sep = "_")
+)
+
+
+
+# CV dotplots -------------------------------------------------------------
+
+cv %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  mutate(`cv > 1` = if_else(cv > 1, "yes", "no")) %>% 
+  ggplot(aes(x = tissue, y = cv)) +
+  geom_dotplot(aes(fill = `cv > 1`), stackdir = "center", binaxis = "y",
+               binwidth = 0.1, dotsize = 0.8) +
+  geom_hline(aes(yintercept = 1), color = "red") +
+  theme(panel.background = element_rect(fill = "white"),
+        panel.border = element_rect(color = "black",fill = NA),
+        legend.position = "bottom",
+        legend.text = element_text(size = 8),
+        text = element_text(size = 10)) +
+  ylim(c(-0.15, 2))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cv_dotplot.jpg",
+             sep = "_"), units = "cm",
+       width = 15.9, height = 6)
+
+
+
+
+# CV Heatmap wildtype-----------------------------------------------------------------
+
+cv_jack_mean_wildtype <- cv_jack_mean %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(tissue, met, mean_cv_wt = mean_cv)
+
+heat.lip <- cv_jack_mean%>% 
+  left_join(cv_jack_mean_wildtype) %>% 
+  mutate(fc_cv = mean_cv/mean_cv_wt) %>% 
+  group_by(tissue, met) %>% 
+  mutate(total_norm = mean_cv/mean(mean_cv),
+         log_norm = log2(fc_cv),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets_cv) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm) %>% 
+  left_join(met_dat) %>%
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.lip) <- heat.lip$met
+
+mat.heat.lip <- heat.lip %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.lip %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.lip$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, tissue, genotype)
+
+heat.lip_signif <- cv_jack_mean %>% 
+  distinct(tissue, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_lip_cv_groups, by = c("met", "tissue" = "tissue2", "alias" = "alias2")) %>% 
+  left_join(sig_mets_cv) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.lip)
+
+rownames(heat.lip_signif) <- heat.lip_signif$met
+
+mat.heat.lip_signif <- heat.lip_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.lip <- pheatmap(mat.heat.lip,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.lip_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_cv_heatmap_rel_wt.jpg",
+                                          sep = "_")
+)
+
+# Per metabolite comparisons cv----------------------------------------------
+
+norm_MM <- means %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(tissue, treatment, met, MM_mean = mean)
+
+fc_cv <- cv_jack%>% 
+  left_join(cv_jack_mean_wildtype) %>% 
+  mutate(fc_cv = cv/mean_cv_wt) %>% 
+  group_by(tissue, alias, genotype, met) %>% 
+  summarise(mean_fc = mean(fc_cv),
+            sd = sd(fc_cv),
+            n = n()) %>% 
+  mutate(se = sd/sqrt(n),
+         group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  left_join(sig_lip_cv_groups, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  group_by(met) %>% 
+  filter(any(p.signif == "*"), all(is.finite(mean_fc)), tissue != "flowers") %>% 
+  left_join(met_dat) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  ungroup() %>% 
+  mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*"))),
+         genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+
+plotmets <- fc_cv %>% distinct(met) %>% as_vector()
+plottissues <- fc_cv %>% distinct(tissue) %>% as_vector() %>% as.character
+
+labelnames <- plotmets %>% as_tibble() %>% 
+  rename(met = value) %>% 
+  left_join(met_dat) %>% left_join(lipid_classes) %>%
+  select(Compound_Name) %>% as_vector()
+
+
+plot_out <- vector("list", length = length(plotmets))
+
+
+
+for(tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    
+    
+    sig_bar <- fc_cv %>% 
+      group_by(tissue, met) %>% 
+      mutate(tot_val = max(mean_fc + se)) %>%
+      mutate(y.position = tot_val + 0.25*max(tot_val)) %>%
+      ungroup() %>% 
+      filter(!is.na(p.signif))%>% 
+      mutate(group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+             group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>% 
+      filter(met == plotmets[[meta]], tissue2 == plottissues[[tiss]])
+    
+    
+    plot_out[[tiss]][[meta]] <- fc_cv %>% 
+      filter(met == plotmets[[meta]], tissue == plottissues[[tiss]]) %>% 
+      #mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "panK4-1", "log2-1", "transp1-1"))) %>% 
+      ggplot(aes(x = genotype, y = mean_fc)) +
+      geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+      geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+      stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                         step.increase = 0.07,
+                         hide.ns = T) +
+      theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+            panel.background = element_rect(fill = "white"),
+            panel.border = element_rect(color = "black",fill = NA),
+            text = element_text(size = 14),
+            legend.text = element_markdown()) +
+      ylab("Mean fold-change")+
+      ggtitle(label = str_c(labelnames[[meta]], "in", plottissues[[tiss]], sep = " ")) +
+      scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+    
+  }
+  
+}
+
+plot_out[[1]][[2]]
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"cmQTL_val1_cv_lip_col_plots.pdf"),
+    width = 15.8/2.54,
+    height = 8/2.54)
+
+for (tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    print(plot_out[[tiss]][[meta]])  
+  }
+  
+}
+
+dev.off()
+
+# Files to remake figures -------------------------------------------------
+
+write_csv(fc_1_ind, "individual_values.csv")
+write_csv(fc_1, "mean_values_se_n.csv")
+write_csv(sig_lip, "p_values.csv")
+
+write_csv(means_tec_rep_lt, "individual_values_levene.csv")
+write_csv(fc_1_lt, "mean_values_se_n_levene.csv")
+write_csv(sig_lip_lt, "p_values_levene.csv")
+
+#write_csv(cv_jack_ind, "individual_values_cv.csv")
+#write_csv(cv_jack_ind_mean, "mean_values_se_n_cv.csv")
+#write_csv(sig_cv_jack_ind, "p_values_cv.csv")
+
+write_csv(cv_jack, "individual_values_cv.csv")
+write_csv(cv_jack_mean, "mean_values_se_n_cv.csv")
+write_csv(sig_lip_cv_groups, "p_values_cv.csv")
+
+# Log used code ------------------------------------------------------------
+
+file_name <- sys.frame(1)$ofile
+
+file.copy(file_name,
+          to = str_c(out_dir, str_remove(file_name, current), "_", str_replace_all(Sys.Date(),"^.{2}|-",""), ".R"),overwrite = T)
diff --git a/workflows/apolar_LC_MS_figures/Figure maker_cmQTL1_paper.R b/workflows/apolar_LC_MS_figures/Figure maker_cmQTL1_paper.R
new file mode 100644
index 0000000..d0fb96a
--- /dev/null
+++ b/workflows/apolar_LC_MS_figures/Figure maker_cmQTL1_paper.R	
@@ -0,0 +1,937 @@
+rm(list = ls())
+library(tidyverse)
+library(ggpubr)
+library(glue)
+library(ggtext)
+library(cowplot)
+library(ggbeeswarm)
+library(extrafont)
+
+# Directory setting -------------------------------------------------------
+
+
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "Figures", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(current, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+# File loading ------------------------------------------------------------
+
+fc_1 <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+genotypes <- fc_1 %>% 
+  distinct(alias, genotype)
+
+fc_1_ind <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_GC <- read_csv("p_values.csv")
+
+fc_1_lt <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_lt <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_GC_lt <- read_csv("p_values_levene.csv")
+
+fc_1_cv <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_cv <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_GC_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+setwd(out_dir)
+
+
+# Data combination --------------------------------------------------------
+
+
+met_dat <- fc_1 %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+genotypes <- fc_1 %>% 
+  distinct(alias, genotype)
+
+per_comp_y <- fc_1 %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(tot_val = max(mean_fc + se))
+
+cb_scale <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442",
+              "#0072B2", "#D55E00","#000000")
+bw_scale <- c("black", "black", "black", "black", "black", "black", "black")
+
+
+# Used plots --------------------------------------------------------------
+
+com_theme <- theme(axis.text.x = element_markdown(angle = 45, hjust = 1, size = 6, family = "sans"),
+                   axis.text.y = element_text(size = 6, family = "sans"),
+                   axis.title.x = element_blank(),
+                   axis.title.y = element_text(size = 6, family = "sans"),
+                   panel.background = element_rect(fill = "white"),
+                   panel.border = element_rect(color = "black",fill = NA),
+                   strip.text = element_text(size = 8, family = "sans", margin = margin(t = 1, r = 1, b = 1, l = 1 , unit = "pt")),
+                   text = element_text(size = 6, family = "sans"),
+                   legend.title = element_blank(),
+                   legend.text = element_markdown(size = 6),
+                   plot.margin = unit(c(1,1,1,1), "mm"),
+                   legend.margin = margin(t = 0, r = 2, b = 0, l = 2 , unit = "mm"))
+
+make_box_dot_plot <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes, plot_fill){
+  
+  per_comp_y <- fc_1_ind %>%
+    filter(genotype %in% plot_genotypes) %>% 
+    group_by(tissue, treatment, met) %>% 
+    summarise(min_y = min(fc),
+              max_y = max(fc)) %>% 
+    mutate(tot_val = 1.1*max_y) %>% 
+    ungroup()
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    group_by(tissue, treatment, met) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           p.signif = if_else(p.value <= 0.05, "*", "ns")) %>% 
+    ungroup() %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes) 
+  
+  binwidth <- sig_bar %>% 
+    summarise(min_y_comp = min(min_y),
+              max_y_comp = max(max_y)) %>% 
+    mutate(binwidth = (max_y_comp - min_y_comp)/50) %>% 
+    select(binwidth) %>% 
+    as_vector() %>%
+    as.numeric() 
+    
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  plot_out <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    ggplot(aes(x = genotype, y = fc)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_dotplot(aes(fill = genotype, color = genotype), binaxis = "y", stackdir = "center", binwidth = binwidth, dotsize = 1.5) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(legend.position = plot_legend) +
+    com_theme +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    #ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale[plot_fill], aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+make_box_dot_plot_levene <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes, plot_fill){
+  
+  per_comp_y <- fc_1_ind_lt %>%
+    filter(genotype %in% plot_genotypes) %>% 
+    group_by(tissue, treatment, met) %>% 
+    summarise(min_y = min(lev_t),
+              max_y = max(lev_t)) %>% 
+    mutate(tot_val = 1.1*max_y) %>% 
+    ungroup()
+  
+  sig_bar <- sig_GC_lt %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    group_by(tissue, treatment, met) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           p.signif = if_else(p.value <= 0.05, "*", "ns")) %>% 
+    ungroup() %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes) 
+  
+  binwidth <- sig_bar %>% 
+    summarise(min_y_comp = min(min_y),
+              max_y_comp = max(max_y)) %>% 
+    mutate(binwidth = (max_y_comp - min_y_comp)/50) %>% 
+    select(binwidth) %>% 
+    as_vector() %>%
+    as.numeric() 
+   
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  plot_out <- fc_1_ind_lt %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    ggplot(aes(x = genotype, y = lev_t)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_dotplot(aes(fill = genotype, color = genotype), binaxis = "y", stackdir = "center", binwidth = binwidth, dotsize = 1.5) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(legend.position = plot_legend) +
+    com_theme +
+    ylab("Levene's transformed value")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    #ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale[plot_fill], aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+
+make_box_dot_plot_cv <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes, plot_fill){
+  
+  per_comp_y_cv <- fc_1_ind_cv %>%
+    filter(genotype %in% plot_genotypes) %>% 
+    group_by(tissue, met) %>% 
+    summarise(min_y = min(cv),
+              max_y = max(cv)) %>% 
+    mutate(tot_val = 1.1*max_y) %>% 
+    ungroup()
+  
+  sig_bar <- sig_GC_cv %>%  
+    left_join(per_comp_y_cv) %>% 
+    group_by(tissue, met) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           p.signif = if_else(p.value <= 0.05, "*", "ns"))  %>% 
+    ungroup() %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes)
+  
+  binwidth <- sig_bar %>% 
+    summarise(min_y_comp = min(min_y),
+              max_y_comp = max(max_y)) %>% 
+    mutate(binwidth = (max_y_comp - min_y_comp)/50) %>% 
+    select(binwidth) %>% 
+    as_vector() %>%
+    as.numeric()
+  
+  plot_out <- fc_1_ind_cv %>% 
+    left_join(met_dat) %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    ggplot(aes(x = genotype, y = cv)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_dotplot(aes(fill = genotype, color = genotype), binaxis = "y", stackdir = "center", binwidth = binwidth, dotsize = 2) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    #facet_grid(cols = vars(treatment)) +
+    com_theme +
+    theme(legend.position = plot_legend) +
+    ylab("CV")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    #ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale[plot_fill], aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+# PC 32:1 (1) fruits transp1-1-------------------------------------------------------
+
+
+
+p1 <- make_box_dot_plot("Cluster_06277", "fruits", "PC 32:1 (1) nominal", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p1
+saveRDS(last_plot(), "PC32_1_transp1-1_nominal_fruits.RDS")
+
+p2 <- make_box_dot_plot_cv("Cluster_06277", "fruits", "PC 32:1 (1) CV", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+saveRDS(last_plot(), "PC32_1_transp1-1_cv_fruits.RDS")
+
+leg <- get_legend(make_box_dot_plot("Cluster_06277", "fruits", "PC 32:1 (1)", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4)))
+leg
+saveRDS(leg, "PC32_1_transp1-1_leg_fruits.RDS")
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("PC_32_1_1_fruits_combined_transp1-1.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+p2 <- make_box_dot_plot_levene("Cluster_06277", "fruits", "PC 32:1 (1) levene transformed", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+ggsave("PC 32_1 (1)_fruits_box_dot_plot_levene_transp1-1.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+saveRDS(last_plot(), "PC32_1_transp1-1_lt_fruits.RDS")
+
+# PC 32:1 (1) leaves transp1-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_06277", "leaves", "PC 32:1 (1) nominal", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p1
+saveRDS(last_plot(), "PC32_1_transp1-1_nominal_leaves.RDS")
+
+p2 <- make_box_dot_plot_cv("Cluster_06277", "leaves", "PC 32:1 (1) CV", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+saveRDS(leg, "PC32_1_transp1-1_leg_leaves.RDS")
+leg <- get_legend(make_box_dot_plot("Cluster_06277", "leaves", "PC 32:1 (1)", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("PC 32_1 (1)_leaves_combined_transp1-1.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_06277", "leaves", "PC 32:1 (1)", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+ggsave("PC 32_1 (1)_leaves_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+saveRDS(last_plot(), "PC32_1_transp1-1_lt_leaves.RDS")
+
+# PC 34:5 fruits transp1-1-------------------------------------------------------
+
+
+
+p1 <- make_box_dot_plot("Cluster_06748", "fruits", "PC 34:5 nominal", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p1
+
+
+p2 <- make_box_dot_plot_cv("Cluster_06748", "fruits", "PC 34:5 CV", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_06748", "fruits", "PC 34:5", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("PC 34:5_fruits_combined_transp1-1.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+p2 <- make_box_dot_plot_levene("Cluster_06748", "fruits", "PC 34:5 levene transformed", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+ggsave("PC 34:5_fruits_box_dot_plot_levene_transp1-1.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# PC 34:5 leaves transp1-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_06748", "leaves", "PC 34:5 nominal", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p1
+
+p2 <- make_box_dot_plot_cv("Cluster_06748", "leaves", "PC 34:5 CV", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_06748", "leaves", "PC 34:5", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("PC 34:5_leaves_combined_transp1-1.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_06748", "leaves", "PC 34:5", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+ggsave("PC 34:5_leaves_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+
+# Heatmap PC transp1-1-----------------------------------------------------------------
+library(pheatmap)
+
+heat_base <- fc_1 %>% 
+  filter(#Compound_Class %in% c("Phospholipid", "Phosphatidylcholine"),
+    genotype %in% c("MoneyMaker"), tissue == "fruits")
+
+heat.lip <- heat_base %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, Compound_Class, met),
+              names_from = group,
+              values_from = log_norm) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.lip) <- heat.lip$met
+
+mat.heat.lip <- heat.lip %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.lip %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.lip$met
+
+annotation_col <- heat_base %>% 
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.lip_signif <- heat_base %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_GC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  #left_join(sig_mets) %>% 
+  #filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.value >= 0.05| is.na(p.value), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  #left_join(lipid_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.lip)
+
+rownames(heat.lip_signif) <- heat.lip_signif$met
+
+mat.heat.lip_signif <- heat.lip_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = cb_scale[1], `panK4-1` = "brown", `log2-1` = "blue", `*transp1-1*` = cb_scale[4]),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+pheatmap.lip <- pheatmap(mat.heat.lip,
+                         color = colorRampPalette(c("blue", "white", "red"))(65),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         breaks = seq(-3.25, 3.25, 0.1),
+                         cluster_rows = T,
+                         cluster_cols = F,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.lip_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val_1_heatmap_rel_tissue_wt.jpg",
+                                          sep = "_")
+)
+
+dev.off()
+
+
+
+# Line plot PC transp1-1 --------------------------------------------------
+
+fc_1 %>% 
+  mutate(treatment = as_factor(treatment)) %>% 
+  filter(Compound_Class %in% c("Phospholipid"),
+         genotype %in% c("MoneyMaker", "*transp1-1*"), tissue == "fruits") %>% 
+  group_by(genotype, treatment) %>% 
+  summarise(grand_mean_fc = mean(mean_fc),
+            grand_sd = sd(mean_fc),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(se = grand_sd/sqrt(n),
+         ymin = grand_mean_fc - se,
+         ymax = grand_mean_fc + se) %>% 
+  ggplot(aes(x = treatment, y = grand_mean_fc, color = genotype)) +
+  geom_line(aes(group = genotype)) +
+  geom_point() + 
+  geom_errorbar(aes(ymin = ymin, ymax = ymax), width = 0.1) +
+  #geom_boxplot(aes(x = treatment, y = mean_fc, color = genotype),inherit.aes = F) +
+  #geom_violin(aes(fill = genotype)) +
+  #stat_summary() +
+  #geom_smooth(aes(group = genotype), method = "lm", se = F, formula = y ~ x) +
+  com_theme +
+  ylab("Mean fold-change")+
+  #ylim(c(0, ylim_top))+
+  xlab("") +
+  ggtitle(label = "Phospholipids") +
+  scale_fill_manual(values = cb_scale[c(1,4)], aesthetics = "color")
+
+ggsave("Phospholipids_fruits_combined_transp1-1.png",width = 16.5, height = 8, units = "cm", dpi = 300)
+
+stop(print("current stop"))
+# Test correlation analysis -----------------------------------------------
+
+library(corrplot)
+
+lip_wide <- fc_1_ind %>% 
+  pivot_wider(names_from = met,
+              values_from = fc,
+              id_cols = c(tissue, treatment, genotype, LIMS_ID)) %>% 
+  filter(tissue == "fruits", genotype == "*panK4-1*")
+
+lip_corr <- lip_wide %>% 
+  select(starts_with("Cluster")) #%>% 
+  t()
+
+lip_corr_mat <- cor(lip_corr)
+
+
+annotation_row_lip_corr <- met_dat %>% 
+  select(Compound_Class) %>% 
+  as.data.frame()
+
+rownames(annotation_row_lip_corr) <- met_dat$met
+
+annotation_col_lip_corr <- met_dat %>% 
+  select(Compound_Class) %>% 
+  as.data.frame()
+
+rownames(annotation_col_lip_corr) <- met_dat$met
+
+ann_colors_lip_corr = list(
+  ChEBI_Ontology_dense = c(amino_acid = "red",
+                           carbohydrate = "white",
+                           carbohydrate_derivative = "grey",
+                           carbohydrate_phosphate = "brown",
+                           carboxylic_acid = "blue",
+                           other = "black",
+                           unannotated = "magenta")
+)
+
+pheatmap <- pheatmap(lip_corr_mat,
+                     color = colorRampPalette(c("blue","white", "red"))(21),
+                     #cellwidth = 8,
+                     #cellheight = 8,
+                     breaks = seq(-1.05,1.05,0.1),
+                     cluster_rows = T,
+                     cluster_cols = T,
+                     annotation_names_row = F,
+                     show_rownames = T,
+                     show_colnames = F,
+                     annotation_row = annotation_row_lip_corr,
+                     annotation_col = annotation_col_lip_corr,
+                     display_numbers = F,
+                     number_color = "black",
+                     fontsize_number = 6,
+                     #annotation_colors = ann_colors_lip_corr,
+                     #filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                     #                 "metabolite_lip_correlation_pank_heatmap.jpg",
+                     #                 sep = "_")
+)
+
+
+
+# Test combine ------------------------------------------------------------
+
+p1 <- make_box_dot_plot("m_81", "fruits", "Phenylalanine", "none", c("MoneyMaker","*log2-1*"))
+p1
+
+p2 <- make_box_dot_plot_levene("m_81", "fruits", "Phenylalanine", "none", c("MoneyMaker","*log2-1*"))
+p2
+
+p3 <- make_box_dot_plot_cv("m_81", "fruits", "Phenylalanine", "none", c("MoneyMaker","*log2-1*"))
+p3
+
+leg46 <- get_legend(make_box_dot_plot("m_81", "fruits", "Phenylalanine", "bottom", c("MoneyMaker","*log2-1*")))
+leg46
+
+main_plot <- plot_grid(p1,p2, nrow = 2, labels = "AUTO",rel_heights = c(1,1))
+main_plot
+
+main_plot_2 <- plot_grid(main_plot, p3, ncol = 2, labels = list("", "C"),rel_widths = c(3,1))
+main_plot_2
+
+comp_plot <- plot_grid(main_plot_2, leg46, ncol = 1, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Phenylalanine_combined.png",width = 15.8, height = 16, units = "cm", dpi = 300)
+
+#sugars?
+
+p1 <- make_box_dot_plot("m_72", "fruits", "Maltose", "none", c("MoneyMaker","*transp1-1*"))
+p1
+
+p2 <- make_box_dot_plot_levene("m_72", "fruits", "Maltose", "none", c("MoneyMaker","*transp1-1*"))
+p2
+
+p3 <- make_box_dot_plot_cv("m_72", "fruits", "Maltose", "none", c("MoneyMaker","*transp1-1*"))
+p3
+
+leg46 <- get_legend(make_box_dot_plot("m_72", "fruits", "Maltose", "bottom", c("MoneyMaker","*transp1-1*")))
+leg46
+
+main_plot <- plot_grid(p1,p2, nrow = 2, labels = "AUTO",rel_heights = c(1,1))
+main_plot
+
+main_plot_2 <- plot_grid(main_plot, p3, ncol = 2, labels = list("", "C"),rel_widths = c(3,1))
+main_plot_2
+
+
+ggsave("Maltose_combined.png",width = 15.8, height = 16, units = "cm", dpi = 300)
+
+
+
+# Recycling ---------------------------------------------------------------
+
+testtheme <- theme(axis.text.x = element_markdown(angle = 45, hjust = 1, margin = unit(c(1,0,0,0), "mm")),
+                   axis.title.x = element_blank(),
+                   panel.background = element_rect(fill = "white"),
+                   panel.border = element_rect(color = "black",fill = NA),
+                   text = element_text(size = 8, family = "Arial Narrow"),
+                   legend.title = element_blank(),
+                   legend.text = element_markdown(),
+                   legend.position = "right",
+                   legend.direction = "vertical",
+                   plot.margin = unit(c(1,0,1,2), "mm"),
+                   legend.margin = margin(t = 0, r = 2, b = 0, l = 2 , unit = "mm")) 
+
+
+make_box_point_plot <- function(plot_met, plot_tissue, plot_label, plot_legend){
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val) %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  fc_1_ind_plot <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  plot_out <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue) %>% 
+    ggplot(aes(x = genotype, y = fc)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_point(aes(fill = genotype, color = genotype),size = 2, shape = 21) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale, aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+make_box_beeswarm_plot <- function(plot_met, plot_tissue, plot_label, plot_legend){
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val) %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  fc_1_ind_plot <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  plot_out <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue) %>% 
+    ggplot(aes(x = genotype, y = fc)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_beeswarm(aes(fill = genotype, color = genotype),size = 2, shape = 21, cex = 2, priority = "density") +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale, aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+make_box_dot_line_plot <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes){
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           treatment = as_factor(treatment)) %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  fc_1_plot <- fc_1%>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    mutate(treatment = as_factor(treatment))
+  
+  plot_out <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    mutate(treatment = as_factor(treatment)) %>% 
+    ggplot(position = "dodge", aes(x = treatment, y = fc)) +
+    geom_boxplot(aes(fill = genotype), color = "black") +
+    geom_dotplot(aes(fill = genotype, color = genotype), position = position_dodge(0.75),
+                 binaxis = "y", stackdir = "center", binwidth = 0.1, dotsize = 1) +
+    geom_smooth(aes(x = treatment, y = fc, color = genotype, group = genotype),method = "lm", position = position_dodge(0.75)) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    #facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale, aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+p1 <- make_box_dot_line_plot("m_70", "fruits", "Malic acid", "none", c("MoneyMaker","*panK4-1*"))
+p1
+ggsave("Malic_acid_box_dot_line_plot_nominal.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+make_col_plot_cv <- function(plot_met, plot_tissue, plot_label, plot_legend){
+  
+  sig_bar <- sig_GC_cv %>%  
+    left_join(genotypes, by = c("alias1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("alias2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y_cv) %>% 
+    mutate(y.position = 1.1 * tot_val) %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  plot_out <- fc_cv %>% 
+    filter(met == plot_met, tissue == plot_tissue) %>% 
+    ggplot(aes(x = genotype, y = mean_fc)) +
+    geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    #facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("CV fold-change")+
+    ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  
+  plot_out
+  
+}
+
+make_col_plot <- function(plot_met, plot_tissue, plot_label, plot_legend){
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val) %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  fc_1_ind_plot <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  plot_out <- fc_1 %>% 
+    filter(met == plot_met, tissue == plot_tissue) %>% 
+    ggplot(aes(x = genotype, y = mean_fc)) +
+    geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_jitter(aes(fill = genotype, color = genotype, y = fc), size = 2, shape = 21, data = fc_1_ind_plot) +
+    geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale, aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+# Figure 46 ---------------------------------------------------------------
+
+p1 <- make_col_plot("m_70", "fruits", "Malic acid", "none")
+p1
+
+
+p2 <- make_col_plot_cv("m_119", "fruits", "Malic acid CV", "none")
+p2
+
+
+leg46 <- get_legend(make_col_plot("m_123", "fruits", "sucrose", "bottom"))
+leg46
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, leg46, ncol = 1, rel_heights = c(10,1))
+comp_plot
+
+ggsave("figure_46.wmf",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# Figure 47 ---------------------------------------------------------------
+
+p1 <- make_col_plot("m_74", "fruits", "Phenylalanine", "none")
+p1
+
+p2 <- make_col_plot_cv("m_74", "fruits", "Phe CV", "none")
+p2
+
+
+leg46 <- get_legend(make_col_plot("m_74", "fruits", "sucrose", "bottom"))
+leg46
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, leg46, ncol = 1, rel_heights = c(10,1))
+comp_plot
+
+ggsave("figure_47.wmf",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# Figure 48 ---------------------------------------------------------------
+
+p1 <- make_col_plot_cv("m_25", "fruits", "F6P CV", "none")
+p1
+
+p2 <- make_col_plot_cv("m_38", "fruits", "G6P CV", "none")
+p2
+
+p3 <- make_col_plot_cv("m_65", "fruits", "Maltose CV", "none")
+p3
+
+leg48 <- get_legend(make_col_plot("m_65", "fruits", "sucrose", "bottom"))
+leg48
+
+main_plot <- plot_grid(p1,p2,p3, ncol = 3, labels = "AUTO")
+main_plot
+
+comp_plot <- plot_grid(main_plot, leg48, ncol = 1, rel_heights = c(10,1))
+comp_plot
+
+ggsave("figure_48.wmf",width = 15.8, height = 8, units = "cm", dpi = 300)
diff --git a/workflows/apolar_LC_MS_library_annotation/Lipid_mod.R b/workflows/apolar_LC_MS_library_annotation/Lipid_mod.R
new file mode 100644
index 0000000..8e886de
--- /dev/null
+++ b/workflows/apolar_LC_MS_library_annotation/Lipid_mod.R
@@ -0,0 +1,103 @@
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+
+library(tidyverse)
+#tmp.wd <- "E:/R/Lipid"
+#setwd(tmp.wd)
+
+file1   <- list.files(pattern = "clusters.gda$")
+file2   <- "210809_lip_lib_cmQTL_val_adapt.txt"
+fileout <- "cmQTL_val1_selected_lipids.txt"
+
+options(stringsAsFactors=FALSE)
+mat1 <- read_delim(file1, skip = 8, delim = "\t") %>% 
+  filter(str_detect(Name, "Cluster")) %>% 
+  select(Name, mz_mean = `m/z`, RT_mean = RT, everything()) %>% 
+  as.data.frame()
+mat2 <- read.delim(file2)
+
+
+mat1[is.na(mat1)] <- 0
+
+
+rt.dev.range <- c(-0.2, 0.2)     #rt.dev.range <- c(-0.2, 0.2) 
+mz.dev.range <- c(-0.005, 0.005) #mz.dev.range <- c(-0.005, 0.005)
+
+out <- NULL
+
+res <- vector("list",nrow(mat1))
+for(i in 1:nrow(mat1)) {
+    mz.diff <- mat2$mz_mean - mat1$mz_mean[i]
+    rt.diff <- mat2$RT_mean - mat1$RT_mean[i]
+    j <- which(rt.diff > rt.dev.range[1] & rt.diff < rt.dev.range[2] &
+        mz.diff > mz.dev.range[1] & mz.diff < mz.dev.range[2])
+	res[[i]] <- if(length(j) == 0) NA else j
+}
+
+i <- rep.int(1:nrow(mat1), sapply(res, length))
+j <- unlist(res)
+out <- cbind(mat1[i, ], mat2[j, ], RTdiff=mat2$RT_mean[j] - mat1$RT_mean[i])
+
+colnames(out)[c(2,3)] <- c("mz_mean_new", "RT_mean_new") # colnames were non-unique
+
+
+
+
+
+
+
+
+
+# density plots
+n.breaks=4        #to be adjusted
+ranges <- cut(out$RT_mean, n.breaks, labels=F)
+
+dens <- lapply(1:n.breaks, function(i) {
+	if(sum(!is.na(out$RTdiff[ranges == i]))) density(out$RTdiff[ranges == i], na.rm=T)
+	else NULL})
+
+m <- ceiling(sqrt(n.breaks))
+n <- ceiling(n.breaks/ m)
+par(mfrow=c(n,m))
+mx2 <- numeric(n.breaks)
+
+RTrange <- matrix(NA, n.breaks, 2)
+
+for(i in 1:n.breaks) {
+	if(is.null(dens[[i]]))
+		next
+	mx2[i] <- mx <- dens[[i]]$x[which.max(dens[[i]]$y)]
+	RTrange[i,] <- range(out$RT_mean[ranges == i], na.rm=TRUE)
+	plot(dens[[i]], main=sprintf("Range: %.2f - %.2f [min] | max RT dev: %.3f", RTrange[i,1], RTrange[i,2], mx),
+		xlim=c(-1,1))
+	abline(v=mx + c(-0.1, -0.05,0,0.05, 0.1), col=c(3,2,1,2,3))
+}
+
+
+
+
+
+
+
+
+rt2 <- sapply(1:n.breaks, function(i) median(out$RT_mean[ranges == i], na.rm=T))
+x11()
+plot(rt2, mx2, main="RT time vs. RT diff", xlab="RT [min]", ylab="RT deviation [min]", pch=19)
+
+
+
+
+
+
+# adjust the deviations parameters (a matrix nrow=n.breaks; ncol=2), for example
+RTdevs <- cbind(mx2 - 0.1, mx2 + 0.1)                       # Adjust
+# or edit the object RTdevs manually...
+# RTdevs <- edit(RTdevs)
+
+indexes <- unlist(sapply(1:n.breaks, function(i)
+	which(ranges==i & out$RTdiff > RTdevs[i,1] & out$RTdiff < RTdevs[i,2])))
+
+write.table(out[indexes,], file=fileout, sep="\t", quote=FALSE, row.names=FALSE)
+
+
+
diff --git a/workflows/apolar_LC_MS_normalization/210812_lipid_normalization.R b/workflows/apolar_LC_MS_normalization/210812_lipid_normalization.R
new file mode 100644
index 0000000..02ceee9
--- /dev/null
+++ b/workflows/apolar_LC_MS_normalization/210812_lipid_normalization.R
@@ -0,0 +1,811 @@
+rm(list = ls())
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+current <- getwd()
+source <- ".."
+library(openxlsx)
+library(tidyverse)
+library(car)
+library(pheatmap)
+library(broom)
+library(ggpubr)
+library(viridisLite)
+library(modelr)
+library(dlookr)
+library(imputeLCMD)
+
+# Directory setting -------------------------------------------------------
+
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "normalization", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+
+
+# Data loading ------------------------------------------------------------
+setwd(source)
+
+sam_dat1 <- read_csv("210812_cmQTL_val1_samplelist.csv")
+lip_run1 <- readxl::read_xlsx("200923_samplelist_WIJESI-030820-13_cmQTL_validation.xlsx", sheet = 3)
+
+sam_dat2 <- read_csv("210812_cmQTL_val2_samplelist.csv")
+lip_run2 <- readxl::read_xlsx("210324_WIJESI-130121-15_cmQTL_validation2.xlsx", sheet = 4)
+
+genotypes <- readxl::read_xlsx("Genotype_names.xlsx") 
+
+setwd(current)
+area <- read_delim(file = "cmQTL_val1_selected_lipids.txt", delim = "\t") %>% 
+  rename(met = Name) %>% 
+  distinct(met, .keep_all = T) %>% 
+  group_by(Compound_Name) %>% 
+  mutate(peak_no = rank(RT_mean, ties.method = "first"),
+         Compound_Name = if_else(duplicated(Compound_Name),
+                                 str_c(Compound_Name, "peak", peak_no, sep = "_"),
+                                 Compound_Name))
+
+met_dat = area %>% 
+  select(met, mz_mean,RT_mean, Compound_Name, Compound_Class)
+
+setwd(out_dir)
+
+# Data combination --------------------------------------------------------
+sam_vars <- c("plantline", "alias", "LIMS_ID",
+              "treatment", "tissue", "batch_lip", "run_date_lip",
+              "extraction_num", "sample_num", 
+              "class", "run_num_lip", "sample_weight", "exp", "genotype")
+
+
+
+sam_dat1_tidy <- lip_run1 %>% 
+  mutate(class = as_factor(if_else(str_detect(extraction_num, "run_qc"), "run_qc", "sample")),
+         extraction_num = as.numeric(if_else(str_detect(extraction_num, "run_qc"), "0", extraction_num)),
+         exp = as_factor(1)) %>% 
+  left_join(sam_dat1) %>% 
+  left_join(genotypes) %>% 
+  select(treatment = irrigation, everything()) %>% 
+  select(all_of(sam_vars))
+
+sam_dat2_tidy <- lip_run2 %>% 
+  mutate(class = as_factor(if_else(str_detect(extraction_num, "run_qc"), "run_qc", "sample")),
+         extraction_num = as.numeric(if_else(str_detect(extraction_num, "run_qc"), "0", extraction_num)),
+         exp = as_factor(2)) %>% 
+  left_join(sam_dat2) %>% 
+  left_join(genotypes) %>% 
+  select(treatment = irrigation, everything()) %>% 
+  select(all_of(sam_vars))
+
+sam_dat <- sam_dat1_tidy %>% 
+  bind_rows(sam_dat2_tidy) %>% 
+  group_by(batch_lip) %>% 
+  mutate(daily_num = row_number()) %>% 
+  fill(tissue, .direction = "updown") %>% 
+  ungroup() %>% 
+  left_join(genotypes) %>% 
+  mutate(machine_num_lip = str_c(run_num_lip, "pos", sep = "_"),
+         treatment = as_factor(treatment))
+
+area_long <- area %>% 
+  pivot_longer(matches("^\\d+_pos$"),
+               names_to = "machine_num_lip",
+               values_to = "area") %>% 
+  left_join(sam_dat)
+
+# Data filtering ----------------------------------------------------------
+
+
+set_back_NA <- function(x){
+  for (i in seq_along(x)) {
+    if (x[[i]] == 0) {
+      x[[i]] <- NA
+    } else {
+      x[[i]] <- x[[i]]
+    }
+  }
+  x
+}
+
+
+# Imputation --------------------------------------------------------------
+
+features_na <- area_long %>% 
+  group_by(met) %>% 
+  mutate(area = set_back_NA(area)) %>% 
+  ungroup()
+
+missingness <- features_na %>% 
+  group_by(exp, met, tissue, treatment) %>% 
+  summarise(na = sum(is.na(area)),
+            n = n()) %>% 
+  mutate(percent_na = na/n*100) %>% 
+  ungroup()
+
+features <- features_na %>% 
+  left_join(missingness) %>% 
+  group_by(met) %>% 
+  #mutate(area = ifelse(percent_na >= 0 & is.na(area), rnorm(n = 1, mean = 0.5*min(area, na.rm = T)), area)) %>% 
+  ungroup()
+
+#miss_for_imp <- features %>% 
+#  pivot_wider(names_from = met,
+#              values_from = area,
+#              id_cols = c(exp, machine_num_lip, met, tissue, treatment)) %>% 
+#  select(exp, machine_num_lip, tissue, treatment, matches("Cluster_")) %>% 
+#  group_by(exp, tissue, treatment) %>% 
+#  nest() %>% 
+#  mutate(new = map(.x = data, .f = as.data.frame),
+#         new = map(.x = new, .f = ~`row.names<-`(.x, .x$machine_num_lip)),
+#         new = map(.x = new, .f = ~select(.x, !starts_with("machine"))),
+#         new = map(.x = new, .f = as.matrix),
+#         imp = map_dfc(.x = new, .f = impute.QRILC)[[1]])
+
+#imp_out_loop <- vector(mode = "list", length = length(miss_for_imp$new))
+
+#for (j in seq_along(miss_for_imp$new)) {
+#  imp_out_loop[[j]] <- impute.QRILC(miss_for_imp$new[[j]])[[1]]
+#}
+
+#can currently not solve per tissue, treatment and exp
+#proceed with qrilc on all
+
+imp <- features_na %>% 
+  pivot_wider(names_from = met,
+              values_from = area,
+              id_cols = c(exp, machine_num_lip, tissue, treatment)) %>% 
+  select(exp, machine_num_lip, tissue, treatment, matches("Cluster_")) %>% 
+  as.data.frame()
+
+row.names(imp) <- imp$machine_num_lip
+imp <- imp %>% 
+  select(-exp, -tissue, -treatment, -machine_num_lip) %>% 
+  as.matrix()
+
+imp <- impute.QRILC(imp)
+
+
+features <- imp[[1]] %>% 
+  as_tibble(rownames = "machine_num_lip") %>% 
+  pivot_longer(cols = matches("Cluster_"),
+               names_to = "met",
+               values_to = "imp") %>% 
+  left_join(features_na)
+
+adjust_imp <- features %>% 
+  group_by(met) %>% 
+  summarise(offset = if_else (any(imp <0), 1.001*abs(min(imp)),0))
+
+
+features_filtered <- features %>% 
+  left_join(missingness) %>%
+  #filter(percent_na <= 60)
+  left_join(adjust_imp) %>% 
+  mutate(imp = imp + offset) %>% 
+  select(-offset)
+
+# Internal Standard Normalization -----------------------------------------
+
+#isvec <- features %>% 
+#  filter(met=="m_44") %>% 
+#  select(sample_id, is = imp)
+
+features <- features_filtered %>% 
+#  full_join(isvec) %>% 
+  mutate(isnorm=imp) %>% #currently no int_stand
+#  filter(met != "m_44") %>% 
+  mutate(sample_weight = if_else(sample_weight == 0|is.na(sample_weight), 50, sample_weight))
+
+
+# Fit linear model on QCs -------------------------------------------------
+
+by_batch_lip <- features %>% 
+  filter(class=="run_qc") %>% 
+  group_by(batch_lip, met) %>% # need to change treatment_batch_lip_corr
+  nest()
+
+feature_model <- function(df) {
+  lm(isnorm ~ daily_num, data = df)
+}
+
+
+by_batch_lip <- by_batch_lip %>% 
+  mutate(model = map(data, feature_model),
+         predicts = map2(data, model, add_predictions),
+         coefficients = map(model, tidy),
+         aug = map(model, augment),
+         glance = map (model, glance))
+
+coefs_aug <- unnest(by_batch_lip, aug) %>% 
+  select(batch_lip, met, .resid, daily_num)
+
+coefs_glance <- unnest(by_batch_lip,glance) %>% 
+  select(batch_lip, met, adj.r.squared)
+
+coefs_term <- unnest(by_batch_lip, coefficients) %>% 
+  pivot_wider(id_cols = c(batch_lip, met),
+              names_from = "term",
+              values_from = estimate) %>% 
+  rename(x = daily_num,
+         intercept = `(Intercept)`)
+
+
+coefs_pvalue <- by_batch_lip %>% 
+  select(batch_lip, met, coefficients) %>%
+  ungroup() %>% 
+  unnest(coefficients) %>% 
+  pivot_wider(id_cols = c(batch_lip, met),
+              names_from = "term",
+              values_from = p.value) %>% 
+  rename(intercept_pval = `(Intercept)`,
+         daily_num_pval = daily_num) %>% 
+  full_join(features) %>% 
+  full_join(coefs_term) %>% 
+  #left_join(coefs_aug) %>% 
+  full_join(coefs_glance) 
+
+median <- features %>% 
+  filter(class=="run_qc") %>% 
+  group_by(batch_lip, met) %>% 
+  summarise(median = median (isnorm))
+
+features_lin <- unnest(by_batch_lip, predicts) %>% 
+  full_join(coefs_pvalue) %>% 
+  full_join(median) %>% 
+  mutate(pred = intercept + x*daily_num,
+         predp = ifelse(daily_num_pval <=0.05 & adj.r.squared >= 0.75, pred, median),
+         predp = ifelse(is.na(predp), median, predp)) %>%
+  select(- c("data", "model", "coefficients")) 
+
+adjust_lin <- features_lin %>% 
+  ungroup() %>% 
+  group_by(met) %>% 
+  summarise(lin_offset = if_else(any(predp <0), 1.001*abs(min(predp)),0))
+
+features_lin <- features_lin %>%
+  ungroup() %>% 
+  full_join(adjust_lin) %>%
+  full_join(features) %>% 
+  mutate(linnorm = (isnorm+lin_offset)/(predp+lin_offset),
+         linnorm_fw = linnorm/sample_weight,
+         linnorm_fw_log = log2(linnorm_fw))
+
+
+
+
+#Fit loess-model for QC-RLSC batch_lipwise####
+rejoin <- features
+features <- rejoin
+
+QC_loess <- features %>% 
+  ungroup() %>% 
+  filter(class == "run_qc") %>%
+  #filter(met!="m_44") %>% 
+  group_by(met,  batch_lip) %>% 
+  nest()
+
+loess_model <- function (df) {
+  loess(isnorm ~ daily_num, span = 1.5, data = df,control = loess.control(surface = "interpolate"))
+}
+
+start <- Sys.time()
+QC_loess <- QC_loess %>% 
+  mutate(model = map (data, loess_model),
+         daily_num = list(seq(1,65,1)),
+         predict = map2(model,daily_num,stats::predict))
+end <- Sys.time()
+end-start
+
+features_loess <- QC_loess %>%
+  unnest(c(predict, daily_num, batch_lip)) %>% 
+  select(-model, -data) %>% 
+  full_join(rejoin) %>% 
+  filter(!is.na(machine_num_lip))
+
+adjust <- features_loess %>% 
+  ungroup() %>% 
+  group_by(met) %>% 
+  summarise(offset = if_else (any(predict <0), 1.001*abs(min(predict)),0))
+
+features_loess <- features_loess %>% 
+  left_join(adjust) %>% 
+  mutate(loess_norm = (isnorm+offset)/(predict+offset),
+         loess_norm_fw = loess_norm/sample_weight,
+         loess_norm_fw_log = log2(loess_norm_fw))%>% 
+  ungroup()
+
+
+
+
+# Relative log abundance plots --------------------------------------------
+
+features_all <- features_lin %>% 
+  left_join(features_loess)
+
+
+features_all %>% 
+  filter(!is.na(genotype)) %>% 
+  group_by(met,  treatment) %>% 
+  mutate(sub = loess_norm_fw,
+         rla = log2(sub) - median(log2(sub))) %>% 
+  ggplot(aes(x = met, y = rla)) +
+  geom_boxplot() +
+  facet_grid(rows = vars(treatment), scales = "free")+
+  theme(axis.text.x = element_text(angle = 45, hjust = 1))
+
+features_all %>% 
+  #filter(!is.na(taxa)) %>% 
+  filter(treatment == 1, class == "sample") %>% 
+  mutate(run_num_lip = as_factor(run_num_lip),
+         batch_lip = as_factor(batch_lip)) %>% 
+  group_by(met,  treatment) %>% 
+  mutate(rla_imp = log2(imp) - median(log2(imp)),
+         rla_isnorm = log2(isnorm) - median(log2(isnorm)),
+         rla_loess_norm = log2(loess_norm_fw) - median(log2(loess_norm_fw))) %>%
+  pivot_longer(starts_with("rla"), names_to = "normalization", values_to = "rla") %>% 
+  ggplot(aes(x = met, y = rla)) +
+  geom_boxplot() +
+  facet_grid(rows = vars(normalization), cols = vars(treatment), scales = "free")+
+  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
+  ylim(c(-2,2))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "Ath_Dark_0_3_6_GC_met_rla_plot.jpg",
+             sep = "_"))
+
+features_all %>% 
+  #filter(!is.na(taxa)) %>% 
+  filter(class == "sample") %>% 
+  mutate(run_num_lip = as_factor(run_num_lip),
+         batch_lip = as_factor(batch_lip)) %>% 
+  group_by(met,  treatment) %>% 
+  mutate(rla_imp = log2(imp) - median(log2(imp)),
+         rla_isnorm = log2(isnorm) - median(log2(isnorm)),
+         rla_loess_norm = log2(loess_norm_fw) - median(log2(loess_norm_fw))) %>%
+  pivot_longer(starts_with("rla"), names_to = "normalization", values_to = "rla") %>% 
+  ggplot(aes(x = run_num_lip, y = rla, color = batch_lip)) +
+  geom_boxplot() +
+  facet_grid(rows = vars(normalization), scales = "free")+
+  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
+  ylim(c(-1,1))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_2_samples_rla_plot.jpg",
+             sep = "_"))
+
+
+# RSD estimation ----------------------------------------------------------
+
+
+
+
+RSD_bio_reps <- features_all %>% 
+  filter(class == "sample") %>% 
+  #filter(!is.na(taxa)) %>% 
+  group_by(met) %>% 
+  #filter((any(qc_imputed) == T)==F) %>% 
+  group_by(met, treatment, genotype, tissue, exp) %>% 
+  summarise(RSD_imp = sd(imp)/mean(imp),
+            RSD_isnorm = sd(isnorm) / mean(isnorm),
+            RSD_linnorm = abs(sd (linnorm_fw)/ mean(linnorm_fw)),
+            RSD_loess_norm = abs(sd(loess_norm_fw) / mean(loess_norm_fw)))
+            
+            
+RSD_bio_reps_mean <- RSD_bio_reps %>% 
+  #mutate(RSD_diff = RSD_imp-RSD_loess) %>% 
+  ungroup() %>% 
+  #group_by(treatment, tissue, exp) %>% 
+  summarise(#mean_RSD_loess = mean(RSD_loess),
+    mean_imp = mean(na.omit(RSD_imp)),
+    mean_loess_norm = mean(na.omit(RSD_loess_norm)),
+    mean_RSD_isnorm = mean(na.omit(RSD_isnorm )),
+    mean_linnorm = mean(na.omit(RSD_linnorm)))
+
+RSD_qcs <- features_all %>% 
+  filter(class == "run_qc") %>% 
+  group_by(met) %>% 
+  #filter((any(qc_imputed) == T)==F) %>% 
+  group_by(met, exp) %>% 
+  summarise(RSD_imp = sd(imp)/mean(imp),
+            RSD_isnorm = sd(isnorm) / mean(isnorm),
+            RSD_linnorm = abs(sd (linnorm_fw)/ mean(linnorm_fw)),
+            RSD_loess_norm = abs(sd(loess_norm_fw) / mean(loess_norm_fw)))
+
+RSD_qcs_mean <- RSD_qcs %>% 
+  #mutate(RSD_diff = RSD_imp-RSD_loess) %>% 
+  ungroup() %>% 
+  group_by(exp) %>% 
+  summarise(#mean_RSD_loess = mean(RSD_loess),
+    mean_imp = mean(na.omit(RSD_imp)),
+    mean_loess_norm = mean(na.omit(RSD_loess_norm)),
+    mean_RSD_isnorm = mean(na.omit(RSD_isnorm )),
+    mean_linnorm = mean(na.omit(RSD_linnorm)))
+
+
+
+#PCA testing chunk####
+##https://www.intechopen.com/books/metabolomics-fundamentals-and-applications/processing-and-visualization-of-metabolomics-data-using-r
+#exp1
+pca <- summary(prcomp(
+  features_all %>%
+    ungroup() %>% 
+    filter(exp == 1) %>% 
+    # group_by(treatment) %>% 
+    arrange(run_num_lip) %>%
+    #  filter(class=="sample") %>% 
+    # filter(met %in% overlap_met$met) %>% 
+    mutate(log_imp = log2(imp)) %>% 
+    pivot_wider(id_cols = c(run_num_lip, class),
+                names_from = met,
+                values_from = linnorm_fw_log) %>%
+    select(starts_with("Cluster_"))))
+
+sam_vars <- colnames(sam_dat)
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  full_join(sam_dat %>% 
+              #group_by(treatment) %>% 
+              arrange(run_num_lip) %>%
+              filter(exp == 1) %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  left_join(sam_dat) %>% 
+  mutate(batch_lip= as_factor(batch_lip),
+         class= as_factor(class)) %>% 
+  select(all_of(sam_vars), everything())
+#filter(PC1 >-1000, PC2 <30)
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = tissue)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = tissue)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_tissue_lin_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = treatment)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_treatment_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+
+#PCA after loess normalization
+
+pca <- summary(prcomp(
+  features_all %>%
+    ungroup() %>% 
+    filter(exp == 1) %>% 
+    # group_by(treatment) %>% 
+    arrange(run_num_lip) %>%
+    #  filter(class=="sample") %>% 
+    # filter(met %in% overlap_met$met) %>% 
+    mutate(log_imp = log2(imp)) %>% 
+    pivot_wider(id_cols = c(run_num_lip, class),
+                names_from = met,
+                values_from = loess_norm_fw_log) %>%
+    select(starts_with("Cluster_"))))
+
+sam_vars <- colnames(sam_dat)
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  full_join(sam_dat %>% 
+              #group_by(treatment) %>% 
+              arrange(run_num_lip) %>%
+              filter(exp == 1) %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  left_join(sam_dat) %>% 
+  mutate(batch_lip= as_factor(batch_lip),
+         class= as_factor(class)) %>% 
+  select(all_of(sam_vars), everything())
+#filter(PC1 >-1000, PC2 <30)
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = tissue)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = tissue)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_tissue_loess_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = treatment)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_treatment_loess_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+tissues <- c("leaves", "fruits")
+for(tiss in seq_along(tissues)){
+  
+  pca <- summary(prcomp(
+    features_all %>%
+      ungroup() %>% 
+      filter(exp == 1, tissue == tissues[[tiss]]) %>% 
+      # group_by(treatment) %>% 
+      arrange(run_num_lip) %>%
+      #  filter(class=="sample") %>% 
+      # filter(met %in% overlap_met$met) %>% 
+      mutate(log_imp = log2(imp)) %>% 
+      pivot_wider(id_cols = c(run_num_lip, class),
+                  names_from = met,
+                  values_from = loess_norm_fw_log) %>%
+      select(starts_with("Cluster_"))))
+  
+  sam_vars <- colnames(sam_dat)
+  
+  pca_plot <- as_tibble(pca$x) %>% 
+    mutate(join_num = 1:nrow(pca$x)) %>% 
+    full_join(sam_dat %>% 
+                #group_by(treatment) %>% 
+                arrange(run_num_lip) %>%
+                filter(exp == 1, tissue == tissues[[tiss]]) %>% 
+                mutate(join_num=1:nrow(pca$x))) %>%
+    left_join(sam_dat) %>% 
+    mutate(batch_lip= as_factor(batch_lip),
+           class= as_factor(class)) %>% 
+    select(all_of(sam_vars), everything())
+  #filter(PC1 >-1000, PC2 <30)
+  
+  exp_var <- as_tibble(pca[["importance"]])
+  
+  pca_plot %>% 
+    #  filter(treatment == "HL") %>% 
+    ggplot()+
+    geom_jitter(aes(x=PC1, y=PC2,  color = treatment)) +
+    stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+    ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+    xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+  
+  ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+               "cmQTL_val1", tissues[[tiss]], "treatment_loess_PCA.jpg",
+               sep = "_"),
+         width = 183,
+         height = 100,
+         units = "mm",
+         dpi = 300)
+}
+
+
+# PCA before normalization
+
+pca <- summary(prcomp(
+  features_all %>%
+    ungroup() %>% 
+    filter(exp == 1) %>% 
+    # group_by(treatment) %>% 
+    arrange(run_num_lip) %>%
+    #  filter(class=="sample") %>% 
+    # filter(met %in% overlap_met$met) %>% 
+    mutate(log_imp = log2(imp)) %>% 
+    pivot_wider(id_cols = c(run_num_lip, class),
+                names_from = met,
+                values_from = log_imp) %>%
+    select(starts_with("Cluster_"))))
+
+sam_vars <- colnames(sam_dat)
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  full_join(sam_dat %>% 
+              #group_by(treatment) %>% 
+              arrange(run_num_lip) %>%
+              filter(exp == 1) %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  left_join(sam_dat) %>% 
+  mutate(batch_lip= as_factor(batch_lip),
+         class= as_factor(class)) %>% 
+  select(all_of(sam_vars), everything())
+#filter(PC1 >-1000, PC2 <30)
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = tissue)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = tissue)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_tissue_imp_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = batch_lip)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = batch_lip)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_batch_imp_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+
+
+
+# Plot all metabolites ----------------------------------------------------
+
+plotmets <- features_all %>% distinct(met) %>% as_vector
+plotmet_labs <- plotmets %>% as_tibble() %>% 
+  left_join(met_dat, by= c("value" = "met")) %>% 
+  #mutate(peak_num = base::rank(HMDB_clear_name, ties.method = "first"),
+  #       dup = sum(peak_num),
+  #       HMDB_clear_name_unique = if_else(dup>1, str_c(HMDB_clear_name, peak_num), HMDB_clear_name)) %>% 
+  #ungroup() %>% 
+  select(Compound_Name) %>% as_vector()
+
+plot_out <- vector("list", length = length(plotmets))
+
+for (meta in seq_along(plotmets)) {
+  
+  plot_out [[meta]] <- features_all %>% 
+    mutate(xint = if_else(daily_num == 4, run_num_lip-3.5, max(run_num_lip)),
+           is_miss = as_factor(if_else(is.na(area), T, F))) %>% 
+    filter(met == plotmets[[meta]]) %>%
+    filter(class!="blank") %>% 
+    ggplot(aes(x=run_num_lip, y=isnorm)) +
+    geom_point(aes(color = class, shape = is_miss)) +
+    geom_point(aes(y=predict), color="black", size=0.1) +
+    geom_vline(aes(xintercept = xint))+
+   # facet_grid(rows = vars(treatment), cols = vars(rep), scales = "free") +
+    ggtitle(label = plotmet_labs[[meta]])
+
+}
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"_loess_fit.pdf"))
+
+
+for (meta in seq_along(plotmets)) {
+  print(plot_out[[meta]])
+}
+
+dev.off()
+
+plot_out <- vector("list", length = length(plotmets))
+
+for (meta in seq_along(plotmets)) {
+  
+  plot_out [[meta]] <- features_all %>% 
+    mutate(xint = if_else(daily_num == 4, run_num_lip-3.5, max(run_num_lip))) %>% 
+    filter(met == plotmets[[meta]]) %>%
+    filter(class!="blank") %>% 
+    ggplot(aes(x=run_num_lip, y=loess_norm_fw_log)) +
+    geom_point(aes(color=class)) +
+    #geom_point(aes(y=predp), color="black", size=0.1) +
+    geom_vline(aes(xintercept = xint))+
+    # facet_grid(rows = vars(treatment), cols = vars(rep), scales = "free") +
+    ggtitle(label = plotmet_labs[[meta]])
+  
+}
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"_loess_norm_fw_log.pdf"))
+
+
+for (meta in seq_along(plotmets)) {
+  print(plot_out[[meta]])
+}
+
+dev.off()
+
+for (meta in seq_along(plotmets)) {
+  
+  plot_out [[meta]] <- features_all %>% 
+    mutate(xint = if_else(daily_num == 4, run_num_lip-3.5, max(run_num_lip))) %>% 
+    filter(met == plotmets[[meta]]) %>%
+    filter(class!="blank") %>% 
+    ggplot(aes(x=run_num_lip, y=linnorm_fw)) +
+    geom_point(aes(color=class)) +
+    geom_vline(aes(xintercept = xint))+
+    facet_grid(rows = vars(treatment), scales = "free") +
+    ggtitle(label = plotmet_labs[[meta]])
+  
+}
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"_linnorm.pdf"))
+
+for (meta in seq_along(plotmets)) {
+  print(plot_out[[meta]])
+}
+
+dev.off()
+
+rescale <- features_all %>% 
+  group_by(met, tissue, exp) %>% 
+  summarise(rescale = median(imp))
+
+features_out <- features_all %>% 
+  left_join(rescale) %>% 
+  group_by(met, tissue, exp) %>% 
+  mutate(loess_norm_med = loess_norm_fw/median(loess_norm_fw),
+         rescaled = loess_norm_med*rescale) %>% 
+  select(all_of(sam_vars), met, Compound_Name, Compound_Class, loess_norm_fw, loess_norm_med, area, rescaled)
+
+features_out %>% 
+  filter(met == "Cluster_02177", tissue == "fruits", exp == 1) %>% 
+  ggplot(aes(x = run_num_lip, y = loess_norm_fw)) +
+  geom_point()
+
+# Write files -------------------------------------------------------------
+
+
+
+write_csv(features_out, 
+          str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                "cmQTL_val_1_2_feat_dat_lip.csv",
+                sep = "_"))
+
+write_csv(met_dat, 
+          str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                "cmQTL_val_1_2_met_dat_lip.csv",
+                sep = "_"))
+
+write_csv(sam_dat, 
+          str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                "cmQTL_val_1_2_sam_dat_lip.csv",
+                sep = "_"))
+
+write_csv(missingness, 
+          str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                "cmQTL_val_1_2_miss_lip.csv",
+                sep = "_"))
diff --git a/workflows/polar_LC_MS_analysis/210903_secondary_analysis_cmQTL_val_1.R b/workflows/polar_LC_MS_analysis/210903_secondary_analysis_cmQTL_val_1.R
new file mode 100644
index 0000000..c8fe67b
--- /dev/null
+++ b/workflows/polar_LC_MS_analysis/210903_secondary_analysis_cmQTL_val_1.R
@@ -0,0 +1,1535 @@
+rm(list = ls())
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+
+library(openxlsx)
+library(tidyverse)
+library(car)
+library(pheatmap)
+library(broom)
+library(ggpubr)
+library(viridisLite)
+library(ggtext)
+library(glue)
+
+# Directory setting -------------------------------------------------------
+
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "analysis", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+# Data loading ------------------------------------------------------------
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_normalization$"),
+                               pattern = "^\\d{6}_normalization"),
+                   decreasing = T)[[1]]
+
+latest_norm <- str_c(current, "/", latest)
+
+setwd(latest_norm)
+
+latest_norm_date <- str_extract(latest, pattern = "^\\d{6}")
+
+sam_dat <- read_csv(str_c(latest_norm_date, "_cmQTL_val_1_2_sam_dat_LC.csv"))
+met_dat <- read_csv(str_c(latest_norm_date, "_cmQTL_val_1_2_met_dat_LC.csv"), col_types = "cddcf") %>% 
+  filter(Compound_Name != "isovitexin")
+feat_dat <- read_csv(str_c(latest_norm_date, "_cmQTL_val_1_2_feat_dat_LC.csv"), col_types = "fcffffTiifidfficccfdddd")
+
+setwd(out_dir)
+# Data combination --------------------------------------------------------
+
+mets <- met_dat$met
+genotypes <- sam_dat %>% distinct(genotype,.keep_all = T) %>% 
+  select(genotype, alias)
+
+LC_classes <- feat_dat %>% 
+  distinct(Compound_Class, Compound_Name, met)
+
+LC_long <- feat_dat %>% 
+  filter(exp == 1, class == "sample")
+
+
+# Means -------------------------------------------------------------------
+
+means_tec_rep <- LC_long %>% 
+  group_by(plantline, alias, genotype, treatment, met, tissue, LIMS_ID) %>% 
+  summarise(mean_tec_rep = mean(rescaled)) %>% 
+  ungroup()
+
+means <- means_tec_rep %>% 
+  group_by(met, tissue, treatment, genotype, alias) %>% 
+  summarise(mean = mean(mean_tec_rep),
+            sd = sd(mean_tec_rep),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(se = sd/sqrt(n))
+
+miss_per_treat <- LC_long %>% 
+  group_by(met, tissue, treatment) %>% 
+  summarise(na = sum(is.na(area)),
+            n = n()) %>% 
+  mutate(percent_na = na/n*100) %>% 
+  ungroup()
+
+
+# Significance analysis ---------------------------------------------------
+
+
+
+LC_tidy <- means_tec_rep %>% 
+  pivot_wider(id_cols = c(genotype, alias, treatment, tissue, LIMS_ID),
+              names_from = met,
+              values_from = mean_tec_rep)
+
+LC_tidy_numeric <- LC_tidy %>% 
+  select(all_of(mets))
+
+LC_aov <- map(.x = LC_tidy_numeric, .f = ~aov(.x ~ alias * treatment*tissue, data = LC_tidy))
+
+
+LC_tuk <- map(.x = LC_aov, .f = ~TukeyHSD(.x)) %>% 
+  map(.f = tidy) %>% 
+  map2(.y = names(LC_aov), .f = ~.x %>% mutate(var = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+sig_LC_groups <- LC_tuk %>% 
+  filter(term == "alias:treatment:tissue") %>% 
+  separate(col = contrast, into = c("group1", "group2"), sep = "-")
+
+sig_LC <- sig_LC_groups %>%  
+  separate(group1, into = c("alias1", "treatment1", "tissue1"), sep = ":") %>% 
+  separate(group2, into = c("alias2", "treatment2", "tissue2"), sep = ":") %>% 
+  filter(treatment1 == treatment2, tissue1 == tissue2) %>% 
+  filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT") %>% 
+  ungroup() %>% 
+  mutate(p.signif = if_else(adj.p.value <= 0.05, "*", "ns")) %>% 
+  left_join(means, by = c("var" = "met", "treatment1" = "treatment", "alias1" = "alias", "tissue1" = "tissue")) %>% 
+  select(var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1 = mean, se1 = se) %>%
+  left_join(means, by = c("var" = "met", "treatment2" = "treatment", "alias2" = "alias", "tissue2" = "tissue")) %>% 
+  select(var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1, mean2 = mean, se1, se2 = se) %>% 
+  group_by(treatment1, tissue1, var) %>% 
+  mutate(tot_val1 = mean1 + se1,
+         tot_val2 = mean2 + se2,
+         y.position = 1.1*(max(tot_val1, tot_val2))) %>% 
+  rename(met = var,
+         group1 = alias1,
+         group2 = alias2,
+         treatment = treatment1,
+         tissue = tissue1) %>% 
+  mutate(met = as_factor(met),
+         group1 = as_factor(group1),
+         group2 = as_factor(group2),
+         treatment = as_factor(treatment),
+         tissue = as_factor(tissue)) %>% 
+  ungroup()
+
+sig_mets <- sig_LC %>% 
+  filter(p.signif == "*") %>% 
+  distinct(met) %>% 
+  mutate(sig = T)
+
+
+# Significance with t-test ------------------------------------------------
+
+LC_tidy <- means_tec_rep %>% 
+  pivot_wider(id_cols = c(genotype, alias, treatment, tissue, LIMS_ID),
+              names_from = met,
+              values_from = mean_tec_rep) %>% 
+  mutate(group = str_c(tissue, treatment, alias, sep = "_"))
+
+LC_tidy_numeric <- LC_tidy %>% 
+  select(all_of(mets))
+
+LC_t <- map(.x = LC_tidy_numeric,
+             .f = ~pairwise.t.test(x = .x ,
+                                   g = LC_tidy$group,
+                                   p.adjust.method = "none",
+                                   pool.sd = F)) %>% 
+  map(.f = tidy)
+
+LC_t_tidy <- LC_t %>% 
+  map2(.y = names(LC_t), .f = ~.x %>% mutate(var = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+sig_LC<- LC_t_tidy %>% 
+  separate(group1, into = c("tissue1", "treatment1", "alias1"), sep = "_") %>% 
+  separate(group2, into = c("tissue2", "treatment2", "alias2"), sep = "_") %>% 
+  filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT",
+         tissue1 == tissue2, treatment1 == treatment2) %>% 
+  group_by(var) %>% 
+  mutate(adj.p.value = p.adjust(p.value)) %>% 
+  ungroup() %>% 
+  mutate(p.signif = if_else(adj.p.value <= 0.05, "*", "ns")) %>% 
+  left_join(means, by = c("var" = "met", "treatment1" = "treatment", "alias1" = "alias", "tissue1" = "tissue")) %>% 
+  select(p.value, var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1 = mean, se1 = se) %>%
+  left_join(means, by = c("var" = "met", "treatment2" = "treatment", "alias2" = "alias", "tissue2" = "tissue")) %>% 
+  select(p.value, var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1, mean2 = mean, se1, se2 = se) %>% 
+  group_by(treatment1, tissue1, var) %>% 
+  mutate(tot_val1 = mean1 + se1,
+         tot_val2 = mean2 + se2,
+         y.position = 1.1*(max(tot_val1, tot_val2))) %>% 
+  ungroup() %>% 
+  rename(met = var,
+         group1 = alias1,
+         group2 = alias2,
+         treatment = treatment1,
+         tissue = tissue1) %>% 
+  left_join(miss_per_treat) %>% 
+  mutate(met = as_factor(met),
+         group1 = as_factor(group1),
+         group2 = as_factor(group2),
+         treatment = as_factor(treatment),
+         tissue = as_factor(tissue),
+         p.signif = if_else(percent_na >= 60, "ns", p.signif))
+  
+
+sig_mets <- sig_LC %>% 
+  filter(p.signif == "*") %>% 
+  distinct(met) %>% 
+  mutate(sig = T)
+
+# Heatmap scaled all-----------------------------------------------------------------
+
+heat.LC <- means %>% 
+  group_by(met) %>% 
+  mutate(se = sd/sqrt(n),
+         total_norm = mean/mean(mean),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.na(log_norm)| is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm)),
+         log_norm_level = if_else(is.na(log_norm_level), 0, log_norm_level)) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm_level) %>% 
+  left_join(met_dat) %>%
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.LC) <- heat.LC$met
+
+mat.heat.LC <- heat.LC %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.LC %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.LC$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.LC_signif <- means %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_LC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.LC)
+
+rownames(heat.LC_signif) <- heat.LC_signif$met
+
+mat.heat.LC_signif <- heat.LC_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+pheatmap.LC <- pheatmap(mat.heat.LC,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.LC_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                        angle_col = 45,
+                        fontsize_col = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_heatmap_rel_all.jpg",
+                                          sep = "_")
+)
+
+# Heatmap scaled per tissue-----------------------------------------------------------------
+
+heat.LC <- means%>% 
+  group_by(tissue, met) %>% 
+  mutate(total_norm = mean/mean(mean),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm_level) %>% 
+  left_join(met_dat) %>%
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.LC) <- heat.LC$met
+
+mat.heat.LC <- heat.LC %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.LC %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.LC$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.LC_signif <- means %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_LC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.LC)
+
+rownames(heat.LC_signif) <- heat.LC_signif$met
+
+mat.heat.LC_signif <- heat.LC_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.LC <- pheatmap(mat.heat.LC,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.LC_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                        angle_col = 45,
+                        fontsize_col = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_heatmap_rel_tissue.jpg",
+                                          sep = "_")
+)
+
+
+# Heatmap scaled per tissue and treatment-----------------------------------------------------------------
+
+heat.LC <- means%>% 
+  group_by(tissue, met, treatment) %>% 
+  mutate(total_norm = mean/mean(mean),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm_level) %>% 
+  left_join(met_dat) %>%
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.LC) <- heat.LC$met
+
+mat.heat.LC <- heat.LC %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.LC %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.LC$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.LC_signif <- means %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_LC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.LC)
+
+rownames(heat.LC_signif) <- heat.LC_signif$met
+
+mat.heat.LC_signif <- heat.LC_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.LC <- pheatmap(mat.heat.LC,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.LC_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                        angle_col = 45,
+                        fontsize_col = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_heatmap_rel_tissue_treatment.jpg",
+                                          sep = "_")
+)
+
+
+
+# Per metabolite comparisons ----------------------------------------------
+
+norm_MM <- means %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(tissue, treatment, met, MM_mean = mean)
+
+fc <- means_tec_rep %>% 
+  left_join(norm_MM) %>% 
+  mutate(fc = mean_tec_rep/MM_mean) %>% 
+  group_by(tissue, treatment, alias, genotype, met) %>% 
+  summarise(mean_fc = mean(fc),
+            sd = sd(fc),
+            n = n()) %>% 
+  mutate(se = sd/sqrt(n),
+         group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  left_join(sig_LC, by = c("tissue", "treatment", "met", "alias" = "group2")) %>% 
+  group_by(met) %>% 
+  filter(any(p.signif == "*"), all(is.finite(mean_fc)), tissue != "flowers") %>% 
+  left_join(met_dat) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  ungroup() %>% 
+  mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*"))),
+         genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+
+plotmets <- fc %>% distinct(met) %>% as_vector()
+plottissues <- fc %>% distinct(tissue) %>% as_vector() %>% as.character
+
+labelnames <- plotmets %>% as_tibble() %>% 
+  rename(met = value) %>% 
+  left_join(met_dat) %>% left_join(LC_classes) %>%
+  select(Compound_Name) %>% as_vector()
+
+
+plot_out <- vector("list", length = length(plotmets))
+per_comp_y <- fc %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(mean = max(mean_fc),
+            se = max(se))
+
+for(tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    
+    
+    sig_bar <- fc %>% 
+      group_by(tissue, treatment, met) %>% 
+      mutate(tot_val = max(mean_fc + se)) %>%
+      mutate(y.position = tot_val + 0.25*max(tot_val)) %>%
+      ungroup() %>% 
+      rename(genotype1 = genotype) %>% 
+      left_join(genotypes, by = c("group1" = "alias")) %>% 
+      select(-group1) %>% 
+      mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*")))) %>% 
+      rename(group1 = genotype1, group2 = genotype) %>% 
+      filter(!is.na(p.signif)) %>% 
+      filter(met == plotmets[[meta]], tissue2 == plottissues[[tiss]])
+    
+    
+    plot_out[[tiss]][[meta]] <- fc %>% 
+      filter(met == plotmets[[meta]], tissue == plottissues[[tiss]]) %>% 
+      mutate(treatment = fct_relevel(treatment, c("0.4", "0.6", "0.8", "1"))) %>% 
+      ggplot(aes(x = genotype, y = mean_fc)) +
+      geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+      geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+      stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                         step.increase = 0.07,
+                         hide.ns = T) +
+      facet_grid(cols = vars(treatment)) +
+      theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+            panel.background = element_rect(fill = "white"),
+            panel.border = element_rect(color = "black",fill = NA),
+            text = element_text(size = 14),
+            legend.text = element_markdown()) +
+      ylab("Mean fold-change") +
+      ggtitle(label = str_c(labelnames[[meta]], "in", plottissues[[tiss]], sep = " ")) +
+      scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  }
+  
+}
+
+plot_out[[1]][[2]]
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"cmQTL_val1_LC_col_plots.pdf"),
+    width = 9,
+    height = 6)
+
+for (tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    print(plot_out[[tiss]][[meta]])  
+  }
+  
+}
+
+dev.off()
+
+# Per metabolite comparisons scaled 1----------------------------------------------
+
+norm_MM_1 <- means %>% 
+  filter(genotype == "MoneyMaker", treatment == 1) %>% 
+  select(tissue, met, MM_mean = mean)
+
+fc_1_ind <- means_tec_rep %>% 
+  left_join(norm_MM_1) %>% 
+  mutate(fc = mean_tec_rep/MM_mean)
+
+fc_1 <- means_tec_rep %>% 
+  left_join(norm_MM_1) %>% 
+  mutate(fc = mean_tec_rep/MM_mean) %>% 
+  group_by(tissue, treatment, alias, genotype, met) %>% 
+  summarise(mean_fc = mean(fc),
+            sd = sd(fc),
+            n = n()) %>% 
+  mutate(se = sd/sqrt(n),
+         group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  left_join(sig_LC, by = c("tissue", "treatment", "met", "alias" = "group2")) %>% 
+  group_by(met) %>% 
+  #filter(any(p.signif == "*"), all(is.finite(mean_fc)), tissue != "flowers") %>% 
+  left_join(met_dat) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  ungroup() %>% 
+  mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*"))),
+         genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+
+plotmets <- fc_1 %>% distinct(met) %>% as_vector()
+plottissues <- fc_1 %>% distinct(tissue) %>% as_vector() %>% as.character
+
+labelnames <- plotmets %>% as_tibble() %>% 
+  rename(met = value) %>% 
+  left_join(met_dat) %>% left_join(LC_classes) %>%
+  select(Compound_Name) %>% as_vector()
+
+
+plot_out <- vector("list", length = length(plotmets))
+per_comp_y <- fc_1 %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(mean = max(mean_fc),
+            se = max(se))
+
+for(tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    
+    
+    sig_bar <- fc_1 %>% 
+      group_by(tissue, treatment, met) %>% 
+      mutate(tot_val = max(mean_fc + se)) %>%
+      mutate(y.position = tot_val + 0.25*max(tot_val)) %>%
+      ungroup() %>% 
+      rename(genotype1 = genotype) %>% 
+      left_join(genotypes, by = c("group1" = "alias")) %>% 
+      select(-group1) %>% 
+      mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*")))) %>% 
+      rename(group1 = genotype1, group2 = genotype) %>% 
+      filter(!is.na(p.signif)) %>% 
+      filter(met == plotmets[[meta]], tissue2 == plottissues[[tiss]])
+    
+    
+    plot_out[[tiss]][[meta]] <- fc_1 %>% 
+      filter(met == plotmets[[meta]], tissue == plottissues[[tiss]]) %>% 
+      mutate(treatment = fct_relevel(treatment, c("0.4", "0.6", "0.8", "1"))) %>% 
+      ggplot(aes(x = genotype, y = mean_fc)) +
+      geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+      geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+      stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                         step.increase = 0.07,
+                         hide.ns = T) +
+      facet_grid(cols = vars(treatment)) +
+      theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+            panel.background = element_rect(fill = "white"),
+            panel.border = element_rect(color = "black",fill = NA),
+            text = element_text(size = 12),
+            legend.text = element_markdown()) +
+      ylab("Mean fold-change") +
+      ggtitle(label = str_c(labelnames[[meta]], "in", plottissues[[tiss]], sep = " ")) +
+      scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  }
+  
+}
+
+plot_out[[1]][[2]]
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"cmQTL_val1_LC_scaled1_col_plots.pdf"),
+    width = 15.8/2.54,
+    height = 8/2.54)
+
+for (tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    print(plot_out[[tiss]][[meta]])  
+  }
+  
+}
+
+dev.off()
+
+
+# Heatmap scaled Wildtype-----------------------------------------------------------------
+
+heat.LC <- fc %>% 
+  group_by(Compound_Name, met) %>% 
+  mutate(log_norm = log2(mean_fc),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  #mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(Compound_Name, met),
+              names_from = group,
+              values_from = log_norm) %>% 
+  left_join(LC_classes) %>%  
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.LC) <- heat.LC$met
+
+mat.heat.LC <- heat.LC %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.LC %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.LC$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, treatment, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, treatment, tissue, genotype)
+
+heat.LC_signif <- means %>% 
+  distinct(tissue, treatment, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_LC, by = c("met", "tissue", "treatment", "alias" = "group2")) %>% 
+  left_join(sig_mets) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, treatment, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.LC)
+
+rownames(heat.LC_signif) <- heat.LC_signif$met
+
+mat.heat.LC_signif <- heat.LC_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+pheatmap.LC <- pheatmap(mat.heat.LC,
+                         #color = RColorBrewer::brewer.pal(7,"BuRd"),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-2.5,-1.5, -0.5 ,0.5,1.5,2.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.LC_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                        angle_col = 45,
+                        fontsize_col = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val_1_heatmap_rel_tissue_wt.jpg",
+                                          sep = "_")
+)
+
+# Levene analysis simple anova-------------------------------------------------------------
+
+miss_per_clust <- LC_long %>% 
+  group_by(met, tissue) %>% 
+  summarise(na = sum(is.na(area)),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(percent_na_clust = na/n*100) %>% 
+  select(met, tissue, percent_na_clust)
+
+miss_any_treat <- miss_per_treat %>% 
+  group_by(met, tissue) %>% 
+  summarise(miss_comp_treat = if_else(any(percent_na == 100), T,F))
+
+means_tec_rep_lt <- means_tec_rep %>% 
+  group_by(met, tissue, treatment, genotype, alias) %>% 
+  mutate(lev_t = abs(log10(mean_tec_rep) - log10(median(mean_tec_rep)))) %>% 
+  ungroup()
+
+
+means_lt <- means_tec_rep_lt %>% 
+  ungroup() %>% 
+  group_by(met, tissue, treatment, genotype, alias) %>% 
+  summarise(mean = mean(lev_t),
+            sd = sd(lev_t),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(se = sd/sqrt(n))
+
+lt_tidy <- means_tec_rep_lt %>% 
+  filter(tissue == "fruits") %>% 
+  ungroup() %>% 
+  pivot_wider(id_cols = c(tissue, treatment, genotype, alias, LIMS_ID),
+              names_from = met,
+              values_from = lev_t)
+
+lt_tidy_numeric <- lt_tidy %>% 
+  select(all_of(mets))
+
+lt_aov <- map(.x = lt_tidy_numeric, .f = ~aov(.x ~ alias*treatment, data = lt_tidy))
+
+lt_aov_tidy <- lt_aov %>% 
+  map(tidy) %>% 
+  map2(.y = names(lt_aov), .f = ~.x %>% mutate(lt_vars = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+lt_tuk <- map(.x = lt_aov, .f = ~TukeyHSD(.x)) %>% 
+  map(.f = tidy) %>% 
+  map2(.y = names(lt_aov), .f = ~.x %>% mutate(var = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+sig_LC_lt_groups <- lt_tuk %>% 
+  filter(term == "alias:treatment") %>% 
+  separate(col = contrast, into = c("group1", "group2"), sep = "-")
+
+sig_LC_lt <- sig_LC_lt_groups %>%  
+  separate(group1, into = c("alias1", "treatment1"), sep = ":") %>% 
+  separate(group2, into = c("alias2", "treatment2"), sep = ":") %>% 
+  filter(treatment1 == treatment2) %>% 
+  filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT") %>% 
+  ungroup() %>% 
+  mutate(p.signif = if_else(adj.p.value <= 0.05, "*", "ns")) %>% 
+  left_join(means_lt, by = c("var" = "met", "treatment1" = "treatment", "alias1" = "alias")) %>% 
+  select(var, treatment1, treatment2, alias1, alias2,  p.signif, mean1 = mean, se1 = se) %>%
+  left_join(means_lt, by = c("var" = "met", "treatment2" = "treatment", "alias2" = "alias")) %>% 
+  select(var, treatment1, treatment2, alias1, alias2,  p.signif, mean1, mean2 = mean, se1, se2 = se) %>% 
+  group_by(treatment1,  var) %>% 
+  mutate(tot_val1 = mean1 + se1,
+         tot_val2 = mean2 + se2,
+         y.position = 1.1*(max(tot_val1, tot_val2))) %>% 
+  rename(met = var,
+         group1 = alias1,
+         group2 = alias2,
+         treatment = treatment1) %>% 
+  mutate(met = as_factor(met),
+         group1 = as_factor(group1),
+         group2 = as_factor(group2),
+         treatment = as_factor(treatment)) %>% 
+  ungroup()
+
+sig_mets <- sig_LC_lt %>% 
+  filter(p.signif == "*") %>% 
+  distinct(met) %>% 
+  mutate(sig = T)
+
+# Levene with t-test ------------------------------------------------
+skip <-  F
+
+if(skip == T) {
+  print("Levene t-test skipped") 
+} else {
+  LC_tidy <- means_tec_rep_lt %>% 
+    pivot_wider(id_cols = c( genotype, alias, treatment, tissue, LIMS_ID),
+                names_from = met,
+                values_from = lev_t) %>% 
+    mutate(group = str_c(tissue, treatment, alias, sep = "_"))
+  
+  LC_tidy_numeric <- LC_tidy %>% 
+    select(all_of(mets))
+  
+  LC_t <- map(.x = LC_tidy_numeric,
+              .f = ~pairwise.t.test(x = .x ,
+                                    g = LC_tidy$group,
+                                    p.adjust.method = "none",
+                                    pool.sd = F)) %>% 
+    map(.f = tidy)
+  
+  LC_t_tidy <- LC_t %>% 
+    map2(.y = names(LC_t), .f = ~.x %>% mutate(var = .y)) %>% 
+    purrr::reduce(bind_rows)
+  
+  sig_LC_lt<- LC_t_tidy %>% 
+    separate(group1, into = c("tissue1", "treatment1", "alias1"), sep = "_") %>% 
+    separate(group2, into = c("tissue2", "treatment2", "alias2"), sep = "_") %>% 
+    filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT",
+           tissue1 == tissue2, treatment1 == treatment2) %>% 
+    group_by(var) %>% 
+    mutate(adj.p.value = p.adjust(p.value)) %>% 
+    #mutate(adj.p.value = p.value * 121) %>% 
+    ungroup() %>% 
+    mutate(p.signif = if_else(p.value <= 0.05, "*", "ns")) %>% 
+    left_join(means_lt, by = c("var" = "met", "treatment1" = "treatment", "alias1" = "alias", "tissue1" = "tissue")) %>% 
+    select(var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1 = mean, se1 = se, p.value, adj.p.value) %>%
+    left_join(means_lt, by = c("var" = "met", "treatment2" = "treatment", "alias2" = "alias", "tissue2" = "tissue")) %>% 
+    select(var, treatment1, treatment2, alias1, alias2, tissue1, tissue2, p.signif, mean1, mean2 = mean, se1, se2 = se, p.value, adj.p.value) %>% 
+    group_by(treatment1, tissue1, var) %>% 
+    mutate(tot_val1 = mean1 + se1,
+           tot_val2 = mean2 + se2,
+           y.position = 1.1*(max(tot_val1, tot_val2))) %>% 
+    ungroup() %>% 
+    rename(met = var,
+           group1 = alias1,
+           group2 = alias2,
+           treatment = treatment1,
+           tissue = tissue1) %>% 
+    left_join(miss_per_treat) %>% 
+    mutate(met = as_factor(met),
+           group1 = as_factor(group1),
+           group2 = as_factor(group2),
+           treatment = as_factor(treatment),
+           tissue = as_factor(tissue),
+           p.signif = if_else(percent_na >= 60, "ns", p.signif))
+  
+  
+  sig_mets <- sig_LC_lt %>% 
+    filter(p.signif == "*") %>% 
+    distinct(met) %>% 
+    mutate(sig = T)
+  
+}
+# Per metabolite comparisons unscaled levene----------------------------------------------
+
+norm_MM_1_lt <- means_lt %>% 
+  filter(genotype == "MoneyMaker", treatment == 1) %>% 
+  select(tissue, met, MM_mean = mean)
+
+fc_1_lt <- means_tec_rep_lt %>% 
+  #left_join(norm_MM_1) %>% 
+  #mutate(fc = mean_tec_rep/MM_mean) %>% 
+  group_by(tissue, treatment, alias, genotype, met) %>% 
+  summarise(mean_fc = mean(lev_t),
+            sd = sd(lev_t),
+            n = n()) %>% 
+  mutate(se = sd/sqrt(n),
+         group = as_factor(str_c(tissue, treatment, genotype, sep = "_"))) %>%  
+  left_join(sig_LC_lt, by = c("tissue", "treatment", "met", "alias" = "group2")) %>% 
+  group_by(met) %>% 
+  #filter(any(p.signif == "*"), all(is.finite(mean_fc)), tissue != "flowers") %>% 
+  left_join(met_dat) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  ungroup() %>% 
+  mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*"))),
+         genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+
+plotmets <- fc_1_lt %>% distinct(met) %>% as_vector()
+plottissues <- fc_1_lt %>% distinct(tissue) %>% as_vector() %>% as.character
+
+labelnames <- plotmets %>% as_tibble() %>% 
+  rename(met = value) %>% 
+  left_join(met_dat) %>% left_join(LC_classes) %>%
+  select(Compound_Name) %>% as_vector()
+
+
+plot_out <- vector("list", length = length(plotmets))
+per_comp_y <- fc_1_lt %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(mean = max(mean_fc),
+            se = max(se))
+
+for(tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    
+    
+    sig_bar <- fc_1_lt %>% 
+      group_by(tissue, treatment, met) %>% 
+      mutate(tot_val = max(mean_fc + se)) %>%
+      mutate(y.position = tot_val + 0.25*max(tot_val)) %>%
+      ungroup() %>% 
+      rename(genotype1 = genotype) %>% 
+      left_join(genotypes, by = c("group1" = "alias")) %>% 
+      select(-group1) %>% 
+      mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*")))) %>% 
+      rename(group1 = genotype1, group2 = genotype) %>% 
+      filter(!is.na(p.signif)) %>% 
+      filter(met == plotmets[[meta]], tissue2 == plottissues[[tiss]])
+    
+    
+    plot_out[[tiss]][[meta]] <- fc_1_lt %>% 
+      filter(met == plotmets[[meta]], tissue == plottissues[[tiss]]) %>% 
+      mutate(treatment = fct_relevel(treatment, c("0.4", "0.6", "0.8", "1"))) %>% 
+      ggplot(aes(x = genotype, y = mean_fc)) +
+      geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+      geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+      stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                         step.increase = 0.07,
+                         hide.ns = T) +
+      facet_grid(cols = vars(treatment)) +
+      theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+            panel.background = element_rect(fill = "white"),
+            panel.border = element_rect(color = "black",fill = NA),
+            text = element_text(size = 14),
+            legend.text = element_markdown()) +
+      ylab("Mean fold-change")+
+      ggtitle(label = str_c(labelnames[[meta]], "in", plottissues[[tiss]], sep = " ")) +
+      scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  }
+  
+}
+
+plot_out[[tiss]][[meta]]
+plot_out[[1]][[2]]
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"cmQTL_val1_scaled1_LC_lev_t_col_plots.pdf"),
+    width = 15.8/2.54,
+    height = 8/2.54)
+
+for (tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    print(plot_out[[tiss]][[meta]])  
+  }
+  
+}
+
+dev.off()
+
+
+
+# CV analysis -------------------------------------------------------------
+
+miss_per_clust <- LC_long %>% 
+  group_by(met, tissue) %>% 
+  summarise(na = sum(is.na(area)),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(percent_na_clust = na/n*100) %>% 
+  select(met, tissue, percent_na_clust)
+
+miss_any_treat <- miss_per_treat %>% 
+  group_by(met, tissue) %>% 
+  summarise(miss_comp_treat = if_else(any(percent_na == 100), T,F))
+
+library(bootstrap)
+
+theta <- function(x){
+  sd(x)/mean(x)
+}
+
+cv <- means %>% 
+  ungroup() %>% 
+  group_by(genotype, tissue, alias, met) %>% 
+  summarise(grand_mean = mean(mean),
+            grand_sd = sd(mean),
+            n = n()) %>% 
+  mutate(cv = grand_sd/grand_mean)
+
+cv_jack <- means %>% 
+  group_by(genotype, tissue, alias, met) %>% 
+  summarise(cv = jackknife(mean, theta)$jack.values) %>% 
+  mutate(jack_rep = row_number()) %>% 
+  ungroup()
+
+cv_jack_mean <- cv_jack %>% 
+  group_by(genotype,tissue, alias, met) %>% 
+  summarise(mean_cv = mean(cv),
+            sd_cv = sd(cv),
+            n = n()) %>% 
+  ungroup() %>% 
+  mutate(se_cv = sd_cv/sqrt(n))
+
+cv_jack_wide <- cv_jack %>% 
+  pivot_wider(id_cols = c(genotype, tissue, alias, jack_rep),
+              names_from = met,
+              values_from = cv) %>% 
+  mutate(group = str_c(tissue, alias, sep = "_"))
+
+cv_jack_numeric <- cv_jack_wide %>% 
+  select(-c(genotype, tissue, alias, jack_rep, group))
+
+LC_cv_jack <- map(.x = cv_jack_numeric, .f = ~aov(.x ~ alias, data = cv_jack_wide))
+
+
+LC_jack_t <- map(.x = cv_jack_numeric, .f = ~pairwise.t.test(x = .x , g = cv_jack_wide$group,                                                              p.adjust.method = "none")) %>% 
+  map(.f = tidy)
+
+LC_jack_t_tidy <- LC_jack_t %>% 
+  map2(.y = names(LC_jack_t), .f = ~.x %>% mutate(var = .y)) %>% 
+  purrr::reduce(bind_rows)
+
+sig_LC_cv_groups <- LC_jack_t_tidy %>% 
+  separate(group1, into = c("tissue1", "alias1"), sep = "_") %>% 
+  separate(group2, into = c("tissue2", "alias2"), sep = "_") %>% 
+  filter(alias1 == "967514 MM WT" | alias2 == "967514 MM WT",
+         tissue1 == tissue2) %>% 
+  group_by(var) %>% 
+  mutate(adj.p.value = p.adjust(p.value)) %>% 
+  ungroup() %>% 
+  mutate(p.signif = if_else(adj.p.value <= 0.05, "*", "ns")) %>% 
+  left_join(cv_jack_mean, by = c("var" = "met", "alias1" = "alias", "tissue1" = "tissue")) %>% 
+  select(p.value, var,  alias1, alias2, p.signif, mean_cv1 = mean_cv, se_cv1 = se_cv, tissue1, tissue2) %>%
+  left_join(cv_jack_mean, by = c("var" = "met", "alias2" = "alias", "tissue2" = "tissue")) %>% 
+  select(p.value, var, alias1, alias2, p.signif, mean_cv1, mean_cv2 = mean_cv, se_cv1, se_cv2 = se_cv, tissue1, tissue2) %>% 
+  group_by(var, tissue1) %>% 
+  mutate(tot_val1 = mean_cv1 + se_cv1,
+         tot_val2 = mean_cv2 + se_cv2,
+         y.position = 1.1*(max(tot_val1, tot_val2))) %>%
+  ungroup() %>% 
+  left_join(genotypes, by = c("alias1" = "alias")) %>% 
+  rename(genotype1 = genotype) %>% 
+  left_join(genotypes, by = c("alias2" = "alias")) %>% 
+  rename(genotype2 = genotype) %>% 
+  rename(met = var,
+         group1 = genotype1,
+         group2 = genotype2,
+         tissue = tissue1) %>% 
+  left_join(miss_any_treat) %>% 
+  left_join(miss_per_clust) %>% 
+  group_by(met, tissue) %>% 
+  mutate(p.signif = if_else(miss_comp_treat == T| percent_na_clust >= 50, "ns", p.signif),
+         met = as_factor(met),
+         group1 = as_factor(group1),
+         group2 = as_factor(group2)) %>% 
+  ungroup()
+
+
+sig_mets_cv <- sig_LC_cv_groups %>% 
+  filter(p.signif == "*") %>% 
+  distinct(met, .keep_all = T) %>% 
+  mutate(sig = T) %>% 
+  select(met, sig)
+
+# CV Heatmap scaled per tissue-----------------------------------------------------------------
+
+heat.LC <- cv_jack_mean%>% 
+  group_by(tissue, met) %>% 
+  mutate(total_norm = mean_cv/mean(mean_cv),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets_cv) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm_level) %>% 
+  left_join(met_dat) %>%
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.LC) <- heat.LC$met
+
+mat.heat.LC <- heat.LC %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.LC %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.LC$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, tissue, genotype)
+
+heat.LC_signif <- cv_jack_mean %>% 
+  distinct(tissue, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_LC_cv_groups, by = c("met", "tissue" = "tissue2", "alias" = "alias2")) %>% 
+  left_join(sig_mets_cv) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.LC)
+
+rownames(heat.LC_signif) <- heat.LC_signif$met
+
+mat.heat.LC_signif <- heat.LC_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.LC <- pheatmap(mat.heat.LC,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.LC_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                        angle_col = 45,
+                        fontsize_col = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_cv_heatmap_rel_tissue.jpg",
+                                          sep = "_")
+)
+
+
+
+# CV Heatmap unscaled-----------------------------------------------------------------
+
+heat.LC <- cv_jack_mean%>% 
+  group_by(tissue, met) %>% 
+  mutate(total_norm = mean_cv/mean(mean_cv),
+         log_norm = log2(total_norm),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets_cv) %>% 
+  #filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = mean_cv) %>% 
+  left_join(met_dat) %>%
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.LC) <- heat.LC$met
+
+mat.heat.LC <- heat.LC %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.LC %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.LC$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, tissue, genotype)
+
+heat.LC_signif <- cv_jack_mean %>% 
+  distinct(tissue, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_LC_cv_groups, by = c("met", "tissue" = "tissue2", "alias" = "alias2")) %>% 
+  left_join(sig_mets_cv) %>% 
+  #filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.LC)
+
+rownames(heat.LC_signif) <- heat.LC_signif$met
+
+mat.heat.LC_signif <- heat.LC_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.LC <- pheatmap(mat.heat.LC,
+                        #color = plasma(14),
+                        #cellwidth = 16,
+                        #cellheight = 4,
+                        #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                        cluster_rows = T,
+                        cluster_cols = T,
+                        annotation_names_row = F,
+                        show_rownames = F,
+                        annotation_row = annotation_row,
+                        annotation_col = annotation_col,
+                        #display_numbers = mat.heat.LC_signif,
+                        number_color = "black",
+                        fontsize_number = 6,
+                        angle_col = 45,
+                        fontsize_col = 6,
+                        annotation_colors = ann_colors,
+                        filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                         "cmQTL_val1_cv_unscaled.jpg",
+                                         sep = "_")
+)
+
+
+# CV dotplots -------------------------------------------------------------
+
+cv %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  mutate(`cv > 1` = if_else(cv > 1, "yes", "no")) %>% 
+  ggplot(aes(x = tissue, y = cv)) +
+  geom_dotplot(aes(fill = `cv > 1`), stackdir = "center", binaxis = "y",
+               binwidth = 0.1, dotsize = 1) +
+  geom_hline(aes(yintercept = 1), color = "red") +
+  theme(panel.background = element_rect(fill = "white"),
+        panel.border = element_rect(color = "black",fill = NA),
+        legend.position = "bottom",
+        legend.text = element_text(size = 8),
+        text = element_text(size = 10)) +
+  ylim(c(-0.15, 2))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cv_dotplot.jpg",
+             sep = "_"), units = "cm",
+       width = 15.9, height = 6)
+
+
+
+# CV Heatmap wildtype-----------------------------------------------------------------
+
+cv_jack_mean_wildtype <- cv_jack_mean %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(tissue, met, mean_cv_wt = mean_cv)
+
+heat.LC <- cv_jack_mean%>% 
+  left_join(cv_jack_mean_wildtype) %>% 
+  mutate(fc_cv = mean_cv/mean_cv_wt) %>% 
+  group_by(tissue, met) %>% 
+  mutate(total_norm = mean_cv/mean(mean_cv),
+         log_norm = log2(fc_cv),
+         log_norm = if_else(is.infinite(log_norm), 0, log_norm),
+         log_norm_level = (log_norm - mean(log_norm))/(max(log_norm)-min(log_norm))) %>% 
+  ungroup() %>% 
+  left_join(sig_mets_cv) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>% 
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = log_norm) %>% 
+  left_join(met_dat) %>%
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+rownames(heat.LC) <- heat.LC$met
+
+mat.heat.LC <- heat.LC %>% 
+  select(contains("leaves"), contains("fruits")) %>% as.matrix()
+
+annotation_row <- heat.LC %>% 
+  select(Compound_Class)
+
+rownames(annotation_row) <- heat.LC$met
+
+annotation_col <- sam_dat %>% 
+  filter(exp == 1, class == "sample") %>%
+  distinct(tissue, genotype) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  as.data.frame()
+
+rownames(annotation_col) <- annotation_col$group
+
+annotation_col <- annotation_col %>% 
+  select(-group, tissue, genotype)
+
+heat.LC_signif <- cv_jack_mean %>% 
+  distinct(tissue, alias, genotype, met) %>% 
+  #filter(genotype != "MoneyMaker") %>% 
+  left_join(sig_LC_cv_groups, by = c("met", "tissue" = "tissue2", "alias" = "alias2")) %>% 
+  left_join(sig_mets_cv) %>% 
+  filter(sig == T) %>% 
+  mutate(group = as_factor(str_c(tissue, genotype, sep = "_")),
+         signif = if_else(p.signif == "ns"| is.na(p.signif), "","X")) %>%
+  pivot_wider(id_cols = c(met),
+              names_from = group,
+              values_from = signif) %>% 
+  left_join(met_dat) %>% 
+  left_join(LC_classes) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  as.data.frame()
+
+heat_cols <- colnames(mat.heat.LC)
+
+rownames(heat.LC_signif) <- heat.LC_signif$met
+
+mat.heat.LC_signif <- heat.LC_signif %>% 
+  select(all_of(heat_cols)) %>% as.matrix()
+
+ann_colors = list(
+  tissue = c(fruits = "red",leaves = "darkgreen"),
+  genotype = c(MoneyMaker = "yellow", `panK4-1` = "brown", `log2-1` = "blue", `transp1-1` = "grey"),
+  treatment = c("0.4" = "red", "0.6" = "orange", "0.8" = "yellow", "1" = "green"))
+
+
+pheatmap.LC <- pheatmap(mat.heat.LC,
+                         #color = plasma(14),
+                         #cellwidth = 16,
+                         #cellheight = 4,
+                         #breaks = c(-6.5,-5.5,-4.5,-3.5,-2.5,-1.5, -0.5 ,0.5,1.5,2.5,3.5,4.5,5.5,6.5),
+                         cluster_rows = T,
+                         cluster_cols = T,
+                         annotation_names_row = F,
+                         show_rownames = F,
+                         annotation_row = annotation_row,
+                         annotation_col = annotation_col,
+                         display_numbers = mat.heat.LC_signif,
+                         number_color = "black",
+                         fontsize_number = 6,
+                        angle_col = 45,
+                        fontsize_col = 6,
+                         annotation_colors = ann_colors,
+                         filename = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                                          "cmQTL_val1_cv_heatmap_rel_wt.jpg",
+                                          sep = "_")
+)
+
+# Per metabolite comparisons cv----------------------------------------------
+
+norm_MM <- means %>% 
+  filter(genotype == "MoneyMaker") %>% 
+  select(tissue, treatment, met, MM_mean = mean)
+
+fc_cv <- cv_jack%>% 
+  left_join(cv_jack_mean_wildtype) %>% 
+  mutate(fc_cv = cv/mean_cv_wt) %>% 
+  group_by(tissue, alias, genotype, met) %>% 
+  summarise(mean_fc = mean(fc_cv),
+            sd = sd(fc_cv),
+            n = n()) %>% 
+  mutate(se = sd/sqrt(n),
+         group = as_factor(str_c(tissue, genotype, sep = "_"))) %>%  
+  left_join(sig_LC_cv_groups, by = c("tissue", "met", "alias" = "alias2")) %>% 
+  group_by(met) %>% 
+  #filter(any(p.signif == "*"), all(is.finite(mean_fc)), tissue != "flowers") %>% 
+  left_join(met_dat) %>% 
+  arrange(Compound_Class, Compound_Name) %>% 
+  ungroup() %>% 
+  mutate(genotype = as_factor(if_else(genotype == "MoneyMaker", glue("{genotype}"),glue("*{genotype}*"))),
+         genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+
+plotmets <- fc_cv %>% distinct(met) %>% as_vector()
+plottissues <- fc_cv %>% distinct(tissue) %>% as_vector() %>% as.character
+
+labelnames <- plotmets %>% as_tibble() %>% 
+  rename(met = value) %>% 
+  left_join(met_dat) %>% left_join(LC_classes) %>%
+  select(Compound_Name) %>% as_vector()
+
+
+plot_out <- vector("list", length = length(plotmets))
+
+
+
+for(tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    
+    
+    sig_bar <- fc_cv %>% 
+      group_by(tissue, met) %>% 
+      mutate(tot_val = max(mean_fc + se)) %>%
+      mutate(y.position = tot_val + 0.25*max(tot_val)) %>%
+      ungroup() %>% 
+      filter(!is.na(p.signif)) %>% 
+      mutate(group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+             group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*"))) %>%
+      filter(met == plotmets[[meta]], tissue2 == plottissues[[tiss]])
+    
+    
+    plot_out[[tiss]][[meta]] <- fc_cv %>% 
+      filter(met == plotmets[[meta]], tissue == plottissues[[tiss]]) %>% 
+      #mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "panK4-1", "log2-1", "transp1-1"))) %>% 
+      ggplot(aes(x = genotype, y = mean_fc)) +
+      geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+      geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+      stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                         step.increase = 0.07,
+                         hide.ns = T) +
+      theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+            panel.background = element_rect(fill = "white"),
+            panel.border = element_rect(color = "black",fill = NA),
+            text = element_text(size = 14),
+            legend.text = element_markdown()) +
+      ylab("Mean fold-change") +
+      ggtitle(label = str_c(labelnames[[meta]], "in", plottissues[[tiss]], sep = " ")) +
+      scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  }
+  
+}
+
+plot_out[[1]][[2]]
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"cmQTL_val1_cv_LC_col_plots.pdf"),
+    width = 15.8/2.54,
+    height = 8/2.54)
+
+
+for (tiss in seq_along(plottissues)) {
+  for (meta in seq_along(plotmets)) {
+    print(plot_out[[tiss]][[meta]])  
+  }
+  
+}
+dev.off()
+
+# Files to remake figures -------------------------------------------------
+
+write_csv(fc_1_ind, "individual_values.csv")
+write_csv(fc_1, "mean_values_se_n.csv")
+write_csv(sig_LC, "p_values.csv")
+
+write_csv(means_tec_rep_lt, "individual_values_levene.csv")
+write_csv(fc_1_lt, "mean_values_se_n_levene.csv")
+write_csv(sig_LC_lt, "p_values_levene.csv")
+
+#write_csv(cv_jack_ind, "individual_values_cv.csv")
+#write_csv(cv_jack_ind_mean, "mean_values_se_n_cv.csv")
+#write_csv(sig_cv_jack_ind, "p_values_cv.csv")
+
+write_csv(cv_jack, "individual_values_cv.csv")
+write_csv(cv_jack_mean, "mean_values_se_n_cv.csv")
+write_csv(sig_LC_cv_groups, "p_values_cv.csv")
+
+# Log used code ------------------------------------------------------------
+
+file_name <- sys.frame(1)$ofile
+
+file.copy(file_name,
+          to = str_c(out_dir, str_remove(file_name, current), "_", str_replace_all(Sys.Date(),"^.{2}|-",""), ".R"),overwrite = T)
diff --git a/workflows/polar_LC_MS_figures/Figure maker_cmQTL1_paper.R b/workflows/polar_LC_MS_figures/Figure maker_cmQTL1_paper.R
new file mode 100644
index 0000000..fe02b33
--- /dev/null
+++ b/workflows/polar_LC_MS_figures/Figure maker_cmQTL1_paper.R	
@@ -0,0 +1,917 @@
+rm(list = ls())
+library(tidyverse)
+library(ggpubr)
+library(glue)
+library(ggtext)
+library(cowplot)
+library(ggbeeswarm)
+library(extrafont)
+
+# Directory setting -------------------------------------------------------
+
+
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "Figures", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+latest <- str_sort(str_extract(list.files(pattern = "^\\d{6}_analysis$"),
+                               pattern = "^\\d{6}_analysis"),
+                   decreasing = T)[[1]]
+
+latest_analysis <- str_c(current, "/", latest)
+
+setwd(latest_analysis)
+
+latest_analysis_date <- str_extract(latest, pattern = "^\\d{6}")
+
+# File loading ------------------------------------------------------------
+
+fc_1 <- read_csv("mean_values_se_n.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+genotypes <- fc_1 %>% 
+  distinct(alias, genotype)
+
+fc_1_ind <- read_csv("individual_values.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_GC <- read_csv("p_values.csv")
+
+fc_1_lt <- read_csv("mean_values_se_n_levene.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_lt <- read_csv("individual_values_levene.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_GC_lt <- read_csv("p_values_levene.csv")
+
+fc_1_cv <- read_csv("mean_values_se_n_cv.csv") %>% 
+  mutate(genotype = fct_relevel(genotype, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+fc_1_ind_cv <- read_csv("individual_values_cv.csv") %>% 
+  select(-genotype) %>% 
+  left_join(genotypes)
+
+sig_GC_cv <- read_csv("p_values_cv.csv") %>% 
+  mutate(group1 = as_factor(if_else(group1 == "MoneyMaker", glue("{group1}"),glue("*{group1}*"))),
+         group1 = fct_relevel(group1, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")),
+         group2 = as_factor(if_else(group2 == "MoneyMaker", glue("{group2}"),glue("*{group2}*"))),
+         group2 = fct_relevel(group2, c("MoneyMaker", "*panK4-1*", "*log2-1*", "*transp1-1*")))
+
+setwd(out_dir)
+
+
+# Data combination --------------------------------------------------------
+
+
+met_dat <- fc_1 %>% 
+  distinct(met, Compound_Name, Compound_Class)
+
+genotypes <- fc_1 %>% 
+  distinct(alias, genotype)
+
+per_comp_y <- fc_1 %>%
+  group_by(tissue, treatment, met) %>% 
+  summarise(tot_val = max(mean_fc + se))
+
+cb_scale <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442",
+              "#0072B2", "#D55E00","#000000")
+bw_scale <- c("black", "black", "black", "black", "black", "black", "black")
+
+
+# Used plots --------------------------------------------------------------
+
+com_theme <- theme(axis.text.x = element_markdown(angle = 45, hjust = 1, size = 6, family = "sans"),
+                   axis.text.y = element_text(size = 6, family = "sans"),
+                   axis.title.x = element_blank(),
+                   axis.title.y = element_text(size = 6, family = "sans"),
+                   panel.background = element_rect(fill = "white"),
+                   panel.border = element_rect(color = "black",fill = NA),
+                   strip.text = element_text(size = 8, family = "sans", margin = margin(t = 1, r = 1, b = 1, l = 1 , unit = "pt")),
+                   text = element_text(size = 6, family = "sans"),
+                   legend.title = element_blank(),
+                   legend.text = element_markdown(size = 6),
+                   plot.margin = unit(c(1,1,1,1), "mm"),
+                   legend.margin = margin(t = 0, r = 2, b = 0, l = 2 , unit = "mm"))
+
+make_box_dot_plot <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes, plot_fill){
+  
+  per_comp_y <- fc_1_ind %>%
+    filter(genotype %in% plot_genotypes) %>% 
+    group_by(tissue, treatment, met) %>% 
+    summarise(min_y = min(fc),
+              max_y = max(fc)) %>% 
+    mutate(tot_val = 1.1*max_y) %>% 
+    ungroup()
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    group_by(tissue, treatment, met) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           p.signif = if_else(p.value <= 0.05, "*", "ns")) %>% 
+    ungroup() %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes) 
+  
+  binwidth <- sig_bar %>% 
+    summarise(min_y_comp = min(min_y),
+              max_y_comp = max(max_y)) %>% 
+    mutate(binwidth = (max_y_comp - min_y_comp)/50) %>% 
+    select(binwidth) %>% 
+    as_vector() %>%
+    as.numeric() 
+    
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  plot_out <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    ggplot(aes(x = genotype, y = fc)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_dotplot(aes(fill = genotype, color = genotype), binaxis = "y", stackdir = "center", binwidth = binwidth, dotsize = 1.5) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(legend.position = plot_legend) +
+    com_theme +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale[plot_fill], aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+make_box_dot_plot_levene <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes, plot_fill){
+  
+  per_comp_y <- fc_1_ind_lt %>%
+    filter(genotype %in% plot_genotypes) %>% 
+    group_by(tissue, treatment, met) %>% 
+    summarise(min_y = min(lev_t),
+              max_y = max(lev_t)) %>% 
+    mutate(tot_val = 1.1*max_y) %>% 
+    ungroup()
+  
+  sig_bar <- sig_GC_lt %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    group_by(tissue, treatment, met) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           p.signif = if_else(p.value <= 0.05, "*", "ns")) %>% 
+    ungroup() %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes) 
+  
+  binwidth <- sig_bar %>% 
+    summarise(min_y_comp = min(min_y),
+              max_y_comp = max(max_y)) %>% 
+    mutate(binwidth = (max_y_comp - min_y_comp)/50) %>% 
+    select(binwidth) %>% 
+    as_vector() %>%
+    as.numeric() 
+   
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  plot_out <- fc_1_ind_lt %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    ggplot(aes(x = genotype, y = lev_t)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_dotplot(aes(fill = genotype, color = genotype), binaxis = "y", stackdir = "center", binwidth = binwidth, dotsize = 1.5) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(legend.position = plot_legend) +
+    com_theme +
+    ylab("Levene's transformed value")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale[plot_fill], aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+
+make_box_dot_plot_cv <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes, plot_fill){
+  
+  per_comp_y_cv <- fc_1_ind_cv %>%
+    filter(genotype %in% plot_genotypes) %>% 
+    group_by(tissue, met) %>% 
+    summarise(min_y = min(cv),
+              max_y = max(cv)) %>% 
+    mutate(tot_val = 1.1*max_y) %>% 
+    ungroup()
+  
+  sig_bar <- sig_GC_cv %>%  
+    left_join(per_comp_y_cv) %>% 
+    group_by(tissue, met) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           p.signif = if_else(p.value <= 0.05, "*", "ns"))  %>% 
+    ungroup() %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes)
+  
+  binwidth <- sig_bar %>% 
+    summarise(min_y_comp = min(min_y),
+              max_y_comp = max(max_y)) %>% 
+    mutate(binwidth = (max_y_comp - min_y_comp)/50) %>% 
+    select(binwidth) %>% 
+    as_vector() %>%
+    as.numeric()
+  
+  plot_out <- fc_1_ind_cv %>% 
+    left_join(met_dat) %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    ggplot(aes(x = genotype, y = cv)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_dotplot(aes(fill = genotype, color = genotype), binaxis = "y", stackdir = "center", binwidth = binwidth, dotsize = 2) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    #facet_grid(cols = vars(treatment)) +
+    com_theme +
+    theme(legend.position = plot_legend) +
+    ylab("CV")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale[plot_fill], aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+
+# Pantothenic acid fruits PanK4-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_029173", "fruits", "Pantothenic acid nominal", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+
+
+p2 <- make_box_dot_plot_cv("Cluster_029173", "fruits", "Pantothenic acid CV", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_029173", "fruits", "Pantothenic acid", "bottom", c("MoneyMaker","*panK4-1*"), c(1,2)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Pantothenic_acid_fruits_pank4-1_combined.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+p2 <- make_box_dot_plot_levene("Cluster_029173", "fruits", "Pantothenic acid levene transformed", "bottom", c("MoneyMaker","*panK4-1*"), c(1,2))
+p2
+ggsave("Pantothenic_acid_fruits_pank4-1_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# Pantothenic acid leaves PanK4-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_029173", "leaves", "Pantothenic acid nominal", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p1
+
+p2 <- make_box_dot_plot_cv("Cluster_029173", "leaves", "Pantothenic acid CV", "none", c("MoneyMaker","*panK4-1*"), c(1,2))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_029173", "leaves", "Pantothenic acid", "bottom", c("MoneyMaker","*panK4-1*"), c(1,2)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Pantothenic_acid_leaves_panK4-1_combined.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_029173", "leaves", "Pantothenic acid", "bottom", c("MoneyMaker","*panK4-1*"), c(1,2))
+p2
+ggsave("Pantothenic_acid_leaves-panK4-1_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# Phenylalanine fruits log2-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_025242", "fruits", "Phenylalanine nominal", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+
+saveRDS(last_plot(), "Phenylalanine_nominal_log2-1_fruits.RDS")
+
+p2 <- make_box_dot_plot_cv("Cluster_025242", "fruits", "Phenylalanine CV", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+
+saveRDS(last_plot(), "Phenylalanine_cv_log2-1_fruits.RDS")
+
+leg <- get_legend(make_box_dot_plot("Cluster_025242", "fruits", "Phenylalanine", "bottom", c("MoneyMaker","*log2-1*"), c(1,3)))
+leg
+
+saveRDS(leg, "Phenylalanine_legend_log2-1_fruits.RDS")
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Phenylalanine_fruits_log2-1_combined.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_025242", "fruits", "Phenylalanine levene transformed", "bottom", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+
+saveRDS(last_plot(), "Phenylalanine_levene_log2-1_fruits.RDS")
+
+
+ggsave("Phenylalanine_fruits_log2-1_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+
+
+# Phenylalanine leaves log2-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_025242", "leaves", "Phenylalanine nominal", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+
+saveRDS(last_plot(), "Phenylalanine_nominal_log2-1_leaves.RDS")
+
+p2 <- make_box_dot_plot_cv("Cluster_025242", "leaves", "Phenylalanine CV", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+
+saveRDS(last_plot(), "Phenylalanine_cv_log2-1_leaves.RDS")
+
+leg <- get_legend(make_box_dot_plot("Cluster_025242", "leaves", "Phenylalanine", "bottom", c("MoneyMaker","*log2-1*"), c(1,3)))
+leg
+
+saveRDS(last_plot(), "Phenylalanine_leg_log2-1_leaves.RDS")
+
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Phenylalanine_leaves_log2-1_combined.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_025242", "leaves", "Phenylalanine levene transformed", "bottom", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+ggsave("Phenylalanine_leaves_log-2-1_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+saveRDS(last_plot(), "Phenylalanine_levene_log2-1_leaves.RDS")
+
+
+# Trans-cinnamic acid fruits log2-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_024086", "fruits", "Trans-cinnamic acid nominal", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+
+p2 <- make_box_dot_plot_cv("Cluster_024086", "fruits", "Trans-cinnamic acid CV", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_024086", "fruits", "Trans-cinnamic acid", "bottom", c("MoneyMaker","*log2-1*"), c(1,3)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Trans-cinnamic_acid_fruits_log2-1_combined.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_024086", "fruits", "Trans-cinnamic acid levene transformed", "bottom", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+ggsave("Trans-cinnamic_acid_fruits_log2-1_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+
+
+# Trans-cinnamic acid leaves log2-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_024086", "leaves", "Trans-cinnamic acid nominal", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+
+p2 <- make_box_dot_plot_cv("Cluster_024086", "leaves", "Trans-cinnamic acid CV", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_024086", "leaves", "Trans-cinnamic acid", "bottom", c("MoneyMaker","*log2-1*"), c(1,3)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Trans-cinnamic_acid_leaves_log2-1_combined.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_024086", "leaves", "Trans-cinnamic acid levene transformed", "bottom", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+ggsave("Trans-cinnamic_acid_leaves_log-2-1_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+
+
+# p-Coumaric acid fruits log2-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_025174", "fruits", "p-Coumaric acid nominal", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+
+p2 <- make_box_dot_plot_cv("Cluster_025174", "fruits", "p-Coumaric acid CV", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_025174", "fruits", "p-Coumaric acid", "bottom", c("MoneyMaker","*log2-1*"), c(1,3)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("p-Coumaric_acid_fruits_log2-1_combined.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_025174", "fruits", "p-Coumaric acid levene transformed", "bottom", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+ggsave("p-Coumaric_acid_fruits_log2-1_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+
+
+# p-Coumaric acid leaves log2-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_025174", "leaves", "p-Coumaric acid nominal", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p1
+
+p2 <- make_box_dot_plot_cv("Cluster_025174", "leaves", "p-Coumaric acid CV", "none", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_025174", "leaves", "p-Coumaric acid", "bottom", c("MoneyMaker","*log2-1*"), c(1,3)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("p-Coumaric_acid_leaves_log2-1_combined.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_025174", "leaves", "p-Coumaric acid levene transformed", "bottom", c("MoneyMaker","*log2-1*"), c(1,3))
+p2
+ggsave("p-Coumaric_acid_leaves_log-2-1_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# Val-Trp fruits transp1-1-------------------------------------------------------
+
+
+
+p1 <- make_box_dot_plot("Cluster_035934", "fruits", "Val-Trp nominal", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p1
+
+
+p2 <- make_box_dot_plot_cv("Cluster_035934", "fruits", "Val-Trp CV", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_035934", "fruits", "Val-Trp", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Val-Trp_fruits_combined_transp1-1.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+p2 <- make_box_dot_plot_levene("Cluster_035934", "fruits", "Val-Trp levene transformed", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+ggsave("Val-Trp_fruits_box_dot_plot_levene_transp1-1.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# Val-Trp leaves transp1-1-------------------------------------------------------
+
+p1 <- make_box_dot_plot("Cluster_035934", "leaves", "Val-Trp nominal", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p1
+
+p2 <- make_box_dot_plot_cv("Cluster_035934", "leaves", "Val-Trp CV", "none", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+
+leg <- get_legend(make_box_dot_plot("Cluster_035934", "leaves", "Val-Trp", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4)))
+leg
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, ncol = 1, leg, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Val-Trp_leaves_combined_transp1-1.png",width = 16.5, height = 10, units = "cm", dpi = 300)
+
+
+p2 <- make_box_dot_plot_levene("Cluster_035934", "leaves", "Val-Trp", "bottom", c("MoneyMaker","*transp1-1*"), c(1,4))
+p2
+ggsave("Val-Trp_leaves_box_dot_plot_levene.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+stop(print("current end"))
+
+# Test combine ------------------------------------------------------------
+
+p1 <- make_box_dot_plot("m_81", "fruits", "Phenylalanine", "none", c("MoneyMaker","*log2-1*"))
+p1
+
+p2 <- make_box_dot_plot_levene("m_81", "fruits", "Phenylalanine", "none", c("MoneyMaker","*log2-1*"))
+p2
+
+p3 <- make_box_dot_plot_cv("m_81", "fruits", "Phenylalanine", "none", c("MoneyMaker","*log2-1*"))
+p3
+
+leg46 <- get_legend(make_box_dot_plot("m_81", "fruits", "Phenylalanine", "bottom", c("MoneyMaker","*log2-1*")))
+leg46
+
+main_plot <- plot_grid(p1,p2, nrow = 2, labels = "AUTO",rel_heights = c(1,1))
+main_plot
+
+main_plot_2 <- plot_grid(main_plot, p3, ncol = 2, labels = list("", "C"),rel_widths = c(3,1))
+main_plot_2
+
+comp_plot <- plot_grid(main_plot_2, leg46, ncol = 1, rel_heights = c(10,1))
+comp_plot
+
+ggsave("Phenylalanine_combined.png",width = 15.8, height = 16, units = "cm", dpi = 300)
+
+#sugars?
+
+p1 <- make_box_dot_plot("m_72", "fruits", "Maltose", "none", c("MoneyMaker","*transp1-1*"))
+p1
+
+p2 <- make_box_dot_plot_levene("m_72", "fruits", "Maltose", "none", c("MoneyMaker","*transp1-1*"))
+p2
+
+p3 <- make_box_dot_plot_cv("m_72", "fruits", "Maltose", "none", c("MoneyMaker","*transp1-1*"))
+p3
+
+leg46 <- get_legend(make_box_dot_plot("m_72", "fruits", "Maltose", "bottom", c("MoneyMaker","*transp1-1*")))
+leg46
+
+main_plot <- plot_grid(p1,p2, nrow = 2, labels = "AUTO",rel_heights = c(1,1))
+main_plot
+
+main_plot_2 <- plot_grid(main_plot, p3, ncol = 2, labels = list("", "C"),rel_widths = c(3,1))
+main_plot_2
+
+
+ggsave("Maltose_combined.png",width = 15.8, height = 16, units = "cm", dpi = 300)
+
+
+
+# Recycling ---------------------------------------------------------------
+
+testtheme <- theme(axis.text.x = element_markdown(angle = 45, hjust = 1, margin = unit(c(1,0,0,0), "mm")),
+                   axis.title.x = element_blank(),
+                   panel.background = element_rect(fill = "white"),
+                   panel.border = element_rect(color = "black",fill = NA),
+                   text = element_text(size = 8, family = "Arial Narrow"),
+                   legend.title = element_blank(),
+                   legend.text = element_markdown(),
+                   legend.position = "right",
+                   legend.direction = "vertical",
+                   plot.margin = unit(c(1,0,1,2), "mm"),
+                   legend.margin = margin(t = 0, r = 2, b = 0, l = 2 , unit = "mm")) 
+
+
+make_box_point_plot <- function(plot_met, plot_tissue, plot_label, plot_legend){
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val) %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  fc_1_ind_plot <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  plot_out <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue) %>% 
+    ggplot(aes(x = genotype, y = fc)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_point(aes(fill = genotype, color = genotype),size = 2, shape = 21) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale, aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+make_box_beeswarm_plot <- function(plot_met, plot_tissue, plot_label, plot_legend){
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val) %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  fc_1_ind_plot <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  plot_out <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue) %>% 
+    ggplot(aes(x = genotype, y = fc)) +
+    geom_boxplot(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_beeswarm(aes(fill = genotype, color = genotype),size = 2, shape = 21, cex = 2, priority = "density") +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale, aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+make_box_dot_line_plot <- function(plot_met, plot_tissue, plot_label, plot_legend, plot_genotypes){
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val,
+           treatment = as_factor(treatment)) %>% 
+    filter(met == plot_met, tissue == plot_tissue,
+           group1 %in% plot_genotypes, group2 %in% plot_genotypes)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  fc_1_plot <- fc_1%>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    mutate(treatment = as_factor(treatment))
+  
+  plot_out <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue, genotype %in% plot_genotypes) %>% 
+    mutate(treatment = as_factor(treatment)) %>% 
+    ggplot(position = "dodge", aes(x = treatment, y = fc)) +
+    geom_boxplot(aes(fill = genotype), color = "black") +
+    geom_dotplot(aes(fill = genotype, color = genotype), position = position_dodge(0.75),
+                 binaxis = "y", stackdir = "center", binwidth = 0.1, dotsize = 1) +
+    geom_smooth(aes(x = treatment, y = fc, color = genotype, group = genotype),method = "lm", position = position_dodge(0.75)) +
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    #facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale, aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+p1 <- make_box_dot_line_plot("m_70", "fruits", "Malic acid", "none", c("MoneyMaker","*panK4-1*"))
+p1
+ggsave("Malic_acid_box_dot_line_plot_nominal.png",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+make_col_plot_cv <- function(plot_met, plot_tissue, plot_label, plot_legend){
+  
+  sig_bar <- sig_GC_cv %>%  
+    left_join(genotypes, by = c("alias1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("alias2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y_cv) %>% 
+    mutate(y.position = 1.1 * tot_val) %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  plot_out <- fc_cv %>% 
+    filter(met == plot_met, tissue == plot_tissue) %>% 
+    ggplot(aes(x = genotype, y = mean_fc)) +
+    geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    #facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("CV fold-change")+
+    ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_grey(start = 1, end = 0, aesthetics = "fill")
+  
+  plot_out
+  
+}
+
+make_col_plot <- function(plot_met, plot_tissue, plot_label, plot_legend){
+  
+  sig_bar <- sig_GC %>%  
+    left_join(genotypes, by = c("group1" = "alias")) %>%
+    rename(genotype1 = genotype) %>% 
+    left_join(genotypes, by = c("group2" = "alias")) %>% 
+    rename(genotype2 = genotype) %>% 
+    select(-group1, -group2) %>% 
+    #mutate(genotype1 = as_factor(if_else(genotype1 == "MoneyMaker", glue("{genotype1}"),glue("*{genotype1}*"))),
+    #       genotype2 = as_factor(if_else(genotype2 == "MoneyMaker", glue("{genotype2}"),glue("*{genotype2}*")))) %>% 
+    rename(group1 = genotype1, group2 = genotype2) %>% 
+    left_join(per_comp_y) %>% 
+    mutate(y.position = 1.1 * tot_val) %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  ylim_top <- 1.1*max(sig_bar$y.position)
+  
+  fc_1_ind_plot <- fc_1_ind %>% 
+    filter(met == plot_met, tissue == plot_tissue)
+  
+  plot_out <- fc_1 %>% 
+    filter(met == plot_met, tissue == plot_tissue) %>% 
+    ggplot(aes(x = genotype, y = mean_fc)) +
+    geom_col(position = "dodge", aes(fill = genotype), color = "black") +
+    geom_jitter(aes(fill = genotype, color = genotype, y = fc), size = 2, shape = 21, data = fc_1_ind_plot) +
+    geom_errorbar(aes(ymin = (mean_fc-se), ymax = (mean_fc + se)), position = position_dodge(0.9), width = 0.25, size = 0.75)+
+    stat_pvalue_manual(sig_bar, label = "p.signif", y.position = "y.position",
+                       step.increase = 0.07,
+                       hide.ns = T) +
+    facet_grid(cols = vars(treatment)) +
+    theme(axis.text.x = element_markdown(angle = 45, hjust = 1),
+          panel.background = element_rect(fill = "white"),
+          panel.border = element_rect(color = "black",fill = NA),
+          text = element_text(size = 10),
+          legend.text = element_markdown(),
+          legend.position = plot_legend) +
+    ylab("Mean fold-change")+
+    #ylim(c(0, ylim_top))+
+    xlab("") +
+    ggtitle(label = plot_label) +
+    scale_fill_manual(values = cb_scale, aesthetics = "fill") +
+    scale_color_manual(values = bw_scale, aesthetics = "color")
+  
+  plot_out
+  
+}
+
+# Figure 46 ---------------------------------------------------------------
+
+p1 <- make_col_plot("m_70", "fruits", "Malic acid", "none")
+p1
+
+
+p2 <- make_col_plot_cv("m_119", "fruits", "Malic acid CV", "none")
+p2
+
+
+leg46 <- get_legend(make_col_plot("m_123", "fruits", "sucrose", "bottom"))
+leg46
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, leg46, ncol = 1, rel_heights = c(10,1))
+comp_plot
+
+ggsave("figure_46.wmf",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# Figure 47 ---------------------------------------------------------------
+
+p1 <- make_col_plot("m_74", "fruits", "Phenylalanine", "none")
+p1
+
+p2 <- make_col_plot_cv("m_74", "fruits", "Phe CV", "none")
+p2
+
+
+leg46 <- get_legend(make_col_plot("m_74", "fruits", "sucrose", "bottom"))
+leg46
+
+main_plot <- plot_grid(p1,p2, ncol = 2, labels = "AUTO",rel_widths = c(3,1))
+main_plot
+
+comp_plot <- plot_grid(main_plot, leg46, ncol = 1, rel_heights = c(10,1))
+comp_plot
+
+ggsave("figure_47.wmf",width = 15.8, height = 8, units = "cm", dpi = 300)
+
+# Figure 48 ---------------------------------------------------------------
+
+p1 <- make_col_plot_cv("m_25", "fruits", "F6P CV", "none")
+p1
+
+p2 <- make_col_plot_cv("m_38", "fruits", "G6P CV", "none")
+p2
+
+p3 <- make_col_plot_cv("m_65", "fruits", "Maltose CV", "none")
+p3
+
+leg48 <- get_legend(make_col_plot("m_65", "fruits", "sucrose", "bottom"))
+leg48
+
+main_plot <- plot_grid(p1,p2,p3, ncol = 3, labels = "AUTO")
+main_plot
+
+comp_plot <- plot_grid(main_plot, leg48, ncol = 1, rel_heights = c(10,1))
+comp_plot
+
+ggsave("figure_48.wmf",width = 15.8, height = 8, units = "cm", dpi = 300)
diff --git a/workflows/polar_LC_MS_normalization/210903_secondary_normalization.R b/workflows/polar_LC_MS_normalization/210903_secondary_normalization.R
new file mode 100644
index 0000000..41c41e5
--- /dev/null
+++ b/workflows/polar_LC_MS_normalization/210903_secondary_normalization.R
@@ -0,0 +1,823 @@
+rm(list = ls())
+setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
+getwd()
+current <- getwd()
+source <- ".."
+library(openxlsx)
+library(tidyverse)
+library(car)
+library(pheatmap)
+library(broom)
+library(ggpubr)
+library(viridisLite)
+library(modelr)
+library(dlookr)
+library(imputeLCMD)
+
+# Directory setting -------------------------------------------------------
+
+
+current <- getwd()
+source <- str_c(current,"/..")
+
+cur_date <- str_c(str_replace_all(Sys.Date(),"^.{2}|-",""))
+
+out <- str_c(cur_date, "normalization", sep = "_")
+
+if (file.exists(out)) {
+  cat("The folder already exists")
+} else {
+  dir.create(out)
+}
+
+out_dir <- str_c(current, out, sep = "/")
+
+
+
+# Data loading ------------------------------------------------------------
+setwd(source)
+
+sam_dat1 <- read_csv("210812_cmQTL_val1_samplelist.csv")
+LC_run1 <- readxl::read_xlsx("200923_samplelist_WIJESI-030820-13_cmQTL_validation.xlsx", sheet = 4)
+
+sam_dat2 <- read_csv("210812_cmQTL_val2_samplelist.csv")
+LC_run2 <- readxl::read_xlsx("210324_WIJESI-130121-15_cmQTL_validation2.xlsx", sheet = 5)
+
+genotypes <- readxl::read_xlsx("Genotype_names.xlsx")
+
+setwd(current)
+area <- read_delim(file = "cmQTL_val1_selected_secondary.txt", delim = "\t") %>% 
+  rename(met = Name,
+         mz_mean_lib = mz_mean,
+         RT_mean_lib = RT_mean,
+         mz_mean = mz_mean_new,
+         RT_mean = RT_mean_new) %>%
+  group_by(met) %>% 
+  mutate(rt_diff = RT_mean_lib - RT_mean,
+         rank_rt = rank(abs(rt_diff))) %>% 
+  ungroup() %>% 
+  filter(rank_rt == 1) %>% 
+  arrange(RT_mean) %>% 
+  group_by(Compound_Name) %>% 
+  mutate(peak_no = rank(RT_mean, ties.method = "first"),
+         Compound_Name = if_else(duplicated(Compound_Name),
+                                 str_c(Compound_Name, "peak", peak_no, sep = "_"),
+                                 Compound_Name))
+
+met_dat = area %>% 
+  select(met, mz_mean,RT_mean, Compound_Name, Compound_Class)
+setwd(out_dir)
+
+# Data combination --------------------------------------------------------
+sam_vars <- c("plantline", "alias", "LIMS_ID",
+              "treatment", "tissue", "batch_LC", "run_date_LC",
+              "extraction_num", "sample_num", 
+              "class", "run_num_LC", "sample_weight", "exp", "genotype")
+
+sam_dat1_tidy <- LC_run1 %>% 
+  mutate(class = as_factor(if_else(str_detect(extraction_num, "run_qc"), "run_qc", "sample")),
+         extraction_num = as.numeric(if_else(str_detect(extraction_num, "run_qc"), "0", extraction_num)),
+         exp = as_factor(1)) %>% 
+  left_join(sam_dat1) %>% 
+  left_join(genotypes) %>% 
+  select(treatment = irrigation, everything()) %>% 
+  select(all_of(sam_vars))
+
+sam_dat2_tidy <- LC_run2 %>% 
+  mutate(class = as_factor(if_else(str_detect(extraction_num, "run_qc"), "run_qc", "sample")),
+         extraction_num = as.numeric(if_else(str_detect(extraction_num, "run_qc"), "0", extraction_num)),
+         exp = as_factor(2)) %>% 
+  left_join(sam_dat2) %>% 
+  left_join(genotypes) %>% 
+  select(treatment = irrigation, everything()) %>% 
+  select(all_of(sam_vars))
+
+sam_dat <- sam_dat1_tidy %>% 
+  bind_rows(sam_dat2_tidy) %>% 
+  group_by(batch_LC) %>% 
+  mutate(daily_num = row_number()) %>% 
+  fill(tissue, .direction = "updown") %>% 
+  ungroup() %>% 
+  left_join(genotypes) %>% 
+  mutate(machine_num_LC = str_c(run_num_LC, "neg", sep = "_"),
+         treatment = as_factor(treatment))
+
+area_long <- area %>% 
+  pivot_longer(matches("^\\d+_neg$"),
+               names_to = "machine_num_LC",
+               values_to = "area") %>% 
+  left_join(sam_dat)
+
+# Data filtering ----------------------------------------------------------
+
+
+set_back_NA <- function(x){
+  for (i in seq_along(x)) {
+    if (x[[i]] == 0) {
+      x[[i]] <- NA
+    } else {
+      x[[i]] <- x[[i]]
+    }
+  }
+  x
+}
+
+
+# Imputation --------------------------------------------------------------
+
+features_na <- area_long %>% 
+  group_by(met) %>% 
+  mutate(area = set_back_NA(area)) %>% 
+  ungroup()
+
+missingness <- features_na %>% 
+  group_by(exp, met, tissue, treatment) %>% 
+  summarise(na = sum(is.na(area)),
+            n = n()) %>% 
+  mutate(percent_na = na/n*100) %>% 
+  ungroup()
+
+features <- features_na %>% 
+  left_join(missingness) %>% 
+  group_by(met) %>% 
+  #mutate(area = ifelse(percent_na >= 0 & is.na(area), rnorm(n = 1, mean = 0.5*min(area, na.rm = T)), area)) %>% 
+  ungroup()
+
+#miss_for_imp <- features %>% 
+#  pivot_wider(names_from = met,
+#              values_from = area,
+#              id_cols = c(exp, machine_num_lip, met, tissue, treatment)) %>% 
+#  select(exp, machine_num_lip, tissue, treatment, matches("Cluster_")) %>% 
+#  group_by(exp, tissue, treatment) %>% 
+#  nest() %>% 
+#  mutate(new = map(.x = data, .f = as.data.frame),
+#         new = map(.x = new, .f = ~`row.names<-`(.x, .x$machine_num_lip)),
+#         new = map(.x = new, .f = ~select(.x, !starts_with("machine"))),
+#         new = map(.x = new, .f = as.matrix),
+#         imp = map_dfc(.x = new, .f = impute.QRILC)[[1]])
+
+#imp_out_loop <- vector(mode = "list", length = length(miss_for_imp$new))
+
+#for (j in seq_along(miss_for_imp$new)) {
+#  imp_out_loop[[j]] <- impute.QRILC(miss_for_imp$new[[j]])[[1]]
+#}
+
+#can currently not solve per tissue, treatment and exp
+#proceed with qrilc on all
+
+imp <- features_na %>% 
+  pivot_wider(names_from = met,
+              values_from = area,
+              id_cols = c(exp, machine_num_LC, tissue, treatment)) %>% 
+  select(exp, machine_num_LC, tissue, treatment, matches("Cluster_")) %>% 
+  as.data.frame()
+
+row.names(imp) <- imp$machine_num_LC
+imp <- imp %>% 
+  select(-exp, -tissue, -treatment, -machine_num_LC) %>% 
+  as.matrix()
+
+imp <- impute.QRILC(imp)
+
+
+features <- imp[[1]] %>% 
+  as_tibble(rownames = "machine_num_LC") %>% 
+  pivot_longer(cols = matches("Cluster_"),
+               names_to = "met",
+               values_to = "imp") %>% 
+  left_join(features_na)
+
+adjust_imp <- features %>% 
+  group_by(met) %>% 
+  summarise(offset = if_else (any(imp <0), 1.001*abs(min(imp)),0))
+
+
+features_filtered <- features %>% 
+  left_join(missingness) %>%
+  #filter(percent_na <= 60)
+  left_join(adjust_imp) %>% 
+  mutate(imp = imp + offset) %>% 
+  select(-offset)
+
+# Internal Standard Normalization -----------------------------------------
+
+isvec <- features %>% 
+  filter(Compound_Name=="isovitexin") %>% 
+  select(machine_num_LC, is = imp)
+
+features <- features_filtered %>% 
+  full_join(isvec) %>% 
+  mutate(isnorm = imp/is) %>% 
+  filter(Compound_Name != "isovitexin") %>% 
+  mutate(sample_weight = if_else(sample_weight == 0|is.na(sample_weight), 50, sample_weight))
+
+
+# Fit linear model on QCs -------------------------------------------------
+
+by_batch_LC <- features %>% 
+  filter(class=="run_qc") %>% 
+  group_by(batch_LC, met) %>% # need to change treatment_batch_LC_corr
+  nest()
+
+feature_model <- function(df) {
+  lm(isnorm ~ daily_num, data = df)
+}
+
+
+by_batch_LC <- by_batch_LC %>% 
+  mutate(model = map(data, feature_model),
+         predicts = map2(data, model, add_predictions),
+         coefficients = map(model, tidy),
+         aug = map(model, augment),
+         glance = map (model, glance))
+
+coefs_aug <- unnest(by_batch_LC, aug) %>% 
+  select(batch_LC, met, .resid, daily_num)
+
+coefs_glance <- unnest(by_batch_LC,glance) %>% 
+  select(batch_LC, met, adj.r.squared)
+
+coefs_term <- unnest(by_batch_LC, coefficients) %>% 
+  pivot_wider(id_cols = c(batch_LC, met),
+              names_from = "term",
+              values_from = estimate) %>% 
+  rename(x = daily_num,
+         intercept = `(Intercept)`)
+
+
+coefs_pvalue <- by_batch_LC %>% 
+  select(batch_LC, met, coefficients) %>%
+  ungroup() %>% 
+  unnest(coefficients) %>% 
+  pivot_wider(id_cols = c(batch_LC, met),
+              names_from = "term",
+              values_from = p.value) %>% 
+  rename(intercept_pval = `(Intercept)`,
+         daily_num_pval = daily_num) %>% 
+  full_join(features) %>% 
+  full_join(coefs_term) %>% 
+  #left_join(coefs_aug) %>% 
+  full_join(coefs_glance) 
+
+median <- features %>% 
+  filter(class=="run_qc") %>% 
+  group_by(batch_LC, met) %>% 
+  summarise(median = median (isnorm))
+
+features_lin <- unnest(by_batch_LC, predicts) %>% 
+  full_join(coefs_pvalue) %>% 
+  full_join(median) %>% 
+  mutate(pred = intercept + x*daily_num,
+         predp = ifelse(daily_num_pval <=0.05 & adj.r.squared >= 0.75, pred, median),
+         predp = ifelse(is.na(predp), median, predp)) %>%
+  select(- c("data", "model", "coefficients")) 
+
+adjust_lin <- features_lin %>% 
+  ungroup() %>% 
+  group_by(met) %>% 
+  summarise(lin_offset = if_else(any(predp <0), 1.001*abs(min(predp)),0))
+
+features_lin <- features_lin %>%
+  ungroup() %>% 
+  full_join(adjust_lin) %>%
+  full_join(features) %>% 
+  mutate(linnorm = (isnorm+lin_offset)/(predp+lin_offset),
+         linnorm_fw = linnorm/sample_weight,
+         linnorm_fw_log = log2(linnorm_fw))
+
+
+
+
+#Fit loess-model for QC-RLSC batch_lipwise####
+rejoin <- features
+features <- rejoin
+
+QC_loess <- features %>% 
+  ungroup() %>% 
+  filter(class == "run_qc") %>%
+  #filter(met!="m_44") %>% 
+  group_by(met,  batch_LC) %>% 
+  nest()
+
+loess_model <- function (df) {
+  loess(isnorm ~ daily_num, span = 1.5, data = df,control = loess.control(surface = "interpolate"))
+}
+
+start <- Sys.time()
+QC_loess <- QC_loess %>% 
+  mutate(model = map (data, loess_model),
+         daily_num = list(seq(1,65,1)),
+         predict = map2(model,daily_num,stats::predict))
+end <- Sys.time()
+end-start
+
+features_loess <- QC_loess %>%
+  unnest(c(predict, daily_num, batch_LC)) %>% 
+  select(-model, -data) %>% 
+  full_join(rejoin) %>% 
+  filter(!is.na(machine_num_LC))
+
+adjust <- features_loess %>% 
+  ungroup() %>% 
+  group_by(met) %>% 
+  summarise(offset = if_else (any(predict <0), 1.001*abs(min(predict)),0))
+
+features_loess <- features_loess %>% 
+  left_join(adjust) %>% 
+  mutate(loess_norm = (isnorm+offset)/(predict+offset),
+         loess_norm_fw = loess_norm/sample_weight,
+         loess_norm_fw_log = log2(loess_norm_fw))%>% 
+  ungroup()
+
+
+
+
+# Relative log abundance plots --------------------------------------------
+
+features_all <- features_lin %>% 
+  left_join(features_loess)
+
+
+features_all %>% 
+  filter(!is.na(genotype)) %>% 
+  group_by(met,  treatment) %>% 
+  mutate(sub = loess_norm_fw,
+         rla = log2(sub) - median(log2(sub))) %>% 
+  ggplot(aes(x = met, y = rla)) +
+  geom_boxplot() +
+  facet_grid(rows = vars(treatment), scales = "free")+
+  theme(axis.text.x = element_text(angle = 45, hjust = 1))
+
+features_all %>% 
+  #filter(!is.na(taxa)) %>% 
+  filter(treatment == 1, class == "sample") %>% 
+  mutate(run_num_LC = as_factor(run_num_LC),
+         batch_LC = as_factor(batch_LC)) %>% 
+  group_by(met,  treatment) %>% 
+  mutate(rla_imp = log2(imp) - median(log2(imp)),
+         rla_isnorm = log2(isnorm) - median(log2(isnorm)),
+         rla_loess_norm = log2(loess_norm_fw) - median(log2(loess_norm_fw))) %>%
+  pivot_longer(starts_with("rla"), names_to = "normalization", values_to = "rla") %>% 
+  ggplot(aes(x = met, y = rla)) +
+  geom_boxplot() +
+  facet_grid(rows = vars(normalization), cols = vars(treatment), scales = "free")+
+  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
+  ylim(c(-2,2))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "Ath_Dark_0_3_6_GC_met_rla_plot.jpg",
+             sep = "_"))
+
+features_all %>% 
+  #filter(!is.na(taxa)) %>% 
+  filter(class == "sample") %>% 
+  mutate(run_num_LC = as_factor(run_num_LC),
+         batch_LC = as_factor(batch_LC)) %>% 
+  group_by(met,  treatment) %>% 
+  mutate(rla_imp = log2(imp) - median(log2(imp)),
+         rla_isnorm = log2(isnorm) - median(log2(isnorm)),
+         rla_loess_norm = log2(loess_norm_fw) - median(log2(loess_norm_fw))) %>%
+  pivot_longer(starts_with("rla"), names_to = "normalization", values_to = "rla") %>% 
+  ggplot(aes(x = run_num_LC, y = rla, color = batch_LC)) +
+  geom_boxplot() +
+  facet_grid(rows = vars(normalization), scales = "free")+
+  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
+  ylim(c(-1,1))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_2_samples_rla_plot.jpg",
+             sep = "_"))
+
+
+# RSD estimation ----------------------------------------------------------
+
+
+
+
+RSD_bio_reps <- features_all %>% 
+  filter(class == "sample") %>% 
+  #filter(!is.na(taxa)) %>% 
+  group_by(met) %>% 
+  #filter((any(qc_imputed) == T)==F) %>% 
+  group_by(met, treatment, genotype, tissue, exp) %>% 
+  summarise(RSD_imp = sd(imp)/mean(imp),
+            RSD_isnorm = sd(isnorm) / mean(isnorm),
+            RSD_linnorm = abs(sd (linnorm_fw)/ mean(linnorm_fw)),
+            RSD_loess_norm = abs(sd(loess_norm_fw) / mean(loess_norm_fw)))
+            
+            
+RSD_bio_reps_mean <- RSD_bio_reps %>% 
+  #mutate(RSD_diff = RSD_imp-RSD_loess) %>% 
+  ungroup() %>% 
+  #group_by(treatment, tissue, exp) %>% 
+  summarise(#mean_RSD_loess = mean(RSD_loess),
+    mean_imp = mean(na.omit(RSD_imp)),
+    mean_loess_norm = mean(na.omit(RSD_loess_norm)),
+    mean_RSD_isnorm = mean(na.omit(RSD_isnorm )),
+    mean_linnorm = mean(na.omit(RSD_linnorm)))
+
+RSD_qcs <- features_all %>% 
+  filter(class == "run_qc") %>% 
+  group_by(met) %>% 
+  #filter((any(qc_imputed) == T)==F) %>% 
+  group_by(met, exp) %>% 
+  summarise(RSD_imp = sd(imp)/mean(imp),
+            RSD_isnorm = sd(isnorm) / mean(isnorm),
+            RSD_linnorm = abs(sd (linnorm_fw)/ mean(linnorm_fw)),
+            RSD_loess_norm = abs(sd(loess_norm_fw) / mean(loess_norm_fw)))
+
+RSD_qcs_mean <- RSD_qcs %>% 
+  #mutate(RSD_diff = RSD_imp-RSD_loess) %>% 
+  ungroup() %>% 
+  group_by(exp) %>% 
+  summarise(#mean_RSD_loess = mean(RSD_loess),
+    mean_imp = mean(na.omit(RSD_imp)),
+    mean_loess_norm = mean(na.omit(RSD_loess_norm)),
+    mean_RSD_isnorm = mean(na.omit(RSD_isnorm )),
+    mean_linnorm = mean(na.omit(RSD_linnorm)))
+
+
+
+#PCA testing chunk####
+##https://www.intechopen.com/books/metabolomics-fundamentals-and-applications/processing-and-visualization-of-metabolomics-data-using-r
+#exp1
+pca <- summary(prcomp(
+  features_all %>%
+    ungroup() %>% 
+    filter(exp == 1) %>% 
+    # group_by(treatment) %>% 
+    arrange(run_num_LC) %>%
+    #  filter(class=="sample") %>% 
+    # filter(met %in% overlap_met$met) %>% 
+    mutate(log_imp = log2(imp)) %>% 
+    pivot_wider(id_cols = c(run_num_LC, class),
+                names_from = met,
+                values_from = linnorm_fw_log) %>%
+    select(starts_with("Cluster_"))))
+
+sam_vars <- colnames(sam_dat)
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  full_join(sam_dat %>% 
+              #group_by(treatment) %>% 
+              arrange(run_num_LC) %>%
+              filter(exp == 1) %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  left_join(sam_dat) %>% 
+  mutate(batch_LC= as_factor(batch_LC),
+         class= as_factor(class)) %>% 
+  select(all_of(sam_vars), everything())
+#filter(PC1 >-1000, PC2 <30)
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = tissue)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = tissue)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_tissue_lin_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = treatment)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_treatment_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+
+#PCA after loess normalization
+
+pca <- summary(prcomp(
+  features_all %>%
+    ungroup() %>% 
+    filter(exp == 1) %>% 
+    # group_by(treatment) %>% 
+    arrange(run_num_LC) %>%
+    #  filter(class=="sample") %>% 
+    # filter(met %in% overlap_met$met) %>% 
+    mutate(log_imp = log2(imp)) %>% 
+    pivot_wider(id_cols = c(run_num_LC, class),
+                names_from = met,
+                values_from = loess_norm_fw_log) %>%
+    select(starts_with("Cluster_"))))
+
+sam_vars <- colnames(sam_dat)
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  full_join(sam_dat %>% 
+              #group_by(treatment) %>% 
+              arrange(run_num_LC) %>%
+              filter(exp == 1) %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  left_join(sam_dat) %>% 
+  mutate(batch_LC= as_factor(batch_LC),
+         class= as_factor(class)) %>% 
+  select(all_of(sam_vars), everything())
+#filter(PC1 >-1000, PC2 <30)
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = tissue)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = tissue)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_tissue_loess_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = treatment)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_treatment_loess_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+tissues <- c("leaves", "fruits")
+for(tiss in seq_along(tissues)){
+  
+  pca <- summary(prcomp(
+    features_all %>%
+      ungroup() %>% 
+      filter(exp == 1, tissue == tissues[[tiss]]) %>% 
+      # group_by(treatment) %>% 
+      arrange(run_num_LC) %>%
+      #  filter(class=="sample") %>% 
+      # filter(met %in% overlap_met$met) %>% 
+      mutate(log_imp = log2(imp)) %>% 
+      pivot_wider(id_cols = c(run_num_LC, class),
+                  names_from = met,
+                  values_from = loess_norm_fw_log) %>%
+      select(starts_with("Cluster_"))))
+  
+  sam_vars <- colnames(sam_dat)
+  
+  pca_plot <- as_tibble(pca$x) %>% 
+    mutate(join_num = 1:nrow(pca$x)) %>% 
+    full_join(sam_dat %>% 
+                #group_by(treatment) %>% 
+                arrange(run_num_LC) %>%
+                filter(exp == 1, tissue == tissues[[tiss]]) %>% 
+                mutate(join_num=1:nrow(pca$x))) %>%
+    left_join(sam_dat) %>% 
+    mutate(batch_LC= as_factor(batch_LC),
+           class= as_factor(class)) %>% 
+    select(all_of(sam_vars), everything())
+  #filter(PC1 >-1000, PC2 <30)
+  
+  exp_var <- as_tibble(pca[["importance"]])
+  
+  pca_plot %>% 
+    #  filter(treatment == "HL") %>% 
+    ggplot()+
+    geom_jitter(aes(x=PC1, y=PC2,  color = treatment)) +
+    stat_ellipse(aes(x=PC1, y=PC2, color = treatment)) +
+    ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+    xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+  
+  ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+               "cmQTL_val1", tissues[[tiss]], "treatment_loess_PCA.jpg",
+               sep = "_"),
+         width = 183,
+         height = 100,
+         units = "mm",
+         dpi = 300)
+}
+
+
+# PCA before normalization
+
+pca <- summary(prcomp(
+  features_all %>%
+    ungroup() %>% 
+    filter(exp == 1) %>% 
+    # group_by(treatment) %>% 
+    arrange(run_num_LC) %>%
+    #  filter(class=="sample") %>% 
+    # filter(met %in% overlap_met$met) %>% 
+    mutate(log_imp = log2(imp)) %>% 
+    pivot_wider(id_cols = c(run_num_LC, class),
+                names_from = met,
+                values_from = log_imp) %>%
+    select(starts_with("Cluster_"))))
+
+sam_vars <- colnames(sam_dat)
+
+pca_plot <- as_tibble(pca$x) %>% 
+  mutate(join_num = 1:nrow(pca$x)) %>% 
+  full_join(sam_dat %>% 
+              #group_by(treatment) %>% 
+              arrange(run_num_LC) %>%
+              filter(exp == 1) %>% 
+              mutate(join_num=1:nrow(pca$x))) %>%
+  left_join(sam_dat) %>% 
+  mutate(batch_LC= as_factor(batch_LC),
+         class= as_factor(class)) %>% 
+  select(all_of(sam_vars), everything())
+#filter(PC1 >-1000, PC2 <30)
+
+exp_var <- as_tibble(pca[["importance"]])
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = tissue)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = tissue)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_tissue_imp_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+pca_plot %>% 
+  #  filter(treatment == "HL") %>% 
+  ggplot()+
+  geom_jitter(aes(x=PC1, y=PC2,  color = batch_LC)) +
+  stat_ellipse(aes(x=PC1, y=PC2, color = batch_LC)) +
+  ylab(str_c("PC2 ", "(", exp_var$PC2[[2]]*100, "%)")) +
+  xlab(str_c("PC1 ", "(", exp_var$PC1[[2]]*100, "%)"))
+
+ggsave(str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+             "cmQTL_val1_batch_imp_PCA.jpg",
+             sep = "_"),
+       width = 183,
+       height = 100,
+       units = "mm",
+       dpi = 300)
+
+
+
+
+# Plot all metabolites ----------------------------------------------------
+
+plotmets <- features_all %>% distinct(met) %>% as_vector
+plotmet_labs <- plotmets %>% as_tibble() %>% 
+  left_join(met_dat, by= c("value" = "met")) %>% 
+  #mutate(peak_num = base::rank(HMDB_clear_name, ties.method = "first"),
+  #       dup = sum(peak_num),
+  #       HMDB_clear_name_unique = if_else(dup>1, str_c(HMDB_clear_name, peak_num), HMDB_clear_name)) %>% 
+  #ungroup() %>% 
+  select(Compound_Name) %>% as_vector()
+
+plot_out <- vector("list", length = length(plotmets))
+
+for (meta in seq_along(plotmets)) {
+  
+  plot_out [[meta]] <- features_all %>% 
+    mutate(xint = if_else(daily_num == 4, run_num_LC-3.5, max(run_num_LC)),
+           is_miss = as_factor(if_else(is.na(area), T, F))) %>% 
+    filter(met == plotmets[[meta]]) %>%
+    filter(class!="blank") %>% 
+    ggplot(aes(x=run_num_LC, y=isnorm)) +
+    geom_point(aes(color = class, shape = is_miss)) +
+    geom_point(aes(y=predict), color="black", size=0.1) +
+    geom_vline(aes(xintercept = xint))+
+   # facet_grid(rows = vars(treatment), cols = vars(rep), scales = "free") +
+    ggtitle(label = plotmet_labs[[meta]])
+
+}
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"_loess_fit.pdf"))
+
+
+for (meta in seq_along(plotmets)) {
+  print(plot_out[[meta]])
+}
+
+dev.off()
+
+plot_out <- vector("list", length = length(plotmets))
+
+for (meta in seq_along(plotmets)) {
+  
+  plot_out [[meta]] <- features_all %>% 
+    mutate(xint = if_else(daily_num == 4, run_num_LC-3.5, max(run_num_LC))) %>% 
+    filter(met == plotmets[[meta]]) %>%
+    filter(class!="blank") %>% 
+    ggplot(aes(x=run_num_LC, y=loess_norm_fw_log)) +
+    geom_point(aes(color=class)) +
+    #geom_point(aes(y=predp), color="black", size=0.1) +
+    geom_vline(aes(xintercept = xint))+
+    # facet_grid(rows = vars(treatment), cols = vars(rep), scales = "free") +
+    ggtitle(label = plotmet_labs[[meta]])
+  
+}
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"_loess_norm_fw_log.pdf"))
+
+
+for (meta in seq_along(plotmets)) {
+  print(plot_out[[meta]])
+}
+
+dev.off()
+
+for (meta in seq_along(plotmets)) {
+  
+  plot_out [[meta]] <- features_all %>% 
+    mutate(xint = if_else(daily_num == 4, run_num_LC-3.5, max(run_num_LC))) %>% 
+    filter(met == plotmets[[meta]]) %>%
+    filter(class!="blank") %>% 
+    ggplot(aes(x=run_num_LC, y=linnorm_fw)) +
+    geom_point(aes(color=class)) +
+    geom_vline(aes(xintercept = xint))+
+    facet_grid(rows = vars(treatment), scales = "free") +
+    ggtitle(label = plotmet_labs[[meta]])
+  
+}
+
+pdf(file = str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),"_linnorm.pdf"))
+
+for (meta in seq_along(plotmets)) {
+  print(plot_out[[meta]])
+}
+
+dev.off()
+
+rescale <- features_all %>% 
+  group_by(met, tissue, exp) %>% 
+  summarise(rescale = median(imp))
+
+features_out <- features_all %>% 
+  left_join(rescale) %>% 
+  group_by(met, tissue, exp) %>% 
+  mutate(loess_norm_med = loess_norm_fw/median(loess_norm_fw),
+         rescaled = loess_norm_med*rescale) %>% 
+  select(all_of(sam_vars), met, Compound_Name, Compound_Class, loess_norm_fw, loess_norm_med, area, rescaled)
+
+features_out %>% 
+  filter(met == "Cluster_02177", tissue == "fruits", exp == 1) %>% 
+  ggplot(aes(x = run_num_LC, y = loess_norm_fw)) +
+  geom_point()
+
+# Write files -------------------------------------------------------------
+
+
+
+write_csv(features_out, 
+          str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                "cmQTL_val_1_2_feat_dat_LC.csv",
+                sep = "_"))
+
+write_csv(met_dat, 
+          str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                "cmQTL_val_1_2_met_dat_LC.csv",
+                sep = "_"))
+
+write_csv(sam_dat, 
+          str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                "cmQTL_val_1_2_sam_dat_LC.csv",
+                sep = "_"))
+
+write_csv(missingness, 
+          str_c(str_replace_all(Sys.Date(),"^.{2}|-",""),
+                "cmQTL_val_1_2_miss_LC.csv",
+                sep = "_"))
+# Log used code ------------------------------------------------------------
+
+file_name <- sys.frame(1)$ofile
+
+file.copy(file_name,
+          to = str_c(out_dir, str_remove(file_name, current), "_", str_replace_all(Sys.Date(),"^.{2}|-",""), ".R"),overwrite = T)
-- 
GitLab