library(dplyr)
library(stringr)

sex1_file <- "/BRC/yan/heart/getx_LV/filtered_count_table/Heart_-_Left_Ventricle_sex1_filter.txt"
sex2_file <- "/BRC/yan/heart/getx_LV/filtered_count_table/Heart_-_Left_Ventricle_sex2_filter.txt"

parse_meta <- function(file_path) {
  header <- scan(file_path, what = character(), nlines = 1, quiet = TRUE)
  # drop first 2 fields: Name, Description
  samples <- header[-(1:2)]

  tibble(sample_id = samples) %>%
    mutate(
      sex      = str_extract(sample_id, "sex[12]"),
      age_band = str_extract(sample_id, "age[0-9]+\\.[0-9]+"),
      age_min  = as.integer(sub("age([0-9]+).*", "\\1", age_band))
    ) %>%
    filter(age_min < 50 | age_min >= 60) %>%
    mutate(
      age_group = if_else(age_min < 50, "young", "old"),
      age_group = factor(age_group, levels = c("young", "old"))
    ) %>%
    select(sample_id, sex, age_band, age_group)
}

meta_sex1 <- parse_meta(sex1_file)
meta_sex2 <- parse_meta(sex2_file)

cat("sex1 meta table:\n")
print(table(meta_sex1$age_group))
cat("\nsex2 meta table:\n")
print(table(meta_sex2$age_group))

write.table(meta_sex1,
            "/BRC/yan/heart/analysis/meta_sex1.txt",
            sep = "\t", quote = FALSE, row.names = FALSE)

write.table(meta_sex2,
            "/BRC/yan/heart/analysis/meta_sex2.txt",
            sep = "\t", quote = FALSE, row.names = FALSE)

cat("\nMeta tables written to analysis/meta_sex1.txt and meta_sex2.txt\n")
