From b7df1e0be62d9e445bc8a0e80aadbfa412ce559d Mon Sep 17 00:00:00 2001 From: gmteunisse Date: Mon, 26 Sep 2022 11:49:38 +0200 Subject: [PATCH] Changed default asv_as_id = T. Made sure that when tax_level is defined, no duplicates occur. Workaround for issue #10. --- R/label_duplicate_taxa.R | 28 ++++++++++++++++++---------- man/label_duplicate_taxa.Rd | 2 +- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/R/label_duplicate_taxa.R b/R/label_duplicate_taxa.R index 56db52e..48d1c5f 100644 --- a/R/label_duplicate_taxa.R +++ b/R/label_duplicate_taxa.R @@ -33,7 +33,7 @@ #' ps_tmp <- label_duplicate_taxa(GlobalPatterns, tax_level = "Species") #' View(tax_table(ps_tmp)) #' @export -label_duplicate_taxa <- function(ps_obj, tax_level = NULL, asv_as_id = F, +label_duplicate_taxa <- function(ps_obj, tax_level = NULL, asv_as_id = T, duplicate_label = " "){ # Check arguments @@ -47,15 +47,18 @@ label_duplicate_taxa <- function(ps_obj, tax_level = NULL, asv_as_id = F, # Find duplicate taxa and flag for labeling tax_tab <- tax_table(ps_obj) %>% - data.frame(row_name = row.names(.)) %>% - group_by(across(-row_name)) %>% - mutate(n = row_number(), - dupl = n > 1) %>% - mutate(add_label = sum(dupl) > 0) + data.frame(row_name = row.names(.)) # Add label to the lowest non-NA taxonomic level if(is.null(tax_level)){ + # Find duplicates + tax_tab <- tax_tab %>% + group_by(across(-row_name)) %>% + mutate(n = row_number(), + dupl = n > 1) %>% + mutate(add_label = sum(dupl) > 0) + # Convert to long tax_tab <- tax_tab %>% pivot_longer(!c(row_name, n, dupl, add_label), @@ -71,7 +74,7 @@ label_duplicate_taxa <- function(ps_obj, tax_level = NULL, asv_as_id = F, tax), tax = str_replace(label, "", tax)) - # Fill in id field + # Fill in id field with either the row number or the ASV ID (row_name) if(asv_as_id){ tax_tab <- tax_tab %>% mutate(tax = str_replace(tax, "", as.character(row_name))) @@ -86,9 +89,16 @@ label_duplicate_taxa <- function(ps_obj, tax_level = NULL, asv_as_id = F, select(!c(n, dupl, add_label, label)) %>% pivot_wider(names_from = rank, values_from = tax) - # Add a label to a specific taxonomic rank + # Add a label to a specific taxonomic rank } else { + # Find duplicates + tax_tab <- tax_tab %>% + group_by(!!sym(tax_level)) %>% + mutate(n = row_number(), + dupl = n > 1) %>% + mutate(add_label = sum(dupl) > 0) + # Add label and fill in tax field tax_tab <- tax_tab %>% mutate(label = ifelse(add_label, @@ -119,6 +129,4 @@ label_duplicate_taxa <- function(ps_obj, tax_level = NULL, asv_as_id = F, return(ps_obj) - - } diff --git a/man/label_duplicate_taxa.Rd b/man/label_duplicate_taxa.Rd index a511430..0461afa 100644 --- a/man/label_duplicate_taxa.Rd +++ b/man/label_duplicate_taxa.Rd @@ -7,7 +7,7 @@ label_duplicate_taxa( ps_obj, tax_level = NULL, - asv_as_id = F, + asv_as_id = T, duplicate_label = " " ) }