ropensci / software-review

rOpenSci Software Peer Review.
291 stars 104 forks source link

spiro: Manage Data from Cardiopulmonary Exercise Testing #541

Closed smnnlt closed 2 years ago

smnnlt commented 2 years ago

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-22

Archive: TBD Version accepted: TBD

Language: en


Package: spiro
Title: Manage Data from Cardiopulmonary Exercise Testing
Version: 0.0.5
Authors@R: 
    person(given = "Simon",
           family = "Nolte",
           role = c("aut", "cre"),
           email = "s.nolte@dshs-koeln.de",
           comment = c(ORCID = "0000-0003-1643-1860"))
Description: Import, process, summarize and visualize raw data from 
    metabolic carts.
License: MIT + file LICENSE
URL: https://github.com/smnnlt/spiro, https://smnnlt.github.io/spiro/
BugReports: https://github.com/smnnlt/spiro/issues
Encoding: UTF-8
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.2.0
Imports: 
    ggplot2,
    xml2,
    readxl,
    knitr,
    cowplot,
    digest,
    signal
Suggests: 
    testthat (>= 3.0.0),
    rmarkdown,
    ggborderline
VignetteBuilder: knitr
Config/testthat/edition: 3

Scope

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

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

ropensci-review-bot commented 2 years ago

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

ropensci-review-bot commented 2 years ago

:rocket:

Editor check started

:wave:

ropensci-review-bot commented 2 years ago

Checks for spiro (v0.0.5)

git hash: 92301b28

Important: All failing checks above must be addressed prior to proceeding

Package License: MIT + file LICENSE


1. Package Dependencies

Details of Package Dependency Usage (click to open)

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

base

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)

spiro

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)

utils

data (106), read.delim (7), head (5), read.csv (3)

stats

smooth (20), time (13), approx (7), df (7), reshape (5), filter (2), end (1)

ggplot2

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)

xml2

xml_find_all (3), xml_text (3), read_xml (2), xml_children (1)

readxl

read_excel (6)

signal

butter (1), filtfilt (1)

cowplot

plot_grid (1)

mgcv

s (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 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| | ---

2a. Network visualisation

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


3. goodpractice and other checks

Details of goodpractice checks (click to open)

#### 3a. Continuous Integration Badges [![R-CMD-check](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!


4. Other Checks

Details of other checks (click to open)

: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 Versions

|package |version | |:--------|:--------| |pkgstats |0.0.4.75 | |pkgcheck |0.0.3.60 |


Editor-in-Chief Instructions:

Processing may not proceed until the items marked with :heavy_multiplication_x: have been resolved.

smnnlt commented 2 years ago

Hi, I have added examples and renamed the functions that may lead to namespace conflicts.

mpadge commented 2 years ago

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:)

smnnlt commented 2 years ago

@ropensci-review-bot check package

ropensci-review-bot commented 2 years ago

Thanks, about to send the query.

ropensci-review-bot commented 2 years ago

:rocket:

Editor check started

:wave:

ropensci-review-bot commented 2 years ago

Checks for spiro (v0.0.5.9000)

git hash: b5db6e6e

Package License: MIT + file LICENSE


1. Package Dependencies

Details of Package Dependency Usage (click to open)

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

base

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)

spiro

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)

utils

data (106), read.delim (7), head (5), read.csv (3)

stats

smooth (20), time (13), approx (7), df (7), reshape (5), filter (2), dt (1), end (1)

ggplot2

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)

xml2

xml_find_all (3), xml_text (3), read_xml (2), xml_children (1)

readxl

read_excel (6)

signal

butter (1), filtfilt (1)

cowplot

plot_grid (1)

mgcv

s (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 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| | ---

2a. Network visualisation

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


3. goodpractice and other checks

Details of goodpractice checks (click to open)

#### 3a. Continuous Integration Badges [![R-CMD-check](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 Versions

|package |version | |:--------|:--------| |pkgstats |0.0.4.75 | |pkgcheck |0.0.3.60 |


Editor-in-Chief Instructions:

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

emilyriederer commented 2 years ago

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.

emilyriederer commented 2 years ago

@ropensci-review-bot assign @melvidoni as editor

ropensci-review-bot commented 2 years ago

Assigned! @melvidoni is now the editor

melvidoni commented 2 years ago

@ropensci-review-bot seeking reviewers

ropensci-review-bot commented 2 years ago

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

melvidoni commented 2 years ago

I'm having some issues with finding reviewers. Please bear with me.

melvidoni commented 2 years ago

@ropensci-review-bot assign @jameshunterbr as reviewer

ropensci-review-bot commented 2 years ago

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

ropensci-review-bot commented 2 years ago

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

melvidoni commented 2 years ago

@smnnlt Just to let you know, I'm having trouble finding a second reviewer. I'll keep trying, but please bear with me.

melvidoni commented 2 years ago

@ropensci-review-bot assign @manuramon as reviewer

ropensci-review-bot commented 2 years ago

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

ropensci-review-bot commented 2 years ago

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

melvidoni commented 2 years ago

@ropensci-review-bot set due date for @manuramon to 2022-07-22.

ropensci-review-bot commented 2 years ago

:calendar: @jameshunterbr you have 2 days left before the due date for your review (2022-07-11).

jameshunterbr commented 2 years ago

spiro.index.nb.zip

melvidoni commented 2 years ago

spiro.index.nb.zip

Hello @jameshunterbr. Please remember to use the corresponding form to submit your review.

jameshunterbr commented 2 years ago

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

spiro.index.nb.zip

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: @.***>

manuramon commented 2 years ago

Hello! 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

Documentation

The package includes all the following forms of documentation:

Functionality

Estimated hours spent reviewing: 4 hours


Review Comments

Documentation

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.

Package testing

melvidoni commented 2 years ago

@ropensci-review-bot submit review https://github.com/ropensci/software-review/issues/541#issuecomment-1189164376 time 4

ropensci-review-bot commented 2 years ago

Logged review for manuramon (hours: 4)

melvidoni commented 2 years ago

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

smnnlt commented 2 years ago

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.

melvidoni commented 2 years ago

@jameshunterbr Please upload the review in the correct format.

melvidoni commented 2 years ago

@smnnlt I do not think @jameshunterbr will be updating the review. Can you access them? Can you please provide the answers here?

manuramon commented 2 years ago

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.

jameshunterbr commented 2 years ago

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\

Documentation

The package includes all the following forms of documentation:

Functionality

Estimated hours spent reviewing:6


Review Comments

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

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

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

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

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

jameshunterbr commented 2 years ago

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

melvidoni commented 2 years ago

@smnnlt can you please proceed now? @manuramon and @jameshunterbr thank you both.

smnnlt commented 2 years ago

Hi @manuramon @jameshunterbr

Thank you very much for your reviews! I'll respond to all issues raised by each report:

Response to @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 (smnnlt/spiro@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 (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.

Response to @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 (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 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 (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.

melvidoni commented 2 years ago

@ropensci-review-bot submit review time 4

ropensci-review-bot commented 2 years ago

Logged review for jameshunterbr (hours: 4)

melvidoni commented 2 years ago

Dear @jameshunterbr and @manuramon can you please check the changes on the post above? Let me know what you think.

jameshunterbr commented 2 years ago

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.

manuramon commented 2 years ago

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.

melvidoni commented 2 years ago

@ropensci-review-bot approve spiro

ropensci-review-bot commented 2 years ago

Approved! Thanks @smnnlt for submitting and @jameshunterbr, @manuramon 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.

smnnlt commented 2 years ago

@ropensci-review-bot finalize transfer of spiro

ropensci-review-bot commented 2 years ago

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

jameshunterbr commented 1 year ago

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