Repository 'pampa_glmsp'
hg clone https://toolshed.g2.bx.psu.edu/repos/ecology/pampa_glmsp

Changeset 2:6c14021f678e (2020-11-22)
Previous changeset 1:e972fe2bffee (2020-07-27) Next changeset 3:c12897ba5f83 (2021-04-26)
Commit message:
"planemo upload for repository https://github.com/ColineRoyaux/PAMPA-Galaxy commit 3df1978827a91be30e815dee2ed83a92862d1b1c"
modified:
FunctExeCalcGLMSpGalaxy.r
FunctPAMPAGalaxy.r
PAMPA_GLM_SP.xml
pampa_macros.xml
test-data/Presence_absence_table_sansszcl_cropped.tabular
removed:
test-data/GLM_table_population_analysis_on_Presence_absence_sansszcl_cropped.tabular
test-data/Simple_statistics_on_Presence_absence_sansszcl_cropped.txt
b
diff -r e972fe2bffee -r 6c14021f678e FunctExeCalcGLMSpGalaxy.r
--- a/FunctExeCalcGLMSpGalaxy.r Mon Jul 27 09:55:27 2020 -0400
+++ b/FunctExeCalcGLMSpGalaxy.r Sun Nov 22 18:40:40 2020 +0000
[
b'@@ -1,4 +1,4 @@\n-#Rscript \r\n+#Rscript\r\n \r\n #####################################################################################################################\r\n #####################################################################################################################\r\n@@ -7,243 +7,201 @@\n #####################################################################################################################\r\n \r\n ###################### Packages\r\n-#suppressMessages(library(MASS))\r\n suppressMessages(library(multcomp))\r\n+suppressMessages(library(DHARMa))\r\n suppressMessages(library(glmmTMB)) ###Version: 0.2.3\r\n suppressMessages(library(gap))\r\n \r\n+\r\n ###################### Load arguments and declaring variables\r\n \r\n-args = commandArgs(trailingOnly=TRUE)\r\n-#options(encoding = "UTF-8")\r\n+args <- commandArgs(trailingOnly = TRUE)\r\n \r\n if (length(args) < 10) {\r\n-    stop("At least 4 arguments must be supplied : \\n- two input dataset files (.tabular) : metrics table and unitobs table \\n- Interest variable field from metrics table \\n- Response variable from unitobs table.", call.=FALSE) #si pas d\'arguments -> affiche erreur et quitte / if no args -> error and exit1\r\n+    stop("At least 4 arguments must be supplied : \\n- two input dataset files (.tabular) : metrics table and unitobs table \\n- Interest variable field from metrics table \\n- Response variable from unitobs table.", call. = FALSE) # if no args -> error and exit1\r\n \r\n } else {\r\n-    Importdata <- args[1] ###### file name : metrics table\r\n-    ImportUnitobs <- args[2] ###### file name : unitobs informations\r\n+    import_data <- args[1] ###### file name : metrics table\r\n+    import_unitobs <- args[2] ###### file name : unitobs informations\r\n     colmetric <- as.numeric(args[3]) ###### Selected interest metric for GLM\r\n-    listFact <- strsplit(args [4],",")[[1]] ###### Selected response factors for GLM\r\n-    listRand <- strsplit(args [5],",")[[1]] ###### Selected randomized response factors for GLM\r\n-    colFactAna <- args[6] ####### (optional) Selected splitting factors for GLMs\r\n-    Distrib <- args[7] ###### (optional) Selected distribution for GLM \r\n-    log <- args[8] ###### (Optional) Log on interest metric ?\r\n+    list_fact <- strsplit(args [4], ",")[[1]] ###### Selected response factors for GLM\r\n+    list_rand <- strsplit(args [5], ",")[[1]] ###### Selected randomized response factors for GLM\r\n+    col_fact_ana <- args[6] ####### (optional) Selected splitting factors for GLMs\r\n+    distrib <- args[7] ###### (optional) Selected distribution for GLM\r\n+    glm_out <- args[8] ###### (Optional) GLM object as Rdata output ?\r\n     aggreg <- args[9] ###### Aggregation level of the data table\r\n     source(args[10]) ###### Import functions\r\n \r\n }\r\n-#### Data must be a dataframe with at least 3 variables : unitobs representing location and year ("observation.unit"), species code ("species.code") and abundance ("number")\r\n+#### d_ata must be a dataframe with at least 3 variables : unitobs representing location and year ("observation.unit"), species code ("species.code") and abundance ("number")\r\n+\r\n+\r\n+#Import des donn\xc3\xa9es / Import data\r\n+obs <- read.table(import_data, sep = "\\t", dec = ".", header = TRUE, encoding = "UTF-8") #\r\n+obs[obs == -999] <- NA\r\n+metric <- colnames(obs)[colmetric]\r\n+tab_unitobs <- read.table(import_unitobs, sep = "\\t", dec = ".", header = TRUE, encoding = "UTF-8")\r\n+tab_unitobs[tab_unitobs == -999] <- NA\r\n+\r\n+vars_data1 <- c("species.code")\r\n+err_msg_data1 <- "The input metrics dataset doesn\'t have the right format. It needs to have at least the following 3 variables :\\n- species.code \\n- observation.unit (or year and site)\\n- numeric or integer metric\\n"\r\n+check_file(obs, err_msg_data1, vars_data1, 3)\r\n+\r\n+vars_data2 <- c("observation.unit", list_fact, list_rand)\r\n+err_msg_data2 <- "The input unitobs dataset doesn\'t have the right format. It needs to have at least the following 2 variables :\\n- observation.unit (or year and site)\\n- factors used in '..b'llapse = ":")\r\n-                                                                              })\r\n-                                                       })))\r\n-        \r\n-    }  \r\n-  \r\n-    TabSum[,colcoef] <- NA\r\n+          ## Write results :\r\n+        if (! is.null(res)) {\r\n+            file_save_glm_sp <- paste("GLM_", sp, ".Rdata", sep = "")\r\n+            save(res, file = file_save_glm_sp)\r\n \r\n-    ### creating rate table \r\n-    TabRate <- data.frame(species=levels(tmpData[,FactAna]), complete_plan=NA, balanced_plan=NA, NA_proportion_OK=NA, no_residual_dispersion=NA, uniform_residuals=NA, outliers_proportion_OK=NA, no_zero_inflation=NA, observation_factor_ratio_OK=NA, enough_levels_random_effect=NA, rate=NA)\r\n-\r\n-    ## Compute Model(s) :\r\n-   \r\n-    for (sp in levels(tmpData[,FactAna])) \r\n-    {\r\n-        cutData <- tmpData[grep(sp,tmpData[,FactAna]),]\r\n-        cutData <- dropLevels.f(cutData)\r\n-\r\n-        res <-""\r\n+            tab_sum <- .GlobalEnv$sorties_lm_f(obj_lm = res, obj_lmy = resy, tab_sum = tab_sum, fact_ana = fact_ana, cut = sp, col_ana = "analysis", lev = lev, d_ata = cutd_ata, metrique = metrique, list_fact = list_fact, list_rand = list_rand)\r\n \r\n-        if (listRand[1] != "None")\r\n-        {\r\n-            res <- tryCatch(glmmTMB(exprML,family=loiChoisie, data=cutData), error=function(e){})\r\n-        }else{\r\n-            res <- tryCatch(glm(exprML,data=cutData,family=loiChoisie), error=function(e){})\r\n-        }\r\n-\r\n-          ## \xc3\x89criture des r\xc3\xa9sultats format\xc3\xa9s dans un fichier :\r\n-        if (! is.null(res))\r\n-        {\r\n-            TabSum <- sortiesLM.f(objLM=res, TabSum=TabSum, factAna=factAna, cut=sp, colAna="species", lev=lev, Data=cutData, metrique=metrique, type="espece", listFact=listFact)\r\n-\r\n-            TabRate[TabRate[,"species"]==sp,c(2:11)] <- noteGLM.f(data=cutData, objLM=res, metric=metrique, listFact=listFact, details=TRUE)\r\n+            tab_rate[tab_rate[, "species"] == sp, c(2:11)] <- .GlobalEnv$note_glm_f(data = cutd_ata, obj_lm = res, metric = metrique, list_fact = list_fact, details = TRUE)\r\n \r\n         }else{\r\n-            cat("\\nCannot compute GLM for species",sp,"Check if one or more factor(s) have only one level, or try with another distribution for the model in advanced settings \\n\\n")\r\n+            cat("\\nCannot compute GLM for species", sp, "Check if one or more factor(s) have only one level, or try with another distribution for the model in advanced settings \\n\\n")\r\n         }\r\n \r\n     }\r\n-    noteGLMs.f(tabRate=TabRate,exprML=exprML,objLM=res,file_out=TRUE)\r\n+    .GlobalEnv$note_glms_f(tab_rate = tab_rate, expr_lm = expr_lm, obj_lm = res, file_out = TRUE)\r\n \r\n     ## simple statistics and infos :\r\n     filename <- "GLMSummaryFull.txt"\r\n \r\n     ## Save data on model :\r\n \r\n-    infoStats.f(filename=filename, Data=tmpData, agregLevel=aggreg, type="stat",\r\n-                metrique=metrique, factGraph=factAna, #factGraphSel=modSel,\r\n-                listFact=listFact)#, listFactSel=listFactSel)\r\n+    info_stats_f(filename = filename, d_ata = tmpd_ata, agreg_level = aggreg, type = "stat",\r\n+                metrique = metrique, fact_graph = fact_ana, #fact_graph_sel = modSel,\r\n+                list_fact = list_fact)#, list_fact_sel = list_fact_sel)\r\n \r\n-    return(TabSum)\r\n+    return(tab_sum)\r\n }\r\n \r\n ################# Analysis\r\n \r\n-Tab <- modeleLineaireWP2.species.f(metrique=metric, listFact=listFact, listRand=listRand, FactAna=FactAna, Distrib=Distrib, tabMetrics=obs, tableMetrique=aggreg, tabUnitobs=tabUnitobs, outresiduals=SupprOutlay, nbName="number")\r\n+tab <- glm_species(metrique = metric, list_fact = list_fact, list_rand = list_rand, fact_ana = fact_ana, distrib = distrib, tab_metrics = obs, tab_metrique = aggreg, tab_unitobs = tab_unitobs, nb_name = "number")\r\n \r\n-write.table(Tab,"GLMSummary.tabular", row.names=FALSE, sep="\\t", dec=".",fileEncoding="UTF-8")\r\n-\r\n+write.table(tab, "GLMSummary.tabular", row.names = FALSE, sep = "\\t", dec = ".", fileEncoding = "UTF-8")\r\n'
b
diff -r e972fe2bffee -r 6c14021f678e FunctPAMPAGalaxy.r
--- a/FunctPAMPAGalaxy.r Mon Jul 27 09:55:27 2020 -0400
+++ b/FunctPAMPAGalaxy.r Sun Nov 22 18:40:40 2020 +0000
[
b'@@ -11,77 +11,71 @@\n ######################################### start of the function fact.def.f called by FunctExeCalcCommIndexesGalaxy.r and FunctExeCalcPresAbsGalaxy.r\n ####### Define the finest aggregation with the observation table\n \n-fact.det.f <- function (Obs,\n-                        size.class="size.class",\n-                        code.especes="species.code",\n-                        unitobs="observation.unit")\n-{\n-    if (any(is.element(c(size.class), colnames(obs))) && all(! is.na(obs[, size.class])))\n-        {\n-            factors <- c(unitobs, code.especes, size.class)\n+fact_det_f <- function(obs,\n+                       size_class = "size.class",\n+                       code_species = "species.code",\n+                       unitobs = "observation.unit") {\n+    if (any(is.element(c(size_class), colnames(obs))) && all(! is.na(obs[, size_class]))) {\n+            factors <- c(unitobs, code_species, size_class)\n         }else{\n-            factors <- c(unitobs, code.especes)\n+            factors <- c(unitobs, code_species)\n         }\n     return(factors)\n }\n \n-######################################### end of the function fact.def.f \n+######################################### end of the function fact.def.f\n \n-######################################### start of the function def.typeobs.f called by FunctExeCalcCommIndexesGalaxy.r and FunctExeCalcPresAbsGalaxy.r\n+######################################### start of the function def_typeobs_f called by FunctExeCalcCommIndexesGalaxy.r and FunctExeCalcPresAbsGalaxy.r\n ####### Define observation type from colnames\n \n-def.typeobs.f <- function(Obs)\n-{\n-    if (any(is.element(c("rotation","rot","rotate"),colnames(obs))))\n-    {\n-        ObsType <- "SVR"\n+def_typeobs_f <- function(obs) {\n+    if (any(is.element(c("rotation", "rot", "rotate"), colnames(obs)))) {\n+        obs_type <- "SVR"\n     }else{\n-        ObsType <- "other"\n+        obs_type <- "other"\n     }\n-    return(ObsType)\n+    return(obs_type)\n }\n-######################################### end of the function fact.def.f \n+######################################### end of the function fact.def.f\n \n-######################################### start of the function create.unitobs called by FunctExeCalcCommIndexesGalaxy.r and FunctExeCalcPresAbsGalaxy.r\n+######################################### start of the function create_unitobs called by FunctExeCalcCommIndexesGalaxy.r and FunctExeCalcPresAbsGalaxy.r\n ####### Create unitobs column when inexistant\n-create.unitobs <- function(data,year="year",point="point", unitobs="observation.unit")\n-{\n-    if (is.element(paste(unitobs),colnames(data)) && all(grepl("[1-2][0|8|9][0-9]{2}_.*",data[,unitobs])==FALSE))\n-    {\n-        unitab <- data\n+create_unitobs <- function(data, year = "year", location = "location", unitobs = "observation.unit") {\n+    if (is.element(paste(unitobs), colnames(data))) {\n+            unitab <- data\n+    }else{\n \n-    }else{ \n-\n-        unitab <- unite(data,col="observation.unit",c(year,point))\n+        unitab <- tidyr::unite(data, col = "observation.unit", c(year, location))\n     }\n     return(unitab)\n }\n-######################################### start of the function create.unitobs\n+######################################### start of the function create_unitobs\n \n-######################################### start of the function create.year.point called by FunctExeCalcCommIndexesGalaxy.r and FunctExeCalcPresAbsGalaxy.r\n+######################################### start of the function create_year_location called by FunctExeCalcCommIndexesGalaxy.r and FunctExeCalcPresAbsGalaxy.r\n ####### separate unitobs column when existant\n-create.year.point <- function(data,year="year",point="point", unitobs="observation.unit")\n-{\n-    if (all(grepl("[1-2][0|8|9][0-9]{2}_.*",data[,unitobs]))==TRUE)\n-    {\n-        tab <- separate(data,col=unitobs,into=c(year,point),sep="_")\n+create_year_location <- function(data, year = "year", location = "location", unitobs = "observation.uni'..b' "Raw residuals" , ylab = "Residual", xlab = "Predicted")\n-  mtext("Conventional residual plots", outer = T)\n-}\n-\n-\n-\n-\n-#\n-#\n-# if(quantreg == F){\n-#\n-#   lines(smooth.spline(simulationOutput$fittedPredictedResponse, simulationOutput$scaledResiduals, df = 10), lty = 2, lwd = 2, col = "red")\n-#\n-#   abline(h = 0.5, col = "red", lwd = 2)\n-#\n-# }else{\n-#\n-#   #library(gamlss)\n-#\n-#   # qrnn\n-#\n-#   # http://r.789695.n4.nabble.com/Quantile-GAM-td894280.html\n-#\n-#   #require(quantreg)\n-#   #dat <- plyr::arrange(dat,pred)\n-#   #fit<-quantreg::rqss(resid~qss(pred,constraint="N"),tau=0.5,data = dat)\n-#\n-#   probs = c(0.25, 0.50, 0.75)\n-#\n-#   w <- p <- list()\n-#   for(i in seq_along(probs)){\n-#     capture.output(w[[i]] <- qrnn::qrnn.fit(x = as.matrix(simulationOutput$fittedPredictedResponse), y = as.matrix(simulationOutput$scaledResiduals), n.hidden = 4, tau = probs[i], iter.max = 1000, n.trials = 1, penalty = 1))\n-#     p[[i]] <- qrnn::qrnn.predict(as.matrix(sort(simulationOutput$fittedPredictedResponse)), w[[i]])\n-#   }\n-#\n-#\n-#\n-#   #plot(simulationOutput$fittedPredictedResponse, simulationOutput$scaledResiduals, xlab = "Predicted", ylab = "Residual", main = "Residual vs. predicted\\n lines should match", cex.main = 1)\n-#\n-#   #lines(sort(simulationOutput$fittedPredictedResponse), as.vector(p[[1]]), col = "red")\n-#\n-#   matlines(sort(simulationOutput$fittedPredictedResponse), matrix(unlist(p), nrow = length(simulationOutput$fittedPredictedResponse), ncol = length(p)), col = "red", lty = 1)\n-#\n-#   #     as.vector(p[[1]])\n-#   #\n-#   #\n-#   #     lines(simulationOutput$fittedPredictedResponse,p[[1]], col = "red", lwd = 2)\n-#   #     abline(h = 0.5, col = "red", lwd = 2)\n-#   #\n-#   #     fit<-quantreg::rqss(resid~qss(pred,constraint="N"),tau=0.25,data = dat)\n-#   #     lines(unique(dat$pred)[-1],fit$coef[1] + fit$coef[-1], col = "green", lwd = 2, lty =2)\n-#   #     abline(h = 0.25, col = "green", lwd = 2, lty =2)\n-#   #\n-#   #     fit<-quantreg::rqss(resid~qss(pred,constraint="N"),tau=0.75,data = dat)\n-#   #     lines(unique(dat$pred)[-1],fit$coef[1] + fit$coef[-1], col = "blue", lwd = 2, lty = 2)\n-#   #     abline(h = 0.75, col = "blue", lwd = 2, lty =2)\n-# }\n-\n-####################### plot.R\n-\n-####################### random.R\n-\n-#\' Record and restore a random state\n-#\' \n-#\' The aim of this function is to record, manipualate and restor a random state\n-#\' \n-#\' @details This function is intended for two (not mutually exclusive tasks)\n-#\' \n-#\' a) record the current random state\n-#\' \n-#\' b) change the current random state in a way that the previous state can be restored\n-#\' \n-#\' @return a list with various infos about the random state that after function execution, as well as a function to restore the previous state before the function execution\n-#\' \n-#\' @param seed seed argument to set.seed(). NULL = no seed, but random state will be restored. F = random state will not be restored\n-#\' @export\n-#\' @example inst/examples/getRandomStateHelp.R\n-#\' @author Florian Hartig\n-#\' \n-getRandomState <- function(seed = NULL){\n-  \n-  # better to explicitly access the global RS?\n-  # current = get(".Random.seed", .GlobalEnv, ifnotfound = NULL)\n-  \n-  current = mget(".Random.seed", envir = .GlobalEnv, ifnotfound = list(NULL))[[1]]\n-  \n-  if(is.logical(seed) & seed == F){\n-    restoreCurrent <- function(){}    \n-  }else{\n-    restoreCurrent <- function(){\n-      if(is.null(current)) rm(".Random.seed", envir = .GlobalEnv) else assign(".Random.seed", current , envir = .GlobalEnv)\n-    }    \n-  }\n-\n-  # setting seed\n-  if(is.numeric(seed)) set.seed(seed)\n-\n-  # ensuring that RNG has been initialized\n-  if (is.null(current))runif(1) \n-  \n-  randomState = list(seed, state = get(".Random.seed", globalenv()), kind = RNGkind(), restoreCurrent = restoreCurrent)  \n-  return(randomState)\n-}\n-\n-####################### random.R\n-\n-######################################### Package DHARMa\n+######################################### start of the function summary_fr\n'
b
diff -r e972fe2bffee -r 6c14021f678e PAMPA_GLM_SP.xml
--- a/PAMPA_GLM_SP.xml Mon Jul 27 09:55:27 2020 -0400
+++ b/PAMPA_GLM_SP.xml Sun Nov 22 18:40:40 2020 +0000
b
@@ -15,15 +15,20 @@
          'species.code'
          #if $settings.advanced=='advanced' 
              $settings.distrib
-             'FALSE'
+             $settings.rdata
          #else
              'None'
-             'FALSE'
+             'false'
          #end if
          'unitSp'
          '$__tool_directory__/FunctPAMPAGalaxy.r' 
          '$output_summary'
          '$output_recap'
+         #if $settings.advanced=='advanced'
+             #if $settings.rdata=='true'
+                 '$output_GLM'
+             #end if
+         #end if
     ]]>
     </command>
     <inputs>
@@ -34,18 +39,19 @@
         </conditional>
     </inputs>
     <outputs>
-
         <data name="output_summary" from_work_dir="GLMSummary.tabular" format="tabular" label="GLM - Results from your population analysis on ${on_string}"/>
         <expand macro="pampa_output_GLM"/>
     </outputs>
     <tests>
-        <test> 
+        <test expect_num_outputs="4"> 
             <param name="input_metric" value="Presence_absence_table_sansszcl_cropped.tabular"/>
             <param name="input_unitobs" value="Unitobs.tabular"/>
             <param name="varint" value="4"/>
             <param name="varrep" value="year,site,habitat"/>
             <param name="varrand" value="site"/>
-            <param name="advanced" value="simple"/>
+            <param name="advanced" value="advanced"/>
+            <param name="distrib" value="None"/>
+            <param name="rdata" value="true"/>
             <output name="output_summary">
                 <assert_contents> 
                     <has_n_lines n="4"/>
@@ -53,14 +59,31 @@
             </output>
             <output name="output_recap">  
                 <assert_contents> 
-                    <has_n_lines n="607"/>
+                    <has_n_lines n="606"/>
                 </assert_contents> 
             </output>     
             <output name="output_rate">
                 <assert_contents> 
-                    <has_n_lines n="46"/>
+                    <has_n_lines n="45"/>
                 </assert_contents> 
             </output>
+            <output_collection name="output_GLM"  type="list" count="3">
+                <element name="GLM_Abalstel" ftype="Rdata">
+                    <assert_contents> 
+                        <has_size value="199219" delta="10000"/>
+                    </assert_contents> 
+                </element>
+                <element name="GLM_Hemifasc" ftype="Rdata">
+                    <assert_contents> 
+                        <has_size value="202264" delta="10000"/>
+                    </assert_contents> 
+                </element>
+                <element name="GLM_Zebrscop" ftype="Rdata">
+                    <assert_contents> 
+                        <has_size value="207311" delta="10000"/>
+                    </assert_contents> 
+                </element>
+            </output_collection>
         </test>
     </tests>
     <edam_topics>
@@ -126,6 +149,8 @@
 |              ...               |      ...     |   ...   |   ...  |     ...    | ... |       
 +--------------------------------+--------------+---------+--------+------------+-----+ 
 
+The site may represent the same entity as the location or represent an aggregation of several locations.
+
 |
 
 **Output**
b
diff -r e972fe2bffee -r 6c14021f678e pampa_macros.xml
--- a/pampa_macros.xml Mon Jul 27 09:55:27 2020 -0400
+++ b/pampa_macros.xml Sun Nov 22 18:40:40 2020 +0000
[
@@ -1,5 +1,5 @@
 <macros>
-    <token name="@VERSION@">0.0.1</token>
+    <token name="@VERSION@">0.0.2</token>
     <xml name="Pampa_requirements">
         <requirements>
             <requirement type="package" version="1.0.2">r-tidyr</requirement>
@@ -10,11 +10,13 @@
             <requirement type="package" version="1.2.2">r-gap</requirement>
             <requirement type="package" version="1.0.1">r-glmmtmb</requirement>
             <requirement type="package" version="1.4_13">r-multcomp</requirement>
+            <requirement type="package" version="0.3.3.0">r-dharma</requirement>
         </requirements>    
     </xml>
     <xml name="Plot_requirements">
         <requirements>
             <requirement type="package" version="3.1.1">r-ggplot2</requirement>
+            <requirement type="package" version="1.3_25">r-boot</requirement>
         </requirements>    
     </xml>
     <xml name="pampa_input_calculate">
@@ -46,6 +48,7 @@
                 <option value="quasibinomial">Quasi-Binomial</option>
                 <option value="Gamma">Gamma</option>
             </param>
+            <param name="rdata" type="boolean" checked="yes" label="GLM object(s) as .Rdata output ?"/>
         </when>
     </xml>
     <xml name="pampa_input_GLM">
@@ -67,6 +70,10 @@
     <xml name="pampa_output_GLM">
         <data name="output_recap" from_work_dir="GLMSummaryFull.txt" format="txt" label="Simple statistics on chosen variables on ${on_string}"/>
         <data name="output_rate" from_work_dir="RatingGLM.txt" format="txt" label="Your analysis rating file on ${on_string}"/>
+        <collection type="list" name="output_GLM">
+            <discover_datasets pattern="(?P&lt;designation&gt;.+)\.Rdata" visible="false" format="Rdata"/>
+            <filter> settings['advanced'] == 'advanced' and settings['rdata']</filter>
+        </collection>
     </xml>
     <xml name="pampa_bibref">
         <citations>
b
diff -r e972fe2bffee -r 6c14021f678e test-data/GLM_table_population_analysis_on_Presence_absence_sansszcl_cropped.tabular
--- a/test-data/GLM_table_population_analysis_on_Presence_absence_sansszcl_cropped.tabular Mon Jul 27 09:55:27 2020 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,4 +0,0 @@
-"species" "AIC" "BIC" "logLik" "deviance" "df.resid" "site Std.Dev" "site NbObservation" "site NbLevels" "(Intercept) Estimate" "(Intercept) Std.Err" "(Intercept) Zvalue" "(Intercept) Pvalue" "(Intercept) signif" "2007 Estimate" "2007 Std.Err" "2007 Zvalue" "2007 Pvalue" "2007 signif" "2008 Estimate" "2008 Std.Err" "2008 Zvalue" "2008 Pvalue" "2008 signif" "2009 Estimate" "2009 Std.Err" "2009 Zvalue" "2009 Pvalue" "2009 signif" "2010 Estimate" "2010 Std.Err" "2010 Zvalue" "2010 Pvalue" "2010 signif" "2012 Estimate" "2012 Std.Err" "2012 Zvalue" "2012 Pvalue" "2012 signif" "2013 Estimate" "2013 Std.Err" "2013 Zvalue" "2013 Pvalue" "2013 signif" "2014 Estimate" "2014 Std.Err" "2014 Zvalue" "2014 Pvalue" "2014 signif" "2015 Estimate" "2015 Std.Err" "2015 Zvalue" "2015 Pvalue" "2015 signif" "2017 Estimate" "2017 Std.Err" "2017 Zvalue" "2017 Pvalue" "2017 signif" "Algueraie Estimate" "Algueraie Std.Err" "Algueraie Zvalue" "Algueraie Pvalue" "Algueraie signif" "Corail vivant Estimate" "Corail vivant Std.Err" "Corail vivant Zvalue" "Corail vivant Pvalue" "Corail vivant signif" "Detritique Estimate" "Detritique Std.Err" "Detritique Zvalue" "Detritique Pvalue" "Detritique signif" "Fond lagonaire Estimate" "Fond lagonaire Std.Err" "Fond lagonaire Zvalue" "Fond lagonaire Pvalue" "Fond lagonaire signif" "Herbier Estimate" "Herbier Std.Err" "Herbier Zvalue" "Herbier Pvalue" "Herbier signif"
-"Abalstel" 465.778668402852 530.012669606292 -217.889334201426 435.778668402852 520 2.02893200110294e-11 535 87 0.582003897784078 0.16995917980052 3.42437459669534 0.000616216168469682 "yes" NA NA NA NA NA -0.19415426356584 0.145972631275553 -1.33007305458058 0.183494202488272 "no" 0.00824541649995591 0.132249306065064 0.0623475218531531 0.950286085093627 "no" -0.0469231466299359 0.127874642775125 -0.366946453273407 0.713658960013819 "no" -0.026333156943764 0.127546916274464 -0.206458593535093 0.83643270551623 "no" 0.0449902599405432 0.123577649181079 0.364064701332996 0.715809694931448 "no" -0.00566671318079257 0.12968331601722 -0.0436965475191898 0.965146291270581 "no" -0.00315955678300799 0.134390106623576 -0.023510337646043 0.981243192515925 "no" -0.0211838550997583 0.134469226544777 -0.157536825666981 0.874821787532576 "no" NA NA NA NA NA -0.584431910188132 0.17913769577747 -3.26247308056328 0.00110444661730468 "yes" -0.555457917136758 0.181703900796363 -3.05693997048123 0.00223609052438647 "yes" -0.533422320342636 0.181778685227503 -2.9344602183421 0.00334128381555499 "yes" 2.60899691274078 0.221452905612334 11.7812719843377 4.87517680861174e-32 "yes"
-"Hemifasc" 989.708308026567 1053.94230923001 -479.854154013284 959.708308026567 520 0.0731913677511507 535 87 0.80188975303788 0.301651463759325 2.65833204667515 0.00785284807116327 "yes" NA NA NA NA NA 0.481141192254312 0.272853104782075 1.76337078018076 0.0778379746547175 "no" 0.491975244697431 0.258717316966712 1.9015937953652 0.0572242797228078 "no" 0.52417509191558 0.257940994484472 2.03215116295574 0.0421383552019658 "yes" 0.704061126955671 0.258153165214832 2.72729999792859 0.00638549547621618 "yes" 0.922884191406201 0.242885260944276 3.79967144905484 0.000144888046528251 "yes" 1.07227573954628 0.268950382217829 3.98689055841469 6.69448864477017e-05 "yes" 1.20570832792662 0.291950452161748 4.12983887847734 3.63017553679052e-05 "yes" 0.952662560597608 0.276776209505792 3.44199583590898 0.000577439138478601 "yes" NA NA NA NA NA -1.4622104258899 0.300994684364961 -4.85792773707906 1.18620683066582e-06 "yes" -1.44397094980884 0.305397744683802 -4.72816507307175 2.26557963478985e-06 "yes" -1.45728966857269 0.302234347092491 -4.82172090165093 1.42324990478013e-06 "yes" -1.34910839377147 0.366744594037812 -3.67860471757186 0.000234513401805964 "yes"
-"Zebrscop" 2937.50168275753 3001.73568396097 -1453.75084137876 2907.50168275753 520 6.86847494946857 535 87 -0.783376806033906 1.96843225335046 -0.397969909658067 0.690652366321943 "no" NA NA NA NA NA -2.46263154439423 1.71419485921636 -1.43661120621959 0.150828497639506 "no" -2.81277062425383 1.65194192826306 -1.70270551048445 0.0886231931264859 "no" -2.24200293533928 1.6471883066992 -1.36110906459264 0.173479225491309 "no" 1.92420443459089 1.66604387989188 1.15495423488832 0.248109168047627 "no" 5.03567066902903 1.4881081746922 3.38394127165561 0.00071453285120286 "yes" 2.56255810319688 1.81706438444276 1.41027369483263 0.158458882708268 "no" 0.73344942166209 1.94553641122863 0.37699084809156 0.706180406176162 "no" 0.419840113473674 1.90401994599711 0.220501951335289 0.825480252830466 "no" NA NA NA NA NA 1.33928270409068 1.87987517063075 0.712431721538894 0.47619747813314 "no" 0.437923054943406 1.89963982379853 0.230529519047318 0.817680328217623 "no" 0.52253919562426 1.87614268249488 0.278517833691301 0.780614877108231 "no" -1.7132623404351 2.24757733331173 -0.762270697004523 0.445898459177794 "no"
b
diff -r e972fe2bffee -r 6c14021f678e test-data/Presence_absence_table_sansszcl_cropped.tabular
--- a/test-data/Presence_absence_table_sansszcl_cropped.tabular Mon Jul 27 09:55:27 2020 -0400
+++ b/test-data/Presence_absence_table_sansszcl_cropped.tabular Sun Nov 22 18:40:40 2020 +0000
b
@@ -1,4 +1,4 @@
-"point" "year" "species.code" "number" "number.max" "number.sd" "pres.abs" "observation.unit"
+"location" "year" "species.code" "number" "number.max" "number.sd" "presence_absence" "observation.unit"
 "AB_0008" "08" "Abalstel" 0 0 0 0 "AB080008"
 "AB_0015" "08" "Abalstel" 0 0 0 0 "AB080015"
 "AB_0027" "08" "Abalstel" 0 0 0 0 "AB080027"
b
diff -r e972fe2bffee -r 6c14021f678e test-data/Simple_statistics_on_Presence_absence_sansszcl_cropped.txt
--- a/test-data/Simple_statistics_on_Presence_absence_sansszcl_cropped.txt Mon Jul 27 09:55:27 2020 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,614 +0,0 @@\n-\n-##################################################\n-Metrics and factors (and possible units/selections):\n-\n- Metrics: number \n-            aggregated per observation units.\n-\n-Analyses factor(s): \n- *  year \n- *  habitat \n- *  site \n- *  \n-\n-########################\n-Base statistics:\n-\n-        Min.      1st Qu.       Median         Mean      3rd Qu.         Max. \n-   0.0000000    0.0000000    0.0000000    0.8886154    1.0000000   46.6666667 \n-          sd            N \n-   2.3900000 2133.0000000 \n-\n-#########################################\n-Statistics per combination of factor levels:\n-\n-                                              Min.    1st Qu.    Median\n-2007.Algueraie.Ilot Signal                       0 0.00000000 0.0000000\n-2007.Algueraie.Radiales Signal laregnere         0 0.00000000 0.0000000\n-2007.Corail vivant.Ilot Signal                   0 0.00000000 0.0000000\n-2007.Corail vivant.NA                            0 0.00000000 0.0000000\n-2007.Corail vivant.Recif Senez                   0 0.00000000 0.0000000\n-2007.Detritique.Recif Laregnere                  0 0.00000000 0.0000000\n-2007.Fond lagonaire.Ilot Signal                  0 0.00000000 0.0000000\n-2007.Herbier.Ilot Signal                         0 0.00000000 0.0000000\n-2008.Corail vivant.Abore                         0 0.00000000 0.0000000\n-2008.Corail vivant.Laregnere                     0 0.16666667 0.3333333\n-2008.Corail vivant.NA                            0 0.00000000 0.0000000\n-2008.Detritique.Mbe Kouen                        0 0.00000000 0.0000000\n-2008.Detritique.NA                               0 0.00000000 0.0000000\n-2008.Detritique.Recif Laregnere                  0 0.00000000 0.0000000\n-2008.Fond lagonaire.Abore                        0 0.00000000 0.0000000\n-2008.Fond lagonaire.NA                           0 0.00000000 0.0000000\n-2008.Herbier.Ilot Signal                         0 0.00000000 0.0000000\n-2008.Herbier.Radiales Signal laregnere           0 0.00000000 0.0000000\n-2009.Algueraie.NA                                0 0.00000000 0.0000000\n-2009.Corail vivant.Abore                         0 0.00000000 0.0000000\n-2009.Corail vivant.Mbe Kouen                     0 0.00000000 0.0000000\n-2009.Corail vivant.NA                            0 0.00000000 0.0000000\n-2009.Corail vivant.Recif Laregnere               0 0.00000000 0.0000000\n-2009.Detritique.Mbe Kouen                        0 0.00000000 0.0000000\n-2009.Detritique.NA                               0 0.00000000 0.0000000\n-2009.Detritique.Recif Laregnere                  0 0.00000000 0.0000000\n-2009.Fond lagonaire.Mbe Kouen                    0 0.00000000 0.0000000\n-2009.Fond lagonaire.NA                           0 0.00000000 0.0000000\n-2009.Fond lagonaire.Radiales Signal laregnere    0 0.00000000 0.0000000\n-2009.Herbier.Radiales Signal laregnere           0 0.00000000 0.0000000\n-2010.Corail vivant.Abore                         0 0.00000000 0.0000000\n-2010.Detritique.Abore                            0 0.00000000 0.0000000\n-2010.Detritique.Laregnere                        0 0.00000000 0.0000000\n-2010.Detritique.Mbe Kouen                        0 0.00000000 0.0000000\n-2010.Detritique.Recif Laregnere                  0 0.00000000 0.0000000\n-2010.Fond lagonaire.Abore                        0 0.00000000 0.0000000\n-2010.Fond lagonaire.Laregnere                    0 0.00000000 0.0000000\n-2010.Fond lagonaire.Mbe Kouen                    0 0.00000000 0.0000000\n-2010.Herbier.Radiales Signal laregnere           0 0.00000000 0.0000000\n-2012.Corail vivant.Baie Port Bouquet             0 0.00000000 0.0000000\n-2012.Corail vivant.Cap Goulvain                  0 0.00000000 0.0000000\n-2012.Corail vivant.Deva                          0 0.00000000 0.0000000\n-2012.Corail vivant.Grand recif Ngoe              0 0.00000000 0.0000000\n-2012.Corail vivant.Ilot de sable                 0 0.00000000 0.0000000\n-2012.Corail vivant.Ilots                         0 0.00000000 0.0000000\n-2012.Corail vivant.NA  '..b'ritique.Recif Nogumatiugi              0.5774   3\n-2013.Detritique.Recif Tironhua                 0.5774   3\n-2013.Detritique.Seche Croissant                4.6190   3\n-2013.Fond lagonaire.Bampton nord               0.9623   3\n-2013.Fond lagonaire.Barriere nord-ouest        0.5774   3\n-2013.Fond lagonaire.Corne sud                  0.5774   3\n-2013.Fond lagonaire.Crouy                      4.6190   3\n-2013.Fond lagonaire.Ilot Koko                  0.8367   6\n-2013.Fond lagonaire.Lagon Mba Mbo              4.6190   3\n-2013.Fond lagonaire.Mba                        4.6190   3\n-2013.Fond lagonaire.Mbe Kouen                 18.6700   6\n-2013.Fond lagonaire.Mbo                        4.0410   3\n-2013.Fond lagonaire.NA                         1.4070 147\n-2013.Fond lagonaire.Recif Bellona Sud          0.5774   3\n-2013.Fond lagonaire.Recif Cimenia              1.2880  18\n-2013.Fond lagonaire.Recif Ia                   0.8660   3\n-2013.Fond lagonaire.Recif Ie                   0.5774   3\n-2013.Fond lagonaire.Recif Mbe Kouen            5.7740   3\n-2013.Fond lagonaire.Recif Ndunekunie           1.3470   3\n-2013.Fond lagonaire.Recif Neokouie             1.4050   6\n-2013.Fond lagonaire.Recif Neokumbi             0.9174   6\n-2013.Fond lagonaire.Recif Nogumatiugi          1.0470  15\n-2013.Fond lagonaire.Recif Puakue               0.7698   3\n-2013.Fond lagonaire.Recif Purembi              0.7698   3\n-2013.Fond lagonaire.Recif Senez                4.6190   3\n-2013.Fond lagonaire.Recif Umbei                0.5774   3\n-2013.Fond lagonaire.Seche Croissant            4.6190   3\n-2013.Herbier.Ilot Signal                       4.6190   3\n-2013.Herbier.Laregnere                         4.6190   3\n-2014.Corail vivant.Baie Xepenehe               1.1140  42\n-2014.Corail vivant.Grand Astrolabe             7.8930  12\n-2014.Corail vivant.Jinek                       0.9786  27\n-2014.Corail vivant.Petit Astrolabe             4.8880  33\n-2014.Corail vivant.Petrie                      0.7311  12\n-2014.Corail vivant.Pointe Easo                 0.9290   6\n-2014.Corail vivant.Recif Jinek                 0.5863   6\n-2014.Corail vivant.Walpole                     0.5774   3\n-2014.Detritique.Baie Xepenehe                  1.7530   6\n-2014.Detritique.Grand Astrolabe                1.4430   3\n-2014.Detritique.Hunter                         1.6730   6\n-2014.Detritique.Jinek                          0.6894   9\n-2014.Detritique.Petrie                         0.5164   6\n-2014.Fond lagonaire.Baie Xepenehe              0.7698   3\n-2014.Fond lagonaire.Grand Astrolabe            1.1550   3\n-2014.Fond lagonaire.Jinek                      0.5018   6\n-2015.Corail vivant.Grand Guilbert              0.5000   3\n-2015.Corail vivant.Huon                        1.6960  48\n-2015.Corail vivant.Merite                      0.5774   3\n-2015.Corail vivant.Pelotas                     1.0550  12\n-2015.Corail vivant.Petit Guilbert              0.5774   3\n-2015.Corail vivant.Portail                     0.8941   9\n-2015.Corail vivant.Surprise                    0.5278  21\n-2015.Detritique.Huon                           1.1370   6\n-2015.Detritique.Portail                        0.6646   6\n-2015.Fond lagonaire.Huon                       0.5774   3\n-2015.Fond lagonaire.Portail                    0.5774   3\n-2017.Corail vivant.Grand Astrolabe             1.7660  12\n-2017.Corail vivant.Petit Astrolabe             0.8367   6\n-2017.Corail vivant.Petrie                      1.5490  15\n-2017.Detritique.Grand Astrolabe                3.6290  30\n-2017.Detritique.Petit Astrolabe                0.5751  36\n-2017.Detritique.Petrie                         0.7760  18\n-2017.Fond lagonaire.Grand Astrolabe            0.5774   3\n-2017.Fond lagonaire.Petit Astrolabe            0.8367   6\n-2017.Fond lagonaire.Petrie                     0.8660   3\n-\n-######################################### \n-Fitted model:\n-\tnumber ~ year + habitat + (1 | site)\n-\n-\n-Family :  gaussian \n-Response :  number\n\\ No newline at end of file\n'