qualR: An R package to download Sao Paulo and Rio de Janeiro air pollution data
quishqa opened this issue · 52 comments
Date accepted: 2022-03-08
Submitting Author Name: Mario Gavidia-Calderón
Submitting Author Github Handle: @quishqa
Other Package Authors Github handles: @Schuch666, @mftandra
Repository: https://github.com/quishqa/qualR
Version submitted:0.9.5
Submission type: Standard
Editor: @ldecicco-USGS
Reviewers: @beatrizmilz, @kauedesousa
Due date for @kauedesousa: 2021-12-02
Archive: TBD
Version accepted: TBD
- Paste the full DESCRIPTION file inside a code block below:
Package: qualR
Title: An R package to download Sao Paulo and Rio de Janeiro air pollution data
Version: 0.9.5
Authors@R: c(
person(given = "Mario",
family = "Gavidia-Calderón",
role = c("aut", "cre"),
email = "mario.calderon@iag.usp.br",
comment = c(ORCID = "0000-0002-7371-1116")),
person(given = "Maria de Fatima",
family = "Andrade",
role = c("ctb", "ths"),
email = "maria.andrade@iag.usp.br",
comment = c(ORCID = "0000-0001-5351-8311")),
person(given = "Daniel",
family = "Schuch",
role = c("aut","ctb"),
email = "d.schuch@northeastern.edu",
comment = c(ORCID = "0000-0001-5977-4519")))
Description: A package to download information from CETESB QUALAR and
MonitorAr systems. It contains function to download different parameters, a set of
criteria pollutants and the most frequent meteorological parameters used in
air quality data analysis and air quality model evaluation.
License: MIT + file LICENSE
Encoding: UTF-8
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.1.1
Imports:
XML,
httr,
jsonlite
URL: https://github.com/quishqa/qualR
BugReports: https://github.com/quishqa/qualR/issues
Suggests:
covr,
testthat (>= 3.0.0)
Depends:
R (>= 3.5.0)
Config/testthat/edition: 3
Scope
-
Please indicate which category or categories from our package fit policies this package falls under: (Please check an appropriate box below. If you are unsure, we suggest you make a pre-submission inquiry.):
- data retrieval
- data extraction
- data munging
- data deposition
- workflow automation
- version control
- citation management and bibliometrics
- scientific software wrappers
- field and lab reproducibility tools
- database software bindings
- geospatial data
- text analysis
-
Explain how and why the package falls under these categories (briefly, 1-2 sentences):
Sao Paulo data is available through CETESB QUALAR System which limits the download to one parameter for one air quality station for one year, Rio de Janeiro is available through data.rio.API which is not so user-friendly.qualR
downloads multiple parameters for different air quality stations and produces completed ready-to-use data frames (missing hours are padded out with NA) with a date column in POSIXct type that allows temporal aggregation and compatibility withopenair
package. -
Who is the target audience and what are scientific applications of this package?
Any researchers that work with air quality and weather data of Sao Paulo and Rio de Janeiro: Meteorologists, Epidemiologists, Environmental engineers, postgraduates students that work in air quality modeling and field measurements campaigns, also stakeholders and the community. This packages facilitates the retrival of Sao Paulo and Rio de Janeiro air quality data, facilitates exploratory data analysis, and enhance code reproducibility. -
Are there other R packages that accomplish the same thing? If so, how does yours differ or meet our criteria for best-in-category?
koffing
retrieves Sao Paulo State air quality data.qualR
offers more functionalities (i.e. allows retrieve many parameters from one air quality station, accepts pollutants abbreviations and air quality station names in functions parameters, etc), and returns complete datasets ready to use (no missing hours, concentration in numeric format).qualR
also include Rio de Janeiro city and the location of each air quality stations.qualR
is more user friendly and it is actively maintainded. -
(If applicable) Does your package comply with our guidance around Ethics, Data Privacy and Human Subjects Research?
-
If you made a pre-submission inquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted.
Technical checks
Confirm each of the following by checking the box.
- I have read the guide for authors and rOpenSci packaging guide.
This package:
- does not violate the Terms of Service of any service it interacts with.
- has a CRAN and OSI accepted license.
- contains a README with instructions for installing the development version.
- includes documentation with examples for all functions, created with roxygen2.
- contains a vignette with examples of its essential functions and uses.
- has a test suite.
- has continuous integration, including reporting of test coverage using services such as Travis CI, Coveralls and/or CodeCov.
Publication options
-
Do you intend for this package to go on CRAN?
-
Do you intend for this package to go on Bioconductor?
-
Do you wish to submit an Applications Article about your package to Methods in Ecology and Evolution? If so:
MEE Options
- The package is novel and will be of interest to the broad readership of the journal.
- The manuscript describing the package is no longer than 3000 words.
- You intend to archive the code for the package in a long-term repository which meets the requirements of the journal (see MEE's Policy on Publishing Code)
- (Scope: Do consider MEE's Aims and Scope for your manuscript. We make no guarantee that your manuscript will be within MEE scope.)
- (Although not required, we strongly recommend having a full manuscript prepared when you submit here.)
- (Please do not submit your package separately to Methods in Ecology and Evolution)
Code of conduct
- I agree to abide by rOpenSci's Code of Conduct during the review process and in maintaining my package should it be accepted.
Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help
for help.
🚀
Editor check started
👋
Checks for qualR (v0.9.5)
git hash: 6ca2ad12
- ✔️ Package name is available
- ✔️ has a 'CITATION' file.
- ✔️ has a 'codemeta.json' file.
- ✖️ does not have a 'contributing' file.
- ✔️ uses 'roxygen2'.
- ✔️ 'DESCRIPTION' has a URL field.
- ✔️ 'DESCRIPTION' has a BugReports field.
- ✖️ Package has at no HTML vignettes
- ✖️ These functions do not have examples: [cetesb_aqs.Rd].
- ✔️ Package has continuous integration checks.
- ✔️ Package coverage is 100%.
- ✔️ R CMD check found no errors.
- ✔️ R CMD check found no warnings.
Important: All failing checks above must be addressed prior to proceeding
Package License: MIT + file LICENSE
1. 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 R (100% in 12 files) and
- 2 authors
- no vignette
- 4 internal data files
- 3 imported packages
- 9 exported functions (median 35 lines of code)
- 13 non-exported functions in R (median 33 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
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 | 12 | 62.6 | |
files_vignettes | 0 | 0.0 | TRUE |
files_tests | 9 | 87.3 | |
loc_R | 495 | 44.0 | |
loc_tests | 61 | 26.1 | |
num_vignettes | 0 | 0.0 | TRUE |
data_size_total | 4165 | 65.9 | |
data_size_median | 667 | 61.4 | |
n_fns_r | 22 | 22.5 | |
n_fns_r_exported | 9 | 38.9 | |
n_fns_r_not_exported | 13 | 19.3 | |
n_fns_per_file_r | 1 | 8.3 | |
num_params_per_fn | 7 | 85.6 | |
loc_per_fn_r | 34 | 88.5 | |
loc_per_fn_r_exp | 35 | 70.3 | |
loc_per_fn_r_not_exp | 33 | 89.7 | |
rel_whitespace_R | 24 | 54.8 | |
rel_whitespace_tests | 41 | 75.1 | |
doclines_per_fn_exp | 41 | 51.1 | |
doclines_per_fn_not_exp | 0 | 0.0 | TRUE |
fn_call_network_size | 34 | 53.0 |
1a. Network visualisation
Interactive network visualisation of calls between objects in package can be viewed by clicking here
2. goodpractice
and other checks
Details of goodpractice and other checks (click to open)
3a. Continuous Integration Badges
3b. goodpractice
results
R CMD check
with rcmdcheck
R CMD check generated the following note:
- checking data for non-ASCII characters ... NOTE
Note: found 40 marked UTF-8 strings
R CMD check generated the following check_fail:
- rcmdcheck_non_ascii_characters_in_data
Test coverage with covr
Package coverage: 100
Cyclocomplexity with cyclocomp
No functions have cyclocomplexity >= 15
Static code analyses with lintr
lintr found the following 54 potential issues:
message | number of times |
---|---|
Avoid changing the working directory, or restore it in on.exit | 2 |
Lines should not be more than 80 characters. | 52 |
Package Versions
package | version |
---|---|
pkgstats | 0.0.2.16 |
pkgcheck | 0.0.2.86 |
Editor-in-Chief Instructions:
Processing may not proceed until the items marked with ✖️ have been resolved.
@ropensci-review-bot help
Hello @quishqa, here are the things you can ask me to do:
# List all available commands
@ropensci-review-bot help
# Show our Code of Conduct
@ropensci-review-bot code of conduct
Hi!
All items marked as ✖️ have been resolved. We are working on fixing goodpractice checks.
@ropensci-review-bot check package
Thanks, about to send the query.
🚀
Editor check started
👋
Checks for qualR (v0.9.5)
git hash: ca28ae7b
- ✔️ Package name is available
- ✔️ has a 'CITATION' file.
- ✔️ 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 100%.
- ✔️ R CMD check found no errors.
- ✔️ R CMD check found no warnings.
Package License: MIT + file LICENSE
1. 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 R (100% in 12 files) and
- 2 authors
- 1 vignette
- 4 internal data files
- 3 imported packages
- 9 exported functions (median 35 lines of code)
- 13 non-exported functions in R (median 33 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
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 | 12 | 62.6 | |
files_vignettes | 0 | 0.0 | TRUE |
files_tests | 9 | 87.3 | |
loc_R | 509 | 45.0 | |
loc_tests | 65 | 27.3 | |
num_vignettes | 1 | 60.7 | |
data_size_total | 4165 | 65.9 | |
data_size_median | 667 | 61.4 | |
n_fns_r | 22 | 22.5 | |
n_fns_r_exported | 9 | 38.9 | |
n_fns_r_not_exported | 13 | 19.3 | |
n_fns_per_file_r | 1 | 8.3 | |
num_params_per_fn | 7 | 85.6 | |
loc_per_fn_r | 34 | 88.5 | |
loc_per_fn_r_exp | 35 | 70.3 | |
loc_per_fn_r_not_exp | 33 | 89.7 | |
rel_whitespace_R | 23 | 54.8 | |
rel_whitespace_tests | 38 | 75.1 | |
doclines_per_fn_exp | 42 | 52.5 | |
doclines_per_fn_not_exp | 0 | 0.0 | TRUE |
fn_call_network_size | 34 | 53.0 |
1a. Network visualisation
Interactive network visualisation of calls between objects in package can be viewed by clicking here
2. goodpractice
and other checks
Details of goodpractice and other checks (click to open)
3a. Continuous Integration Badges
3b. goodpractice
results
R CMD check
with rcmdcheck
R CMD check generated the following note:
- checking data for non-ASCII characters ... NOTE
Note: found 40 marked UTF-8 strings
R CMD check generated the following check_fail:
- rcmdcheck_non_ascii_characters_in_data
Test coverage with covr
Package coverage: 100
Cyclocomplexity with cyclocomp
No functions have cyclocomplexity >= 15
Static code analyses with lintr
lintr found the following 4 potential issues:
message | number of times |
---|---|
Avoid changing the working directory, or restore it in on.exit | 4 |
Package Versions
package | version |
---|---|
pkgstats | 0.0.2.16 |
pkgcheck | 0.0.2.86 |
Editor-in-Chief Instructions:
This package is in top shape and may be passed on to a handling editor
Thanks @quishqa ! The package is looking great. I'll be taking the editor role.
@ropensci-review-bot assign @ldecicco-USGS as editor
@ropensci-review-bot assign @ldecicco-USGS as editor
Assigned! @ldecicco-USGS is now the editor
Hi @quishqa , I'm still asking around for reviewers (I've reached out to a few that have declined because they are busy). I just wanted to let you know it's taking a bit longer than usual, sorry about that.
Hi @ldecicco-USGS , thanks for the update. We're looking forward to the review.
@ropensci-review-bot assign @beatrizmilz as reviewer
@ropensci-review-bot add @beatrizmilz to reviewers
@beatrizmilz added to the reviewers list. Review due date is 2021-12-01. Thanks @beatrizmilz for accepting to review! Please refer to our reviewer guide.
@beatrizmilz: If you haven't done so, please fill this form for us to update our reviewers records.
@ropensci-review-bot add @kauedesousa to reviewers
@kauedesousa added to the reviewers list. Review due date is 2021-12-02. Thanks @kauedesousa for accepting to review! Please refer to our reviewer guide.
@kauedesousa: If you haven't done so, please fill this form for us to update our reviewers records.
Hi! Thank you for the invitation to review the package @ldecicco-USGS and congratulations to the authors!
Here is my review:
Package Review
Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
-
Briefly describe any working relationship you have (had) with the package authors.
-
As the reviewer I confirm that there are no conflicts of interest for me to review this work (if you are unsure whether you are in conflict, please speak to your editor before starting your review).
Documentation
The package includes all the following forms of documentation:
- A statement of need: clearly stating problems the software is designed to solve and its target audience in README
- Installation instructions: for the development version of package and any non-standard dependencies in README
- Vignette(s): demonstrating major functionality that runs successfully locally
- Function Documentation: for all exported functions
- Examples: (that run successfully locally) for all exported functions
- Community guidelines: including contribution guidelines in the README or CONTRIBUTING, and DESCRIPTION with
URL
,BugReports
andMaintainer
(which may be autogenerated viaAuthors@R
).
Functionality
- Installation: Installation succeeds as documented.
- Functionality: Any functional claims of the software been confirmed.
- Performance: Any performance claims of the software been confirmed.
- Automated tests: Unit tests cover essential functions of the package and a reasonable range of inputs and conditions. All tests pass on the local machine.
- Packaging guidelines: The package conforms to the rOpenSci packaging guidelines.
Estimated hours spent reviewing: 6h
- Should the author(s) deem it appropriate, I agree to be acknowledged as a package reviewer ("rev" role) in the package DESCRIPTION file.
Review Comments
I wrote more extensive comments in the full report, made with ropensci-org/pkgreviewr
.
Here are some key points that would be interesting to work on, to improve the package:
-
Consistent naming styles: it would be better to choose a language (English), and a coding style (ex. snake case) and use them in all function names, arguments, and names of columns in the datasets returned.
-
The tests can be improved. Consider also using GitHub Actions to perform an automated check.
-
Files in the root directory: some of the files do not seem fit to be stored there (such as the files related to the paper), and some need to be ignored in the build of the package. I wrote in more detail in the report.
-
The spell-check found some typos that could be corrected.
-
I wrote in the report some ideas for the vignettes, but they are only suggestions to make it easier for people to use the data.
-
Modifying directories using
setwd()
is not something recommended in the book R Packages ( https://r-pkgs.org/r.html ).
Report: https://github.com/beatrizmilz/ropensci_reviews/blob/main/review-qualR/README.md
Hi @beatrizmilz thanks a lot for your detailed review, we'll be solving all the observations in the following days 👍🏽
@kauedesousa Do you have an update on when you will be able to do the review?
Dear @ldecicco-USGS @quishqa sorry for being late in my review. Last week I was affected by a viral infection (not covid) which put me in bed for some days and delayed all my assignments. Could I send my review by the next Wednesday 15-Dec?
Sure, that sounds great. Thanks!
Dear @ldecicco-USGS and @quishqa here goes my comments on the package. This is a nice one. Congrats!!
Package Review
- Briefly describe any working relationship you have (had) with the package authors.
- As the reviewer I confirm that there are no conflicts of interest for me to review this work (if you are unsure whether you are in conflict, please speak to your editor before starting your review).
Documentation
The package includes all the following forms of documentation:
- A statement of need: clearly stating problems the software is designed to solve and its target audience in README
- Installation instructions: for the development version of package and any non-standard dependencies in README
- Vignette(s): demonstrating major functionality that runs successfully locally
- Function Documentation: for all exported functions
- Examples: (that run successfully locally) for all exported functions
- Community guidelines: including contribution guidelines in the README or CONTRIBUTING, and DESCRIPTION with
URL
,BugReports
andMaintainer
(which may be autogenerated viaAuthors@R
).
Functionality
- Installation: Installation succeeds as documented.
- Functionality: Any functional claims of the software been confirmed.
- Performance: Any performance claims of the software been confirmed.
- Automated tests: Unit tests cover essential functions of the package and a reasonable range of inputs and conditions. All tests pass on the local machine.
- Packaging guidelines: The package conforms to the rOpenSci packaging guidelines.
Estimated hours spent reviewing: 5
- Should the author(s) deem it appropriate, I agree to be acknowledged as a package reviewer ("rev" role) in the package DESCRIPTION file.
Review Comments
- Datasets
monitor_ar_aqs
andmonitor_ar_param
don't match with the general naming used for the functions. I suggest that you rename these files to match with your naming logic. You may rename like,ArStation
andArParameters
- Same for the CETESB data sets
- Part of your functions (for CETESB) need a previous account with CETESB, and you only mention that by the end of your vignette. You need to mention that on the description of the functions
CetesbRetrieveMet()
and the other related. - Your vignette don't run smoothly because you call the package
openair
with::
without explicitly mentioning it withlibrary(openair)
. You should call the package withlibrary()
. - In line 114 of
/R/CetesbRetrieve.R
you start with anif()
and then aelse
with anotherif()
. I think that these statements are very difficult to understand and to fix. Maybe you can use onlyif()
s and stress on the possible outcomes that the call may return to you. - You test if the functions are returning the right dimensions of your expected data frame. But you don't test whether the outcome is the correct data. Maybe you can download a small data set from the server and put it in the
sysdata.rda
and validate it with the output of your functions. - Fix the typo in line 16 of file
/R/CetesbRetrieveMet.R
- I recommend to put the paper files in /inst/paper so your main directory is more organized. Same for the png files.
- Remove
README.Rmd
and keep onlyREADME.md
- /data-raw/ could be placed inside /data/
- Remove LICENSE.md
- In the DESCRIPTION file, put the links for ETESB QUALAR and MonitorAr systems if any inside a <>, like this https://cetesb.sp.gov.br/ar/qualar/ is very likely that CRAN will ask you to do that.
- Make a file called qualR.R in the \R directory, it makes a nice description of your package. There are some complex versions like this https://github.com/ropensci/rgbif/blob/master/R/rgbif-package.r or simplified versions like this https://github.com/ropensci/chirps/blob/master/R/chirps.R
- The package is nice and delivers what is promissed. Congrats!!
Session info
─ Session info 🍰 👨⚕️ 📱 ────────────────────────────────────────────────────────────────────────────────────────
hash: shortcake, man health worker, mobile phone
setting value
version R version 4.1.0 (2021-05-18)
os macOS 12.0.1
system x86_64, darwin17.0
ui RStudio
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz Europe/Oslo
date 2021-12-14
rstudio 1.4.1716 Juliet Rose (desktop)
pandoc 2.9.1.1 @ /usr/local/bin/pandoc
─ Packages ──────────────────────────────────────────────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
cachem 1.0.6 2021-08-19 [1] CRAN (R 4.1.0)
callr 3.7.0 2021-04-20 [1] CRAN (R 4.1.0)
cli 3.1.0 2021-10-27 [1] CRAN (R 4.1.0)
crayon 1.4.2 2021-10-29 [1] CRAN (R 4.1.0)
curl 4.3.2 2021-06-23 [1] CRAN (R 4.1.0)
desc 1.4.0 2021-09-28 [1] CRAN (R 4.1.0)
devtools * 2.4.2 2021-06-07 [1] CRAN (R 4.1.0)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.1.0)
fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.1.0)
fs 1.5.0 2020-07-31 [1] CRAN (R 4.1.0)
glue 1.4.2 2020-08-27 [1] CRAN (R 4.1.0)
httr 1.4.2 2020-07-20 [1] CRAN (R 4.1.0)
jsonlite 1.7.2 2020-12-09 [1] CRAN (R 4.1.0)
knitr 1.36 2021-09-29 [1] CRAN (R 4.1.0)
lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.0)
magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.1.0)
memoise 2.0.0 2021-01-26 [1] CRAN (R 4.1.0)
pkgbuild 1.2.0 2020-12-15 [1] CRAN (R 4.1.0)
pkgload 1.2.3 2021-10-13 [1] CRAN (R 4.1.0)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.1.0)
processx 3.5.2 2021-04-30 [1] CRAN (R 4.1.0)
ps 1.6.0 2021-02-28 [1] CRAN (R 4.1.0)
purrr 0.3.4 2020-04-17 [1] CRAN (R 4.1.0)
qualR * 0.9.5 2021-12-14 [1] Github (quishqa/qualR@dc15bd0)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.1.0)
remotes 2.4.1 2021-09-29 [1] CRAN (R 4.1.0)
rlang 0.4.12 2021-10-18 [1] CRAN (R 4.1.0)
roxygen2 * 7.1.2 2021-09-08 [1] CRAN (R 4.1.0)
rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.1.0)
rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.1.0)
sessioninfo 1.2.1 2021-11-02 [1] CRAN (R 4.1.0)
stringi 1.7.5 2021-10-04 [1] CRAN (R 4.1.0)
stringr 1.4.0 2019-02-10 [1] CRAN (R 4.1.0)
testthat * 3.1.0 2021-10-04 [1] CRAN (R 4.1.0)
usethis * 2.1.3 2021-10-27 [1] CRAN (R 4.1.0)
withr 2.4.2 2021-04-18 [1] CRAN (R 4.1.0)
xfun 0.27 2021-10-18 [1] CRAN (R 4.1.0)
XML 3.99-0.8 2021-09-17 [1] CRAN (R 4.1.0)
xml2 1.3.2 2020-04-23 [1] CRAN (R 4.1.0)
[1] /Library/Frameworks/R.framework/Versions/4.1/Resources/library
Thanks a lot @kauedesousa for your review will solve the observations in the next days.
Thanks again @kauedesousa and @beatrizmilz for the great reviews. @quishqa , and updates on the responses?
Hi everybody! We hope to have everything ready before the 28th.
Sorry for the (very) late reply. Thanks a lot to @ldecicco-USGS and to @beatrizmilz and @kauedesousa for the
very exhaustive review. Now the package is definitely better and we also learned a lot
about building packages in R.
Here are the answers to each observation following the commit where we fix them.
Response to @beatrizmilz
- Consistent naming styles: it would be better to choose a language (English), and a coding style (ex. snake case) and use them in all function names, arguments, and names of columns in the datasets returned.
Response: Now all function names are snake case and the names of columns are the most common in atmospheric sciences.
See ropensci/qualR@10f2dde
And ropensci/qualR@388c779
- The tests can be improved. Consider also using GitHub Actions to perform an automated check.
Response: We updated the tests to check also number of rows, to check if output is written, to check if variables (a pollutant) mean is inside a range, and to check the class of each columns.
See ropensci/qualR@85cc521
And
ropensci/qualR@036a8e1
- Files in the root directory: some of the files do not seem fit to be stored there (such as the files related to the paper), and some need to be ignored in the build of the package. I wrote in more detail in the report.
Response: Paper folder moved to inst/paper
ropensci/qualR@2d03ff4
Also we updated our .Rbuildignore
file see: ropensci/qualR@43df95a
- The spell-check found some typos that could be corrected.
Response: Corrected in ropensci/qualR@57d14d0
- I wrote in the report some ideas for the vignettes, but they are only suggestions to make it easier for people to use the data.
Response: We are not used to work with tidyverse. Nervertheless we add one example in the vignette. See ropensci/qualR@4a78c93
- Modifying directories using
setwd()
is not something recommended in the book R Packages
Response: By adding the csv_path argument we don't need to used setwd()
anymore. See ropensci/qualR@f7f8055
and ropensci/qualR@b0d7665
Other recommendations from full report
- Add rOpenSci Review badge
Response: Added in ropensci/qualR@e6af4d1
- The CITATION file exists. There are releases on GitHUb, but I did not find any reference to Zenodo. Reference. There is 0 results searching for qualR on Zenodo: https://zenodo.org/search?page=1&size=20&q=qualR . Read more how to do it and have a DOI for your package on the GitHub documentation.
Response: DOI created in ropensci/qualR@9e4d7f0
- Code of conduct: in the book, is recommended to use a code of conduct (CoC), and I did not find that information in the README.
Response: Created in ropensci/qualR@bcce5b5
-
R/sysdata.rda
should be used to internal datasets.
Response: Yes these dataset is for internal use. It has the name of stations with and without diacritics. Using Tatui is the same as using Tatuí
- Please review the links in the vignette, there is broken links (such as CETESB QUALAR System, data.rio).
Response: Corrected in ropensci/qualR@f3d4d2a
-
MonitorArRetrievePol()
,MonitorArRetrieveMet()
andCetesbRetrieveMetPol()
- The names of the columns of the dataset returned are in a good pattern (all in English and snake case). The column classes I think it would be better if the numeric variables (such as the air parameters) returned numeric/double (now some of them are lgl because there is only NA’s).
Response: Columns names from returned dataset standarized. See ropensci/qualR@388c779 .
Now numeric variables are returned as numeric
even when there is only NA
. See ropensci/qualR@cb808be
- Console messages - It is not recommended to use
cat()
to communicate with the user of the functions
Response: Now we use message()
. See ropensci/qualR@0c90cfd
- IDEA - When the function is storing the csv with
to_csv = TRUE
, it would be nice to have an argument to write the path where the csv will be saved.
Response: Accepted in ropensci/qualR@f7f8055. It helped to avoid using setwd()
on tests.
- IDEA - I think it would be nice to be able to search more than one station in the functions.
Response: We put a way to do it in the README section in https://github.com/quishqa/qualR#a-variable-from-all-cetesb-aqs
- All the tests passed. There are only a few tests. I recommend the authors to write more expectations with expect_*(), such as: expect the class of the result, the class of the columns in the dataset.
Response: Now we evaluate classes. See ropensci/qualR@85cc521
- There is a test are not testing anything related to the package: In test-CetesbRetrieveParam.R, the only expectation is
expect_equal(2 * 2, 4)
.
Response: Corrected in ropensci/qualR@85cc521
- There is no GitHub action to check the package consistently.
Response: Added in ropensci/qualR@60592c9
Response to @kauedesousa
- Datasets
monitor_ar_aqs
andmonitor_ar_param
don't match with the general naming used for the functions. I suggest that you rename these files to match with your naming logic. You may rename like,ArStation
andArParameters
Response: Now we changed all function names using snake case. See ropensci/qualR@10f2dde
- Same for the CETESB data sets
Response: Now returned datasets have the most common names in atmospheric sciences. See ropensci/qualR@388c779
- Your vignette don't run smoothly because you call the package
openair
with::
without explicitly mentioning it withlibrary(openair)
. You should call the package withlibrary()
.
Response: Added in ropensci/qualR@f3d4d2a
- In line 114 of
/R/CetesbRetrieve.R
you start with anif()
and then a else with anotherif()
. I think that these statements are very difficult to understand and to fix. Maybe you can use onlyif()s
and stress on the possible outcomes that the call may return to you.
Response: Fixed in ropensci/qualR@985714f
- You test if the functions are returning the right dimensions of your expected data frame. But you don't test whether the outcome is the correct data. Maybe you can download a small data set from the server and put it in the
sysdata.rda
and validate it with the output of your functions.
Response: We updated the tests to check also number of rows, to check if output is written, to check if variables (a pollutant) mean is inside a range, and to check the class of each columns.
See ropensci/qualR@85cc521
And
ropensci/qualR@036a8e1
- Fix the typo in line 16 of file
/R/CetesbRetrieveMet.R
Response: Corrected in ropensci/qualR@57d14d0
- I recommend to put the paper files in
/inst/paper
so your main directory is more organized. Same for the png files.
Response: Moved in ropensci/qualR@2d03ff4
- Remove README.Rmd and keep only README.md
Response: Removed in ropensci/qualR@b32c6ff
- /data-raw/ could be placed inside /data/
Response: That folder was created when using the function usethis::use_data_raw()
during the package development.
- Remove
LICENSE.md
Response: We still have doubts about which one we should remove LICENSE.md has more information.
- In the DESCRIPTION file, put the links for ETESB QUALAR and MonitorAr systems if any inside a <>, like this https://cetesb.sp.gov.br/ar/qualar/ is very likely that CRAN will ask you to do that.
Response: Added in ropensci/qualR@406cfc6
- Make a file called qualR.R in the \R directory, it makes a nice description of your package.
Response: Created in ropensci/qualR@30b61db
Hi @quishqa ! I'm happy to know that the review was usefull. Congratulations for the extensive work!
Seems like the website was not fully updated. Some of the pages on the reference are returning error 404, in the case when the function names were changed: https://quishqa.github.io/qualR/reference/cetesb_retrieve_param.html
Probably using pkgdown::build_site()
would fix it :)
Thanks for noticing this. It's weird because the manual from the datasets are OK but only the functions (which the names were changed) are presenting this error. I already do pkgdown::build_site()
. Locally it works but on the deployed web it does not work. I'm going to do a little more research.
Dear all, the returning 404 error was fixed in ropensci/qualR@6e4ce0d
Hi Mario! I checked here and the website is working :) Congratulations.
Congratulations for the extensive work.
About the vignette, I'm glad that you added an example with ggplot2! ggplot2 is an great package to create visualizations, and enables us to create elegant graphs with the data that qualR returns.
About the other suggestions and comments that I wrote, seems like they all have been considered. devtools::check()
passed as well.
Tests
I still think that the tests could be improved. I wrote some comments and I hope they can be helpfull if you want to expand the testing in the package:
-
As @kauedesousa have said, is good to test whether the outcome is the correct data. One function that you can try is expect_snapshot(): in the first time you use it, it will save the expected outcome and will check in the future if the results are still the expected, comparing with what was saved.
-
It seems to me that not all functions have tests consistently: some of the functions have more extensive tests and others tests only the number of rows and columns for example. Having good tests in all functions helps to find bugs in the future.
-
Also, I think is a good idea to improve the name of the tests, because if it breaks, is easier to understand which is in the check log (some of them are
test_that("multiplication works", {
). As said in R Packages book, "The main thing is that the message associated with the test should be informative so that you can quickly narrow down the source of the problem." (reference). But this should be a quick fix. -
I really like this chapter about tests in the R Packages book!
Again, congratulations Mario!
Thanks again for the feedback! We updated the test for all the functions we evaluated dims. values and classes,
see ropensci/qualR@29eb915
and ropensci/qualR@3d3aaf3
Also, we updated the test messages in ropensci/qualR@0a6b148
I think the updates address our comments. It looks fine with me.
Dear @ldecicco-USGS , @beatrizmilz , and @kauedesousa , What is the status of the review? do you need any extra information or correction?
Sorry about that. Everything looks great! I'm heading out of town for the weekend, but will kick off the approval process on Monday assuming @beatrizmilz and @kauedesousa don't have any objections.
No objection. I recommend the approval. I just wonder why you didn't submit it with a paper for JOSS. Anyways, thanks for opportunity to review the R package.
I also recommend the approval!
@ropensci-review-bot approve qualR
Approved! Thanks @quishqa for submitting and @beatrizmilz, @kauedesousa for your reviews! 😁
To-dos:
- Transfer the repo to rOpenSci's "ropensci" GitHub organization under "Settings" in your repo. I have invited you to a team that should allow you to do so.
- After transfer write a comment
@ropensci-review-bot finalize transfer of <package-name>
where<package-name>
is the repo/package name. This will give you admin access back. - Fix all links to the GitHub repo to point to the repo under the ropensci organization.
- Delete your current code of conduct file if you had one since rOpenSci's default one will apply, see https://devguide.ropensci.org/collaboration.html#coc-file
- If you already had a
pkgdown
website and are ok relying only on rOpenSci central docs building and branding,- deactivate the automatic deployment you might have set up
- remove styling tweaks from your pkgdown config but keep that config file
- replace the whole current
pkgdown
website with a redirecting page - replace your package docs URL with
https://docs.ropensci.org/package_name
- In addition, in your DESCRIPTION file, include the docs link in the
URL
field alongside the link to the GitHub repository, e.g.:URL: https://docs.ropensci.org/foobar (website) https://github.com/ropensci/foobar
- Fix any links in badges for CI and coverage to point to the new repository URL.
- Increment the package version to reflect the changes you made during review. In NEWS.md, add a heading for the new version and one bullet for each user-facing change, and each developer-facing change that you think is relevant.
- We're starting to roll out software metadata files to all rOpenSci packages via the Codemeta initiative, see https://docs.ropensci.org/codemetar/ for how to include it in your package, after installing the package - should be easy as running
codemetar::write_codemeta()
in the root of your package. - You can add this installation method to your package README
install.packages("<package-name>", repos = "https://ropensci.r-universe.dev")
thanks to R-universe.
Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"
-type contributors in the Authors@R
field (with their consent).
Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @ropensci/blog-editors in your reply. She will get in touch about timing and can answer any questions.
We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved.
Last but not least, you can volunteer as a reviewer via filling a short form.
Yes regarding the repo transfer!
Then the comment @ropensci-review-bot finalize transfer of qualR
needs to be put here in an issue comment.
Thank you and have a good week-end!
@ropensci-review-bot finalize transfer of qualR
Transfer completed. The qualR
team is now owner of the repository
Hi @beatrizmilz and @kauedesousa , is it ok for you if we can add you to the DESCRIPTION file? We'll feel very honored.
that is ok with me @quishqa
It is ok with me too @quishqa !