library(tidyverse)
library(ggVennDiagram)

deg_dir <- "."

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

parse_filename <- function(path) {
  parts <- str_split(basename(path), "_")[[1]]
  tibble(
    path,
    dose      = str_remove(parts[1], "BPA"),
    sex       = parts[2],
    tissue    = parts[8],
    direction = parts[9]
  )
}

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

# 4 combinations: sex × dose
conditions <- meta %>%
  distinct(sex, dose) %>%
  arrange(sex, dose)

for (i in seq_len(nrow(conditions))) {
  sx   <- conditions$sex[i]
  ds   <- conditions$dose[i]
  
  sub <- meta %>%
    filter(sex == sx, dose == ds) %>%
    group_by(tissue) %>%
    summarise(genes = list(unique(unname(unlist(genes)))), .groups = "drop")
  
  venn_list <- lapply(seq_len(nrow(sub)), function(j) sub$genes[[j]])
  names(venn_list) <- sub$tissue   # blood / brain / liver
  
  p <- ggVennDiagram(venn_list, label = "count", label_alpha = 0) +
    scale_fill_distiller(palette = "RdBu", direction = -1) +
    scale_color_manual(values = rep("grey30", 3)) +
    labs(
      title    = paste0(tolower(sx), " ", ds, " — tissue DEG overlap (padj < 0.001, log2FC > abs(log2(1.5)))"),
      subtitle = "blood × brain × liver"
    ) +
    theme(
      plot.title    = element_text(hjust = 0.5),
      plot.subtitle = element_text(hjust = 0.5)
    )
  
  fname <- paste0("Venn_tissue_", tolower(sx), "_", ds, ".pdf")
  ggsave(fname, p, width = 6.5, height = 6)
  message("Saved: ", fname)
}
