Last update: 03-04-24

ToDo: - format

# version: 22.03.24
knitr::opts_chunk$set(warning = FALSE, message = FALSE, results = FALSE) 

# dirs
## Sebastian @Linux
dir_moa <- "/home/isar/Dropbox/scn_moa/"
## Sebastian @MAC
# dir_moa <- "/Users/home_sh/Library/CloudStorage/Dropbox/scn_moa"


# data, revised 2024.01.09
# exp
load(file = paste0(dir_moa, "/data/final/", "gnp.pro.RData"))
load(file = paste0(dir_moa, "/data/final/", "gnp.mrn.RData"))
load(file = paste0(dir_moa, "/data/final/", "gnp.mic.RData"))
load(file = paste0(dir_moa, "/data/final/", "anno.RData"))

# results
load(file = paste0(dir_moa, "/data/final/", "dex.all.RData"))
load(file = paste0(dir_moa, "/data/final/", "timeomics.singles.RData"))
load(file = paste0(dir_moa, "/data/final/", "res.wgcna.RData"))


## packages
source(paste0(dir_moa, "/scripts/", "scn_moa_fct.R"))
# load packagea
sapply(packages_general, require, character.only = TRUE)
sapply(packages_enrichment, require, character.only = TRUE)

library("viridis")


## graphics

# size
global_size = 21

thema_nix = theme(axis.title.x=element_blank(),
                  axis.title.y=element_blank())
thema_noY = theme(axis.title.y=element_blank())
thema_noX = theme(axis.title.x=element_blank())

# shapes (mrn & pro)
shps <- c(1, 16)

base data

medians

# extract data
fan <- gnp.mrn$fan

# pro: single values
exp_proL <- as.data.frame(t(gnp.pro$exp_pro_vsn))
exp_proL$UNIPROT <- rownames(exp_proL)
exp_proL <- exp_proL %>% pivot_longer(!UNIPROT, names_to = "id", values_to = "value")
exp_proL$stage <- gnp.pro$san_pro$stage[match(exp_proL$id, gnp.pro$san_pro$id)]
exp_proL$SYMBOL <- fan$SYMBOL[match(exp_proL$UNIPROT, fan$UNIPROT)]
exp_proL$ENSG <- fan$ENSG[match(exp_proL$UNIPROT, fan$UNIPROT)]
exp_proL$stage <- factor(exp_proL$stage, levels = c('MB', 'PM', 'MC', 'MM', 'B', 'S', 'PMN'))

# pro: means
exp_proLc <- exp_proL %>%
  select(ENSG, stage, value) %>%
  group_by(ENSG, stage) %>%
  dplyr::summarise(mean= mean(value), median= median(value))
exp_proLc$SYMBOL <- fan$SYMBOL[match(exp_proLc$ENSG, fan$ENSG)]
exp_proLc$stage <- factor(exp_proLc$stage, levels = c('MB', 'PM', 'MC', 'MM', 'B', 'PMN'))

exp_proWc <- exp_proLc %>% select(SYMBOL, stage, median) %>%
  pivot_wider(names_from = stage, values_from = median)



# mrn: single values
exp_mrnL <- as.data.frame(t(gnp.mrn$exp_mrn_tpm_vsn))
exp_mrnL$ENSG <- rownames(exp_mrnL)
exp_mrnL <- exp_mrnL %>% pivot_longer(!ENSG, names_to = "id", values_to = "value")
exp_mrnL$stage <- gnp.mrn$san_mrn$stage[match(exp_mrnL$id, gnp.mrn$san_mrn$id)]
exp_mrnL$SYMBOL <- fan$SYMBOL[match(exp_mrnL$ENSG, fan$ENSG)]
exp_mrnL$stage <- factor(exp_mrnL$stage, levels = c('MB', 'PM', 'MC', 'MM', 'B', 'S', 'PMN'))
 

# mrn: means
exp_mrnLc <- exp_mrnL %>%
  select(ENSG, stage, value) %>%
  group_by(ENSG, stage) %>%
  dplyr::summarise(median= median(value, na.rm = T))
exp_mrnLc$SYMBOL <- fan$SYMBOL[match(exp_mrnLc$ENSG, fan$ENSG)]
exp_mrnLc$stage <- factor(exp_mrnLc$stage, levels = c('MB', 'PM', 'MC', 'MM', 'B', 'S', 'PMN'))

# turn into wide to get direction 
exp_mrnWc <- exp_mrnLc %>% select(SYMBOL, stage, median) %>%
  pivot_wider(names_from = stage, values_from = median)



# mic: means

# single values
exp_micL <- as.data.frame(t(gnp.mic$exp_mic_vsn))
exp_micL$SYMBOL <- rownames(exp_micL)
exp_micL <- exp_micL %>% pivot_longer(!SYMBOL, names_to = "id", values_to = "value")
exp_micL$stage <- gnp.mic$san_mic$stage[match(exp_micL$id, gnp.mic$san_mic$id)]

exp_micLc <- exp_micL %>%
  select(SYMBOL, stage, value) %>%
  group_by(SYMBOL, stage) %>%
  dplyr::summarise(median= median(value, na.rm = T))
exp_micLc$stage <- factor(exp_micLc$stage, levels = c('MB', 'MC', 'MM', 'B', 'S', 'PMN'))

# turn into wide to get direction 
exp_micWc <- exp_micLc %>% select(SYMBOL, stage, median) %>%
  pivot_wider(names_from = stage, values_from = median)


#exp_micWc$direction.MBtoMC <- ifelse(exp_micWc$MB > exp_micWc$MC, 'down', 'up')


#exp_micWc$direction <- ifelse(exp_micWc$MB > exp_micWc$PMN, 'down', 'up')

# transfer
#exp_micLc$direction.MBtoMC <- exp_micWc$direction.MBtoMC[match(exp_micLc$SYMBOL, exp_micWc$SYMBOL)]

mo.lines

fct

prep.lines4fid <- function(fidE){
  means.mrn <- exp_mrnL %>% filter(ENSG %in% fidE) %>%
    filter(stage != 'S') %>%
     group_by(stage) %>%
     summarise(mean = mean(value, na.rm = T))
  means.pro <- exp_proL %>% filter(ENSG %in% fidE) %>%
     group_by(stage) %>%
     summarise(mean = mean(value, na.rm = T))
  # combo
  means.combo <- means.mrn %>%
  mutate(
    Transcriptome = as.vector(scale(.$mean)),
    Proteome = as.vector(scale(means.pro$mean))
  ) %>%
  select(-mean) %>%
  pivot_longer(
    Transcriptome:Proteome,
    names_to = "Level",
    values_to = "value"
  )
  return(means.combo)
}

plot.lines <- function(means.combo, TITLE) {
  p <- means.combo %>%
    ggplot(
      aes(
        stage, value, colour = Level
      )
    ) +
    geom_point() +
    geom_line(aes(group = Level), size =2 ) +
    theme_light(base_size = 12) +
  labs(title=TITLE,
        #x ="", 
       y = "z-value") +
    theme(axis.title.x = element_blank()) +
  theme(
    #legend.position = c(0.99, 0.01),
    #legend.justification = c("right", "bottom"),
    #legend.text = element_text(size=8),
    #legend.title = element_blank(),
    legend.position = 'none',
    axis.text.x=element_text(angle=30, hjust=1),
    legend.margin=margin(c(1,5,5,5))) +
  scale_color_manual(values = colors_mrn_pro)
  return(p)
}

# colors_mrn_pro <- c(
#   "Transcriptome" = "#008F7A",
#   "Proteome" = '#C6F093'
# )

colors_mrn_pro <- c(
  "Transcriptome" = "#008F7A",
  "Proteome" = '#8EB85E'
)

compartments

# prim gran
foi_prim.gran <- anno$fan.locs %>% filter(granule == 'Primary') %>% select(ENSG)
foi_prim.gran <- add.fan2ENSG(foi_prim.gran)

dat.lin_prim.gran <- prep.lines4fid(foi_prim.gran$ENSG)
p.lin_prim.gran <- plot.lines(dat.lin_prim.gran, 'Primary gr.')
p.lin_prim.gran

ggsave(
  filename = paste0(dir_moa, "/figures/final/fig_2/", "p.lin_prim.gran", ".svg"),
  plot = p.lin_prim.gran,
  device = svg,
  width = 3,
  height = 3)

            # sec gran
foi_sec.gran <- anno$fan.locs %>% filter(granule == 'Secondary') %>% select(ENSG)
foi_sec.gran <- add.fan2ENSG(foi_sec.gran)

dat.lin_sec.gran <- prep.lines4fid(foi_sec.gran$ENSG)
p.lin_sec.gran <- plot.lines(dat.lin_sec.gran, 'Secondary gr.')
p.lin_sec.gran

ggsave(
  filename = paste0(dir_moa, "/figures/final/fig_2/", "p.lin_sec.gran", ".svg"),
  plot = p.lin_sec.gran,
  device = svg,
  width = 3,
  height = 3)

# ter gran
foi_ter.gran <- anno$fan.locs %>% filter(granule == 'Tertiary') %>% select(ENSG)
foi_ter.gran <- add.fan2ENSG(foi_ter.gran)

dat.lin_ter.gran <- prep.lines4fid(foi_ter.gran$ENSG)
p.lin_ter.gran <- plot.lines(dat.lin_ter.gran, 'Tertiary gr.')
p.lin_ter.gran

ggsave(
  filename = paste0(dir_moa, "/figures/final/fig_2/", "p.lin_ter.gran", ".svg"),
  plot = p.lin_ter.gran,
  device = svg,
  width = 3,
  height = 3)

# ter gran
foi_fic.gran <- anno$fan.locs %>% filter(granule == 'Ficolin-1') %>% select(ENSG)
foi_fic.gran <- add.fan2ENSG(foi_fic.gran)

dat.lin_fic.gran <- prep.lines4fid(foi_fic.gran$ENSG)
p.lin_fic.gran <- plot.lines(dat.lin_fic.gran, 'Ficolin-1 gr.')
p.lin_fic.gran

ggsave(
  filename = paste0(dir_moa, "/figures/final/fig_2/", "p.lin_fic.gran", ".svg"),
  plot = p.lin_fic.gran,
  device = svg,
  width = 3,
  height = 3)

# secretory
foi_secr.gran <- anno$fan.locs %>% filter(granule == 'Secretory') %>% select(ENSG)
foi_secr.gran <- add.fan2ENSG(foi_secr.gran)

dat.lin_secr.gran <- prep.lines4fid(foi_secr.gran$ENSG)
p.lin_secr.gran <- plot.lines(dat.lin_secr.gran, 'Secretory ves.')
p.lin_secr.gran

ggsave(
  filename = paste0(dir_moa, "/figures/final/fig_2/", "p.lin_secr.gran", ".svg"),
  plot = p.lin_secr.gran,
  device = svg,
  width = 3,
  height = 3)

# membrane
foi_mem <- anno$fan.locs %>% filter(plasma_membrane == 'Plasma membrane') %>% select(ENSG)
foi_mem <- add.fan2ENSG(foi_mem)

dat.lin_mem <- prep.lines4fid(foi_mem$ENSG)
p.lin_mem <- plot.lines(dat.lin_mem, 'Membrane')
p.lin_mem

ggsave(
  filename = paste0(dir_moa, "/figures/final/fig_2/", "p.lin_mem", ".svg"),
  plot = p.lin_mem,
  device = svg,
  width = 3,
  height = 3)



# check go
# table(anno$GO_long)

# ribosomes: GO:0005840
foi_ribo.GO <- anno$GO_long %>% filter(GOALL == 'GO:0005840') %>% select(ENSG) %>% distinct(ENSG) 
foi_ribo.GO <- add.fan2ENSG(foi_ribo.GO)

dat.lin_ribo <- prep.lines4fid(foi_ribo.GO$ENSG)

p.lin_ribo <- plot.lines(dat.lin_ribo, 'Ribosomes')
  
p.lin_ribo

ggsave(
  filename = paste0(dir_moa, "/figures/final/fig_2/", "p.lin_ribo", ".svg"),
  plot = p.lin_ribo,
  device = svg,
  width = 3,
  height = 3)



# mitochondrion: GO:0005739
head(anno$GO_long)

foi_mito.GO <- anno$GO_long %>% filter(GOALL == 'GO:0005739') %>% select(ENSG) %>% distinct(ENSG) 
foi_mito.GO <- add.fan2ENSG(foi_mito.GO)

dat.lin_mito <- prep.lines4fid(foi_mito.GO$ENSG)
p.lin_mito <- plot.lines(dat.lin_mito, 'Mitochondrion')
  
p.lin_mito

ggsave(
  filename = paste0(dir_moa, "/figures/final/fig_2/", "p.lin_mito", ".svg"),
  plot = p.lin_mito,
  device = svg,
  width = 3,
  height = 3)



# # fig
fig_line.gran <- ggarrange(
  # PMN
  p.lin_prim.gran + theme_noX,
  p.lin_sec.gran + theme_nada,
  p.lin_ter.gran + theme_noX,
  p.lin_fic.gran + theme_nada,
  p.lin_secr.gran + theme_noX,
  p.lin_mem + theme_nada,
  p.lin_ribo ,
  p.lin_mito + theme_noY,
  
  # options
  nrow = 4,
  ncol = 2)

fig_line.gran