Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Submission tidyqpcr - Quantitative PCR analysis in the tidyverse #470

Closed
12 of 25 tasks
ewallace opened this issue Oct 7, 2021 · 70 comments
Closed
12 of 25 tasks

Submission tidyqpcr - Quantitative PCR analysis in the tidyverse #470

ewallace opened this issue Oct 7, 2021 · 70 comments

Comments

@ewallace
Copy link

ewallace commented Oct 7, 2021

Date accepted: 2022-06-10
Submitting Author Name: Edward Wallace
Submitting Author Github Handle: @ewallace
Other Package Authors Github handles: @DimmestP
Repository: https://github.com/ewallace/tidyqpcr
Version submitted: 0.3.0
Submission type: Standard
Editor: @jooolia
Reviewers: @kelshmo

Due date for @kelshmo: 2021-11-19

Archive: TBD
Version accepted: TBD


  • Paste the full DESCRIPTION file inside a code block below:
Package: tidyqpcr
Type: Package
Title: Quantitative PCR Analysis with the Tidyverse
Version: 0.3
Authors@R: c(person("Edward", "Wallace", email = "Edward.Wallace@ed.ac.uk", role = c("aut", "cre")),
             person("Sam", "Haynes", email = "samuel.haynes10@gmail.com", role = c("ctb")))
Description: This package is for reproducible quantitative PCR (qPCR) analysis using packages from the tidyverse, notably dplyr and ggplot2. It normalizes (by ddCq), summarizes, and plots pre-calculated Cq data, and plots raw amplification and melt curves from Roche LightCycler machines. It does NOT (yet) calculate Cq data from amplification curves.
Depends: 
    R (>= 3.1.0),
    tibble,
    tidyr
Imports:
    rlang,
    dplyr,
    ggplot2,
    readr,
    forcats,
    assertthat,
    lifecycle
Suggests: knitr, 
    rmarkdown, 
    tidyverse,
    cowplot,
    testthat
VignetteBuilder: knitr
License: Apache License 2.0 + file LICENSE
LazyData: true
RoxygenNote: 7.1.1
Encoding: UTF-8
URL: https://github.com/ewallace/tidyqpcr, https://ewallace.github.io/tidyqpcr/
BugReports: https://github.com/ewallace/tidyqpcr/issues
Language: en-GB

Scope

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

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

tidyqpcr is an R package that empowers scientists to conduct reproducible, flexible, and best-practice compliant quantitative polymerase chain reaction (qPCR) analysis.

tidyqpcr offers a standardised user interface and structure for qPCR analysis, within the tidyverse paradigm of spreadsheet-like rectangular data frames and generic functions that build up complex analyses in a series of simple steps.

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

Any molecular biologist or bioinformatician who needs to design or analyse a qPCR experiment.

Quantitative PCR is among the most common techniques in biological and biomedical re-
search, used for the quantification of DNA and RNA.

Standardised and open-source qPCR analysis pipelines will encourage best-practices in the reporting of qPCR results, improve the evaluation of qPCR experiments and ultimately lead to increased confidence in conclusions based on qPCR data.

Some open-source libraries for qPCR analysis are available, notably qpcR (Spiess, 2018) and pcr (Ahmed & Kim, 2018). qpcR is a feature rich qPCR analysis package relying on an object-oriented approach using S4 classes. pcr is a less extensive qPCR analysis package based on the tidyverse suite of generic data-science tools using the paradigm of tidy data (spreadsheet-like rectangular data frames). However, available packages either assume extensive prior R knowledge, overlook best-practices in qPCR experiments, or lack extensive documentation. There remains a need for a qPCR analysis package that integrates with the user-friendly tidyverse, encourages the use of MIQE best-practice compliant experimental design, and provides detailed example analysis pipelines as R vignettes.

We presented tidyqpcr on the rOpenSci discussion page which Stefanie Butland and Sean Hughes kindly responded to. In response to @seaaan ’s comments we improved the vignettes, stuck to a consistent function naming convention and added functionality to calculate ddCq. We intend to add further functionality in future versions including: support for absolute quantification, support for multiple targets per well, and enabling the use of the plater package.

In email correspondence with Stefanie, we believe Julia Gustavsen would be a perfect editor for our project as they reviewed Sean’s plater package. As for reviewers, we think someone with experience in conducting assays for RNA/DNA quantification and normalisation would be of benefit because of the emphasis on experimental design best-practices.

Technical checks

Confirm each of the following by checking the box.

This package:

Publication options

  • Do you intend for this package to go on CRAN?

  • Do you intend for this package to go on Bioconductor?

  • Do you wish to submit an Applications Article about your package to Methods in Ecology and Evolution?

  • Do you wish to submit an Applications Article about your package to Journal of Open Source Software?

We have included a paper.md file in the repository as per JOSS instructions to authors.

Code of conduct

@ropensci-review-bot
Copy link
Collaborator

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

@ropensci-review-bot
Copy link
Collaborator

🚀

Editor check started

👋

@ewallace ewallace changed the title tidyqpcr - Quantitative PCR analysis in the tidyverse Submission tidyqpcr - Quantitative PCR analysis in the tidyverse Oct 7, 2021
@ropensci-review-bot
Copy link
Collaborator

Checks for tidyqpcr (v0.3)

git hash: 4bce0332

  • ✔️ Package name is available
  • ✖️ does not have a 'CITATION' file.
  • ✔️ has a 'codemeta.json' file.
  • ✖️ does not have a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✖️ These functions do not have examples: [calculate_deltacq_bysampleid.Rd].
  • ✖️ Package has no continuous integration checks.
  • ✔️ Package coverage is 79.7%.
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.

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

Package License: Apache License 2.0 + file LICENSE


1. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has:

  • code in R (100% in 6 files) and
  • 1 authors
  • 4 vignettes
  • no internal data file
  • 7 imported packages
  • 28 exported functions (median 8 lines of code)
  • 28 non-exported functions in R (median 11 lines of code)

Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:

  • loc = "Lines of Code"
  • fn = "function"
  • exp/not_exp = exported / not exported

The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

measure value percentile noteworthy
files_R 6 35.8
files_vignettes 4 94.3
files_tests 5 78.5
loc_R 339 32.0
loc_vignettes 1014 93.7
loc_tests 368 65.9
num_vignettes 4 96.0 TRUE
n_fns_r 56 52.0
n_fns_r_exported 28 74.9
n_fns_r_not_exported 28 40.8
n_fns_per_file_r 5 60.4
num_params_per_fn 3 33.1
loc_per_fn_r 10 40.0
loc_per_fn_r_exp 8 19.7
loc_per_fn_r_not_exp 11 51.8
rel_whitespace_R 10 22.3
rel_whitespace_vignettes 35 97.8 TRUE
rel_whitespace_tests 23 86.5
doclines_per_fn_exp 36 42.9
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 10 24.0

1a. Network visualisation

Interactive network visualisation of calls between objects in package can be viewed by clicking here


2. goodpractice and other checks

Details of goodpractice and other checks (click to open)


3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following notes:

  1. checking for hidden files and directories ... NOTE
    Found the following hidden files and directories:
    .github
    These were most likely included in error. See section ‘Package
    structure’ in the ‘Writing R Extensions’ manual.
  2. checking installed package size ... NOTE
    installed size is 12.7Mb
    sub-directories of 1Mb or more:
    doc 2.8Mb
    extdata 9.7Mb
  3. checking DESCRIPTION meta-information ... NOTE
    License components with restrictions not permitted:
    Apache License 2.0 + file LICENSE

R CMD check generated the following check_fails:

  1. no_description_depends
  2. rcmdcheck_not_permitted_license_restrictions
  3. rcmdcheck_hidden_files_and_directories
  4. rcmdcheck_reasonable_installed_size

Test coverage with covr

Package coverage: 79.72

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

lintr found the following 85 potential issues:

message number of times
Lines should not be more than 80 characters. 85


Package Versions

package version
pkgstats 0.0.2.3
pkgcheck 0.0.2.53


Editor-in-Chief Instructions:

Processing may not proceed until the items marked with ✖️ have been resolved.

@noamross
Copy link
Contributor

noamross commented Oct 8, 2021

@ropensci-review-bot assign @jooolia as editor

@ropensci-review-bot
Copy link
Collaborator

Assigned! @jooolia is now the editor

@DimmestP
Copy link

@ropensci-review-bot help

@ropensci-review-bot
Copy link
Collaborator

Hello @DimmestP, here are the things you can ask me to do:


# List all available commands
@ropensci-review-bot help

# Show our Code of Conduct
@ropensci-review-bot code of conduct

@DimmestP
Copy link

DimmestP commented Oct 13, 2021

Helpful!
@noamross or @jooolia

Hello!! Thank you for spending your time helping us improve tidyqpcr.

I have added a few commits to the main tidyqpcr repo that I think solve the remaining issues. How can I get the review bot to check again?

What is the process that it uses to check for function examples? I ran covr::package_coverage(type = "examples") locally and got 83.96% coverage. The 'missing' examples are from functions that are variations of other functions (which are documented with examples) and are linked together with a @describeIn tag. See scale_x_log2nice and scale_x_log10nice in the plot_helpers.R file.

@jooolia
Copy link
Member

jooolia commented Oct 15, 2021

@ropensci-review-bot check package

@ropensci-review-bot
Copy link
Collaborator

Thanks, about to send the query.

@ropensci-review-bot
Copy link
Collaborator

🚀

Editor check started

👋

@ropensci-review-bot
Copy link
Collaborator

Checks for tidyqpcr (v0.3)

git hash: 737cca43

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

Package License: Apache License 2.0 + file LICENSE


1. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has:

  • code in R (100% in 6 files) and
  • 1 authors
  • 4 vignettes
  • no internal data file
  • 7 imported packages
  • 28 exported functions (median 8 lines of code)
  • 28 non-exported functions in R (median 11 lines of code)

Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:

  • loc = "Lines of Code"
  • fn = "function"
  • exp/not_exp = exported / not exported

The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

measure value percentile noteworthy
files_R 6 35.8
files_vignettes 0 0.0 TRUE
files_tests 5 78.5
loc_R 339 32.0
loc_tests 368 65.9
num_vignettes 4 96.0 TRUE
n_fns_r 56 52.0
n_fns_r_exported 28 74.9
n_fns_r_not_exported 28 40.8
n_fns_per_file_r 5 60.4
num_params_per_fn 3 33.1
loc_per_fn_r 10 40.0
loc_per_fn_r_exp 8 19.7
loc_per_fn_r_not_exp 11 51.8
rel_whitespace_R 9 19.3
rel_whitespace_tests 23 86.5
doclines_per_fn_exp 48 60.4
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 10 24.0

1a. Network visualisation

Interactive network visualisation of calls between objects in package can be viewed by clicking here


2. goodpractice and other checks

Details of goodpractice and other checks (click to open)

3a. Continuous Integration Badges

github

GitHub Workflow Results

name conclusion sha date
.github/workflows/draft-pdf.yml success 737cca 2021-10-13
fair-software success 737cca 2021-10-13
R-CMD-check success 737cca 2021-10-13

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following notes:

  1. checking installed package size ... NOTE
    installed size is 12.7Mb
    sub-directories of 1Mb or more:
    doc 2.8Mb
    extdata 9.7Mb
  2. checking DESCRIPTION meta-information ... NOTE
    License components with restrictions not permitted:
    Apache License 2.0 + file LICENSE
  3. checking package subdirectories ... NOTE
    Found the following CITATION file in a non-standard place:
    CITATION.cff
    Most likely ‘inst/CITATION’ should be used instead.

R CMD check generated the following check_fails:

  1. no_description_depends
  2. rcmdcheck_not_permitted_license_restrictions
  3. rcmdcheck_citation_file_at_standard_place
  4. rcmdcheck_reasonable_installed_size

Test coverage with covr

Package coverage: 79.72

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

lintr found the following 94 potential issues:

message number of times
Lines should not be more than 80 characters. 94


Package Versions

package version
pkgstats 0.0.2.16
pkgcheck 0.0.2.86


Editor-in-Chief Instructions:

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

@jooolia
Copy link
Member

jooolia commented Oct 15, 2021

Hi @DimmestP,
I re-ran the checks and all looks good. I will start looking for reviewers.

Regarding the examples, there is no pre-set % that we require (as far as I know and from re-reading the packaging guide), right now it is stated as "Include extensive examples in the documentation", so I will let the reviewers comment on whether they think some functions are missing examples or not.

Thanks! Julia

@mpadge
Copy link
Member

mpadge commented Oct 15, 2021

@jooolia The above check is all ✔️, including

✔️ All functions have examples.

@jooolia
Copy link
Member

jooolia commented Oct 15, 2021

ha you are right @mpadge! thanks for pointing that out.

@jooolia
Copy link
Member

jooolia commented Oct 29, 2021

@ropensci-review-bot add @kelshmo to reviewers

@ropensci-review-bot
Copy link
Collaborator

@kelshmo added to the reviewers list. Review due date is 2021-11-19. Thanks @kelshmo for accepting to review! Please refer to our reviewer guide.

@ropensci-review-bot
Copy link
Collaborator

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

@jooolia
Copy link
Member

jooolia commented Nov 19, 2021

@ropensci-review-bot add @wolski to reviewers

@ropensci-review-bot
Copy link
Collaborator

@wolski added to the reviewers list. Review due date is 2021-12-10. Thanks @wolski for accepting to review! Please refer to our reviewer guide.

@ewallace
Copy link
Author

ewallace commented Jun 8, 2022

Hi @jooolia,

Thank you for this thorough check, it has helped a lot and given us more opportunity for improvements. @DimmestP and I have addressed these:

We hope that's everything for the review process? Let us know.

Also we are open to suggestions as to whether it is better to share via CRAN or via Bioconductor. I really don't know.

@jooolia
Copy link
Member

jooolia commented Jun 10, 2022

@ropensci-review-bot submit review #470 (comment) time 12

@jooolia
Copy link
Member

jooolia commented Jun 10, 2022

Dear @ewallace and @DimmestP,
Thanks for all your hard work. 👍 This looks good to me. Since @kelshmo has already approved I will approve this and we can move forward with the next steps.

Regarding CRAN vs. Bioconductor, my personal opinion is that it depends on your targeted users, dependencies and perhaps future plans for the package. Many rOpenSci packages are on CRAN. Right now I am aware (thanks to @maelle 's help) of two rOpenSci pacakges that are on Bioconductor: https://docs.ropensci.org/genbankr/ and https://github.com/YuLab-SMU/treeio . Both CRAN and Bioconductor have their own "gotchas" as detailed in dev guide sections 1.16 and 1.17 https://devguide.ropensci.org/building.html?q=bioconductor#bioconductor-gotchas

@jooolia
Copy link
Member

jooolia commented Jun 10, 2022

@ropensci-review-bot approve tidyqpcr

@ropensci-review-bot
Copy link
Collaborator

Approved! Thanks @ewallace for submitting and @kelshmo for your reviews! 😁

To-dos:

  • Transfer the repo to rOpenSci's "ropensci" GitHub organization under "Settings" in your repo. I have invited you to a team that should allow you to do so. You will need to enable two-factor authentication for your GitHub account.
    This invitation will expire after one week. If it happens write a comment @ropensci-review-bot invite me to ropensci/<package-name> which will re-send an invitation.
  • After transfer write a comment @ropensci-review-bot finalize transfer of <package-name> where <package-name> is the repo/package name. This will give you admin access back.
  • Fix all links to the GitHub repo to point to the repo under the ropensci organization.
  • Delete your current code of conduct file if you had one since rOpenSci's default one will apply, see https://devguide.ropensci.org/collaboration.html#coc-file
  • If you already had a pkgdown website and are ok relying only on rOpenSci central docs building and branding,
    • deactivate the automatic deployment you might have set up
    • remove styling tweaks from your pkgdown config but keep that config file
    • replace the whole current pkgdown website with a redirecting page
    • replace your package docs URL with https://docs.ropensci.org/package_name
    • In addition, in your DESCRIPTION file, include the docs link in the URL field alongside the link to the GitHub repository, e.g.: URL: https://docs.ropensci.org/foobar, https://github.com/ropensci/foobar
  • Fix any links in badges for CI and coverage to point to the new repository URL.
  • Increment the package version to reflect the changes you made during review. In NEWS.md, add a heading for the new version and one bullet for each user-facing change, and each developer-facing change that you think is relevant.
  • We're starting to roll out software metadata files to all rOpenSci packages via the Codemeta initiative, see https://docs.ropensci.org/codemetar/ for how to include it in your package, after installing the package - should be easy as running codemetar::write_codemeta() in the root of your package.
  • You can add this installation method to your package README install.packages("<package-name>", repos = "https://ropensci.r-universe.dev") thanks to R-universe.

Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"-type contributors in the Authors@R field (with their consent).

Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @ropensci/blog-editors in your reply. She will get in touch about timing and can answer any questions.

We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved.

Last but not least, you can volunteer as a reviewer via filling a short form.

@ewallace
Copy link
Author

@ropensci-review-bot finalize transfer of tidyqpcr

@ropensci-review-bot
Copy link
Collaborator

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

@ewallace
Copy link
Author

ewallace commented Jun 15, 2022

Thank you @jooolia.

  • Transfer the repo to rOpenSci's "ropensci" GitHub organization under "Settings" in your repo.
  • After transfer write a comment @ropensci-review-bot finalize transfer of where is the repo/package name. This will give you admin access back.
  • Fix all links to the GitHub repo to point to the repo under the ropensci organization.
  • Delete your current code of conduct file if you had one - NA.
  • If you already had a pkgdown website and are ok relying only on rOpenSci central docs building and branding,
  • Fix any links in badges for CI and coverage to point to the new repository URL.
  • Increment the package version to reflect the changes you made during review. In NEWS.md, add a heading for the new version and one bullet for each user-facing change, and each developer-facing change that you think is relevant.
  • We're starting to roll out software metadata files to all rOpenSci packages via the Codemeta initiative, see https://docs.ropensci.org/codemetar/ for how to include it in your package, after installing the package - should be easy as running codemetar::write_codemeta() in the root of your package.
  • You can add this installation method to your package README install.packages("", repos = "https://ropensci.r-universe.dev") thanks to R-universe. DID NOT DO this because I tried to install another ropensci package and dependencies didn't work. I don't know if it would work for ropensci.
  • Submit to JOSS, tidyqpcr review page at JOSS
  • Fix CRAN gotchas

These are all addressed in a branch pending review...

@ewallace
Copy link
Author

@ropensci-review-bot give codecov access to ropensci/tidy

@ropensci-review-bot
Copy link
Collaborator

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@ropensci-review-bot help

@mpadge
Copy link
Member

mpadge commented Jun 22, 2022

@ewallace We're just tring to find out why help isn't working there. Regardless, codecov access should be automatic with your first push to the repo in the ropensci org. I checked there and it's all set up properly. We'll fix the help issue in the meantime. Thanks.

@ewallace
Copy link
Author

ewallace commented Jun 22, 2022

Thank you @mpadge!

I was sufficiently confused to put a discussion point on adding codecov access to the dev guide and/or making it easier to know who to ask for help https://discuss.ropensci.org/t/staff-admin-team-codecov/2982

(apologies, I deleted the failed
@ropensci-review-bot help
after deciding it wasn't working)

@maelle
Copy link
Member

maelle commented Jun 23, 2022

@ropensci-review-bot help

@ropensci-review-bot
Copy link
Collaborator

Hello @maelle, here are the things you can ask me to do:


# Add a review's info to the ROpenSci logs
@ropensci-review-bot submit review <REVIEW_URL> time <REVIEW_HOURS(ex. 10.5)>

# List all available commands
@ropensci-review-bot help

# Show our Code of Conduct
@ropensci-review-bot code of conduct

# Switch to "seeking reviewers"
@ropensci-review-bot seeking reviewers

# Approves a package. This command will close the issue.
@ropensci-review-bot approve package-name

# Adds package's repo to the rOpenSci team. This command should be issued after approval and transfer of the package.
@ropensci-review-bot finalize transfer of package-name

# Mint package as [bronze/silver/gold]
@ropensci-review-bot mint silver

# Add a user to this issue's reviewers list
@ropensci-review-bot assign xxxxx as reviewer

# Remove a user from the reviewers list
@ropensci-review-bot remove xxxxx from reviewers

# Assign a user as the editor of this submission
@ropensci-review-bot assign @username as editor

# Put the submission on hold for the next 90 days
@ropensci-review-bot put on hold

# Remove the editor assigned to this submission
@ropensci-review-bot remove editor

# Change or add a review's due date for a reviewer
@ropensci-review-bot set due date for @reviewer to YYYY-MM-DD

# Close the issue
@ropensci-review-bot out of scope

# Various package checks
@ropensci-review-bot check package

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants