# path package: Pelagic Assessment Tools for Hydroacoustics ---------------
#' Pelagic Assessment Tools for Hydroacoustics
#'
#' Pelagic Assessment Tools for Hydroacoustics
#'
#' \tabular{ll}{ Package: \tab path\cr Type: \tab Package\cr Version: \tab
#' 0.1\cr Date: \tab 2015-02-13\cr License: \tab GPL-2\cr }
#'
#' @name path-package
#' @aliases path-package path
#' @docType package
#' @references path: Pelagic Assessment Tools for Hydroacoustics (Boletin IMARPE)
#' @keywords hydroacoustics, pelagic resources, assessment
#' @examples
#'
#' method = "simmonds2010"
#' path = "./crucero_20150203"
#' sd = TRUE
#'
#' data = getData(path) # valida y lee los datos
#' # fusiona las bases de datos usando el metodo x
#' crucero = asignarCalas(data)
#' biomasa = estimarBiomasa(crucero, method=method, sd=sd, n=1000)
#'
#' summary(biomasa)
#' print(biomasa)
#' plot(biomasa)
#' plot(biomasa, what="serie")
#'
#' #' grabar csv con todas las tablas
#' imprimirResultados(biomasa, path=".", summary=TRUE, image="png")
#'
#' indicadores = calcularIndicadores(biomasa)
#'
#' summary(indicadores)
#' print(indicadores)
#' plot(indicadores)
#' plot(indicadores, what="serie")
NULL
#' @title Lee las bases de datos de crucero necesarias para la estimacion
#' @description Funcion para leer bases de datos de calas y bitacoras desde un directorio
#' especificado y dado un numero de crucero.
#' @param crucero Numero de crucero del que se desea leer bases.
#' @param directorio Carpeta en donde se encuentran localizados los archivos a ser leidos.
#' @param ... Argumentos extra.
#' @examples
#' leerDatos(acustica, talas, biologia, crucero = 141112)
leerDatos = function(acustica=NULL, biometrico=NULL, biologia=NULL, oceanografia=NULL,
crucero=NULL, directorio = ".", ...) {
if(is.null(acustica) & is.null(biometrico) & is.null(biologia) & is.null(oceanografia)) {
message("Nothing to do.")
return(invisible())
}
file.biometrico = .checkFile(directorio, biometrico)
file.logbook = .checkFile(directorio, acustica)
file.biologia = .checkFile(directorio, biologia)
file.oceanografia = .checkFile(directorio, oceanografia)
salida = .getCrucero(acustica = file.logbook, biometrico = file.biometrico, biologia = file.biologia,
oceanografia = file.oceanografia, crucero = crucero, directorio = directorio, ...)
# Definir el objeto con clase 'imarpeSurvey'
class(salida) = "imarpeSurvey"
return(salida)
}
# Estima biomasa
#' @title Lee las bases de datos de crucero necesarias para la estimacion
#' @description Funcion para leer bases de datos de calas y bitacoras desde un directorio
#' especificado y dado un numero de crucero.
#' @param crucero Numero de crucero del que se desea leer bases.
#' @param directorio Carpeta en donde se encuentran localizados los archivos a ser leidos.
#' @param ... Argumentos extra.
#' @examples
#' biomasa = estimarBiomasa(data = crucero)
estimarBiomasa = function(data, method = "simmonds2010", sp = "anchoveta",
boot = FALSE, n = 100, verbose = TRUE, lat = NULL,
umbralIndividuos = 150, coverage=2, seed=880820,
biometricDateFormat = "%Y-%m-%d", ...) {
set.seed(seed)
specie = getSpeciesInfo(sp) # get species information
# create baseCalas
data$baseCalas = .convertirCruceroMF(base = data$baseBiometrico, sp = sp,
umbralIndividuos = umbralIndividuos)
data$baseCalas = .getEcoabundancia(data, sp = sp) # add Ecoabundance
data$baseCalas = .addConditionFactor(data, sp=sp) # add condition factor
#Filtra según umbral de individuos
data$baseCalas = .applySampleSizeThreshold(baseCalas = data$baseCalas,
umbralIndividuos=umbralIndividuos)
if(nrow(data$baseCalas) == 0){
salida = .NA_object
warning("Ninguna cala supera el umbral de individuos.")
}else{
index = .getIndices(data = data$bitacoraAcustica, stock = "total", dist.costa = 80, lat.max = -3, lat.min = -19, gridsize = 0.25, ...)
data$bitacoraAcustica = .isAllocated(data) # acoustic data close to hauls
data$bitacoraAcustica = .addPropBySpecie(data=data, sp=sp)
# filter by Latitude
data$baseCalas = .filterLatitude(data$baseCalas, lat)
data$bitacoraAcustica = .filterLatitude(data$bitacoraAcustica, lat)
# TO_DO: simplify specie$acustica by using 'nasc'
data$bitacoraAcustica$nasc = data$bitacoraAcustica[, specie$acustica]
# use biomass estimation method
salida = switch(tolower(method),
simmonds2010 = .calculateBiomass_simmonds2010(data=data, sp=sp,
boot=boot, n=n, verbose=verbose,
coverage=coverage,
dateFormat = biometricDateFormat, ...),
stop("El metodo indicado de estimacion no existe."))
}
#index = .getIndices(data = data$bitacoraAcustica, stock = "total", dist.costa = 80, ...)
salida$info = data$info
salida$info$method = method
salida$info$sp = sp
salida$info$boot = boot
salida$info$nboot = if(isTRUE(boot)) n else 1
salida$indices = index
class(salida) = "imarpeSurvey.output"
return(salida)
}
# Escribir las salidas
#' @title Escribe los resultados de la estimación de biomasa
#' @description Funcion para escribir los resultados de la estimación de la biomasa
#' en el disco.
#' @param object Objeto de clase 'imarpeSurvey.output' producido por la función \code{estimarBiomasa}.
#' @param dir Carpeta en donde se escribirán ls resultados.
#' @param ... Argumentos extra a ser pasados la función que escribe los resultados.
#' @examples
#' biomasa = estimarBiomasa(data = crucero)
#' escribirResultados(object = biomasa)
escribirResultados = function(object, dir = ".", sp = "anchoveta", ...){
model = deparse(substitute(object))
dir = file.path(dir, "output")
if(!file.exists(dir)) dir.create(dir, recursive=TRUE)
writeResults(object, var="biomass", dir=dir)
writeResults(object, var="abundance", dir=dir)
png(file=file.path(dir,
.getFileName(object$info, stock="nc", var="biomass", ext="png")),
width=960, height=480)
plot(object, sp = sp)
dev.off()
save(object, file = file.path(dir, paste0(model, ".RData")))
return(invisible())
}
plotSurveyTracks <- function (object, var, domain, hires, ...) {
# should this be the main plot method for imarpeSurvey class?
plot.map(object$bitacoraAcustica, type="l", domain=domain, hires=hires, ...)
plot.map(object$bitacoraAcustica[object$bitacoraAcustica[, var]>0, ],
type="l", col="blue", add=TRUE)
plot.map(object$baseCalas, col="red", add=TRUE)
return(invisible())
}
plotBoot = function(object, ...) {
biomass = object$raw$boot$biomass
hist(biomass)
return(invisible())
}
estimarIndices = function(object, dirOutput, stock = "total", dist.costa = 200, writeCsv = TRUE, lat.max = -3, lat.min = -19, gridsize = 0.25, ...){
obj = read.csv(object)
index = .getIndices(data = obj, stock = stock, dist.costa = dist.costa, lat.max = lat.max, lat.min = lat.min, gridsize = gridsize, ...)
out = round(index, 2)
if(isTRUE(writeCsv)){
outputDir <- file.path(dirOutput, "output")
dir.create(outputDir, showWarnings = FALSE)
write.csv(out, file = file.path(outputDir, "indices.csv"))
}
return(out)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.