Closed smnnlt closed 2 years ago
Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help
for help.
:rocket:
Editor check started
:wave:
git hash: 92301b28
Important: All failing checks above must be addressed prior to proceeding
Package License: MIT + file LICENSE
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 | 311|
|internal |spiro | 139|
|internal |utils | 121|
|internal |stats | 55|
|internal |mgcv | 1|
|imports |ggplot2 | 51|
|imports |xml2 | 9|
|imports |readxl | 6|
|imports |signal | 2|
|imports |cowplot | 1|
|imports |knitr | NA|
|imports |digest | NA|
|suggests |testthat | NA|
|suggests |rmarkdown | NA|
|suggests |ggborderline | 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(
c (57), data.frame (24), file (23), list (18), which (16), as.numeric (13), nrow (12), max (10), seq_along (10), attr (8), raw (8), rep.int (8), round (7), length (6), diff (5), lapply (5), range (5), vapply (5), as.data.frame (4), cbind (4), names (4), switch (4), drop (3), for (3), is.na (3), suppressWarnings (3), colnames (2), do.call (2), mean (2), min (2), numeric (2), rep (2), rev (2), rownames (2), split (2), strsplit (2), suppressMessages (2), unique (2), anyDuplicated (1), apply (1), as.character (1), character (1), duplicated (1), factor (1), grepl (1), levels (1), list.files (1), ls (1), mapply (1), paste0 (1), rbind (1), row.names (1), seq_len (1), seq.int (1), sum (1), system.file (1), unlist (1)
get_data (29), get_meta (10), spiro_smooth (10), get_sex (4), to_seconds (4), to_number (3), add_bodymass (2), add_protocol (2), bw_smooth_extract (2), calo.internal (2), check_bb (2), dupl (2), get_id (2), get_smooth_data (2), get_wrongcol_string (2), getstepmeans (2), gettime (2), hr_import (2), import_xml (2), replace_intna (2), smooth_match (2), spiro_import (2), spiro_interpolate (2), spiro_interpolate.internal (2), spiro_plot.guess_units (2), spiro_plot.internal (2), add_hr (1), bw_filter (1), calo (1), const (1), get_features (1), get_protocol (1), get_testtype (1), guess_device (1), hr_interpolate (1), knit_print.spiro (1), mavg (1), pre (1), print.spiro (1), set_protocol (1), set_protocol_manual (1), set_protocol_manual.data.frame (1), set_protocol_manual.default (1), spiro (1), spiro_anonymize (1), spiro_example (1), spiro_import_cortex (1), spiro_import_cosmed (1), spiro_import_vyntus (1), spiro_import_zan (1), spiro_max (1), spiro_plot (1), spiro_plot_EQ (1), spiro_plot_EQCO2 (1), spiro_plot_HR (1), spiro_plot_Pet (1), spiro_plot_RER (1), spiro_plot_VE (1), spiro_plot_vent (1), spiro_plot_VO2 (1), spiro_plot_vslope (1), spiro_smooth.internal (1), spiro_summary (1), steps (1), theme_spiro (1)
data (106), read.delim (7), head (5), read.csv (3)
smooth (20), time (13), approx (7), df (7), reshape (5), filter (2), end (1)
aes (20), ggplot (8), labs (7), scale_colour_manual (5), scale_y_continuous (3), sec_axis (3), aes_ (2), scale_color_manual (1), scale_fill_manual (1), theme_minimal (1)
xml_find_all (3), xml_text (3), read_xml (2), xml_children (1)
read_excel (6)
butter (1), filtfilt (1)
plot_grid (1)
s (1)
base
spiro
utils
stats
ggplot2
xml2
readxl
signal
cowplot
mgcv
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
The package has: - code in R (100% in 15 files) and - 1 authors - 2 vignettes - no internal data file - 7 imported packages - 31 exported functions (median 20 lines of code) - 103 non-exported functions in R (median 15 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 | 15| 73.0| | |files_vignettes | 2| 85.7| | |files_tests | 11| 91.7| | |loc_R | 1563| 79.1| | |loc_vignettes | 208| 50.8| | |loc_tests | 275| 62.3| | |num_vignettes | 2| 89.2| | |n_fns_r | 134| 83.0| | |n_fns_r_exported | 31| 79.2| | |n_fns_r_not_exported | 103| 84.4| | |n_fns_per_file_r | 5| 67.1| | |num_params_per_fn | 2| 11.9| | |loc_per_fn_r | 16| 49.2| | |loc_per_fn_r_exp | 20| 46.7| | |loc_per_fn_r_not_exp | 15| 49.5| | |rel_whitespace_R | 17| 77.3| | |rel_whitespace_vignettes | 37| 54.2| | |rel_whitespace_tests | 18| 55.9| | |doclines_per_fn_exp | 32| 36.7| | |doclines_per_fn_not_exp | 0| 0.0|TRUE | |fn_call_network_size | 124| 82.6| | ---
Click to see the interactive network visualisation of calls between objects in package
goodpractice
and other checks#### 3a. Continuous Integration Badges [![R-CMD-check](https://github.com/smnnlt/spiro/workflows/R-CMD-check/badge.svg)](https://github.com/smnnlt/spiro/actions) **GitHub Workflow Results** | id|name |conclusion |sha | run_number|date | |----------:|:--------------------------|:----------|:------|----------:|:----------| | 2462665426|pages build and deployment |success |33cc31 | 26|2022-06-08 | | 2459834392|pkgdown |success |92301b | 68|2022-06-08 | | 2459834396|R-CMD-check |failure |92301b | 40|2022-06-08 | | 2459834394|test-coverage |success |92301b | 39|2022-06-08 | --- #### 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: 91.29 #### Cyclocomplexity with [cyclocomp](https://github.com/MangoTheCat/cyclocomp) No functions have cyclocomplexity >= 15 #### Static code analyses with [lintr](https://github.com/jimhester/lintr) [lintr](https://github.com/jimhester/lintr) found no issues with this package!
:heavy_multiplication_x: The following 4 function names are duplicated in other packages: - - `const` from arpr, CMLS, labdsv, sketch, timereg - - `get_id` from CVXR, epicontacts, eventr, IOHanalyzer, panelr, rbenvo, rmonad, seqmagick - - `pre` from DAMisc, html5, htmltools, pre, supernova, yonder - - `steps` from amt, ddpcr, fitbitr, shiny.semantic
|package |version | |:--------|:--------| |pkgstats |0.0.4.75 | |pkgcheck |0.0.3.60 |
Processing may not proceed until the items marked with :heavy_multiplication_x: have been resolved.
Hi, I have added examples and renamed the functions that may lead to namespace conflicts.
Thanks @smnnlt , we've recently added an ability for submitting authors to directly call ˋ@ropensci-review-bot check packageˋ. Feel free to give that a try, to re-run the checks. (You'd get to be the first author to do so :rocket:)
@ropensci-review-bot check package
Thanks, about to send the query.
:rocket:
Editor check started
:wave:
git hash: b5db6e6e
Package License: MIT + file LICENSE
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 | 311|
|internal |spiro | 139|
|internal |utils | 121|
|internal |stats | 56|
|internal |mgcv | 1|
|imports |ggplot2 | 51|
|imports |xml2 | 9|
|imports |readxl | 6|
|imports |signal | 2|
|imports |cowplot | 1|
|imports |knitr | NA|
|imports |digest | NA|
|suggests |testthat | NA|
|suggests |rmarkdown | NA|
|suggests |ggborderline | 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(
c (57), data.frame (24), file (23), list (18), which (16), as.numeric (13), nrow (12), max (10), seq_along (10), attr (8), raw (8), rep.int (8), round (7), length (6), diff (5), lapply (5), range (5), vapply (5), as.data.frame (4), cbind (4), names (4), switch (4), drop (3), for (3), is.na (3), suppressWarnings (3), colnames (2), do.call (2), mean (2), min (2), numeric (2), rep (2), rev (2), rownames (2), split (2), strsplit (2), suppressMessages (2), unique (2), anyDuplicated (1), apply (1), as.character (1), character (1), duplicated (1), factor (1), grepl (1), levels (1), list.files (1), ls (1), mapply (1), paste0 (1), rbind (1), row.names (1), seq_len (1), seq.int (1), sum (1), system.file (1), unlist (1)
get_data (29), get_meta (10), spiro_smooth (10), get_sex (4), to_seconds (4), add_bodymass (2), add_protocol (2), bw_smooth_extract (2), calo.internal (2), check_bb (2), dupl (2), get_anonid (2), get_smooth_data (2), get_wrongcol_string (2), getstepmeans (2), gettime (2), hr_import (2), import_xml (2), replace_intna (2), smooth_match (2), spiro_import (2), spiro_interpolate (2), spiro_interpolate.internal (2), spiro_plot.guess_units (2), spiro_plot.internal (2), to_number (2), add_hr (1), bw_filter (1), calo (1), get_features (1), get_protocol (1), get_testtype (1), guess_device (1), hr_interpolate (1), knit_print.spiro (1), mavg (1), print.spiro (1), pt_const (1), pt_pre (1), pt_steps (1), pt_wu (1), set_protocol (1), set_protocol_manual (1), set_protocol_manual.data.frame (1), set_protocol_manual.default (1), spiro (1), spiro_anonymize (1), spiro_example (1), spiro_import_cortex (1), spiro_import_cosmed (1), spiro_import_vyntus (1), spiro_import_zan (1), spiro_max (1), spiro_plot (1), spiro_plot_EQ (1), spiro_plot_EQCO2 (1), spiro_plot_HR (1), spiro_plot_Pet (1), spiro_plot_RER (1), spiro_plot_VE (1), spiro_plot_vent (1), spiro_plot_VO2 (1), spiro_plot_vslope (1), spiro_smooth.internal (1), spiro_summary (1), theme_spiro (1)
data (106), read.delim (7), head (5), read.csv (3)
smooth (20), time (13), approx (7), df (7), reshape (5), filter (2), dt (1), end (1)
aes (20), ggplot (8), labs (7), scale_colour_manual (5), scale_y_continuous (3), sec_axis (3), aes_ (2), scale_color_manual (1), scale_fill_manual (1), theme_minimal (1)
xml_find_all (3), xml_text (3), read_xml (2), xml_children (1)
read_excel (6)
butter (1), filtfilt (1)
plot_grid (1)
s (1)
base
spiro
utils
stats
ggplot2
xml2
readxl
signal
cowplot
mgcv
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
The package has: - code in R (100% in 15 files) and - 1 authors - 2 vignettes - no internal data file - 7 imported packages - 23 exported functions (median 14 lines of code) - 111 non-exported functions in R (median 16 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 | 15| 73.0| | |files_vignettes | 2| 85.7| | |files_tests | 11| 91.7| | |loc_R | 1563| 79.1| | |loc_vignettes | 208| 50.8| | |loc_tests | 275| 62.3| | |num_vignettes | 2| 89.2| | |n_fns_r | 134| 83.0| | |n_fns_r_exported | 23| 71.4| | |n_fns_r_not_exported | 111| 85.7| | |n_fns_per_file_r | 5| 67.1| | |num_params_per_fn | 3| 33.6| | |loc_per_fn_r | 16| 49.2| | |loc_per_fn_r_exp | 14| 33.2| | |loc_per_fn_r_not_exp | 16| 52.7| | |rel_whitespace_R | 17| 77.2| | |rel_whitespace_vignettes | 37| 54.2| | |rel_whitespace_tests | 18| 55.9| | |doclines_per_fn_exp | 40| 50.1| | |doclines_per_fn_not_exp | 0| 0.0|TRUE | |fn_call_network_size | 124| 82.6| | ---
Click to see the interactive network visualisation of calls between objects in package
goodpractice
and other checks#### 3a. Continuous Integration Badges [![R-CMD-check](https://github.com/smnnlt/spiro/workflows/R-CMD-check/badge.svg)](https://github.com/smnnlt/spiro/actions) **GitHub Workflow Results** | id|name |conclusion |sha | run_number|date | |----------:|:--------------------------|:----------|:------|----------:|:----------| | 2468348888|pages build and deployment |success |cd779d | 27|2022-06-09 | | 2468334160|pkgdown |success |b5db6e | 70|2022-06-09 | | 2468334164|R-CMD-check |failure |b5db6e | 42|2022-06-09 | | 2468334158|test-coverage |success |b5db6e | 41|2022-06-09 | --- #### 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: 91.29 #### Cyclocomplexity with [cyclocomp](https://github.com/MangoTheCat/cyclocomp) No functions have cyclocomplexity >= 15 #### Static code analyses with [lintr](https://github.com/jimhester/lintr) [lintr](https://github.com/jimhester/lintr) found the following 1 potential issues: message | number of times --- | --- Lines should not be more than 80 characters. | 1
|package |version | |:--------|:--------| |pkgstats |0.0.4.75 | |pkgcheck |0.0.3.60 |
This package is in top shape and may be passed on to a handling editor
Hi @smnnlt ! Thank you for the full submission and your proactive work addressing the bots feedback. I'm currently seeking a handling editor and hope to kick-off the full review soon.
@ropensci-review-bot assign @melvidoni as editor
Assigned! @melvidoni is now the editor
@ropensci-review-bot seeking reviewers
Please add this badge to the README of your package repository:
[![Status at rOpenSci Software Peer Review](https://badges.ropensci.org/541_status.svg)](https://github.com/ropensci/software-review/issues/541)
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
I'm having some issues with finding reviewers. Please bear with me.
@ropensci-review-bot assign @jameshunterbr as reviewer
@jameshunterbr added to the reviewers list. Review due date is 2022-07-11. Thanks @jameshunterbr for accepting to review! Please refer to our reviewer guide.
@jameshunterbr: If you haven't done so, please fill this form for us to update our reviewers records.
@smnnlt Just to let you know, I'm having trouble finding a second reviewer. I'll keep trying, but please bear with me.
@ropensci-review-bot assign @manuramon as reviewer
@manuramon added to the reviewers list. Review due date is 2022-07-20. Thanks @manuramon for accepting to review! Please refer to our reviewer guide.
@manuramon: If you haven't done so, please fill this form for us to update our reviewers records.
@ropensci-review-bot set due date for @manuramon to 2022-07-22.
:calendar: @jameshunterbr you have 2 days left before the due date for your review (2022-07-11).
Hello @jameshunterbr. Please remember to use the corresponding form to submit your review.
Melina Vidoni This message is eligible for Automatic Cleanup! @.***) Add cleanup rule | More info spiro.index.nb.zip Hello @jameshunterbr. Please remember to use the corresponding form to submit your review. Hi, Melina: I'm confused. I used the package pkgreviewr as recommended in the Guide for Reviewers to prepare the report. Is that incorrect. My report used the template included in that package. Certainly the output it generated was far in excess of what I would normally send as a review for an article for example. I compressed the result to a zip as that was the only format I had that the space for the review accepted. How should I have submitted the review? Regards, Jim
https://github.com/ropensci-org/pkgreviewr https://github.com/ropensci-org/pkgreviewr GitHub - ropensci-org/pkgreviewr: R package to facilitate rOpenSci package reviews. R package to facilitate rOpenSci package reviews. Contribute to ropensci-org/pkgreviewr development by creating an account on GitHub. https://github.com/ropensci-org/pkgreviewr
James Hunter [1mu1q0]
Prof. James R. Hunter, PhDBioinformática Laboratório de Retrovirologia Escola Paulista de Medicina Universidade Federal de São Paulo Cel: (55-11) 9-5327-5656 Rua Pedro de Toledo 669 6º Andar Fundos 04039-032 São Paulo, SP, BRASIL Fone (11) 5576-4834
On July 11, 2022 at 0:01 GMT, Melina Vidoni @.***> wrote:
Boxbe This message is eligible for Automatic Cleanup! @.***) Add cleanup rule | More info
Hello @.***(https://github.com/jameshunterbr). Please remember to use the corresponding form to submit your review.
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
Hello! Here is my 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
The package includes all the following forms of documentation:
URL
, BugReports
and Maintainer
(which may be autogenerated via Authors@R
).Estimated hours spent reviewing: 4 hours
The spiro
packages focus on cardiopulmonar data and aims to standardize data import - from different available formats - and data processing and visualization.
Just to note, there is already another package with the name spiro developed for creating spirographs.
README file sets out the background and the objectives addressed by the package. The inclusion of which devices are supported by this package in the README file is well appreciated.
Installation procedures are covered. No information on other package dependencies are provided.
Vignettes run successfully locally. "Import & Processing" Vignette includes information on formats (devices) supported by this packages as well as other useful information on how to import this data. "Summarizing & Plotting" vignette explains how to get resume measures from raw data and how to plot it.
Documentation for all external functions are provided with examples. As a suggestion, some of the examples show the functionality of the functions without assigning the output to a target, which results in printing the entire (truncated) database on the screen. In my opinion, I think it would be preferable to display only the header of that output. An alternative solution could be to modify the print.spiro
function to show only a set of rows.
Installation have worked well on Linux and macOS platforms (not tested on Windows, sorry).
Package testing with devtools::check()
on spiro
returned 0 errors.
Package testing with pkgcheck
or goodpractice::gp
result in some warnings on unit tests (81% of code lines are covered by test) and length of code lines in vignette files. The pkgcheck
function has also retuned a R CMD check error in the DESCRIPTION
file -> Required fields missing or empty:'Author' 'Maintainer'
Functions included in the package works as expected. A suggestion for spiro_plot
function would be to include and argument to define the layout of the plot. I think it is easy to implement and could help to obtain graphs in a desirable layout (3x3 by default), especially when a subset of the 9 graphs is plotted.
A doubt about the functionality of the package is whether the functions allow to vectorize the actions across participants. If I understood correctly, the example databases are data measured on the same individual (one only) and, for example, the correction for body mass is done by giving the body mass data of this individual. Is it possible to read databases containing information from several individuals and work with the functions per individual? Maybe this question does not make sense and in this field it is usual to work with each file separately.
@ropensci-review-bot submit review https://github.com/ropensci/software-review/issues/541#issuecomment-1189164376 time 4
Logged review for manuramon (hours: 4)
@jameshunterbr You have to add a comment with the review completed as the templated, as the one we just lodged above.
You have to follow the review template which is in point 7.1 of the reviewing guide. I can't open the file you uploaded.
Hi,
I've started working on changes in response to the comments in the dev-branch of the package. I'll wait for @jameshunterbr to submit the review in the desired form before I'll respond to all comments here.
@jameshunterbr Please upload the review in the correct format.
@smnnlt I do not think @jameshunterbr will be updating the review. Can you access them? Can you please provide the answers here?
Hi @melvidoni and @smnnlt , I paste below the review submitted by @jameshunterbr in the zip file, in case it helps you. If finally @jameshunterbr uploads the review in a proper format, I will remove this comment.
All the best
08/17/22: edited (removed) as @jameshunterbr added his 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.
[X] As the reviewer I confirm that there are no conflicts of interest](https://devguide.ropensci.org/policies.html#coi)) for me to review this work (if you are unsure whether you are in conflict, please speak to your editor before starting your review).
The package includes all the following forms of documentation:
[X ] A statement of need: clearly stating problems the software is designed to solve and its target audience in README
[X ] Installation instructions: for the development version of package and any non-standard dependencies in README
[ ] Vignette(s): demonstrating major functionality that runs successfully locally
[X ] Function Documentation: for all exported functions
[X ] Examples: (that run successfully locally) for all exported functions
[ ] Community guidelines: including contribution guidelines in the README or CONTRIBUTING, and DESCRIPTION with URL
, BugReports
and Maintainer
(which may be autogenerated via Authors@R
).
[X ] 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:6
My first observation is that all the functions listed in the main help screen have not yet been programmed. So either those that are unfinished should be removed and re-inserted in a later version when they are completed.
Likewise, there are no vignettes and there should be. In the README file you have examples, but they should be more complete so that someone in some outlying NHS locale can use them without constant referral to you.
In the newest version, the response to the installation command (remotes::install_github("smnnlt/spiro@v0.0.5") I received is the following:
URL '/help/library/spiro/html/00Index.html' not found
However, if I return to the 0.0.5 "stable version", the package help screen appears.
As well, the request for help on the spiro() command failed in the new version (xx.9000):
URL '/help/library/spiro/help/spiro' not found
Likewise, the 0.0.5 version produces the help screen for the spiro() command
You have some commands with very common command names like "pre" and "steps". I would rename these to something more specific to your project to avoid conflicts with other packages.
Regarding tests, they appear to cover the principal functions of the package and are complete. However, my system is not testing the coverage for some reason. Sorry.
Sorry about the delay in reformatting and resubmitting the review of Spiro. I hope this meets your format.
However, the previous version I uploaded was in response to an R package suggested in your Reviewer's Guidelines. I don't know how I was supposed to know that that format was not correct.
Sincerely,
James Hunter
@smnnlt can you please proceed now? @manuramon and @jameshunterbr thank you both.
Hi @manuramon @jameshunterbr
Thank you very much for your reviews! I'll respond to all issues raised by each report:
As a suggestion, some of the examples show the functionality of the functions without assigning the output to a target, which results in printing the entire (truncated) database on the screen. In my opinion, I think it would be preferable to display only the header of that output. An alternative solution could be to modify the
print.spiro
function to show only a set of rows.
Thanks for the comment. I have rewritten the examples to to print only truncated output using the head() function (smnnlt/spiro@185d41c).
Package testing with
pkgcheck
orgoodpractice::gp
result in some warnings on unit tests (81% of code lines are covered by test) and length of code lines in vignette files. Thepkgcheck
function has also retuned a R CMD check error in theDESCRIPTION
file -> Required fields missing or empty:'Author' 'Maintainer'
I shortened the code lines in the vignettes (smnnlt/spiro@32597b5). I do not know the source for the R CMD error, since devtools::check()
and R CMD check via CI do not throw any errors.
Functions included in the package works as expected. A suggestion for
spiro_plot
function would be to include and argument to define the layout of the plot. I think it is easy to implement and could help to obtain graphs in a desirable layout (3x3 by default), especially when a subset of the 9 graphs is plotted.
This is a great idea! I have added an argument grid_args
to the spiro_plot()
function, which passes arguments to the internal cowplot::plot_grid()
call (smnnlt/spiro@5358f33). This allows to modify the layout of the plot arrangement (e.g. size, labels, alignment).
A doubt about the functionality of the package is whether the functions allow to vectorize the actions across participants. If I understood correctly, the example databases are data measured on the same individual (one only) and, for example, the correction for body mass is done by giving the body mass data of this individual. Is it possible to read databases containing information from several individuals and work with the functions per individual? Maybe this question does not make sense and in this field it is usual to work with each file separately.
You're completely right, the example database is only data for a single individual and in some cases the user may want to work with data from several individuals at once. The spiro package does currently not support native vectorization, but such functionality is easy to achieve using packages for vectorization such as {purrr}. For example, the case you mentioned (simultaneously vectorizing over individuals' data files and body mass data) could be dealt with purrr::map2(.x = list_of_rawdata, .y = list_of_bodymass, .f = spiro)
. I thought about adding such an example to the vignettes (or creating a new one), but I don't want the package to have a dependency on {purrr}. I may write this use case up in a blog post or embedded it into the article I plan to submit to JOSS.
My first observation is that all the functions listed in the main help screen have not yet been programmed. So either those that are unfinished should be removed and re-inserted in a later version when they are completed.
All exported functions should now have documentation pages including examples (smnnlt/spiro@cfb64f1).
Likewise, there are no vignettes and there should be. In the README file you have examples, but they should be more complete so that someone in some outlying NHS locale can use them without constant referral to you.
The package has two vignettes (also available on its website). To be able to view them locally, be sure to state build_vignettes = TRUE
when running remotes::install_github()
. I have added some more context to the README (smnnlt/spiro@68e739a). Further examples can be found in the vignettes.
In the newest version, the response to the installation command
remotes::install_github("smnnlt/spiro@v0.0.5")
I received is the following:URL '/help/library/spiro/html/00Index.html' not found
. However, if I return to the 0.0.5 "stable version", the package help screen appears. As well, the request for help on thespiro()
command failed in the new version (xx.9000):URL '/help/library/spiro/help/spiro' not found
.
I'm sorry, but I could not reproduce these issues. On my devices, the package successfully builds the documentation pages when being installed.
You have some commands with very common command names like "pre" and "steps". I would rename these to something more specific to your project to avoid conflicts with other packages.
Thank for pointing out this important issue! I have renamed the functions that may cause name conflicts with popular packages (smnnlt/spiro@0c7b2ed & smnnlt/spiro@0199249).
Regarding tests, they appear to cover the principal functions of the package and are complete. However, my system is not testing the coverage for some reason. Sorry.
That's no problem. You may visit the project's Codecov page to get an impression on the package's code coverage.
Thanks again for both of your reports @manuramon @jameshunterbr . I have added you to the DESCRIPTION
as package reviewers (smnnlt/spiro@a980365). If you're fine with it, I would also add you to the 'Acknowledgement' section in the README
.
Logged review for jameshunterbr (hours: 4)
Dear @jameshunterbr and @manuramon can you please check the changes on the post above? Let me know what you think.
I have looked through the new changes that Simon has made and he has responded to my comments well. I would think he might be ready to change versions. What I see now, especially in terms of documentation, is much better and ready for publication.
Hi all.
Thanks @smnnlt for considering some of my suggestions. I have retested the spiro
package and everything works without errors. I have also tested the grid_args
argument in the spiro_plot
function. As I told you before, in my opinion it adds more flexibility in the plotting functionality. The example added in the spiro_plot
help helps to understand how this new function works.
@melvidoni I have nothing more to add to this review.
All the best.
@ropensci-review-bot approve spiro
Approved! Thanks @smnnlt for submitting and @jameshunterbr, @manuramon for your reviews! :grin:
To-dos:
@ropensci-review-bot invite me to ropensci/<package-name>
which will re-send an invitation.@ropensci-review-bot finalize transfer of <package-name>
where <package-name>
is the repo/package name. This will give you admin access back.pkgdown
website and are ok relying only on rOpenSci central docs building and branding,
pkgdown
website with a redirecting pagehttps://docs.ropensci.org/package_name
URL
field alongside the link to the GitHub repository, e.g.: URL: https://docs.ropensci.org/foobar, https://github.com/ropensci/foobar
codemetar::write_codemeta()
in the root of your package.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. 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.
@ropensci-review-bot finalize transfer of spiro
Transfer completed.
The spiro
team is now owner of the repository and the author has been invited to the team
Thanks for responding to the issues we raised and for the mention in the DESCRIPTION file. It would be fine to add me as a reviewer in the Acknowledgement section. Thank you.
Best regards,
James Hunter
————————————————— James R. Hunter, Ph.D. Laboratório de Retrovirologia Disciplina de Infectologia Departamento de Medicina Escola Paulista de Medicina Universidade Federal de São Paulo Cel: (11) 9-5327-5656
Rua Pedro de Toledo 669 6º Andar Fundos 04039-032 São Paulo, SP, BRASIL Fone (11) 5576-4834 —————————————————
------ Original Message ------ From "Simon Nolte" @.> To "ropensci/software-review" @.> Cc "James Hunter" @.>; "Mention" @.> Date 8/8/2022 15:32:59 Subject Re: [ropensci/software-review] spiro: Manage Data from Cardiopulmonary Exercise Testing (Issue #541)
Hi @manuramon @.*** https://github.com/jameshunterbr
Thank you very much for your reviews! I'll respond to all issues raised by each report:
Response to @manuramon https://github.com/manuramon
As a suggestion, some of the examples show the functionality of the functions without assigning the output to a target, which results in printing the entire (truncated) database on the screen. In my opinion, I think it would be preferable to display only the header of that output. An alternative solution could be to modify the print.spiro function to show only a set of rows.
Thanks for the comment. I have rewritten the examples to to print only truncated output using the head() function @.*** https://github.com/smnnlt/spiro/commit/185d41c).
Package testing with pkgcheck or goodpractice::gp result in some warnings on unit tests (81% of code lines are covered by test) and length of code lines in vignette files. The pkgcheck function has also retuned a R CMD check error in the DESCRIPTION file -> Required fields missing or empty:'Author' 'Maintainer'
I shortened the code lines in the vignettes @.*** https://github.com/smnnlt/spiro/commit/32597b5). I do not know the source for the R CMD error, since devtools::check() and R CMD check via CI do not throw any errors.
Functions included in the package works as expected. A suggestion for spiro_plot function would be to include and argument to define the layout of the plot. I think it is easy to implement and could help to obtain graphs in a desirable layout (3x3 by default), especially when a subset of the 9 graphs is plotted.
This is a great idea! I have added an argument grid_args to the spiro_plot() function, which passes arguments to the internal cowplot::plot_grid() call @.*** https://github.com/smnnlt/spiro/commit/5358f33). This allows to modify the layout of the plot arrangement (e.g. size, labels, alignment).
A doubt about the functionality of the package is whether the functions allow to vectorize the actions across participants. If I understood correctly, the example databases are data measured on the same individual (one only) and, for example, the correction for body mass is done by giving the body mass data of this individual. Is it possible to read databases containing information from several individuals and work with the functions per individual? Maybe this question does not make sense and in this field it is usual to work with each file separately.
You're completely right, the example database is only data for a single individual and in some cases the user may want to work with data from several individuals at once. The spiro package does currently not support native vectorization, but such functionality is easy to achieve using packages for vectorization such as {purrr}. For example, the case you mentioned (simultaneously vectorizing over individuals' data files and body mass data) could be dealt with purrr::map2(.x = list_of_rawdata, .y = list_of_bodymass, .f = spiro). I thought about adding such an example to the vignettes (or creating a new one), but I don't want the package to have a dependency on {purrr}. I may write this use case up in a blog post or embedded it into the article I plan to submit to JOSS.
Response to @jameshunterbr https://github.com/jameshunterbr
My first observation is that all the functions listed in the main help screen have not yet been programmed. So either those that are unfinished should be removed and re-inserted in a later version when they are completed.
All exported functions should now have documentation pages including examples @.*** https://github.com/smnnlt/spiro/commit/cfb64f1).
Likewise, there are no vignettes and there should be. In the README file you have examples, but they should be more complete so that someone in some outlying NHS locale can use them without constant referral to you.
The package has two vignettes (also available on its website https://smnnlt.github.io/spiro/). To be able to view them locally, be sure to state build_vignettes = TRUE when running remotes::install_github(). I have added some more context to the README @.*** https://github.com/smnnlt/spiro/commit/68e739a). Further examples can be found in the vignettes.
In the newest version, the response to the installation command @.***") I received is the following: URL '/help/library/spiro/html/00Index.html' not found. However, if I return to the 0.0.5 "stable version", the package help screen appears. As well, the request for help on the spiro() command failed in the new version (xx.9000): URL '/help/library/spiro/help/spiro' not found.
I'm sorry, but I could not reproduce these issues. On my devices, the package successfully builds the documentation pages when being installed.
You have some commands with very common command names like "pre" and "steps". I would rename these to something more specific to your project to avoid conflicts with other packages.
Thank for pointing out this important issue! I have renamed the functions that may cause name conflicts with popular packages @. https://github.com/smnnlt/spiro/commit/0c7b2ed & @. https://github.com/smnnlt/spiro/commit/0199249).
Regarding tests, they appear to cover the principal functions of the package and are complete. However, my system is not testing the coverage for some reason. Sorry.
That's no problem. You may visit the project's Codecov https://app.codecov.io/gh/smnnlt/spiro page to get an impression on the package's code coverage.
Thanks again for both of your reports @manuramon @. https://github.com/jameshunterbr . I have added you to the DESCRIPTION as package reviewers @. https://github.com/smnnlt/spiro/commit/a980365). If you're fine with it, I would also add you to the 'Acknowledgement' section in the README.
— Reply to this email directly, view it on GitHub https://github.com/ropensci/software-review/issues/541#issuecomment-1208468118, or unsubscribe https://github.com/notifications/unsubscribe-auth/AASN2TCOS2VRAED3ZGDM3LDVYFHFXANCNFSM5YJSNCDA. You are receiving this because you were mentioned.Message ID: @.***>
-- This email has been checked for viruses by Avast antivirus software. www.avast.com
Date accepted: 2022-08-17 Submitting Author Name: Simon Nolte Submitting Author Github Handle: !--author1-->@smnnlt<!--end-author1-- Repository: https://github.com/smnnlt/spiro Version submitted: 0.0.5 Submission type: Standard Editor: !--editor-->@melvidoni<!--end-editor-- Reviewers: @jameshunterbr, @manuramon
Due date for @jameshunterbr: 2022-07-11 Due date for @manuramon: 2022-07-22Archive: TBD Version accepted: TBD
Language: en
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.):
Explain how and why the package falls under these categories (briefly, 1-2 sentences):
The spiro package allows to read and process data from raw data files of different metabolic carts.
This package is primarily written for researchers in exercise science, who want to make their analysis of cardiopulmonary exercise testing more standardized, reproducible and faster. It may also be used in a commercial context (e.g., training diagnostics business).
The whippr package has a different approach to the same problem. Compared to whippr, spiro has a more automated and simpler data workflow (basically one function for reading and processing data, and one function for summarizing or plotting). spiro has several relevant additional features, that whippr does not have: Automated detection and manual generation of exercise test protocols; data summary by load steps; adding and synchronizing external heart rate data; import of raw data file meta data; advanced data filtering methods (e.g., Butterworth filters; moving breath averages); Wasserman 9-Panel-Plots. Compared to whippr, the spiro package does not offer methods for VO2 kinetics analysis and automated outlier removal.
This package works with cardiopulmonary exercise data, which is per se sensitive health data. Meta data from the original raw data files is read and anonymized by default (with the exception of data on body mass, which is necessary to perform certain calculations of variables). The anonymization can optionally be deactivated by means of a function argument [spiro(anonymize = FALSE)], so that meta data is saved alongside the processed data. This may be helpful in some settings when there is no intent to share the data. Sharing of the resulting data in such situations could potentially reveal personal information, which is why this option is not activated by default.
537
pkgcheck
items which your package is unable to pass.Technical checks
Confirm each of the following by checking the box.
This package:
Publication options
[X] 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](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