Mercurial > repos > ecology > pampa_presabs
diff FunctExeCalcPresAbsGalaxy.r @ 3:8d8aec182fb1 draft
"planemo upload for repository https://github.com/ColineRoyaux/PAMPA-Galaxy commit 04381ca7162ec3ec68419e308194b91d11cacb04"
author | ecology |
---|---|
date | Mon, 16 Nov 2020 11:02:09 +0000 |
parents | c9dfe4e20a45 |
children | 07b081730994 |
line wrap: on
line diff
--- a/FunctExeCalcPresAbsGalaxy.r Mon Jul 27 09:46:51 2020 -0400 +++ b/FunctExeCalcPresAbsGalaxy.r Mon Nov 16 11:02:09 2020 +0000 @@ -1,75 +1,73 @@ -#Rscript - -##################################################################################################################### -##################################################################################################################### -############################ Calculate presence absence table from observation data ################################# -##################################################################################################################### -##################################################################################################################### - -###################### Packages -suppressMessages(library(tidyr)) - -###################### Load arguments and declaring variables - -args = commandArgs(trailingOnly=TRUE) -#options(encoding = "UTF-8") - -if (length(args) < 2) { - stop("At least one argument must be supplied, an input dataset file (.tabular).", call.=FALSE) #si pas d'arguments -> affiche erreur et quitte / if no args -> error and exit1 - -} else { - Importdata<-args[1] ###### Nom du fichier importé avec son extension / file name imported with the file type ".filetype" - source(args[2]) ###### Import functions - -} -#### Data must be a dataframe with at least 3 variables : unitobs representing location and year ("observation.unit"), species code ("species.code") and abundance ("number") - - -#Import des données / Import data -obs<- read.table(Importdata,sep="\t",dec=".",header=TRUE,encoding="UTF-8") # -obs[obs == -999] <- NA -factors <- fact.det.f(Obs=obs) -ObsType <- def.typeobs.f(Obs=obs) -obs <- create.unitobs(data=obs) - -vars_data<-c("observation.unit","species.code","number") -err_msg_data<-"The input dataset doesn't have the right format. It need to have at least the following 3 variables :\n- observation.unit (or point and year)\n- species.code\n- number\n" -check_file(obs,err_msg_data,vars_data,3) - - -#################################################################################################### -#################### Create presence/absence table ## Function : calc.presAbs.f #################### -#################################################################################################### - -calc.presAbs.f <- function(Data, - nbName="number") -{ - ## Purpose: Compute presence absence - ## ---------------------------------------------------------------------- - ## Arguments: Data : temporary metrics table - ## nbName : name of abundance column - ## - ## Output: presence absence vector - ## ---------------------------------------------------------------------- - ## Author: Yves Reecht, Date: 20 déc. 2011, 12:04 modified by Coline ROYAUX 04 june 2020 - - ## Presence - absence : - presAbs <- integer(nrow(Data)) - presAbs[Data[ , nbName] > 0] <- as.integer(1) - presAbs[Data[ , nbName] == 0] <- as.integer(0) - - return(presAbs) -} - - -################# Analysis - -res <- calc.numbers.f(obs, ObsType=ObsType , factors=factors, nbName="number") -res$pres.abs <- calc.presAbs.f(res, nbName="number") -res <- create.year.point(res) - -#Save dataframe in a tabular format -filenamePresAbs <- "TabPresAbs.tabular" -write.table(res, filenamePresAbs, row.names=FALSE, sep="\t", dec=".",fileEncoding="UTF-8") -cat(paste("\nWrite table with presence/absence. \n--> \"",filenamePresAbs,"\"\n",sep="")) - +#Rscript + +##################################################################################################################### +##################################################################################################################### +############################ Calculate presence absence table from observation data ################################# +##################################################################################################################### +##################################################################################################################### + +###################### Packages +suppressMessages(library(tidyr)) + +###################### Load arguments and declaring variables + +args <- commandArgs(trailingOnly = TRUE) + + +if (length(args) < 2) { + stop("At least one argument must be supplied, an input dataset file (.tabular).", call. = FALSE) # if no args -> error and exit1 + +} else { + import_data <- args[1] ###### Nom du fichier importé avec son extension / file name imported with the file type ".filetype" + source(args[2]) ###### Import functions + +} +#### 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") + + +#Import des données / Import data +obs <- read.table(import_data, sep = "\t", dec = ".", header = TRUE, encoding = "UTF-8") # +obs[obs == -999] <- NA +factors <- fact_det_f(obs = obs) +obs_type <- def_typeobs_f(obs = obs) +obs <- create_unitobs(data = obs) + +vars_data <- c("observation.unit", "species.code", "number") +err_msg_data <- "The input dataset doesn't have the right format. It need to have at least the following 3 variables :\n- observation.unit (or location and year)\n- species.code\n- number\n" +check_file(obs, err_msg_data, vars_data, 3) + + +#################################################################################################### +#################### Create presence/absence table ## Function : calc_pres_abs_f #################### +#################################################################################################### + +calc_pres_abs_f <- function(d_ata, + nb_name = "number") { + ## Purpose: Compute presence absence + ## ---------------------------------------------------------------------- + ## Arguments: d_ata : temporary metrics table + ## nb_name : name of abundance column + ## + ## Output: presence absence vector + ## ---------------------------------------------------------------------- + ## Author: Yves Reecht, Date: 20 déc. 2011, 12:04 modified by Coline ROYAUX 04 june 2020 + + ## Presence - absence : + pres_abs <- integer(nrow(d_ata)) + pres_abs[d_ata[, nb_name] > 0] <- as.integer(1) + pres_abs[d_ata[, nb_name] == 0] <- as.integer(0) + + return(pres_abs) +} + + +################# Analysis + +res <- calc_numbers_f(obs, obs_type = obs_type, factors = factors, nb_name = "number") +res$presence_absence <- calc_pres_abs_f(res, nb_name = "number") +res <- create_year_location(res) + +#Save dataframe in a tabular format +filename_pres_abs <- "TabPresAbs.tabular" +write.table(res, filename_pres_abs, row.names = FALSE, sep = "\t", dec = ".", fileEncoding = "UTF-8") +cat(paste("\nWrite table with presence/absence. \n--> \"", filename_pres_abs, "\"\n", sep = ""))