From 1fd9692d56688cf1275e783d152bd8bbfed0b967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81lvarez=20Herrera?= Date: Tue, 10 Feb 2026 17:19:19 +0100 Subject: [PATCH 1/3] refactor: rename REGION field to CHROM --- workflow/rules/sites.smk | 2 -- workflow/scripts/fill_all_sites.R | 13 ++++++------- workflow/scripts/merge_annotation.R | 11 ++++++----- workflow/scripts/report/af_time_correlation_data.R | 4 ++-- workflow/scripts/report/nv_panel_data.R | 4 ++-- .../report/polymorphic_sites_over_time_data.R | 2 +- 6 files changed, 17 insertions(+), 19 deletions(-) diff --git a/workflow/rules/sites.smk b/workflow/rules/sites.smk index 493d06c..9ff7739 100644 --- a/workflow/rules/sites.smk +++ b/workflow/rules/sites.smk @@ -31,8 +31,6 @@ rule filter_mpileup_all_sites: output: sites_pass = temp(OUTDIR / "all_sites" / "{sample}.filtered_sites.tsv"), sites_fail = temp(OUTDIR / "all_sites" / "{sample}.fail_sites.tsv"), - log: - LOGDIR / "filter_mpileup_all_sites" / "{sample}.txt" run: import pandas as pd df = pd.read_csv(input[0], sep="\t") diff --git a/workflow/scripts/fill_all_sites.R b/workflow/scripts/fill_all_sites.R index 3cb8d13..045ec61 100644 --- a/workflow/scripts/fill_all_sites.R +++ b/workflow/scripts/fill_all_sites.R @@ -17,26 +17,25 @@ variants <- read_tsv(snakemake@input[["variants"]]) # Create a mapping of variant names to their genomic position variant_coords <- variants %>% - select(VARIANT_NAME, REGION, POS) %>% + select(VARIANT_NAME, CHROM, POS) %>% distinct() log_info("Reading filtered sites") sites <- read_tsv(snakemake@input[["sites"]]) %>% - select(SAMPLE, POS) %>% # TODO: consider region/chrom - distinct() %>% + distinct(SAMPLE, POS) %>% # TODO: consider region/chrom mutate(FILTER_PASS = TRUE) log_info("Processing variants") all_variants <- variants %>% # Select minimal columns - select(VARIANT_NAME, REGION, SAMPLE, ALT_FREQ) %>% + distinct(VARIANT_NAME, CHROM, SAMPLE, ALT_FREQ) %>% # Handle duplicates - group_by(SAMPLE, VARIANT_NAME, REGION) %>% + group_by(SAMPLE, VARIANT_NAME, CHROM) %>% summarise(ALT_FREQ = sum(ALT_FREQ, na.rm = TRUE), .groups = "drop") %>% # Complete with NA - complete(SAMPLE, VARIANT_NAME, REGION) %>% + complete(SAMPLE, VARIANT_NAME, CHROM) %>% # Assign genomic positions for all combinations - left_join(variant_coords, by = c("REGION", "VARIANT_NAME")) %>% + left_join(variant_coords, by = c("CHROM", "VARIANT_NAME")) %>% # Merge filtered sites # TODO: consider region/chrom left_join(sites, by = c("SAMPLE", "POS")) %>% diff --git a/workflow/scripts/merge_annotation.R b/workflow/scripts/merge_annotation.R index 9c322c4..0e7290a 100644 --- a/workflow/scripts/merge_annotation.R +++ b/workflow/scripts/merge_annotation.R @@ -11,18 +11,18 @@ library(logger) log_threshold(INFO) -log_info("Reading variants table, replacing REGION with the reference name") +log_info("Reading variants table, replacing CHROM with the reference name") variants <- read_tsv( snakemake@input$tsv, col_types = list( - REGION = col_character(), + CHROM = col_character(), POS = col_integer(), REF = col_character(), ALT = col_character() ) ) %>% mutate( - REGION = snakemake@params$ref_name, + CHROM = snakemake@params$ref_name, is_insertion = startsWith(ALT, "+"), is_deletion = startsWith(ALT, "-"), REF_VCF = case_when( @@ -35,7 +35,8 @@ variants <- read_tsv( TRUE ~ ALT ) ) %>% - select(-is_insertion, -is_deletion) + select(-is_insertion, -is_deletion) %>% + rename(CHROM = REGION) log_info("Reading annotation table") annotation <- read_tsv( @@ -67,7 +68,7 @@ merged <- left_join( variants, annotation, by = c( - "REGION" = "CHROM", + "CHROM" = "CHROM", "POS" = "POS", "REF_VCF" = "REF", "ALT_VCF" = "ALT" diff --git a/workflow/scripts/report/af_time_correlation_data.R b/workflow/scripts/report/af_time_correlation_data.R index 90daf30..ac7c6ff 100644 --- a/workflow/scripts/report/af_time_correlation_data.R +++ b/workflow/scripts/report/af_time_correlation_data.R @@ -19,14 +19,14 @@ variants <- read_delim( col_select = c( "VARIANT_NAME", "SAMPLE", - "REGION", + "CHROM", "ALT_FREQ", "POS" ) ) %>% # Fill positions without alt frequency with NA complete( - nesting(REGION, VARIANT_NAME, POS), + nesting(CHROM, VARIANT_NAME, POS), SAMPLE, fill = list(ALT_FREQ = NA) ) diff --git a/workflow/scripts/report/nv_panel_data.R b/workflow/scripts/report/nv_panel_data.R index 5cb6880..971062c 100644 --- a/workflow/scripts/report/nv_panel_data.R +++ b/workflow/scripts/report/nv_panel_data.R @@ -19,7 +19,7 @@ variants <- read_delim( snakemake@input$variants, col_select = c( "SAMPLE", - "REGION", + "CHROM", "POS", "ALT", "VARIANT_NAME", @@ -77,7 +77,7 @@ if (nrow(variants) == 0) { log_warning("No variants found, using an empty table") variants <- tibble( SAMPLE = date_order, - REGION = as.character(NA), + CHROM = as.character(NA), VARIANT_NAME = as.character(NA), ALT_FREQ = as.numeric(NA), EFFECT = as.character(NA), diff --git a/workflow/scripts/report/polymorphic_sites_over_time_data.R b/workflow/scripts/report/polymorphic_sites_over_time_data.R index 1100587..f48ccb1 100644 --- a/workflow/scripts/report/polymorphic_sites_over_time_data.R +++ b/workflow/scripts/report/polymorphic_sites_over_time_data.R @@ -42,7 +42,7 @@ if (nrow(sites) == 0) { log_warn("There are none, using an empty table and no linear regression") sites <- tibble( SAMPLE = date_order, - REGION = as.character(NA), + CHROM = as.character(NA), VARIANT_NAME = as.character(NA), ALT_FREQ = as.numeric(NA), EFFECT = as.character(NA), From 10aaa8ea89c2a40b0ccedbcb472805aaa6df9ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81lvarez=20Herrera?= Date: Tue, 10 Feb 2026 17:39:36 +0100 Subject: [PATCH 2/3] refactor: update renaming logic --- workflow/scripts/merge_annotation.R | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/workflow/scripts/merge_annotation.R b/workflow/scripts/merge_annotation.R index 0e7290a..4e1ee2f 100644 --- a/workflow/scripts/merge_annotation.R +++ b/workflow/scripts/merge_annotation.R @@ -11,18 +11,18 @@ library(logger) log_threshold(INFO) -log_info("Reading variants table, replacing CHROM with the reference name") +log_info("Reading variants table, replacing REGION with the reference name") variants <- read_tsv( snakemake@input$tsv, col_types = list( - CHROM = col_character(), + REGION = col_character(), POS = col_integer(), REF = col_character(), ALT = col_character() ) ) %>% mutate( - CHROM = snakemake@params$ref_name, + REGION = snakemake@params$ref_name, is_insertion = startsWith(ALT, "+"), is_deletion = startsWith(ALT, "-"), REF_VCF = case_when( @@ -35,8 +35,7 @@ variants <- read_tsv( TRUE ~ ALT ) ) %>% - select(-is_insertion, -is_deletion) %>% - rename(CHROM = REGION) + select(-is_insertion, -is_deletion) log_info("Reading annotation table") annotation <- read_tsv( @@ -68,7 +67,7 @@ merged <- left_join( variants, annotation, by = c( - "CHROM" = "CHROM", + "REGION" = "CHROM", "POS" = "POS", "REF_VCF" = "REF", "ALT_VCF" = "ALT" @@ -76,7 +75,8 @@ merged <- left_join( ) %>% mutate( SAMPLE = snakemake@params$sample - ) + ) %>% + rename(CHROM = REGION) log_info("Saving results") write_tsv( From 444867bd8baad9daad71d6ce92a8aea74adb7855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81lvarez=20Herrera?= Date: Tue, 10 Feb 2026 17:41:37 +0100 Subject: [PATCH 3/3] refactor: rename REGION field to CHROM --- workflow/scripts/calculate_dnds.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/scripts/calculate_dnds.R b/workflow/scripts/calculate_dnds.R index a0495cb..3e37a4d 100644 --- a/workflow/scripts/calculate_dnds.R +++ b/workflow/scripts/calculate_dnds.R @@ -19,7 +19,7 @@ variants <- read_delim( col_select = c( "SAMPLE", "VARIANT_NAME", - "REGION", + "CHROM", "ALT_FREQ", "SYNONYMOUS", "POS"