From dca8f0b06aa5578809e0c9d6faa99432211b9b90 Mon Sep 17 00:00:00 2001
From: Etienne Rifa <etienne.rifa[at]insa-toulouse.fr>
Date: Tue, 19 Dec 2023 17:07:49 +0100
Subject: [PATCH 1/6] allow control on ranks names / prefixes

---
 R/assign_fasta_fun.R              | 42 ++++++++++++++++++-------------
 R/assign_taxo_fun.R               |  9 +++++--
 R/idtaxaDB_formatting_functions.R | 14 +++++------
 man/assign_taxo_fun.Rd            |  8 +++++-
 man/fill_tax_fun.Rd               |  6 ++++-
 man/idtaxa_assign_fasta_fun.Rd    | 10 +++++++-
 6 files changed, 58 insertions(+), 31 deletions(-)

diff --git a/R/assign_fasta_fun.R b/R/assign_fasta_fun.R
index 748f8ff..c49ea70 100644
--- a/R/assign_fasta_fun.R
+++ b/R/assign_fasta_fun.R
@@ -8,6 +8,9 @@
 #' @param verbose Verbose level. (1: quiet, 3: verbal)
 #' @param confidence Bootstrap threshold 0...100
 #' @param returnval Boolean to return values in console or not.
+#' @param ncpu Number of cpu to use. 
+#' @param prefix Vector of prefixes to use (7 ranks).
+#' @param ranks_names Taxonomy ranks names (7 ranks).
 #'
 #'
 #' @return Return a taxonomy table with multiple ancestor checking and incongruence checking when more than one databases are used.
@@ -17,7 +20,9 @@
 
 #' @export
 
-idtaxa_assign_fasta_fun <- function(fasta, id_db, output = "./assign_fasta/", confidence = 50, verbose = 1, returnval = TRUE, ncpu=NULL){
+idtaxa_assign_fasta_fun <- function(fasta, id_db, output = "./assign_fasta/", confidence = 50, verbose = 1, 
+  returnval = TRUE, ncpu=NULL, prefix = c("k__","p__","c__","o__","f__","g__","s__"), 
+  ranks_names = c("Domain", "Phylum", "Class", "Order", "Family", "Genus", "Species")){
   if(verbose == 3){
     flog.threshold(DEBUG)
   }
@@ -177,25 +182,26 @@ idtaxa_assign_fasta_fun <- function(fasta, id_db, output = "./assign_fasta/", co
   }
 
   # Filling taxonomy with last assigned rank.
-  colnames(taxid) <- c("Domain", "Phylum", "Class", "Order", "Family", "Genus", "Species")
+  colnames(taxid) <- ranks_names
   flog.info("Filling missing taxonomy ranks...")
-  PREFIX = c("k__","p__","c__","o__","f__","g__","s__")
+  # PREFIX = prefix
   # handling possible prefix
-  noprefix_taxid = taxid[grep("k__",taxid[,1], invert = TRUE),]
-  prefix_taxid = taxid[grep("k__",taxid[,1]),]
-
-  if(nrow(noprefix_taxid) != 0){
-    noprefix_taxid = fill_tax_fun(noprefix_taxid, prefix = FALSE)
-    noprefix_taxid = as.data.frame( t(apply(noprefix_taxid, 1, function(x){ paste(PREFIX, x, sep="")})), stringAsFactors = FALSE)
-    colnames(noprefix_taxid) = colnames(taxid)
-  }
-
-  if(nrow(prefix_taxid) != 0){
-    prefix_taxid = fill_tax_fun(prefix_taxid, prefix = TRUE)
-  }
-  filled_taxid = rbind.data.frame(noprefix_taxid, prefix_taxid)
-
-  tax.table = filled_taxid[names(dna),]
+  # noprefix_taxid = taxid[grep("k__",taxid[,1], invert = TRUE),]
+  # prefix_taxid = taxid[grep("k__",taxid[,1]),]
+
+  # if(nrow(noprefix_taxid) != 0){
+  #   noprefix_taxid = fill_tax_fun(noprefix_taxid, prefix = FALSE)
+  #   noprefix_taxid = as.data.frame( t(apply(noprefix_taxid, 1, function(x){ paste(PREFIX, x, sep="")})), stringAsFactors = FALSE)
+  #   colnames(noprefix_taxid) = colnames(taxid)
+  # }
+
+  # if(nrow(prefix_taxid) != 0){
+  #   prefix_taxid = fill_tax_fun(prefix_taxid, prefix = TRUE)
+  # }
+  
+  final_taxid = fill_tax_fun(prefix_taxid, prefix = prefix)
+
+  tax.table = final_taxid[names(dna),]
 
   flog.info('Done.')
 
diff --git a/R/assign_taxo_fun.R b/R/assign_taxo_fun.R
index a8db57d..a650a63 100644
--- a/R/assign_taxo_fun.R
+++ b/R/assign_taxo_fun.R
@@ -9,6 +9,8 @@
 #' @param confidence Bootstrap threshold 0...100
 #' @param returnval Boolean to return values in console or not.
 #' @param ncpu Number of cpus to use.
+#' @param prefix Vector of prefixes to use (7 ranks).
+#' @param ranks_names Taxonomy ranks names (7 ranks).
 #'
 #'
 #' @return Return a taxonomy table with multiple ancestor checking and incongruence checking when more than one databases are used.
@@ -23,7 +25,9 @@
 
 
 
-assign_taxo_fun <- function(dada_res = dada_res,  output = "./idtaxa/", id_db = "/PathToDB/UNITE_idtaxa.Rdata", confidence = 50, verbose = 1, returnval = TRUE, ncpu=NULL){
+assign_taxo_fun <- function(dada_res = dada_res,  output = "./idtaxa/", id_db = "/PathToDB/UNITE_idtaxa.Rdata", 
+  confidence = 50, verbose = 1, returnval = TRUE, ncpu=NULL, prefix = c("k__","p__","c__","o__","f__","g__","s__"), 
+  ranks_names = c("Domain", "Phylum", "Class", "Order", "Family", "Genus", "Species")){
 
 
   if(verbose == 3){
@@ -41,7 +45,8 @@ assign_taxo_fun <- function(dada_res = dada_res,  output = "./idtaxa/", id_db =
   if(!all( names(dna) == rownames(dada_res$otu.table) )){stop("Seq names and ASV table row names are different")}
 
   tt2 = idtaxa_assign_fasta_fun(fasta = dna, id_db = id_db,
-        output = output, confidence = confidence, verbose = verbose, returnval = returnval)
+        output = output, confidence = confidence, verbose = verbose, returnval = returnval, 
+        prefix = prefix, ranks_names = ranks_names)
 
 
 }
diff --git a/R/idtaxaDB_formatting_functions.R b/R/idtaxaDB_formatting_functions.R
index 9e9782a..2200562 100644
--- a/R/idtaxaDB_formatting_functions.R
+++ b/R/idtaxaDB_formatting_functions.R
@@ -11,15 +11,13 @@
 #' @import DECIPHER
 #' @export
 
-fill_tax_fun <- function(taxtable = taxtable, prefix = TRUE){
+fill_tax_fun <- function(taxtable = taxtable, prefix = c("k__","p__","c__","o__","f__","g__","s__"), 
+  ranks_names = c("domain","phylum","class","order","family","genus","species")){
 
   fill_tax_table = function(x){
-    RANKS = c("domain","phylum","class","order","family","genus","species")
-    if(prefix){
-      PREFIX = c("k__","p__","c__","o__","f__","g__","s__")
-    }else{
-      PREFIX = c("","","","","","","")
-    }
+    RANKS <- ranks_names
+    PREFIX <- prefix
+
 
     TAX = x
 
@@ -29,7 +27,7 @@ fill_tax_fun <- function(taxtable = taxtable, prefix = TRUE){
     }
 
     for( i in 1:7){
-      if(is.na(TAX[i])){
+      if(is.na(TAX[i]) | grepl("__NA$", TAX[i]) ){
         if(grepl(PREFIX[i-1], TAX[i-1], ignore.case = FALSE, perl = FALSE, fixed = TRUE)){
           TAX[i-1] <- sub(PREFIX[i-1],'',TAX[i-1])
         }
diff --git a/man/assign_taxo_fun.Rd b/man/assign_taxo_fun.Rd
index 16f04a9..bef9446 100644
--- a/man/assign_taxo_fun.Rd
+++ b/man/assign_taxo_fun.Rd
@@ -11,7 +11,9 @@ assign_taxo_fun(
   confidence = 50,
   verbose = 1,
   returnval = TRUE,
-  ncpu = NULL
+  ncpu = NULL,
+  prefix = c("k__", "p__", "c__", "o__", "f__", "g__", "s__"),
+  ranks_names = c("Domain", "Phylum", "Class", "Order", "Family", "Genus", "Species")
 )
 }
 \arguments{
@@ -28,6 +30,10 @@ assign_taxo_fun(
 \item{returnval}{Boolean to return values in console or not.}
 
 \item{ncpu}{Number of cpus to use.}
+
+\item{prefix}{Vector of prefixes to use (7 ranks).}
+
+\item{ranks_names}{Taxonomy ranks names (7 ranks).}
 }
 \value{
 Return a taxonomy table with multiple ancestor checking and incongruence checking when more than one databases are used.
diff --git a/man/fill_tax_fun.Rd b/man/fill_tax_fun.Rd
index b1b32ad..c078bca 100644
--- a/man/fill_tax_fun.Rd
+++ b/man/fill_tax_fun.Rd
@@ -4,7 +4,11 @@
 \alias{fill_tax_fun}
 \title{Fill taxonomy table (idtaxa training functions)}
 \usage{
-fill_tax_fun(taxtable = taxtable, prefix = TRUE)
+fill_tax_fun(
+  taxtable = taxtable,
+  prefix = c("k__", "p__", "c__", "o__", "f__", "g__", "s__"),
+  ranks_names = c("domain", "phylum", "class", "order", "family", "genus", "species")
+)
 }
 \arguments{
 \item{taxtable}{Taxonomy table in tabulated format.}
diff --git a/man/idtaxa_assign_fasta_fun.Rd b/man/idtaxa_assign_fasta_fun.Rd
index 53e07c7..5f4afeb 100644
--- a/man/idtaxa_assign_fasta_fun.Rd
+++ b/man/idtaxa_assign_fasta_fun.Rd
@@ -11,7 +11,9 @@ idtaxa_assign_fasta_fun(
   confidence = 50,
   verbose = 1,
   returnval = TRUE,
-  ncpu = NULL
+  ncpu = NULL,
+  prefix = c("k__", "p__", "c__", "o__", "f__", "g__", "s__"),
+  ranks_names = c("Domain", "Phylum", "Class", "Order", "Family", "Genus", "Species")
 )
 }
 \arguments{
@@ -26,6 +28,12 @@ idtaxa_assign_fasta_fun(
 \item{verbose}{Verbose level. (1: quiet, 3: verbal)}
 
 \item{returnval}{Boolean to return values in console or not.}
+
+\item{ncpu}{Number of cpu to use.}
+
+\item{prefix}{Vector of prefixes to use (7 ranks).}
+
+\item{ranks_names}{Taxonomy ranks names (7 ranks).}
 }
 \value{
 Return a taxonomy table with multiple ancestor checking and incongruence checking when more than one databases are used.
-- 
GitLab


From 5bbee272a3a68dc4475621d5a28dd721034a1ae2 Mon Sep 17 00:00:00 2001
From: Etienne Rifa <etienne.rifa[at]insa-toulouse.fr>
Date: Thu, 21 Dec 2023 17:25:20 +0100
Subject: [PATCH 2/6] update

---
 R/assign_fasta_fun.R              | 2 +-
 R/idtaxaDB_formatting_functions.R | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/R/assign_fasta_fun.R b/R/assign_fasta_fun.R
index c49ea70..ff6cf06 100644
--- a/R/assign_fasta_fun.R
+++ b/R/assign_fasta_fun.R
@@ -199,7 +199,7 @@ idtaxa_assign_fasta_fun <- function(fasta, id_db, output = "./assign_fasta/", co
   #   prefix_taxid = fill_tax_fun(prefix_taxid, prefix = TRUE)
   # }
   
-  final_taxid = fill_tax_fun(prefix_taxid, prefix = prefix)
+  final_taxid = fill_tax_fun(taxid, prefix = prefix, ranks_names = ranks_names)
 
   tax.table = final_taxid[names(dna),]
 
diff --git a/R/idtaxaDB_formatting_functions.R b/R/idtaxaDB_formatting_functions.R
index 2200562..7900dce 100644
--- a/R/idtaxaDB_formatting_functions.R
+++ b/R/idtaxaDB_formatting_functions.R
@@ -12,7 +12,7 @@
 #' @export
 
 fill_tax_fun <- function(taxtable = taxtable, prefix = c("k__","p__","c__","o__","f__","g__","s__"), 
-  ranks_names = c("domain","phylum","class","order","family","genus","species")){
+  ranks_names = c("Domain","Phylum","Class","Order","Family","Genus","Species")){
 
   fill_tax_table = function(x){
     RANKS <- ranks_names
@@ -41,7 +41,7 @@ fill_tax_fun <- function(taxtable = taxtable, prefix = c("k__","p__","c__","o__"
 
 
   filltable <- tt2 <- as.data.frame( t(apply(taxtable, 1, fill_tax_table)) ,stringsAsFactors = FALSE )
-  names(filltable) = c("Domain","Phylum","Class","Order","Family","Genus","Species")
+  names(filltable) = ranks_names
   rownames(filltable) =  rownames(taxtable)
 
   return(filltable)
-- 
GitLab


From 619aa1a5acc68132dc1257db070217cc64e08e78 Mon Sep 17 00:00:00 2001
From: Etienne Rifa <etienne.rifa[at]insa-toulouse.fr>
Date: Tue, 9 Jan 2024 15:36:20 +0100
Subject: [PATCH 3/6] update

---
 R/assign_fasta_fun.R              |  6 +++---
 R/idtaxaDB_formatting_functions.R | 17 ++++++++++++-----
 man/check_tax_fun.Rd              |  1 +
 man/fill_tax_fun.Rd               |  6 ++++--
 4 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/R/assign_fasta_fun.R b/R/assign_fasta_fun.R
index ff6cf06..0f0ccef 100644
--- a/R/assign_fasta_fun.R
+++ b/R/assign_fasta_fun.R
@@ -145,11 +145,11 @@ idtaxa_assign_fasta_fun <- function(fasta, id_db, output = "./assign_fasta/", co
   }else{
     # One DB assignment
     taxid <- sapply(taxid_list[[1]], function(x) {
-      taxa <- rep(NA,7)
+      taxa <- rep(NA,length(ranks_names))
       assign <- x$taxon
       # print(assign)
       if(length(assign[-1])==0){
-        taxa <- rep("unassigned",7)
+        taxa <- rep("unassigned",length(ranks_names))
       } else {
         taxa[1:length(assign[-1])] <- assign[-1]
       }
@@ -206,7 +206,7 @@ idtaxa_assign_fasta_fun <- function(fasta, id_db, output = "./assign_fasta/", co
   flog.info('Done.')
 
   flog.info("Check taxonomy consistency...")
-  tax.tablecheck = check_tax_fun(tax.table, output = NULL, rank = 6, verbose = 3)
+  tax.tablecheck = check_tax_fun(tax.table, output = NULL, rank = length(ranks_names) - 1, ranks_names = ranks_names, verbose = 3)
   flog.info("Done.")
 
   #Output table 2
diff --git a/R/idtaxaDB_formatting_functions.R b/R/idtaxaDB_formatting_functions.R
index 7900dce..8b2bf9f 100644
--- a/R/idtaxaDB_formatting_functions.R
+++ b/R/idtaxaDB_formatting_functions.R
@@ -3,7 +3,8 @@
 #'
 #'
 #' @param taxtable Taxonomy table in tabulated format.
-#' @param prefix TRUE if there are prefix like c("k__","p__","c__","o__","f__","g__","s__")
+#' @param prefix Vector of prefixes to use like c("k__","p__","c__","o__","f__","g__","s__"), NULL if no prefix.
+#' @param ranks_names Taxonomy ranks names
 #'
 #' @return Return the same taxonomy without empty field, last known ranks are informed.
 #'
@@ -16,7 +17,11 @@ fill_tax_fun <- function(taxtable = taxtable, prefix = c("k__","p__","c__","o__"
 
   fill_tax_table = function(x){
     RANKS <- ranks_names
-    PREFIX <- prefix
+    if(is.null(prefix)){
+      PREFIX <- rep("", length(ranks_names))
+    }else{
+      PREFIX <- prefix
+    }
 
 
     TAX = x
@@ -26,7 +31,7 @@ fill_tax_fun <- function(taxtable = taxtable, prefix = c("k__","p__","c__","o__"
       return(fTAX)
     }
 
-    for( i in 1:7){
+    for( i in 1:length(ranks_names)){
       if(is.na(TAX[i]) | grepl("__NA$", TAX[i]) ){
         if(grepl(PREFIX[i-1], TAX[i-1], ignore.case = FALSE, perl = FALSE, fixed = TRUE)){
           TAX[i-1] <- sub(PREFIX[i-1],'',TAX[i-1])
@@ -63,8 +68,10 @@ fill_tax_fun <- function(taxtable = taxtable, prefix = c("k__","p__","c__","o__"
 
 
 
-check_tax_fun <- function(taxtable = taxtable, output = NULL, rank = 7, verbose=3, returnval = TRUE){
-  RANKS = c("_domain","_phylum","_class","_order","_family","_genus","_species")
+check_tax_fun <- function(taxtable = taxtable, output = NULL, rank = 7, 
+  ranks_names = c("Domain","Phylum","Class","Order","Family","Genus","Species"), verbose=3, returnval = TRUE){
+  RANKS  <- stringr::str_to_lower(ranks_names) %>% paste("_", ., sep = "")
+
   # Check for multiple ancestors at each rank, choose first occurence for each problematic taxon
   sink(paste('./check_tax_fun.log', sep=""), split = TRUE)
   for(rk in rank:2){
diff --git a/man/check_tax_fun.Rd b/man/check_tax_fun.Rd
index fbd76ff..3d0cb5c 100644
--- a/man/check_tax_fun.Rd
+++ b/man/check_tax_fun.Rd
@@ -8,6 +8,7 @@ check_tax_fun(
   taxtable = taxtable,
   output = NULL,
   rank = 7,
+  ranks_names = c("Domain", "Phylum", "Class", "Order", "Family", "Genus", "Species"),
   verbose = 3,
   returnval = TRUE
 )
diff --git a/man/fill_tax_fun.Rd b/man/fill_tax_fun.Rd
index c078bca..d468721 100644
--- a/man/fill_tax_fun.Rd
+++ b/man/fill_tax_fun.Rd
@@ -7,13 +7,15 @@
 fill_tax_fun(
   taxtable = taxtable,
   prefix = c("k__", "p__", "c__", "o__", "f__", "g__", "s__"),
-  ranks_names = c("domain", "phylum", "class", "order", "family", "genus", "species")
+  ranks_names = c("Domain", "Phylum", "Class", "Order", "Family", "Genus", "Species")
 )
 }
 \arguments{
 \item{taxtable}{Taxonomy table in tabulated format.}
 
-\item{prefix}{TRUE if there are prefix like c("k__","p__","c__","o__","f__","g__","s__")}
+\item{prefix}{Vector of prefixes to use like c("k__","p__","c__","o__","f__","g__","s__"), NULL if no prefix.}
+
+\item{ranks_names}{Taxonomy ranks names}
 }
 \value{
 Return the same taxonomy without empty field, last known ranks are informed.
-- 
GitLab


From 08e763e14e424b9c87b06d53d36466fc86f7118b Mon Sep 17 00:00:00 2001
From: Etienne Rifa <etienne.rifa[at]insa-toulouse.fr>
Date: Thu, 18 Jan 2024 09:56:33 +0100
Subject: [PATCH 4/6] diff analysis: resolving bugs

---
 R/aggregate_fun.R     | 5 ++---
 R/decontam_fun.R      | 6 ++++--
 R/deseq2_fun.R        | 9 +++++----
 R/metagenomeseq_fun.R | 2 +-
 4 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/R/aggregate_fun.R b/R/aggregate_fun.R
index 4ba022b..67b2873 100644
--- a/R/aggregate_fun.R
+++ b/R/aggregate_fun.R
@@ -96,7 +96,7 @@ aggregate_fun <- function(data = data, metacoder = NULL, deseq = NULL, mgseq = N
         mgseqT <- data.frame()
       }
     }
-    flog.debug(pander(mgseqT, split.tables=2000))
+    flog.debug(pander::pander(mgseqT, split.tables=2000))
     # print(head(mgseqT))
     flog.info('Metacoder.')
     if(file.exists(paste(metacoder))){
@@ -177,14 +177,13 @@ aggregate_fun <- function(data = data, metacoder = NULL, deseq = NULL, mgseq = N
     }
 
     TABfbak0 <- TABf
-
     # add new columns, sumMethods, DeseqLFC, Mean Relative Abundance (TSS) condition 1 & 2
-    row.names(deseqT) = deseqT[,1]
     if(nrow(deseqT)==0){
       TABf <- cbind(TABf, sumMethods = apply(TABf[3:5], 1, sum, na.rm=TRUE),
                     DESeqLFC = rep(NA, nrow(TABf)),
                     absDESeqLFC = rep(NA, nrow(TABf)))
     }else{
+      row.names(deseqT) = deseqT[,1]
       TABf <- cbind( TABf, sumMethods = apply(TABf[3:5], 1, sum, na.rm=TRUE),
                      DESeqLFC = deseqT[as.character(TABf[,1]),"log2FoldChange"],
                      absDESeqLFC = abs(deseqT[as.character(TABf[,1]),"log2FoldChange"]) )
diff --git a/R/decontam_fun.R b/R/decontam_fun.R
index b7786bd..91ed919 100644
--- a/R/decontam_fun.R
+++ b/R/decontam_fun.R
@@ -322,9 +322,11 @@ decontam_fun <- function(data = data, domain = "Bacteria", output = "./decontam_
       fun <- paste("data <- subset_samples(data, ",column," %in% '",spl_identifier,"')",sep="")
       eval(parse(text=fun))
     }
-  } else{
+  } else if(column == ""){
+    flog.info(paste0('No column to remove from metadata.'))
+  }else {
     flog.error(paste0(column, ' not present in metadata.'))
-    exit(1)
+    # exit(1)
   }
 
 
diff --git a/R/deseq2_fun.R b/R/deseq2_fun.R
index 206f1cf..dcbf310 100644
--- a/R/deseq2_fun.R
+++ b/R/deseq2_fun.R
@@ -136,8 +136,8 @@ deseq2_fun <- function(data = data, output = "./deseq/", column1 = "", verbose =
 
     # flog.info('DESeq2...')
     # print(dseq2)
-
-    dseq3 = DESeq2::DESeq(dseq2, test="Wald", fitType="parametric")
+    dseq3 = try(DESeq2::DESeq(dseq2, test="Wald", fitType="parametric"))
+    if(class(dseq3) == "try-error"){next}
     flog.debug(show(dseq3))
 
     res = results(dseq3, cooksCutoff = FALSE, contrast = c(column1,combinaisons[1,col] , combinaisons[2,col]))
@@ -187,10 +187,11 @@ deseq2_fun <- function(data = data, output = "./deseq/", column1 = "", verbose =
 
     } else{
       flog.info(paste('No significant results for comparison ',combinaisons[1,col], ' ' , combinaisons[2,col], sep=''))
-      tab0 = data.frame(matrix(ncol = 14, nrow = 0))
+      headers <- c(resultsNames(dseq3)[2], colnames(res), colnames(tax_table(data)))
+      tab0 = data.frame(matrix(ncol = length(headers), nrow = 0))
       # print(length(c(resultsNames(deseq)[2], colnames(res), colnames(tax_table(data)))))
       # print(c(resultsNames(deseq)[2], colnames(res), colnames(tax_table(data))))
-      colnames(tab0) <- c(resultsNames(dseq3)[2], colnames(res), colnames(tax_table(data)))
+      colnames(tab0) <- headers
       write.table(tab0, file = paste(output,'/signtab_',column1,'_',paste(combinaisons[,col],collapse="_vs_"),'.csv',sep=''),quote=FALSE,sep="\t", row.names=FALSE)
 
     }
diff --git a/R/metagenomeseq_fun.R b/R/metagenomeseq_fun.R
index 29a2222..c6cfcf8 100644
--- a/R/metagenomeseq_fun.R
+++ b/R/metagenomeseq_fun.R
@@ -33,7 +33,7 @@ metagenomeseq_fun <- function(data = data, output = "./metagenomeseq/", column1
   if(!dir.exists(output)){
     dir.create(output, recursive = TRUE)
   }
-  ranks <- c("Domain","Phylum","Class","Order","Family","Genus","Species")
+  ranks <- rank_names(data)
   if(comp == ''){
     fun <- paste('combinaisons <- combn(na.omit(unique(sample_data(data)$',column1,')),2) ',sep='')
     eval(parse(text=fun))
-- 
GitLab


From 86299dda4faae8710445020c429a6f2b94039e1b Mon Sep 17 00:00:00 2001
From: Etienne Rifa <etienne.rifa[at]insa-toulouse.fr>
Date: Mon, 22 Jan 2024 14:44:33 +0100
Subject: [PATCH 5/6] amend DESCRIPTION

---
 DESCRIPTION | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/DESCRIPTION b/DESCRIPTION
index e18d26a..6fdb1ea 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -56,12 +56,14 @@ Imports:
     microbiome,
     mixOmics,
     nlme,
+    pander,
     phangorn,
     phyloseq,
     plotly,
     psadd,
     qdapTools,
     ranacapa,
+    readr,
     readxl,
     reshape2,
     scales,
-- 
GitLab


From 0754fe4db92a8d90fb336849e93d99afb7273edd Mon Sep 17 00:00:00 2001
From: Etienne Rifa <etienne.rifa[at]insa-toulouse.fr>
Date: Mon, 22 Jan 2024 14:59:31 +0100
Subject: [PATCH 6/6] correction

---
 R/assign_fasta_fun.R           | 4 ++--
 R/assign_taxo_fun.R            | 4 ++--
 man/assign_taxo_fun.Rd         | 4 ++--
 man/idtaxa_assign_fasta_fun.Rd | 4 ++--
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/R/assign_fasta_fun.R b/R/assign_fasta_fun.R
index 0f0ccef..01867c8 100644
--- a/R/assign_fasta_fun.R
+++ b/R/assign_fasta_fun.R
@@ -9,8 +9,8 @@
 #' @param confidence Bootstrap threshold 0...100
 #' @param returnval Boolean to return values in console or not.
 #' @param ncpu Number of cpu to use. 
-#' @param prefix Vector of prefixes to use (7 ranks).
-#' @param ranks_names Taxonomy ranks names (7 ranks).
+#' @param prefix Vector of prefixes to use.
+#' @param ranks_names Taxonomy ranks names.
 #'
 #'
 #' @return Return a taxonomy table with multiple ancestor checking and incongruence checking when more than one databases are used.
diff --git a/R/assign_taxo_fun.R b/R/assign_taxo_fun.R
index a650a63..d6a84e9 100644
--- a/R/assign_taxo_fun.R
+++ b/R/assign_taxo_fun.R
@@ -9,8 +9,8 @@
 #' @param confidence Bootstrap threshold 0...100
 #' @param returnval Boolean to return values in console or not.
 #' @param ncpu Number of cpus to use.
-#' @param prefix Vector of prefixes to use (7 ranks).
-#' @param ranks_names Taxonomy ranks names (7 ranks).
+#' @param prefix Vector of prefixes to use.
+#' @param ranks_names Taxonomy ranks names.
 #'
 #'
 #' @return Return a taxonomy table with multiple ancestor checking and incongruence checking when more than one databases are used.
diff --git a/man/assign_taxo_fun.Rd b/man/assign_taxo_fun.Rd
index bef9446..787580d 100644
--- a/man/assign_taxo_fun.Rd
+++ b/man/assign_taxo_fun.Rd
@@ -31,9 +31,9 @@ assign_taxo_fun(
 
 \item{ncpu}{Number of cpus to use.}
 
-\item{prefix}{Vector of prefixes to use (7 ranks).}
+\item{prefix}{Vector of prefixes to use.}
 
-\item{ranks_names}{Taxonomy ranks names (7 ranks).}
+\item{ranks_names}{Taxonomy ranks names.}
 }
 \value{
 Return a taxonomy table with multiple ancestor checking and incongruence checking when more than one databases are used.
diff --git a/man/idtaxa_assign_fasta_fun.Rd b/man/idtaxa_assign_fasta_fun.Rd
index 5f4afeb..6591d18 100644
--- a/man/idtaxa_assign_fasta_fun.Rd
+++ b/man/idtaxa_assign_fasta_fun.Rd
@@ -31,9 +31,9 @@ idtaxa_assign_fasta_fun(
 
 \item{ncpu}{Number of cpu to use.}
 
-\item{prefix}{Vector of prefixes to use (7 ranks).}
+\item{prefix}{Vector of prefixes to use.}
 
-\item{ranks_names}{Taxonomy ranks names (7 ranks).}
+\item{ranks_names}{Taxonomy ranks names.}
 }
 \value{
 Return a taxonomy table with multiple ancestor checking and incongruence checking when more than one databases are used.
-- 
GitLab