Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

agroclimatico: Índices y Estadísticos Climáticos e Hidrológicos #599

Open
12 of 29 tasks
paocorrales opened this issue Jul 30, 2023 · 51 comments
Open
12 of 29 tasks

Comments

@paocorrales
Copy link

paocorrales commented Jul 30, 2023

Nombre de la Persona Encargada: Paola Corrales
Usuario GitHub de la Persona Encargada: @paocorrales
Usuario GitHub de las Otras Autoras del Paquete: @eliocamp, @yabellini, @NatiGattinoni
Repositorio: https://github.com/AgRoMeteorologiaINTA/agroclimatico
Versión Enviada: 1.0.0
Tipo de Envio: Estándar
Editora: @Pakillo
Revisores: @VeruGHub, @pmnatural

Archivo: TBD
Versión Aceptada: TBD
Idioma: es

  • Pega el archivo DESCRIPTION completo dentro del siguiente bloque de código.
Package: agromet
Title: Índices y Estadísticos Climáticos e Hidrológicos
Version: 1.0.0
Authors@R: 
    c(person(given = "Yanina",
           family = "Bellini Saibene",
           role = c("ctb"),
           email = "yabellini@gmail.com"),
      person(given = "Elio",
           family = "Campitelli",
           role = c("aut"),
           email = "elio.campitelli@cima.fcen.uba.ar",
           comment = c(ORCID = "0000-0002-7742-9230")),
      person(given = "Paola",
           family = "Corrales",
           role = c("cre", "aut"),
           email = "paola.corrales@cima.fcen.uba.ar"),
      person(given = "Natalia",
           family = "Gattinoni",
           role = c("aut"),
           email = "gattinoni.natalia@inta.gob.ar"),           
      person(family = "INTA",
           role = c("cph")),
      person("Ruida", "Zhong", role = "cph")
      )
Description: Conjunto de funciones para calcular índices y estadísticos climáticos 
    hidrológicos a partir de datos tidy. Incluye una función para graficar resultados 
    georeferenciados y e información cartográfica.
License: GPL-3 + file LICENSE
Encoding: UTF-8
Language: es
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.2.3
URL: https://github.com/AgRoMeteorologiaINTA/agromet
BugReports: https://github.com/AgRoMeteorologiaINTA/agromet/issues
Depends: 
    R (>= 2.10)
Imports: 
    readr,
    data.table,
    scales,
    lmomco,
    sf,
    automap,
    png,
    grid,
    ggnewscale,
    tidyr,
    ggplot2,
    rappdirs,
    magrittr,
    kableExtra,
    Rcpp (>= 0.12.0),
    cli,
    SPEI (>= 1.8.1)
Suggests: 
    testthat,
    dplyr,
    vdiffr,
    lubridate,
    covr,
    knitr,
    rmarkdown
VignetteBuilder: knitr
LinkingTo: Rcpp

Alcance

  • Por favor, indica qué categoría(s) aplican a este paquete. Las puedes encontrar en nuestras políticas de inclusión de paquetes (Inglés). Por favor, tilda todas las apropiadas. Si no estás seguro, te sugerimos que comiences un pre-envío.

    • recuperación de datos (data retrieval)
    • extracción de datos (data extraction)
    • munging de datos (data munging)
    • disposición o declaración de datos (data deposition)
    • validación y prueba de datos (data validation and testing)
    • automatización de flujos de trabajo (workflow automation)
    • control de versiones (version control)
    • manejo de citas y bibliometría (citation management and bibliometrics)
    • envoltorios de software científico (scientific software wrappers)
    • herramientas para trabajo de campo y reproducibilidad (field and lab reproducibility tools)
    • ligamientos con software de base de datos (database software bindings)
    • datos geoespaciales (geospatial data)
    • análisis de texto (text analysis)
  • Explica cómo y por qué el paquete encaja dentro de estas categorías (1 a 3 oraciones):
    El paquete agromet incluye una serie de funciones para trabajar con datos meteorológicos y calcular distintos índices asociados a aplicaciones agrometeorológicas. Los datos de entrada se organizan usando la filosofía de datos ordenados (o tidy), por lo que las funciones del paquete son genéricas. Pueden aplicarse a cualquier conjunto de datos tabulares independientemente de su origen, orden o nombres de columna.

  • ¿Cuál es la audiencia esperada y las aplicaciones científicas de este paquete?
    El paquete es ampliamente utilizado por usuaries en distintas dependencias del Instituto Nacional de Tecnología Agropecuaria (INTA) que brindan servicios e información a los agricultores de Argentina. Sin embargo, les usuaries del paquete se extienden a otras instituciones y países de América Latina ya que casi todas las funciones están desarrolladas para ser de uso general e independiente de los datos recolectados por el INTA y la documentación está escrita integramente en español.

  • ¿Hay otros paquetes de R que logren el mismo objetivo? Si los hay, ¿cómo se diferencian del tuyo, o alcanzan nuestro criterio del mejor de su categoría (documento en Inglés)?

Existen algunos paquetes cómo frost y meteor que incluyen funciones para utilizar datos meteorológicos y calcular indices que en algunos casos están asociadosa la actividad agropecuaria. Otro paquete a mencionar es agroclim que según la documentación también incluye el cálculo de una serie de índices agrometeoroógicos fue archivado por CRAN en abril de este año pero el código esta disponible en un repositorio público.

agromet se diferencia de estos paquetes principalmente por 2 características. Por un lado su documentación está escrita integramente en español lo que facilita su uso en Sudamérica. Por el otro lado, sus funciones estan pensadas para ser compatibles con el ecosistema de paquetes que utilizan la filosofía "tidy", lo que facilita posterior manipulación, visualización y uso de los resultados obtenidos con agromet.

Revisiones Técnicas

Tilda los siguientes items para confirmar que los has completado:

Este paquete:

Opciones de Publicación

Opciones para MEE
  • Este paquete es novedoso y será de interés para la mayoría de lectores de la revista.
  • El manuscrito que describe el paquete no tiene más de 3000 palabras y está escrito en Inglés.
  • Tienes intenciones de archivar el código del paquete en un repositorio a largo plazo, que cumple los requerimientos de la revista (mira las Políticas de Publicación de MEE (documento en Inglés))
  • (Alcance: Considera los Objetivos y Alcance de MEE (documento en Inglés) para tu manuscrito. No otorgamos garatías de que tu manuscrito esté en el ámbito de MEE.)
  • (Aunque no es requerido, recomendamos tener un manuscrito completamente preparado y en Inglés, al momento de enviar.)
  • (Por favor, no envíes tu paquete de forma separada a Methods in Ecology and Evolution)

Código de Conducta

@ropensci-review-bot
Copy link
Collaborator

Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.

@ropensci-review-bot
Copy link
Collaborator

🚀

Editor check started

👋

@ropensci-review-bot
Copy link
Collaborator

Checks for agromet (v1.0.0)

git hash: d537dd20

  • ✔️ Package name is available
  • ✔️ has a 'codemeta.json' file.
  • ✔️ has a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✔️ All functions have examples.
  • ✔️ Package has continuous integration checks.
  • ✔️ Package coverage is 96.7%.
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.
  • 👀 Function names are duplicated in other packages

(Checks marked with 👀 may be optionally addressed.)

Package License: GPL-3 + file LICENSE


1. Package Dependencies

Details of Package Dependency Usage (click to open)

The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.

type package ncalls
internal base 243
internal agromet 62
internal utils 31
internal stats 26
internal grDevices 10
internal graphics 6
imports data.table 15
imports magrittr 7
imports ggplot2 5
imports SPEI 5
imports readr 4
imports lmomco 4
imports cli 4
imports grid 3
imports sf 2
imports automap 2
imports png 1
imports tidyr 1
imports rappdirs 1
imports scales NA
imports ggnewscale NA
imports kableExtra NA
imports Rcpp NA
suggests testthat NA
suggests dplyr NA
suggests vdiffr NA
suggests lubridate NA
suggests covr NA
suggests knitr NA
suggests rmarkdown NA
linking_to Rcpp NA

Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.

base

list (38), c (23), data.frame (18), q (14), file (9), paste0 (8), args (7), dir (6), if (6), length (6), format (5), return (5), suppressWarnings (5), file.path (4), is.finite (4), names (4), seq_along (4), kappa (3), lapply (3), max (3), mean (3), normalizePath (3), source (3), sum (3), url (3), abs (2), as.data.frame (2), call (2), cumsum (2), diff (2), for (2), gamma (2), ifelse (2), is.na (2), log (2), match.call (2), mean.Date (2), min (2), missing (2), rep (2), system.file (2), unique (2), as.character (1), deparse (1), do.call (1), drop (1), exp (1), gsub (1), match.fun (1), mode (1), pmatch (1), range (1), readLines (1), rle (1), seq (1), signif (1), sink (1), strsplit (1), substitute (1), switch (1), tempdir (1)

agromet

completar_serie (5), glo.loglik (4), spi (4), dir_mapas (3), kringe (3), pdsi_coeficientes (3), C_pdsi (2), computar_olas (2), get_mapa (2), mapa_provincias (2), resolve_resolucion (2), agromet_informe (1), anomalia_porcentual (1), borrar_cache (1), compute_breaks (1), ConvertLongitude (1), coord_argentina (1), decil (1), descargar_mapa (1), dias_promedio (1), ith (1), kable_inta (1), lat_label (1), leer_nh (1), leer_surfer (1), lon_label (1), mapa_argentina (1), mapa_argentina_limitrofes (1), mapa_departamentos (1), mapear (1), metadatos_nh (1), olas (1), parglo.maxlik (1), pdsi (1), pdsi_ac (1), pdsi_internal (1), plot.metadatos_nh (1), replace_if_null (1), scale_color_inta (1), spi_params (1), surfer_to_hex (1)

utils

data (23), read.delim (4), capture.output (2), download.file (1), unzip (1)

stats

start (10), ts (9), optim (3), end (2), ecdf (1), fitted (1)

data.table

as.data.table (4), melt (4), month (4), year (2), rbindlist (1)

grDevices

colours (5), palette (3), colorRampPalette (1), rgb (1)

magrittr

%>% (7)

graphics

par (3), points (3)

ggplot2

geom_sf (2), aes (1), geom_point (1), scale_color_brewer (1)

SPEI

spi (5)

cli

cli_abort (4)

lmomco

are.parglo.valid (4)

readr

fwf_widths (2), read_fwf (2)

grid

rasterGrob (2), unit (1)

automap

autoKrige (2)

sf

read_sf (1), st_as_sf (1)

png

readPNG (1)

rappdirs

user_data_dir (1)

tidyr

complete (1)

NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.


2. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has:

  • code in C++ (70% in 4 files) and R (30% in 22 files)
  • 3 authors
  • 1 vignette
  • 5 internal data files
  • 17 imported packages
  • 27 exported functions (median 8 lines of code)
  • 68 non-exported functions in R (median 10 lines of code)
  • 97 R functions (median 24 lines of code)

Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:

  • loc = "Lines of Code"
  • fn = "function"
  • exp/not_exp = exported / not exported

All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function

The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

measure value percentile noteworthy
files_R 22 83.6
files_src 4 87.0
files_vignettes 1 68.4
files_tests 11 91.7
loc_R 642 55.4
loc_src 1488 70.2
loc_vignettes 179 45.4
loc_tests 233 58.7
num_vignettes 1 64.8
data_size_total 340295 90.1
data_size_median 9699 78.9
n_fns_r 95 75.2
n_fns_r_exported 27 75.5
n_fns_r_not_exported 68 75.3
n_fns_src 97 78.9
n_fns_per_file_r 3 45.5
n_fns_per_file_src 22 94.3
num_params_per_fn 2 11.9
loc_per_fn_r 9 24.3
loc_per_fn_r_exp 8 16.3
loc_per_fn_r_not_exp 10 34.7
loc_per_fn_src 24 76.8
rel_whitespace_R 29 69.3
rel_whitespace_src 27 77.1
rel_whitespace_vignettes 50 59.8
rel_whitespace_tests 46 73.7
doclines_per_fn_exp 49 61.8
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 334 92.9

2a. Network visualisation

Click to see the interactive network visualisation of calls between objects in package


3. goodpractice and other checks

Details of goodpractice checks (click to open)

3a. Continuous Integration Badges

R-CMD-check

GitHub Workflow Results

id name conclusion sha run_number date
5708281034 pkgcheck success d537dd 13 2023-07-30
5708281033 R-CMD-check success d537dd 117 2023-07-30
5708281035 test-coverage success d537dd 54 2023-07-30

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following check_fail:

  1. no_import_package_as_a_whole

Test coverage with covr

Package coverage: 96.73

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

lintr found the following 183 potential issues:

message number of times
Avoid library() and require() calls in packages 9
Avoid trailing semicolons, they are not needed. 1
Lines should not be more than 80 characters. 172
Use <-, not =, for assignment. 1


4. Other Checks

Details of other checks (click to open)

✖️ The following 3 function names are duplicated in other packages:

    • ith from bioclim
    • spei from SPEI
    • spi from bayestestR, precintcon, SPEI


Package Versions

package version
pkgstats 0.1.3.4
pkgcheck 0.1.2.1


Editor-in-Chief Instructions:

This package is in top shape and may be passed on to a handling editor

@noamross
Copy link
Contributor

noamross commented Sep 1, 2023

@ropensci-review-bot assign @Pakillo as editor

@ropensci-review-bot
Copy link
Collaborator

Assigned! @Pakillo is now the editor

@Pakillo
Copy link
Member

Pakillo commented Sep 4, 2023

Gracias @paocorrales y colaboradoras por contribuir su paquete al proceso de revisión de rOpenSci, para el cual actuaré de editor invitado. Cualquier comentario o sugerencia que tengan durante el proceso, por favor no duden en comunicármelo.

Algunos puntos que me gustaría tratar antes de comenzar el proceso de revisión:

Alcance y solapamiento con otros paquetes

Estoy de acuerdo en la amplia utilidad del paquete. Sólo un comentario: cuando se discute el posible solapamiento con otros paquetes se menciona agroclim que "fue archivado por CRAN en abril de este año y el código no parece estar disponible en un repositorio público."

agroclim está disponible en este repositorio: https://github.com/rsnotivoli/agroclim. El motivo de expulsión de CRAN parece ser el cambio de email del autor. Parece que la intención del autor es restablecer el paquete en CRAN. En cualquier caso, aunque exista solapamiento creo que existe nicho para ambos paquetes. Pero estará bien revisar esta cuestión (sobre todo para evitar posibles duplicidades y reforzar si es posible la funcionalidad existente) durante el proceso de revisión.

Igualmente, como sugerencia más que requisito, pienso que tal vez podría ser útil estudiar la compatibilidad con paquetes como ClimInd, que calcula más de 130 índices climáticos diferentes. Por ejemplo, mostrando algunos ejemplos de cómo integrar ambos paquetes para calcular distintos índices.

Por último, veo que existe otro paquete llamado agrometR para descargar información de la Red Agroclimática Nacional de Chile (llamada agromet, https://www.agromet.cl/). ¿Piensan que la similitud en el nombre (agromet / agrometR) y tema (clima) de ambos paquetes podría ser problemático o confuso para futuros usuarios? En tal caso, ¿se plantearían un cambio de nombre del paquete? (ver guía rOpenSci).

Dependencias

El chequeo automático sugiere que "Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately."

Una búsqueda rápida en el código parecen indicar que los paquetes señalados (scales, ggnewscale, kableExtra, Rcpp) sí que se emplean, por lo que creo que podemos ignorar este comentario.

Nombres de funciones

Hay algunas funciones con nombre duplicado respecto a otros paquetes:

  • ith from bioclim
  • spei from SPEI
  • spi from bayestestR, precintcon, SPEI

Me preocupa particularmente la duplicidad de nombres con el paquete SPEI (funciones spi y spei). Son funciones para calcular lo mismo, pero tanto los argumentos como el resultado (output de la función) difieren. Pienso que esto puede inducir a confusión a algunos usuarios. No es un requisito pero ¿podría plantearse un ligero cambio de nombre para evitar la confusión? ¿O piensan que mantener el mismo nombre es de hecho recomendable? Aquí están las directrices de rOpenSci al respecto.

Documentación

Creo que sería muy útil generar ya una web del paquete para facilitar el proceso de revisión. Esta web puede generarse automáticamente usando pkgdown::build_site() (ver recomendación).

En el README, el tutorial (vignette) y algunas funciones se habla de datos en formato NH y estaciones NH. Estaría bien clarificar a qué se refiere NH.

Por favor añadan unas directrices sobre cómo contribuir (ver https://devguide.ropensci.org/collaboration.html?q=contributi#contributing-guide).

Chequeo del paquete

Tras ejecutar devtools::check() parece que hay algunos problemas menores. Por favor corríjanlos para poder comenzar el proceso de revisión.

Warning: [escalas.R:16] @Format requires a value
Warning: [escalas.R:20] @Format requires a value
Warning: [escalas.R:24] @Format requires a value

Integración Continua

Por favor modifiquen su GitHub Action para chequear el paquete en la versión actual de R, la anterior, y la que viene (ver guía). E idealmente tanto en Windows como Mac como Ubuntu. Para ello podría usarse esta plantilla generada por usethis::use_github_action("check_standard").

Revisores

Por favor sugieran el nombre de varios revisores potenciales del paquete.

Muchas gracias

@Pakillo
Copy link
Member

Pakillo commented Sep 22, 2023

Buenos días @paocorrales

Sólo quería comprobar que recibieron mi mensaje anterior y saber si está todo claro. Si no es así, necesitan ayuda con algo, o simplemente necesitan más tiempo, por favor avísenme. En cuanto resolvamos estas cuestiones preliminares podremos empezar la revisión con revisores externos

Gracias y saludos

@paocorrales
Copy link
Author

Muchas gracias por los comentarios y recomendaciones @Pakillo! Me disculpo por la demora, estaba de viaje pero esta semana voy a revisar todo en detalle y hacer los cambios necesarios para comenzar con la revisión. Saludos!

@Pakillo
Copy link
Member

Pakillo commented Oct 2, 2023

¡Estupendo, gracias!

@paocorrales
Copy link
Author

Muchas gracias por los comentarios @Pakillo y perdón por la demora, respondo a cada punto entre lineas.

Alcance y solapamiento con otros paquetes

Estoy de acuerdo en la amplia utilidad del paquete. Sólo un comentario: cuando se discute el posible solapamiento con otros paquetes se menciona agroclim que "fue archivado por CRAN en abril de este año y el código no parece estar disponible en un repositorio público."

agroclim está disponible en este repositorio: https://github.com/rsnotivoli/agroclim. El motivo de expulsión de CRAN parece ser el cambio de email del autor. Parece que la intención del autor es restablecer el paquete en CRAN. En cualquier caso, aunque exista solapamiento creo que existe nicho para ambos paquetes. Pero estará bien revisar esta cuestión (sobre todo para evitar posibles duplicidades y reforzar si es posible la funcionalidad existente) durante el proceso de revisión.

Muchas gracias por mencionar esto, si bien aún no está en CRAN voy a editar mi primer mensaje incluyendo el link al repositorio para que no genere confunción.

Igualmente, como sugerencia más que requisito, pienso que tal vez podría ser útil estudiar la compatibilidad con paquetes como ClimInd, que calcula más de 130 índices climáticos diferentes. Por ejemplo, mostrando algunos ejemplos de cómo integrar ambos paquetes para calcular distintos índices.

Muchas gracias por la sugerencia! Estuvimos explorando este paquete y si bien incluye muchas funciones en varios casos vimos que las funciones son algo repetitivas (por ejemplo muchas funciones para calcular la temperatura mayor a distintos umbrales, en vez de 1 función que haga eso para cualquier umbral arbitrario). Por otro lado, la salida de estas funciones no es siempre compatible con la filosofía tidy que usamos en nuestras funciones. De todas maneras lo vamos a seguir explorando!

Por último, veo que existe otro paquete llamado agrometR para descargar información de la Red Agroclimática Nacional de Chile (llamada agromet, https://www.agromet.cl/). ¿Piensan que la similitud en el nombre (agromet / agrometR) y tema (clima) de ambos paquetes podría ser problemático o confuso para futuros usuarios? En tal caso, ¿se plantearían un cambio de nombre del paquete? (ver guía rOpenSci).

Luego de consultar con el equipo decidimos cambiar el nombre del paquete a agroclimatico. No encontramos otros paquetes de R o software con este nombre y esperamos que genere menos confución. Quedo atenta por si hay que hacer cambios en este issue.

Nombres de funciones

Hay algunas funciones con nombre duplicado respecto a otros paquetes:

  • ith from bioclim
  • spei from SPEI
  • spi from bayestestR, precintcon, SPEI

Me preocupa particularmente la duplicidad de nombres con el paquete SPEI (funciones spi y spei). Son funciones para calcular lo mismo, pero tanto los argumentos como el resultado (output de la función) difieren. Pienso que esto puede inducir a confusión a algunos usuarios. No es un requisito pero ¿podría plantearse un ligero cambio de nombre para evitar la confusión? ¿O piensan que mantener el mismo nombre es de hecho recomendable? Aquí están las directrices de rOpenSci al respecto.

Entendemos la sugerencia, spi es una función presente en varios paquetes y además es el nombre que se usa para hacer referencia al índice aún en la literatura en español. Cambiamos el nombre de la función a spi_indice que si bien es algo redundante puee ayudar a evitar la confución.

Documentación

Creo que sería muy útil generar ya una web del paquete para facilitar el proceso de revisión. Esta web puede generarse automáticamente usando pkgdown::build_site() (ver recomendación).

Gracias por la sugerencia, el paquete ahora tiene una web creada con pkgdown: https://agrometeorologiainta.github.io/agroclimatico/

En el README, el tutorial (vignette) y algunas funciones se habla de datos en formato NH y estaciones NH. Estaría bien clarificar a qué se refiere NH.

Agregamos algunas aclaraciones.

Por favor añadan unas directrices sobre cómo contribuir (ver https://devguide.ropensci.org/collaboration.html?q=contributi#contributing-guide).

Las directrices sobre como contribuir están disponibles en https://github.com/AgRoMeteorologiaINTA/agromet/blob/master/.github/CONTRIBUTING.md y linkeadas al README

Chequeo del paquete

Tras ejecutar devtools::check() parece que hay algunos problemas menores. Por favor corríjanlos para poder comenzar el proceso de revisión.

Warning: [escalas.R:16] @Format requires a value Warning: [escalas.R:20] @Format requires a value Warning: [escalas.R:24] @Format requires a value

Warnings corregidos, gracias!

Integración Continua

Por favor modifiquen su GitHub Action para chequear el paquete en la versión actual de R, la anterior, y la que viene (ver guía). E idealmente tanto en Windows como Mac como Ubuntu. Para ello podría usarse esta plantilla generada por usethis::use_github_action("check_standard").

Actualizamos la GitHub Action para chequear el paquete con distintas versiones de R y sistemas operativos. En el Caso de Mac tuvimos que skipear los test visuales porque fallan debido a una incompatibilidad entre sistemas operativos que no debería afectar a le usuarie.

Revisores

Por favor sugieran el nombre de varios revisores potenciales del paquete.

Sugerimos a Ana Laura Dietrich, ella tiene experiencia en el desarrollo de paquetes y en el área agrocliomática.

@Pakillo
Copy link
Member

Pakillo commented Dec 17, 2023

@ropensci-review-bot check package

@ropensci-review-bot
Copy link
Collaborator

Thanks, about to send the query.

@ropensci-review-bot
Copy link
Collaborator

🚀

Editor check started

👋

@Pakillo
Copy link
Member

Pakillo commented Dec 17, 2023

@ropensci-review-bot help

@ropensci-review-bot
Copy link
Collaborator

Hello @Pakillo, here are the things you can ask me to do:


# Add a review's info to the ROpenSci logs
@ropensci-review-bot submit review <REVIEW_URL> time <REVIEW_HOURS(ex. 10.5)>

# List all available commands
@ropensci-review-bot help

# Show our Code of Conduct
@ropensci-review-bot code of conduct

# Checks peer-review badge is in README.md
@ropensci-review-bot check readme

# Switch to 'seeking reviewers'
@ropensci-review-bot seeking reviewers

# Approves a package. This command will close the issue.
@ropensci-review-bot approve package-name

# Invite the author of a package to the corresponding rOpenSci team. This command should be issued by the author of the package.
@ropensci-review-bot invite me to ropensci/package-name

# Adds package's repo to the rOpenSci team. This command should be issued after approval and transfer of the package.
@ropensci-review-bot finalize transfer of package-name

# Mint package as [bronze/silver/gold]
@ropensci-review-bot mint silver

# Add a user to this issue's reviewers list
@ropensci-review-bot assign xxxxx as reviewer

# Remove a user from the reviewers list
@ropensci-review-bot remove xxxxx from reviewers

# Assign a user as the editor of this submission
@ropensci-review-bot assign @username as editor

# Put the submission on hold for the next 90 days
@ropensci-review-bot put on hold

# Remove the editor assigned to this submission
@ropensci-review-bot remove editor

# Change or add a review's due date for a reviewer
@ropensci-review-bot set due date for @reviewer to YYYY-MM-DD

# Close the issue
@ropensci-review-bot out of scope

# Various package checks
@ropensci-review-bot check package

# Checks srr documentation for stats packages
@ropensci-review-bot check srr

@ropensci-review-bot
Copy link
Collaborator

Checks for agroclimatico (v1.0.0)

git hash: 2d86dbe8

  • ✔️ Package name is available
  • ✔️ has a 'codemeta.json' file.
  • ✔️ has a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✔️ All functions have examples.
  • ✔️ Package has continuous integration checks.
  • ✔️ Package coverage is 96.7%.
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.
  • 👀 Function names are duplicated in other packages

(Checks marked with 👀 may be optionally addressed.)

Package License: GPL-3 + file LICENSE


1. Package Dependencies

Details of Package Dependency Usage (click to open)

The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.

type package ncalls
internal base 243
internal agroclimatico 59
internal utils 31
internal stats 26
internal grDevices 10
internal graphics 6
imports data.table 15
imports magrittr 7
imports ggplot2 5
imports SPEI 5
imports readr 4
imports lmomco 4
imports cli 4
imports grid 3
imports sf 2
imports automap 2
imports png 1
imports tidyr 1
imports rappdirs 1
imports scales NA
imports ggnewscale NA
imports kableExtra NA
imports Rcpp NA
suggests testthat NA
suggests dplyr NA
suggests vdiffr NA
suggests lubridate NA
suggests covr NA
suggests knitr NA
suggests rmarkdown NA
linking_to Rcpp NA

Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.

base

list (38), c (23), data.frame (18), q (14), file (9), paste0 (8), args (7), dir (6), if (6), length (6), format (5), return (5), suppressWarnings (5), file.path (4), is.finite (4), names (4), seq_along (4), kappa (3), lapply (3), max (3), mean (3), normalizePath (3), source (3), sum (3), url (3), abs (2), as.data.frame (2), call (2), cumsum (2), diff (2), for (2), gamma (2), ifelse (2), is.na (2), log (2), match.call (2), mean.Date (2), min (2), missing (2), rep (2), system.file (2), unique (2), as.character (1), deparse (1), do.call (1), drop (1), exp (1), gsub (1), match.fun (1), mode (1), pmatch (1), range (1), readLines (1), rle (1), seq (1), signif (1), sink (1), strsplit (1), substitute (1), switch (1), tempdir (1)

agroclimatico

completar_serie (5), glo.loglik (4), dir_mapas (3), kringe (3), pdsi_coeficientes (3), C_pdsi (2), computar_olas (2), get_mapa (2), mapa_provincias (2), resolve_resolucion (2), agromet_informe (1), anomalia_porcentual (1), borrar_cache (1), compute_breaks (1), ConvertLongitude (1), coord_argentina (1), decil (1), descargar_mapa (1), dias_promedio (1), ith (1), kable_inta (1), lat_label (1), leer_nh (1), leer_surfer (1), lon_label (1), mapa_argentina (1), mapa_argentina_limitrofes (1), mapa_departamentos (1), mapear (1), metadatos_nh (1), olas (1), parglo.maxlik (1), pdsi (1), pdsi_ac (1), pdsi_internal (1), plot.metadatos_nh (1), replace_if_null (1), scale_color_inta (1), spi_indice (1), spi_params (1), surfer_to_hex (1)

utils

data (23), read.delim (4), capture.output (2), download.file (1), unzip (1)

stats

start (10), ts (9), optim (3), end (2), ecdf (1), fitted (1)

data.table

as.data.table (4), melt (4), month (4), year (2), rbindlist (1)

grDevices

colours (5), palette (3), colorRampPalette (1), rgb (1)

magrittr

%>% (7)

graphics

par (3), points (3)

ggplot2

geom_sf (2), aes (1), geom_point (1), scale_color_brewer (1)

SPEI

spi (5)

cli

cli_abort (4)

lmomco

are.parglo.valid (4)

readr

fwf_widths (2), read_fwf (2)

grid

rasterGrob (2), unit (1)

automap

autoKrige (2)

sf

read_sf (1), st_as_sf (1)

png

readPNG (1)

rappdirs

user_data_dir (1)

tidyr

complete (1)

NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.


2. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has:

  • code in C++ (70% in 4 files) and R (30% in 22 files)
  • 3 authors
  • 1 vignette
  • 5 internal data files
  • 17 imported packages
  • 27 exported functions (median 8 lines of code)
  • 68 non-exported functions in R (median 10 lines of code)
  • 97 R functions (median 24 lines of code)

Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:

  • loc = "Lines of Code"
  • fn = "function"
  • exp/not_exp = exported / not exported

All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function

The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

measure value percentile noteworthy
files_R 22 83.6
files_src 4 87.0
files_vignettes 1 68.4
files_tests 11 91.7
loc_R 642 55.4
loc_src 1488 70.2
loc_vignettes 179 45.4
loc_tests 233 58.7
num_vignettes 1 64.8
data_size_total 340295 90.1
data_size_median 9699 78.9
n_fns_r 95 75.2
n_fns_r_exported 27 75.5
n_fns_r_not_exported 68 75.3
n_fns_src 97 78.9
n_fns_per_file_r 3 45.5
n_fns_per_file_src 22 94.3
num_params_per_fn 2 11.9
loc_per_fn_r 9 24.3
loc_per_fn_r_exp 8 16.3
loc_per_fn_r_not_exp 10 34.7
loc_per_fn_src 24 76.8
rel_whitespace_R 29 69.3
rel_whitespace_src 27 77.1
rel_whitespace_vignettes 50 59.8
rel_whitespace_tests 46 73.7
doclines_per_fn_exp 49 61.8
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 333 92.9

2a. Network visualisation

Click to see the interactive network visualisation of calls between objects in package


3. goodpractice and other checks

Details of goodpractice checks (click to open)

3a. Continuous Integration Badges

R-CMD-check

GitHub Workflow Results

id name conclusion sha run_number date
7095108109 pages build and deployment success f43114 10 2023-12-05
7095086203 pkgcheck success 2d86db 21 2023-12-05
7095086206 pkgdown success 2d86db 8 2023-12-05
7095086213 R-CMD-check success 2d86db 125 2023-12-05
7095086208 test-coverage success 2d86db 62 2023-12-05

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following check_fail:

  1. no_import_package_as_a_whole

Test coverage with covr

Package coverage: 96.73

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

lintr found the following 190 potential issues:

message number of times
Avoid library() and require() calls in packages 9
Avoid trailing semicolons, they are not needed. 1
Lines should not be more than 80 characters. 179
Use <-, not =, for assignment. 1


4. Other Checks

Details of other checks (click to open)

✖️ The following function name is duplicated in other packages:

    • ith from bioclim


Package Versions

package version
pkgstats 0.1.3.9
pkgcheck 0.1.2.11


Editor-in-Chief Instructions:

This package is in top shape and may be passed on to a handling editor

@Pakillo
Copy link
Member

Pakillo commented Dec 18, 2023

Muchas gracias por la respuesta y todas las mejoras al paquete @paocorrales et al. Yo creo que está casi listo para pasar a revisión.

Solo tres pequeños detalles por ahora:

  • El fichero ejemplos.Rmd (y su resultado ejemplos.md), ambos en el directorio raíz, parecen obsoletos. ¿Se pueden eliminar?

  • El ejemplo con dias_promedio en el README (https://github.com/AgRoMeteorologiaINTA/agroclimatico?tab=readme-ov-file#d%C3%ADas-promedio) da un warning debido a los últimos cambios en dplyr. ¿Podrían sustituir summarise por reframe como sugiere el warning?

  • El chequeo automático avisa también de que hay una línea con punto y coma al final. Esto no tiene ninguna importancia ni afecta al funcionamiento, pero sugiere su eliminación.

Procedo a continuación a buscar revisores. Si pueden arreglar estos pequeños detalles mientras tanto, estupendo.

@Pakillo
Copy link
Member

Pakillo commented Dec 18, 2023

Editor checks:

  • Documentation: The package has sufficient documentation available online (README, pkgdown docs) to allow for an assessment of functionality and scope without installing the package. In particular,
    • Is the case for the package well made?
    • Is the reference index page clear (grouped by topic if necessary)?
    • Are vignettes readable, sufficiently detailed and not just perfunctory?
  • Fit: The package meets criteria for fit and overlap.
  • Installation instructions: Are installation instructions clear enough for human users?
  • Tests: If the package has some interactivity / HTTP / plot production etc. are the tests using state-of-the-art tooling?
  • Contributing information: Is the documentation for contribution clear enough e.g. tokens for tests, playgrounds?
  • License: The package has a CRAN or OSI accepted license.
  • Project management: Are the issue and PR trackers in a good shape, e.g. are there outstanding bugs, is it clear when feature requests are meant to be tackled?

Editor comments

¿Algunos issues parecen obsoletos y se podrían cerrar? Sería bueno cerrar lo que ya esté resuelto para indicar claramente a los revisores y usuarios/as del paquete el estado actual del paquete y cuáles son los temas abiertos.

¡Gracias!


@Pakillo
Copy link
Member

Pakillo commented Dec 18, 2023

@ropensci-review-bot seeking reviewers

@ropensci-review-bot
Copy link
Collaborator

Please add this badge to the README of your package repository:

[![Status at rOpenSci Software Peer Review](https://badges.ropensci.org/599_status.svg)](https://github.com/ropensci/software-review/issues/599)

Furthermore, if your package does not have a NEWS.md file yet, please create one to capture the changes made during the review process. See https://devguide.ropensci.org/releasing.html#news

@Pakillo Pakillo changed the title agromet: Índices y Estadísticos Climáticos e Hidrológicos agroclimatico: Índices y Estadísticos Climáticos e Hidrológicos Dec 19, 2023
@paocorrales
Copy link
Author

Muchas gracias @Pakillo, resolví todos los detalles mencionados 😃

@Pakillo
Copy link
Member

Pakillo commented Dec 19, 2023

Estupendo, muchas gracias @paocorrales

@Pakillo
Copy link
Member

Pakillo commented Dec 19, 2023

@ropensci-review-bot check package

@ropensci-review-bot
Copy link
Collaborator

Thanks, about to send the query.

@ropensci-review-bot
Copy link
Collaborator

🚀

Editor check started

👋

@ropensci-review-bot
Copy link
Collaborator

Checks for agroclimatico (v1.0.0)

git hash: a4b630c0

  • ✔️ Package name is available
  • ✔️ has a 'codemeta.json' file.
  • ✔️ has a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✔️ All functions have examples.
  • ✔️ Package has continuous integration checks.
  • ✔️ Package coverage is 96.7%.
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.
  • 👀 Function names are duplicated in other packages

(Checks marked with 👀 may be optionally addressed.)

Package License: GPL-3 + file LICENSE


1. Package Dependencies

Details of Package Dependency Usage (click to open)

The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.

type package ncalls
internal base 243
internal agroclimatico 59
internal utils 31
internal stats 26
internal grDevices 10
internal graphics 6
imports data.table 15
imports magrittr 7
imports ggplot2 5
imports SPEI 5
imports readr 4
imports lmomco 4
imports cli 4
imports grid 3
imports sf 2
imports automap 2
imports png 1
imports tidyr 1
imports rappdirs 1
imports scales NA
imports ggnewscale NA
imports kableExtra NA
imports Rcpp NA
suggests testthat NA
suggests dplyr NA
suggests vdiffr NA
suggests lubridate NA
suggests covr NA
suggests knitr NA
suggests rmarkdown NA
linking_to Rcpp NA

Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.

base

list (38), c (23), data.frame (18), q (14), file (9), paste0 (8), args (7), dir (6), if (6), length (6), format (5), return (5), suppressWarnings (5), file.path (4), is.finite (4), names (4), seq_along (4), kappa (3), lapply (3), max (3), mean (3), normalizePath (3), source (3), sum (3), url (3), abs (2), as.data.frame (2), call (2), cumsum (2), diff (2), for (2), gamma (2), ifelse (2), is.na (2), log (2), match.call (2), mean.Date (2), min (2), missing (2), rep (2), system.file (2), unique (2), as.character (1), deparse (1), do.call (1), drop (1), exp (1), gsub (1), match.fun (1), mode (1), pmatch (1), range (1), readLines (1), rle (1), seq (1), signif (1), sink (1), strsplit (1), substitute (1), switch (1), tempdir (1)

agroclimatico

completar_serie (5), glo.loglik (4), dir_mapas (3), kringe (3), pdsi_coeficientes (3), C_pdsi (2), computar_olas (2), get_mapa (2), mapa_provincias (2), resolve_resolucion (2), agromet_informe (1), anomalia_porcentual (1), borrar_cache (1), compute_breaks (1), ConvertLongitude (1), coord_argentina (1), decil (1), descargar_mapa (1), dias_promedio (1), ith (1), kable_inta (1), lat_label (1), leer_nh (1), leer_surfer (1), lon_label (1), mapa_argentina (1), mapa_argentina_limitrofes (1), mapa_departamentos (1), mapear (1), metadatos_nh (1), olas (1), parglo.maxlik (1), pdsi (1), pdsi_ac (1), pdsi_internal (1), plot.metadatos_nh (1), replace_if_null (1), scale_color_inta (1), spi_indice (1), spi_params (1), surfer_to_hex (1)

utils

data (23), read.delim (4), capture.output (2), download.file (1), unzip (1)

stats

start (10), ts (9), optim (3), end (2), ecdf (1), fitted (1)

data.table

as.data.table (4), melt (4), month (4), year (2), rbindlist (1)

grDevices

colours (5), palette (3), colorRampPalette (1), rgb (1)

magrittr

%>% (7)

graphics

par (3), points (3)

ggplot2

geom_sf (2), aes (1), geom_point (1), scale_color_brewer (1)

SPEI

spi (5)

cli

cli_abort (4)

lmomco

are.parglo.valid (4)

readr

fwf_widths (2), read_fwf (2)

grid

rasterGrob (2), unit (1)

automap

autoKrige (2)

sf

read_sf (1), st_as_sf (1)

png

readPNG (1)

rappdirs

user_data_dir (1)

tidyr

complete (1)

NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.


2. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has:

  • code in C++ (70% in 4 files) and R (30% in 22 files)
  • 3 authors
  • 1 vignette
  • 5 internal data files
  • 17 imported packages
  • 27 exported functions (median 8 lines of code)
  • 68 non-exported functions in R (median 10 lines of code)
  • 97 R functions (median 24 lines of code)

Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:

  • loc = "Lines of Code"
  • fn = "function"
  • exp/not_exp = exported / not exported

All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function

The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

measure value percentile noteworthy
files_R 22 83.6
files_src 4 87.0
files_vignettes 1 68.4
files_tests 11 91.7
loc_R 642 55.4
loc_src 1488 70.2
loc_vignettes 179 45.4
loc_tests 233 58.7
num_vignettes 1 64.8
data_size_total 340295 90.1
data_size_median 9699 78.9
n_fns_r 95 75.2
n_fns_r_exported 27 75.5
n_fns_r_not_exported 68 75.3
n_fns_src 97 78.9
n_fns_per_file_r 3 45.5
n_fns_per_file_src 22 94.3
num_params_per_fn 2 11.9
loc_per_fn_r 9 24.3
loc_per_fn_r_exp 8 16.3
loc_per_fn_r_not_exp 10 34.7
loc_per_fn_src 24 76.8
rel_whitespace_R 29 69.3
rel_whitespace_src 27 77.1
rel_whitespace_vignettes 50 59.8
rel_whitespace_tests 46 73.7
doclines_per_fn_exp 49 61.8
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 333 92.9

2a. Network visualisation

Click to see the interactive network visualisation of calls between objects in package


3. goodpractice and other checks

Details of goodpractice checks (click to open)

3a. Continuous Integration Badges

R-CMD-check

GitHub Workflow Results

id name conclusion sha run_number date
7262878850 pages build and deployment success 3df214 12 2023-12-19
7262805827 pkgcheck success a4b630 23 2023-12-19
7262805825 pkgdown success a4b630 10 2023-12-19
7262805832 R-CMD-check success a4b630 127 2023-12-19
7262805830 test-coverage success a4b630 64 2023-12-19

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following check_fail:

  1. no_import_package_as_a_whole

Test coverage with covr

Package coverage: 96.73

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

lintr found the following 189 potential issues:

message number of times
Avoid library() and require() calls in packages 9
Lines should not be more than 80 characters. 179
Use <-, not =, for assignment. 1


4. Other Checks

Details of other checks (click to open)

✖️ The following function name is duplicated in other packages:

    • ith from bioclim


Package Versions

package version
pkgstats 0.1.3.9
pkgcheck 0.1.2.11


Editor-in-Chief Instructions:

This package is in top shape and may be passed on to a handling editor

@Pakillo
Copy link
Member

Pakillo commented Dec 19, 2023

@ropensci-review-bot assign @VeruGHub as reviewer

@ropensci-review-bot
Copy link
Collaborator

@VeruGHub added to the reviewers list. Review due date is 2024-01-09. Thanks @VeruGHub for accepting to review! Please refer to our reviewer guide.

rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more.

@ropensci-review-bot
Copy link
Collaborator

@VeruGHub: If you haven't done so, please fill this form for us to update our reviewers records.

@ropensci-review-bot
Copy link
Collaborator

📆 @VeruGHub you have 2 days left before the due date for your review (2024-01-09).

@Pakillo
Copy link
Member

Pakillo commented Jan 16, 2024

@ropensci-review-bot assign @pmnatural as reviewer

@ropensci-review-bot
Copy link
Collaborator

@pmnatural added to the reviewers list. Review due date is 2024-02-06. Thanks @pmnatural for accepting to review! Please refer to our reviewer guide.

rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more.

@ropensci-review-bot
Copy link
Collaborator

@pmnatural: If you haven't done so, please fill this form for us to update our reviewers records.

@Pakillo
Copy link
Member

Pakillo commented Jan 19, 2024

Hola @paocorrales. Disculpas por la demora, ha costado bastante encontrar un segundo revisor. Ya está todo en marcha.

@VeruGHub ¿cómo va la revisión? Espero que pueda estar lista pronto, para que los autores puedan empezar a revisar las sugerencias. Si puedo ayudar en algo no dude en avisarme.

¡Gracias!

@VeruGHub
Copy link

@Pakillo estoy con la revisión hoy. Disculpad la demora

@Pakillo
Copy link
Member

Pakillo commented Jan 29, 2024

Estupendo. Gracias @VeruGHub. ¿Crees que podrás enviar la revisión esta semana?

@ropensci-review-bot
Copy link
Collaborator

📆 @pmnatural you have 2 days left before the due date for your review (2024-02-06).

@pmnatural
Copy link

Con algunos problemas al tener que cambiar de equipo. Estoy rehaciendo la revision en una maquina distinta y con mala internet. Espero subir el reporte mas tarde.

@pmnatural
Copy link

pmnatural commented Feb 7, 2024

Revisión del paquete Agroclimatico

Por favor describe cualquier relación de trabajo que tengas/hayas tenido con los autores del paquete)

No he tenido ninguna relacion de trabajo con los autores del paquete.

  • Como revisor confirmo que no tengo conflictos de interés para poder hacer la revisión de este trabajo (si no estas segura si tienes un conflicto por favor entra en contacto con tu editor antes de arrancar con la revisión.

Documentación

El paquete incluye todos los siguiente tipos de documentación:

  • Una declaración de necesidades que claramente describe las necesidades que el software esta diseñado a resolver y el publico que busca atender en el archivo README
  • Instrucciones de instalación de la versión en desarrollo del paquete incluyendo cualquier dependencia no-estándar en el archivo README
  • Viñeta(s) demostrando la funcionalidad principal que ademas corren localmente
  • Documentación de las funciones exportadas
  • Ejemplos (que corren localmente) para todas las funciones exportadas
  • Directrices comunitarias incluyendo una guia de contribución en el archivo README o el archivo CONTRIBUTING y un archivo DESCRIPTION que incluye URL, BugReports and Maintainer (todas en inglés por convención y para que puedan ser autogeneradas con Authors@R).

Funcionalidad

  • Instalación: La instalación se completa con éxito tal como fue documentada.
  • Funcionalidad: Toda afirmación de funcionalidad del software se confirma como existente.
  • Desempeño: Toda afirmación de desempeño del software se confirma como alcanzada.
  • Pruebas automáticas: Hay pruebas unitarias que cubren las funciones esenciales dentro del paquete con un rango razonable de entradas y condiciones. Todas las pruebas corren en la maquina local.
  • Directrices de empaque: El paquete cumple con las directrices de empaque de rOpenSci.

Estimación de horas dedicadas a la revisión:

  • Si la o las persona(s) autora(s) lo considera(n) apropiado, yo estoy de acuerdo con que me reconozcan como revisor del paquete (el rol "rev') en la el archivo DESCRIPTION del paquete.

Comentarios de la revisión

Los items sin tildar no han sido objeto de esta revision

Seria util que despues de la descripcion inicial del paquete haya una lista de todas las funciones disponibles a la fecha de la version. Segun la viñeta estas serian:

En la viñeta estan:
leer_nh
metadatos_nh
dias_promedio
anomalia_porcentual
decil
pdsi_ac
spi_indice
umbrales
completar_serie
olas
mapear
escalas
leer_surfer

En los man pages se suman estas ;
agromet_informe
ith
kable_inta
mapa_argentina
mapa_provincias
mapa_departamentos

Segun la descripcion del paquete, se asume que es solo para personal del INTA aunque otros usuarios externos podrian tambien beneficiarse. Para ello seria importante, si lo consideran conveniente los autores, incluir un breve comentarios sobre el tipo de archivo, estructura de datos y nombres de columnas que deberian tener estos datos.

@Pakillo
Copy link
Member

Pakillo commented Feb 7, 2024

¡ Muchas gracias por su revisión @pmnatural !

Antes de continuar, ¿podría indicar una estimación del tiempo (horas) dedicado a la revisión? Para efectos puramente estadísticos del programa de revisión de rOpenSci

Gracias

@paocorrales
Copy link
Author

Gracias Priscilla por la revisión!

Respecto a tu comentario te consulto si la propuesta sería incorporar toda la lista de funciones en el README. Ahora no son muchas funciones y se podría hacer pero con suerte en el futuro espero sumar más y creo que quedaría muy largo. Una alternativa que se me ocurre es linkear desde el README al índice de la web del paquete donde está la lista de funciones: https://agrometeorologiainta.github.io/agroclimatico/reference/index.html

Te parece una alternativa posible?

@VeruGHub
Copy link

VeruGHub commented Feb 9, 2024

Revisión de un paquete

No tengo ninguna relación de trabajo con los autores

  • Como revisor confirmo que no tengo conflictos de interés para poder hacer la revisión de este trabajo (si no estas segura si tienes un conflicto por favor entra en contacto con tu editor antes de arrancar con la revisión.

Documentación

El paquete incluye todos los siguiente tipos de documentación:

  • Una declaración de necesidades que claramente describe las necesidades que el software esta diseñado a resolver y el public meta que busca atender en el archivo README
  • Instrucciones de instalación de la versión en desarrollo del paquete incluyendo cualquier dependencia no-estándar en el archivo README
  • Viñeta(s) demostrando la funcionalidad principal que ademas corren localmente
  • Documentación de las funciones exportadas
  • Ejemplos (que corren localmente) para todas las funciones exportadas
  • Directrices comunitarias incluyendo una guia de contribución en el archivo README o el archivo CONTRIBUTING y un archivo DESCRIPTION que incluye URL, BugReports and Maintainer (todas en inglés por concenvión y para que puedan ser autogeneradas con Authors@R).

Funcionalidad

  • Instalación: La instalación se completa con éxito tal como fue documentada.
  • Funcionalidad: Toda afirmación de funcionalidad del software se confirma como existente.
  • Desempeño: Toda afirmación de desempeño del software se confirma como alcanzada.
  • Pruebas automáticas: Hay pruebas unitarias que cubren las funciones esenciales dentro del paquete con un rango razonable de entradas y condiciones. Todas las pruebas corren en la maquina local.
  • Directrices de empaque: El paquete cumple con las directrices de empaque de rOpenSci.

Estimación de horas dedicadas a la revisión: 8

  • Si la o las persona(s) autora(s) lo considera(n) apropiado, yo estoy de acuerdo con que me reconozcan como revisor del paquete (el rol "rev') en la el archivo DESCRIPTION del paquete.

Comentarios de la revisión

En primer lugar, quiero agradecer la oportunidad de revisar este paquete y espero que los comentarios sirvan para mejorar en los puntos que los autores consideren oportunos. Creo que los autores han hecho un gran trabajo compilando las funciones relacionadas con la gestión de datos climáticos que son útiles para el INTA.

He revisado el paquete desde el punto de vista de un usuario y tengo algunos comentarios generales y también específicos de cada función. Incluyo en la revisión código que he ido ejecutando y con comentarios en partes que no han funcionado correctamente y reflexiones.

Creo que algunos aspectos formales de la documentación pueden ser mejorados. Para empezar, la funcionalidad del paquete no está completamente definida en la documentación (Readme). El paquete calcula índices y estadísticos climáticos e hidrológicos a partir de datos tidy, pero también permite representar esta información y otra en mapas en Argentina, y permite leer datos climáticos en el formato del INTA. Creo que toda esta información debería de estar incluida en el Readme. En varios puntos de la documentación de las funciones (ver debajo) he detectado que no se especifica el formato concreto en el que los argumentos deben declararse y también argumentos cuya descripción es confusa. Mejorar estas descripciones e incluir programación defensiva relativa a los argumentos (en general faltante) ayudaría mucho a los usuarios.

Creo que la funcionalidad de spi_indice y spei_indice está ya contenida en el paquete SPEI. A menos que se aclare cual es la novedad de las funciones escritas para agroclimático, sugiero eliminar estas funciones. Además, no he conseguido correr las funciones scale_color/fill_inta y pdsi/pdsi_ac (ver debajo los comentarios).

Finalmente, en el logotipo del paquete pone "AgroMET" lo que es un poco raro si el paquete se llama "agroclimatico".

library(agroclimatico)
library(dplyr)

vignette("estadisticas-e-indices-climaticos", "agroclimatico") #no me funciona
archivo <- system.file("extdata", "NH0358.DAT", package = "agroclimatico")
datos <- leer_nh(archivo)
data(NH0358)

dias_promedio

No calcula ningun estadístico meteorológico como dice la descripción si no que extrae dia, mes y dia juliano de un set de datos. Previamente el usuario puede haber extraido los días que representan un evento meteorológico de interés, pero no tiene por qué.

La descripción de la funcionalidad no es clara en la ayuda. Sugiero poner "Calcula el valor promedio anual del primer y ultimo dia para una serie de fechas dada". En los ejemplos habría que cambiar "summarise" por "reframe" como aparece en el Readme. En "Value" se dice que el output tiene "variables extras en el caso de hacer el cálculo para distintos grupos", pero ¿cómo se puede especificar para qué grupos quieres el cálculo?

Erratas en la documentación: "seria de fechas"


dias_promedio(datos$fecha) #Ok
dias_promedio(NH0358$fecha) #Ok

helada <- NH0358 |> 
  filter(t_min <= 0) 

dias_promedio(helada$fecha) #Ok

helada |> summarise(dias_promedio(fecha)) #En un pipe, solo si la funcion se escribe dentro de un summarise o reframe se consigue la funcionalidad descrita

#La función no devuelve un output que encaje bien con la filosofía de tidyverse y es difícil de utilizar en un pipe: 

helada |> dias_promedio(fechas = fecha)
helada |> mutate(diasprom = dias_promedio(fecha))

completar_serie

No se especifica el formato del vector fecha ni de rango en la documentación.


#Ejecuto el ejemplo #Ok
ejemplo <- data.frame(fechas = seq(as.Date("1985-01-01"), as.Date("2015-12-01"),
                             by = "1 month"),
                    pp = 1)

set.seed(42)
datos_perdidos <- sample(nrow(ejemplo), nrow(ejemplo)/10)
ejemplo$pp[datos_perdidos] <- NA
datos_incompletos <- na.omit(ejemplo) 

completar_serie(datos_incompletos, fechas, resolucion = "1 mes")

#No funciona, pero sigue las instrucciones de la documentación:
completar_serie(datos = datos, 
                fecha = fecha, 
                resolucion = "día",
                rango = as.Date(c("1951-01-01", "1952-12-31")))

decil y anomalia_porcentual

En la descripción se necesita incluir una definición más técnica de qué valores se devuelven, es decir, que hace la función decil y la anomalia_porcentual y referencias. En estadística, los deciles de una serie de datos son estadísticos descriptivos que representan los valores que limitan la serie de datos en 10 partes. Al aplicar la función sin tener mucho detalle en la descripción yo hubiera esperado obtener eso. Sin embargo, en el ejemplo ejecutado debajo obtengo un vector de igual longitud de la serie de datos. Sugiero mejorar la descripción en este sentido. La anomalía porcentual ¿respecto a qué valor de la serie de referencia se calcula? Debería especificarse. ¿Por qué para calcular la anomalia es necesario especificar que no se consideren los NA, pero para decil no? Parece una cuestión de inconsistencia en cómo están escritas las funciones.


decil(datos$t_max) #Ok

anomalia_porcentual(datos$t_max, na.rm = TRUE) #Ok

scala_temp/pp_XXX

La documentación está incompleta. No hay ejemplos de uso ni se entiende bien que hacen estas funciones. Tampoco se especifica qué valores retorna.

ith

Funciona correctamente y está bien documentada.


NH0358 <- NH0358 %>% #Ok
  mutate(t_media = (t_max + t_min)/2) %>%
  mutate(ith = ith(t_media, hr))

hist(NH0358$ith)

metadatos_nh

Para facilitar la comprensión a los usuarios convendría especificar que son "estaciones NH". La descripción es incompleta en el sentido de que sólo se especifica una parte de la información que devuelve la función.

Erratas en la documentación: "provincia o provincia", "especificar" debería ser "específicas".


metadatos_nh(codigo = c("0001", "0011")) #Ok
metadatos_nh(provincia ="Chaco") #Ok
metadatos_nh(organismo = "SMN") #Ok
metadatos_nh(lat = c(-30, -20), lon = c(-65, -55)) #Ok

kable_inta

Sustituir "Setear" por "Formatear" o similar. Funciona correctamente.


kable_inta(datos[1:10,1:5]) #Ok
kable_inta(metadatos_nh(provincia ="Chaco")) #Ok

leer_surfer

En el ejemplo se sobreescribe un objeto con el nombre de otra función implementada en el paquete (scala_temp/pp_XXX). Debería estar explicado en algún sitio cual es el link entre ambas.

Erratas en la documentación: "laeer".


escala <- system.file("extdata", "escala_pp_mensual.lvl", package = "agroclimatico")

escala_prueba <- leer_surfer(escala) #Ok
scales::show_col(escala_prueba$colores)

mapa_XXX

Añadiría en la descripción los posibles valores para el argumento "provincias".


ggplot() +
  geom_sf(data = mapa_argentina()) #Ok

ggplot() +
  geom_sf(data = mapa_provincias()) #Ok

ggplot() +
  geom_sf(data = mapa_provincias(provincias = "Chaco", departamentos =  TRUE)) #Ok

ggplot() +
  geom_sf(data = mapa_provincias(provincias = "Rio Negro", departamentos = FALSE)) #Ok

ggplot() +
  geom_sf(data = mapa_argentina_limitrofes()) #Ok

ggplot() +
  geom_sf(data = mapa_departamentos(provincias = "Chaco")) #Ok

mapear

Erratas en la documentación: "veriable", "a el", "masyores", "1500m".

El argumento "breaks" no está bien definido. Habría que especificar que se refiere a que hay que introducir valores (¿uno o varios?) en el rango del argumento "valor".

No se explican las funciones coord_argentina ni theme_inta_mapa en ningún sitio. ¿Se utilizan sólo internamente? En ese caso no deberían estar exportadas.


prueba <- metadatos_nh()

mapear(prueba$altura, #Ok
       prueba$lon, 
       prueba$lat, 
       breaks = c(0, 100, 400, 1000, 1500), 
       cordillera = 1400,
       variable = "mm")

olas y umbrales

No se explica en la documentación como hay que especificar los umbrales. Es poco habitual que se pueda poner cualquier palabra como nombre de un argumento y una mala praxis porque se puede sobreescribir algo importante en la función. Sería más adecuado que hubiera un argumento para los umbrales y que éstos se pudieran introducir en forma de lista con nombres (ej. umbral = list(calor = "t_max > 20"))

Corregir algunas erratas en la documentación de olas: "mbral", "drtn"

Corregir algunas erratas en la documentación de umbrales: "⁠N`` (numérico) ocurrencia del evento *⁠prop' "


olas(datos$fecha, heatwave = datos$t_max > 20) #Ok

umbrales(heatwave = datos$t_max > 20) #Ok

pdsi/pdsi_ac

No funciona indicandole los argumentos no definidos por defecto.

Habría que incluir en la documentación las referencias que se citan e incluir las unidades de la precipitacion y la etp. Es redundante incluir un argumento para los coeficientes en forma de lista y luego argumentos para cada coeficiente por separado. Sugiero eliminar una de las dos formas.

Corregir algunas erratas de la ayuda: "list de coeficientes", "El el cálculo".


pdsi(precipitacion = c(500, 600), #No funciona
     etp = c(1000, 1200)) 

pdsi_ac(precipitacion = c(500, 600), #No funciona
     etp = c(1000, 1200)) 

scale_color/fill_inta pdsi/pdsi_ac

El ejemplo no funciona. Tampoco funciona otro ejemplo que he creado siguiendo las instrucciones de la documentación.

Corregir erratas en la documentación: "escala.)", "tiene prioridad por sobre", "deinidos"


prueba <- metadatos_nh()
prueba$altura <- as.numeric(prueba$altura)

ggplot(prueba) + #No funciona
  geom_point(aes(x = lon, y = lat, color = altura)) +
  scale_color_inta(escala = escala_pp_diaria)


set.seed(496) #El ejemplo no funciona
datos_aleatorios <- subset(metadatos_nh())
datos_aleatorios <- data.frame(datos_aleatorios,
pp = rgamma(nrow(datos_aleatorios), 0.5, scale = 1)*70)

ggplot(datos_aleatorios, aes(lon, lat)) +
geom_contour(aes(z = pp, fill = after_stat(level))) +
scale_fill_inta(escala = escala_pp_diaria)

spei_indice/spi_indice

La funcionalidad está repetida respecto a las funciones spi y spei del paquete SPEI. A menos que se aclare qué aporta esta función sugiero eliminarla y crear una viñeta que incluya cómo se usa el paquete SPEI con datos en el formato del INTA. Si he entendido bien, las fechas deben introducirse como meses ¿no? Por favor, especificar esto si se mantiene la función. En la documentación no se entiende bien que es el argumento "escalas" y no se cita el paquete SPEI.



prueba <- data.frame(fecha = seq(as.Date("1985-01-01"), as.Date("2015-12-01"), by = "1 month"))
set.seed(42)
prueba$pp <- rgamma(nrow(prueba), shape = 2, scale = 10)

spi_indice(prueba$fecha, prueba$pp, escalas = 1)


#Misma funcionalidad que en paquete SPEI:
spi_agro <- spi_indice(fecha = prueba$fecha, precipitacion = prueba$pp, escalas = 1)

spi_spei <- SPEI::spi(data = prueba$pp, scale = 1)

identical(spi_agro$spi, as.vector(spi_spei$fitted))

@Pakillo
Copy link
Member

Pakillo commented Feb 12, 2024

¡Muchas gracias @VeruGHub por su detallada revisión! Seguro que será muy útil.

@Pakillo
Copy link
Member

Pakillo commented Feb 12, 2024

@ropensci-review-bot submit review #599 (comment) time 8

@ropensci-review-bot
Copy link
Collaborator

Logged review for VeruGHub (hours: 8)

@Pakillo
Copy link
Member

Pakillo commented Feb 12, 2024

@ropensci-review-bot submit review #599 (comment)

@ropensci-review-bot
Copy link
Collaborator

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@ropensci-review-bot help

@Pakillo
Copy link
Member

Pakillo commented Feb 13, 2024

@ropensci-review-bot submit review #599 (comment) time NA

@ropensci-review-bot
Copy link
Collaborator

Logged review for pmnatural (hours: NA)

@Pakillo
Copy link
Member

Pakillo commented Feb 13, 2024

Estimada @paocorrales y coautores:

Ya tenemos las revisiones de @pmnatural y @VeruGHub, a quienes agradezco su esfuerzo. Espero que sus comentarios sean útiles. Añado algunos comentarios al respecto:

README

Ambas revisoras comentan que les gustaría ver más información sobre el paquete ahí. Yo la veo correcta (sobre todo al contar con un magnífico tutorial complementario (vignette)), pero tal vez se pueda añadir algo más o re-estructurar la información del README para que quede más claro, al menos en cuanto a los grandes bloques de funcionalidad del paquete (lectura de datos INTA, indicadores, mapeo, etc). Una sugerencia para que quede más clara la funcionalidad global del paquete es agrupar las funciones en el índice por temáticas (ver https://r-pkgs.org/website.html#index-organization).

En el primer párrafo del Readme hay una errata (dias_promedios() cuando la función se llama dias_promedio()). También sugiero poner 'tidy' entre comillas, y tal vez enlazar esa palabra con algún documento que explique qué significa tidy data para los que no estén familiarizados con el concepto (por ejemplo, https://es.r4ds.hadley.nz/12-tidy.html en español, o https://tidyr.tidyverse.org/articles/tidy-data.html o http://www.jstatsoft.org/v59/i10/paper en inglés).

En el segundo párrafo del Readme, la función spi se llama ahora spi_indice.

En el tercer párrafo se menciona por primera vez el INTA. Es posible que muchos no conozcan a qué se refiere el acrónimo, por lo que añadiría el nombre completo del instituto y un enlace a la web oficial.

Es cierto que el logo refleja el antiguo nombre del paquete (agromet), ¿tal vez sea buena idea modificarlo?

La 'vignette' a mí si me funciona, siempre que se especifique build_vignettes = TRUE al instalar, como explica el README. Por cierto, gran tutorial mostrando las distintas funciones del paquete.

dias_promedio

En esta y otras funciones, como indica @VeruGHub, sería conveniente reemplazar summarise por reframe en todos los ejemplos donde aparece tal warning. Coincido también en que no está claro cómo utilizar esta función con datos agrupados (dado que el único argumento de la función es un vector de fechas).

decil

En la función decil, pienso que sería útil dar la opción de devolver tanto el número del decil (1, 2, 3, ...) como el valor numérico (ej. 7.7 correspondente al decil 1, etc). Por ejemplo viendo el ejemplo en https://agrometeorologiainta.github.io/agroclimatico/articles/estadisticas-e-indices-climaticos.html#deciles no me queda claro cómo interpretar en qué decil nos encontramos simplemente viendo el valor de la columna 'decil'.

mapear

Esta función me parece muy útil pero me pregunto si podría rediseñarse para que el primer argumento sea un data.frame o tibble, siguiendo la costumbre en tidyverse. Esto permitiría llamarla directamente dentro de un pipe, p. ej.:

datos_aleatorios |> 
  mapear(pp, lon, lat, 
       cordillera = TRUE,
       escala = escala_pp_diaria,
       variable = "mm",
       titulo = "Precipitación aleatoria",
       fuente = "Fuente: datos de ejemplo")

olas y umbrales

Estas funciones también me gustan mucho y me parecen muy útiles, pero igualmente me pregunto (a modo de reflexión) si el primer argumento podría ser un data.frame o tibble, dado que se usan varias variables del mismo para calcular las olas. Esto podría permitir además que no fuese necesario usar summarise/reframe, p. ej:

olas(NH0358, calor = t_max > 20, frio = t_min <= 0)

SPI, SPEI

También aquí me planteo si no sería conveniente (siguiendo la filosofía tidyverse) que el primer argumento fuera siempre un data.frame o tibble. De ese modo no habría que usar with, como en el ejemplo.

Estoy de acuerdo con @VeruGHub en que sería bueno explicar la utilidad de estas funciones y en qué difiere esta implementación de la del paquete SPEI (utilizado internamente).

General

En los ejemplos sería conveniente simplificar los datasets al máximo, dejando solamente lo necesario para mostrar lo que hace la función. Por ejemplo, en la función decil se usa el dataset NH0358 completo, y el objeto generado es muy grande (filas y columnas) y difícil de leer, hasta el punto de que cuesta ver el resultado de aplicar la función. Sería recomendable reducir el número de filas y columnas al mínimo imprescindible (o mostrar solo una selección de filas cuando ello sea suficiente, ej. en metadatos_nh). También se aplica a los ejemplos de otras funciones como completar_serie, ith, olas, pi_indice, etc.

Erratas

Hay algunas erratas en la documentación. Podría usarse el paquete spelling o herramientas similares para facilitar su detección y corrección.

Nada más por ahora. Espero que mis comentarios, unidos a los de las revisoras, sean útiles para revisar el paquete. Por favor no duden en comentar cualquier duda o discrepancia que puedan tener. Muchos de los cambios propuestos son sugerencias o invitaciones a la reflexión. Quedo pues a la espera de su revisión.

Saludos cordiales

Paco

@ropensci-review-bot
Copy link
Collaborator

@paocorrales, @eliocamp, @yabellini, @NatiGattinoni: please post your response with @ropensci-review-bot submit response <url to issue comment> if you haven't done so already (this is an automatic reminder).

Here's the author guide for response. https://devguide.ropensci.org/authors-guide.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants