software-review icon indicating copy to clipboard operation
software-review copied to clipboard

spiro: Manage Data from Cardiopulmonary Exercise Testing

Open smnnlt opened this issue 2 years ago • 43 comments

Submitting Author Name: Simon Nolte Submitting Author Github Handle: @smnnlt Repository: https://github.com/smnnlt/spiro Version submitted: 0.0.5 Submission type: Standard Editor: @melvidoni Reviewers: @jameshunterbr, @manuramon

Due date for @jameshunterbr: 2022-07-11

Due date for @manuramon: 2022-07-22

Archive: TBD Version accepted: TBD

Language: en


  • Paste the full DESCRIPTION file inside a code block below:
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 = "[email protected]",
           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

  • Please indicate which category or categories from our package fit policies this package falls under: (Please check an appropriate box below. If you are unsure, we suggest you make a pre-submission inquiry.):

    • [ ] data retrieval
    • [X] data extraction
    • [X] data munging
    • [ ] data deposition
    • [ ] data validation and testing
    • [ ] workflow automation
    • [ ] version control
    • [ ] citation management and bibliometrics
    • [ ] scientific software wrappers
    • [ ] field and lab reproducibility tools
    • [ ] database software bindings
    • [ ] geospatial data
    • [ ] text analysis
  • Explain how and why the package falls under these categories (briefly, 1-2 sentences):

The spiro package allows to read and process data from raw data files of different metabolic carts.

  • Who is the target audience and what are scientific applications of this package?

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.

  • If you made a pre-submission inquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted.

#537

  • Explain reasons for any 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)
  • (Scope: Do consider MEE's Aims and Scope for your manuscript. We make no guarantee that your manuscript will be within MEE scope.)
  • (Although not required, we strongly recommend having a full manuscript prepared when you submit here.)
  • (Please do not submit your package separately to Methods in Ecology and Evolution)

Code of conduct

  • [X] I agree to abide by rOpenSci's Code of Conduct during the review process and in maintaining my package should it be accepted.

smnnlt avatar Jun 09 '22 10:06 smnnlt

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

ropensci-review-bot avatar Jun 09 '22 10:06 ropensci-review-bot

:rocket:

Editor check started

:wave:

ropensci-review-bot avatar Jun 09 '22 10:06 ropensci-review-bot

Checks for spiro (v0.0.5)

git hash: 92301b28

  • :heavy_check_mark: Package name is available
  • :heavy_check_mark: has a 'codemeta.json' file.
  • :heavy_check_mark: has a 'contributing' file.
  • :heavy_check_mark: uses 'roxygen2'.
  • :heavy_check_mark: 'DESCRIPTION' has a URL field.
  • :heavy_check_mark: 'DESCRIPTION' has a BugReports field.
  • :heavy_check_mark: Package has at least one HTML vignette
  • :heavy_multiplication_x: These functions do not have examples: [bw_filter, get_features, get_testtype, guess_device, knit_print.spiro, print.spiro, spiro_import_cortex, spiro_import_cosmed, spiro_import_vyntus, spiro_import_zan, spiro_interpolate, spiro_smooth].
  • :heavy_multiplication_x: Function names are duplicated in other packages
  • :heavy_check_mark: Package has continuous integration checks.
  • :heavy_check_mark: Package coverage is 91.3%.
  • :heavy_check_mark: R CMD check found no errors.
  • :heavy_check_mark: R CMD check found no warnings.

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(<path/to/repo>)', 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

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

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

rcmdcheck found no errors, warnings, or notes

Test coverage with covr

Package coverage: 91.29

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

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.

ropensci-review-bot avatar Jun 09 '22 10:06 ropensci-review-bot

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

smnnlt avatar Jun 09 '22 13:06 smnnlt

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

mpadge avatar Jun 09 '22 16:06 mpadge

@ropensci-review-bot check package

smnnlt avatar Jun 09 '22 19:06 smnnlt

Thanks, about to send the query.

ropensci-review-bot avatar Jun 09 '22 19:06 ropensci-review-bot

:rocket:

Editor check started

:wave:

ropensci-review-bot avatar Jun 09 '22 19:06 ropensci-review-bot

Checks for spiro (v0.0.5.9000)

git hash: b5db6e6e

  • :heavy_check_mark: Package name is available
  • :heavy_check_mark: has a 'codemeta.json' file.
  • :heavy_check_mark: has a 'contributing' file.
  • :heavy_check_mark: uses 'roxygen2'.
  • :heavy_check_mark: 'DESCRIPTION' has a URL field.
  • :heavy_check_mark: 'DESCRIPTION' has a BugReports field.
  • :heavy_check_mark: Package has at least one HTML vignette
  • :heavy_check_mark: All functions have examples.
  • :heavy_check_mark: Package has continuous integration checks.
  • :heavy_check_mark: Package coverage is 91.3%.
  • :heavy_check_mark: R CMD check found no errors.
  • :heavy_check_mark: R CMD check found no warnings.

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(<path/to/repo>)', 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

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

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

rcmdcheck found no errors, warnings, or notes

Test coverage with covr

Package coverage: 91.29

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

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

ropensci-review-bot avatar Jun 09 '22 19:06 ropensci-review-bot

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 avatar Jun 13 '22 23:06 emilyriederer

@ropensci-review-bot assign @melvidoni as editor

emilyriederer avatar Jun 16 '22 22:06 emilyriederer

Assigned! @melvidoni is now the editor

ropensci-review-bot avatar Jun 16 '22 22:06 ropensci-review-bot

@ropensci-review-bot seeking reviewers

melvidoni avatar Jun 16 '22 22:06 melvidoni

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

ropensci-review-bot avatar Jun 16 '22 22:06 ropensci-review-bot

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

melvidoni avatar Jun 19 '22 20:06 melvidoni

@ropensci-review-bot assign @jameshunterbr as reviewer

melvidoni avatar Jun 20 '22 21:06 melvidoni

@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 avatar Jun 20 '22 22:06 ropensci-review-bot

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

ropensci-review-bot avatar Jun 20 '22 22:06 ropensci-review-bot

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

melvidoni avatar Jun 27 '22 20:06 melvidoni

@ropensci-review-bot assign @manuramon as reviewer

melvidoni avatar Jun 29 '22 20:06 melvidoni

@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 avatar Jun 29 '22 20:06 ropensci-review-bot

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

ropensci-review-bot avatar Jun 29 '22 20:06 ropensci-review-bot

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

melvidoni avatar Jun 29 '22 20:06 melvidoni

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

ropensci-review-bot avatar Jul 09 '22 22:07 ropensci-review-bot

spiro.index.nb.zip

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

melvidoni avatar Jul 10 '22 23:07 melvidoni

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

jameshunterbr avatar Jul 11 '22 10:07 jameshunterbr

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:

  • [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
  • [x] 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
  • [x] Community guidelines: including contribution guidelines in the README or CONTRIBUTING, and DESCRIPTION with URL, BugReports and Maintainer (which may be autogenerated via Authors@R).

Functionality

  • [x] Installation: Installation succeeds as documented.
  • [x] Functionality: Any functional claims of the software been confirmed.
  • [x] Performance: Any performance claims of the software been confirmed.
  • [x] 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.
  • [x] Packaging guidelines: The package conforms to the rOpenSci packaging guidelines.

Estimated hours spent reviewing: 4 hours

  • [x] Should the author(s) deem it appropriate, I agree to be acknowledged as a package reviewer ("rev" role) in the package DESCRIPTION file.

Review Comments

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.

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

Package testing

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

manuramon avatar Jul 19 '22 15:07 manuramon

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

melvidoni avatar Jul 19 '22 21:07 melvidoni

Logged review for manuramon (hours: 4)

ropensci-review-bot avatar Jul 19 '22 21:07 ropensci-review-bot