library(tidyverse)
library(ggVennDiagram)

deg_dir <- "."

files <- list.files(deg_dir, pattern = "^BPA", full.names = TRUE)

# BPA10mg_Female_adult_Ctrl_Female_adult_Bartolomei_blood_down
#   [1]     [2]   [3]  [4]   [5]   [6]     [7]       [8]  [9]
parse_filename <- function(path) {
  parts <- str_split(basename(path), "_")[[1]]
  tibble(
    path,
    dose      = str_remove(parts[1], "BPA"),   # 10mg / 10ug
    sex       = parts[2],                        # Female / Male
    tissue    = parts[8],                        # blood / brain / liver
    direction = parts[9]                         # up / down
  )
}

meta <- map_dfr(files, parse_filename) %>%
  mutate(genes = map(path, ~read_tsv(.x, show_col_types = FALSE)$gene))

tissue_titles <- c(
  brain = "Brain Adult DEG Overlap",
  blood = "Blood Adult DEG Overlap",
  liver = "Liver Adult DEG Overlap"
)

for (tis in c("brain", "blood", "liver")) {

  sub <- meta %>%
    filter(tissue == tis) %>%
    group_by(sex, dose) %>%
    summarise(genes = list(unique(unname(unlist(genes)))), .groups = "drop") %>%
    mutate(label = paste0(dose, "_", tolower(sex)))

  venn_list <- lapply(seq_len(nrow(sub)), function(i) sub$genes[[i]])
  names(venn_list) <- sub$label

  p <- ggVennDiagram(venn_list, label = "count", label_alpha = 0) +
    scale_fill_distiller(palette = "RdBu", direction = -1) +
    scale_color_manual(values = rep("grey30", 4)) +
    labs(
      title    = paste0(tissue_titles[tis], " (padj < 0.001, log2FC > abs(log2(1.5)))"),
      subtitle = "sex × dose"
    ) +
    theme(
      plot.title    = element_text(hjust = 0.5),
      plot.subtitle = element_text(hjust = 0.5)
    )

  ggsave(paste0("Venn_", tis, "_adult.pdf"), p, width = 7, height = 6.5)
  message("Saved: Venn_", tis, "_adult.pdf")
}
