view 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 source

#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 = ""))