If your current taxa_names aren't what you want (e.g. they are long DNA sequences), this function will help you set sensible unique names.

It combines:

  • a prefix like tax, asv, or otu (pick an appropriate prefix or set your own)

  • a unique (sequential) number

  • classification information from a chosen taxonomic rank (optional)

tax_name(
  ps,
  prefix = c("tax", "asv", "otu")[1],
  rank = NA,
  pad_number = TRUE,
  sep = "_"
)

Arguments

ps

phyloseq object

prefix

e.g. 'tax', 'asv', or 'otu' (or set your own)

rank

name of taxonomic rank from which to use classifications in new names

pad_number

should unique numbers have zeros added to the front (e.g. 001, 002) to be made the same number of characters?

sep

character to separate the unique number and any taxonomic classification info (relevant if rank given)

Value

phyloseq object

Details

Don't confuse this with the phyloseq function taxa_names() or the newer microViz function tax_rename().

See also

tax_rename for a more informative taxon naming tool

phyloseq::taxa_names for accessing and manually setting names

Examples

library(phyloseq)
# get example data
data("enterotype")
ps <- enterotype
head(taxa_names(ps)) # these are mostly fine (except the -1), but imagine you wanted new names
#> [1] "-1"               "Bacteria"         "Prosthecochloris" "Chloroflexus"    
#> [5] "Dehalococcoides"  "Thermus"         

# consider storing the original names for reference (e.g. if they are DNA sequences)
old_taxa_names <- taxa_names(ps)

ps <- tax_name(ps)
taxa_names(ps) %>% head()
#> [1] "tax001" "tax002" "tax003" "tax004" "tax005" "tax006"

# probably better to include the genus info to make these names more informative
ps <- tax_name(ps, rank = "Genus")
taxa_names(ps) %>% head()
#> [1] "tax001_NA"               "tax002_NA"              
#> [3] "tax003_Prosthecochloris" "tax004_Chloroflexus"    
#> [5] "tax005_Dehalococcoides"  "tax006_Thermus"         

# store new names with old names in dataframe for reference
names_df <- tibble::tibble(old = old_taxa_names, new = taxa_names(ps))

# alternative settings
tax_name(ps, pad_number = FALSE) %>%
  taxa_names() %>%
  head()
#> [1] "tax1" "tax2" "tax3" "tax4" "tax5" "tax6"
tax_name(ps, prefix = "whateveryoulike") %>%
  taxa_names() %>%
  head()
#> [1] "whateveryoulike001" "whateveryoulike002" "whateveryoulike003"
#> [4] "whateveryoulike004" "whateveryoulike005" "whateveryoulike006"
tax_name(ps, rank = "Genus", sep = "-") %>%
  taxa_names() %>%
  head()
#> [1] "tax001-NA"               "tax002-NA"              
#> [3] "tax003-Prosthecochloris" "tax004-Chloroflexus"    
#> [5] "tax005-Dehalococcoides"  "tax006-Thermus"