ropensci / software-review

rOpenSci Software Peer Review.
295 stars 104 forks source link

{weatherOz}: an API Client for Australian Weather and Climate Data Resources #598

Closed bozaah closed 9 months ago

bozaah commented 1 year ago

Date accepted: 2024-02-09

Submitting Author Name: Rodrigo Pires

Author Github Handle: !--author1-->@bozaah<!--end-author1--

Other Package Authors Github handles:@adamhsparks, @arhepworth, @jimii19, @syntrix, @becoleary, @HughParsonage, @PaulMelloy, @jonocarroll, @deanmarchiori, @jimjam-slam, @mpadge, @Keith-Pembleton, @maelle

Repository: https://github.com/DPIRD-FSI/weatherOz

Version submitted: v0.0.1

Submission type: Standard

Editor: !--editor-->@ldecicco-USGS<!--end-editor--

Reviewers: @JanLauGe, @rogerssam

Archive: TBD

Version accepted: TBD

Language: en


Package: weatherOz
Title: An API Client for Australian Weather and Climate Data Resources
Version: 0.0.1
Authors@R: c(
  person(
    given = "Rodrigo",
    family = "Pires",
    role = c("aut", "cre"),
    email = "rodrigo.pires@dpird.wa.gov.au",
    comment = c(ORCID = "0000-0001-7384-6849")
  ),
  person(
    given = "Anna",
    family = "Hepworth",
    role = "aut",
    email = "anna.hepworth@dpird.wa.gov.au",
    comment = c(ORCID = "0000-0003-0204-6347")
  ),
  person(
    given = "Rebecca",
    family = "O'Leary",
    role = "aut",
    email = "bec.oleary@curtin.edu.au"
  ),
  person(
    given = "Jonathan",
    family = "Carroll",
    role = "aut",
    email = "rpkg@jcarroll.com.au",
    comment = c(ORCID = "0000-0002-1404-5264")
  ),
  person(
    given = "James",
    family = "Goldie",
    role = "aut",
    email = "me@jamesgoldie.dev",
    comment = c(ORCID = "0000-0002-5024-6207")
  ),
  person(
    given = "Dean",
    family = "Marchiori",
    role = "aut",
    email = "deanmarchiori@gmail.com"
  ),
  person(
    given = "Paul",
    family = "Melloy",
    role = "aut",
    email = "paul@melloy.com.au",
    comment = c(ORCID = "0000-0003-4253-7167")
  ),
  person(
    given = "Mark",
    family = "Padgham",
    role = "aut",
    email = "mark.padgham@email.com",
    comment = c(ORCID = "0000-0003-2172-5265")
  ),
  person(
    given = "Hugh",
    family = "Parsonage",
    role = "aut",
    email = "hugh.parsonage@gmail.com",
    comment = c(ORCID = "0000-0003-4055-0835")
  ),
  person(
    given = "Keith",
    family = "Pembleton",
    role = "aut",
    email = "keith.pembleton@usq.edu.au",
    comment = c(ORCID = "0000-0002-1896-4516")
  ),
  person(
    given = "Maëlle",
    family = "Salmon",
    role = "ctb",
    email = "maelle.salmon@yahoo.se",
    comment = c(ORCID = "0000-0002-2815-0399",
                "Contributed to debugging a nasty little bug with CI where
                timezones caused tests to fail due to vcr not recognising the
                URL when run outside of Australia/Perth TZ! Suggested the use of
                `withr::local_timzeone()`, see
                <https://github.com/DPIRD-FSI/weatherOz/commit/b052bf91973b8d7e147a39e8938405a64622634b>.")),
  person(
    given = "Jimmy",
    family = "Ng",
    role = "ctb",
    email = "jimmy.ng@dpird.wa.gov.au"
  ),
  person(
    given = "Steve",
    family = "Collins",
    role = "ctb",
    email = "steve.collins@dpird.wa.gov.au",
    comment = c("Designed weatherOz's hex logo.")
  ),
  person(
    given = "Adam H.",
    family = "Sparks",
    email = "adam.sparks@dpird.wa.gov.au",
    role = "aut",
    comment = c(ORCID = "0000-0002-0061-8359")
  ),
  person(given = "Western Australia Agriculture Authority (WAAA)",
         role = c("cph")))
Description: Provides automated downloading, parsing and formatting of weather
    data for Australia through API endpoints provided by the Department of
    Primary Industries and Regional Development (DPIRD) of Western Australia
    and by the Science and Technology Division of the Queensland Government's
    Department of Environment and Science (DES).  As well as the Bureau of
    Meteorology (BOM) of the Australian government precis and coastal
    forecasts, agriculture bulletin data, and downloading and importing radar
    and satellite imagery files.  DPIRD weather data are accessed through public
    APIs provided by DPIRD, <https://www.agric.wa.gov.au/weather-api-20>,
    providing access to weather station data from DPIRD's weather station
    network.  Australia-wide weather data are based on data from the Australian
    Bureau of Meteorology (BOM) data and accessed through SILO (Scientific
    Information for Land Owners) (Jeffery et al., 2001,
    <doi: 10.1016/S1364-8152(01)00008-1>).  DPIRD data are made available under
    a Creative Commons Attribution 3.0 Licence (CC BY 3.0 AU) license
    <https://creativecommons.org/licenses/by/3.0/au/deed.en>.  SILO data are
    released under a  Creative Commons Attribution 4.0 International licence
    (CC BY 4.0) <https://creativecommons.org/licenses/by/4.0/>.  BOM data are
    (c) Australian Government Bureau of Meteorology and released under a
    Creative Commons (CC) Attribution 3.0 licence or Public Access Licence (PAL)
    as appropriate, see <http://www.bom.gov.au/other/copyright.shtml> for
    further details.
URL: https://github.com/DPIRD-FSI/weatherOz/, https://dpird-fsi.github.io/weatherOz/
BugReports: https://github.com/DPIRD-FSI/weatherOz/issues
License: GPL (>= 3)
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.2.3
Imports: 
    apsimx,
    clock,
    crayon,
    crul,
    curl,
    data.table,
    foreign,
    grDevices,
    jsonlite,
    knitr,
    lubridate,
    magick,
    methods,
    readr (>= 1.1.1),
    stringi,
    stars,
    stats,
    terra,
    utils,
    xml2
Suggests:
    covr,
    dplyr,
    ggplot2,
    ggthemes,
    grid,
    gridExtra,
    mapproj,
    maps,
    mailR,
    rmarkdown,
    spelling,
    testthat (>= 3.0.0),
    vcr (>= 0.6.0),
    vdiffr,
    withr
Config/testthat/edition: 3
Depends: 
    R (>= 4.1.0)
X-schema.org-applicationCategory: Tools
X-schema.org-keywords: dpird, bom, meteorological-data, weather-forecast,
    australia, weather, weather-data, meteorology, western-australia,
    australia-bureau-of-meteorology, western-australia-agriculture
X-schema.org-isPartOf: https://www.agric.wa.gov.au/
VignetteBuilder: knitr
Language: en-US
LazyData: true

Scope

Technical checks

Confirm each of the following by checking the box.

This package:

Publication options

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](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/journal-resources/policy-on-publishing-code.html)) - (*Scope: Do consider MEE's [Aims and Scope](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/aims-and-scope/read-full-aims-and-scope.html) 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

rogerssam commented 10 months ago

Thanks @ldecicco-USGS. No concerns from me.

Well done @bozaah and @adamhsparks!

bozaah commented 10 months ago

I ran the package check before merging the PR! Lets try again, ~@ropensci-review-bot check package~

bozaah commented 10 months ago

@ropensci-review-bot check package

ropensci-review-bot commented 10 months ago

Thanks, about to send the query.

ropensci-review-bot commented 10 months ago

:rocket:

Editor check started

:wave:

ropensci-review-bot commented 10 months ago

Checks for weatherOz (v0.0.1.9000)

git hash: 9ce33b75

(Checks marked with :eyes: may be optionally addressed.)

Package License: GPL (>= 3)


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 | 350| |internal |weatherOz | 10| |imports |data.table | 45| |imports |xml2 | 25| |imports |readr | 13| |imports |stats | 12| |imports |curl | 11| |imports |methods | 10| |imports |lubridate | 8| |imports |foreign | 7| |imports |utils | 6| |imports |crul | 5| |imports |jsonlite | 5| |imports |apsimx | 2| |imports |clock | 2| |imports |crayon | 2| |imports |grDevices | 2| |imports |terra | 2| |imports |magick | 1| |imports |stars | 1| |imports |knitr | NA| |imports |stringi | NA| |suggests |covr | NA| |suggests |dplyr | NA| |suggests |ggplot2 | NA| |suggests |ggthemes | NA| |suggests |grid | NA| |suggests |gridExtra | NA| |suggests |mapproj | NA| |suggests |maps | NA| |suggests |mailR | NA| |suggests |rmarkdown | NA| |suggests |spelling | NA| |suggests |testthat | NA| |suggests |vcr | NA| |suggests |vdiffr | NA| |suggests |withr | NA| |linking_to |NA | 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()', and examining the 'external_calls' table.

base

c (90), lapply (30), length (12), list (12), paste (12), tempdir (12), mode (11), sprintf (11), url (10), file.path (9), as.character (8), names (7), as.integer (6), round (6), parse (5), cbind (4), data.frame (4), for (4), mean (4), return (4), substr (4), t (4), vector (4), character (3), class (3), file (3), grep (3), unlist (3), vapply (3), warning (3), which (3), abs (2), agrep (2), attributes (2), by (2), colnames (2), floor (2), gsub (2), options (2), paste0 (2), readLines (2), seq_len (2), Sys.timezone (2), tolower (2), as.Date (1), as.double (1), as.numeric (1), basename (1), ceiling (1), col (1), colMeans (1), date (1), find.package (1), grepl (1), is.na (1), list.files (1), match.arg (1), max (1), merge (1), min (1), nchar (1), range (1), rawToChar (1), rbind (1), setdiff (1), source (1), system.file (1), table (1), try (1), units (1), unname (1)

data.table

data.table (11), setkey (9), rbindlist (8), setorder (5), as.data.table (4), fcase (4), fread (1), setDT (1), setnames (1), setorderv (1)

xml2

xml_find_first (7), xml_parent (7), xml_attr (5), xml_find_all (5), read_xml (1)

readr

col_character (5), col_double (4), col_integer (3), fwf_cols (1)

stats

df (4), aggregate (3), dt (3), dist (1), end (1)

curl

new_handle (5), curl (4), curl_fetch_memory (2)

methods

new (10)

weatherOz

parse_coastal_forecast (2), parse_precis_forecast (2), amp_apsim_met (1), get_dpird_summaries (1), get_radar (1), get_satellite (1), silo_daily_values (1), try_GET (1)

lubridate

time_length (2), days (1), format_ISO8601 (1), interval (1), today (1), year (1), ymd_hms (1)

foreign

read.dbf (7)

utils

data (3), count.fields (1), tail (1), unzip (1)

crul

HttpClient$new (4), Paginator$new (1)

jsonlite

fromJSON (5)

apsimx

read_apsim_met (2)

clock

date_seq (1), duration_minutes (1)

crayon

make_style (2)

grDevices

rgb (2)

terra

rast (2)

magick

image_read (1)

stars

read_stars (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 R (100% in 32 files) and - 11 authors - 5 vignettes - 4 internal data files - 20 imported packages - 22 exported functions (median 30 lines of code) - 124 non-exported functions in R (median 30 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](https://docs.ropensci.org/pkgcheck/reference/checks_to_markdown.html) 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 | 32| 90.5| | |files_vignettes | 7| 98.5| | |files_tests | 21| 96.6| | |loc_R | 3606| 92.6| | |loc_vignettes | 1181| 92.9| | |loc_tests | 2459| 95.4|TRUE | |num_vignettes | 5| 97.9|TRUE | |data_size_total | 1476| 61.7| | |data_size_median | 341| 58.2| | |n_fns_r | 146| 84.6| | |n_fns_r_exported | 22| 70.1| | |n_fns_r_not_exported | 124| 87.5| | |n_fns_per_file_r | 3| 49.3| | |num_params_per_fn | 4| 54.6| | |loc_per_fn_r | 30| 76.5| | |loc_per_fn_r_exp | 30| 63.0| | |loc_per_fn_r_not_exp | 30| 78.2| | |rel_whitespace_R | 13| 88.3| | |rel_whitespace_vignettes | 34| 95.3|TRUE | |rel_whitespace_tests | 8| 85.1| | |doclines_per_fn_exp | 74| 81.9| | |doclines_per_fn_not_exp | 0| 0.0|TRUE | |fn_call_network_size | 149| 85.1| | ---

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 [![tic](https://github.com/DPIRD-FSI/weatherOz/workflows/tic/badge.svg)](https://github.com/DPIRD-FSI/weatherOz/actions) **GitHub Workflow Results** | id|name |conclusion |sha | run_number|date | |----------:|:--------------------------|:----------|:------|----------:|:----------| | 7750449633|pages build and deployment |success |3d782a | 309|2024-02-02 | | 7750107982|tic |NA |9ce33b | 16|2024-02-02 | | 7683305424|Update tic |failure |08139a | 45|2024-01-28 | --- #### 3b. `goodpractice` results #### `R CMD check` with [rcmdcheck](https://r-lib.github.io/rcmdcheck/) rcmdcheck found no errors, warnings, or notes #### Test coverage with [covr](https://covr.r-lib.org/) Package coverage: 94.67 #### Cyclocomplexity with [cyclocomp](https://github.com/MangoTheCat/cyclocomp) The following function have cyclocomplexity >= 15: function | cyclocomplexity --- | --- find_nearby_stations | 19 #### Static code analyses with [lintr](https://github.com/jimhester/lintr) [lintr](https://github.com/jimhester/lintr) found the following 16 potential issues: message | number of times --- | --- Avoid library() and require() calls in packages | 2 Lines should not be more than 80 characters. | 14


4. Other Checks

Details of other checks (click to open)

:heavy_multiplication_x: The following function name is duplicated in other packages: - - `get_station_metadata` from stationaRy


Package Versions

|package |version | |:--------|:--------| |pkgstats |0.1.3.9 | |pkgcheck |0.1.2.13 |


Editor-in-Chief Instructions:

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

ldecicco-USGS commented 9 months ago

@JanLauGe , any comments on the response to review?

JanLauGe commented 9 months ago

Thanks for the ping, no concerns here. Great package and glad we had a few points where the feedback was useful!

ldecicco-USGS commented 9 months ago

Whoo hoo, thanks @JanLauGe and @rogerssam - we really appreciate the time and effort it takes to put together a nice review. @bozaah - congratulations 🎉 on a great and useful package!

ldecicco-USGS commented 9 months ago

@ropensci-review-bot approve weatherOz

ropensci-review-bot commented 9 months ago

Approved! Thanks @bozaah for submitting and @JanLauGe, @rogerssam for your reviews! :grin:

To-dos:

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. They 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.

bozaah commented 9 months ago

@ropensci-review-bot finalize transfer of weatherOz

ropensci-review-bot commented 9 months ago

Transfer completed. The weatherOz team is now owner of the repository and the author has been invited to the team

bozaah commented 9 months ago

Hi @ldecicco-USGS, I have made the transfer and tagged the bot to complete the process. We will work through the other items in the checklist next. We have also drafted a JOSS manuscript for submission, where can we find the next steps in the process please? Lastly, yhank you again for supporting us during the review and our appreciation to @JanLauGe and @rogerssam for their time and input improving our package.

ldecicco-USGS commented 9 months ago

All I know is: https://joss.readthedocs.io/en/latest/submitting.html

And mention in the submission you've gone through an rOpenSci review, I'd put a link to this github issue. I'll double check there aren't more specific rOpenSci recommendations.