software-review
software-review copied to clipboard
Submission: phruta
Submitting Author Name: Cristian RomΓ‘n-Palacios Submitting Author Github Handle: @cromanpa94 Repository: https://github.com/cromanpa94/phruta Version submitted: 0.1.0 Submission type: Standard Editor: @annakrystalli Reviewers: @raynamharris, @fboehm
Due date for @raynamharris: 2021-12-13Due date for @fboehm: 2021-12-16 Archive: TBD Version accepted: TBD
- Paste the full DESCRIPTION file inside a code block below:
Package: phruta
Type: Package
Title: Phylogenetic Reconstruction and Time-dating
Version: 0.1.0
Authors@R: person("Cristian", "Roman Palacios", email = "[email protected]",
role = c("aut", "cre"))
Description: The phruta R package is designed to simplify the basic
phylogenetic pipeline. Specifically, all code is run within
the same program and data from intermediate steps are saved in
independent folders. Furthrmore, all code is run within the
same environment which increases the reproducibility of your analysis.
phruta retrieves gene sequences, combines newly downloaded and local
gene sequences, and performs sequence alignments.
Encoding: UTF-8
LazyData: true
biocViews: DECIPHER,
Biostrings
Depends: R (>= 3.5.0)
Imports:
rgbif,
pbapply,
rentrez,
taxize,
ape,
ips,
geiger,
methods,
DECIPHER,
Biostrings
RoxygenNote: 7.1.1
Suggests:
testthat (>= 3.0.0),
covr,
knitr,
markdown,
rmarkdown,
spelling,
utf8
VignetteBuilder: knitr
License: MIT + file LICENSE
Config/testthat/edition: 3
Language: en-US
Roxygen: list(markdown = TRUE)
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
- [x] 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):
phrutasimplifies the phylogenetic pipeline in R, increases reproducibility, and helps organizing information used to infer molecular phylogenies.phrutaretrieves sequences from genbank, curates the resulting files, perform multiple sequence alignment, and tree inference/dating. -
Who is the target audience and what are scientific applications of this package? Researchers, students, instructors, and analysts interesting in assembling phylogenies (and even time-calibrated phylogenies) for specific groups across the Tree of Life.
-
Are there other R packages that accomplish the same thing? If so, how does yours differ or meet our criteria for best-in-category? phylotaR retrieves orthologous clusters for particular clades. However, it has limited flexibility in terms of sampling outgroup taxa and (to my knowledge) does not perform any type of processing after retrieving the clusters.
-
(If applicable) Does your package comply with our guidance around Ethics, Data Privacy and Human Subjects Research?
-
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.
Technical checks
Confirm each of the following by checking the box.
- [x] I have read the guide for authors and rOpenSci packaging guide.
This package:
- [x] does not violate the Terms of Service of any service it interacts with.
- [x] has a CRAN and OSI accepted license.
- [x] contains a README with instructions for installing the development version.
- [x] includes documentation with examples for all functions, created with roxygen2.
- [x] contains a vignette with examples of its essential functions and uses.
- [x] has a test suite.
- [x] has continuous integration, including reporting of test coverage using services such as Travis CI, Coveralls and/or CodeCov.
Publication options
-
[x] Do you intend for this package to go on CRAN?
-
[ ] Do you intend for this package to go on Bioconductor?
-
[x] Do you wish to submit an Applications Article about your package to Methods in Ecology and Evolution? If so:
MEE Options
- [x] The package is novel and will be of interest to the broad readership of the journal.
- [x] The manuscript describing the package is no longer than 3000 words.
- [x] 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.
@ropensci-review-bot check package
Thanks, about to send the query.
Checks for phruta (v0.1.0)
git hash: 6356b12b
- :heavy_check_mark: Package uses 'roxygen2'
- :heavy_check_mark: Package has a 'contributing.md' file
- :heavy_multiplication_x: Package does not have a 'CITATION' file
- :heavy_multiplication_x: Package does not have a 'codemeta.json' file
- :heavy_check_mark: All functions have examples
- :heavy_multiplication_x: Package 'DESCRIPTION' does not have a URL field
- :heavy_multiplication_x: Package 'DESCRIPTION' does not have a BugReports field
- :heavy_check_mark: Package name is available
- :heavy_multiplication_x: Continuous integration checks unavailable (no URL in 'DESCRIPTION')
- :heavy_check_mark: Package coverage is 78.4%
- :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. 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 9 files) and
- 1 authors
- 2 vignettes
- 1 internal data file
- 10 imported packages
- 40 exported functions (median 35 lines of code)
- no non-exported function in R (median 5 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 | 9 | 51.3 | |
| files_vignettes | 3 | 90.8 | |
| files_tests | 3 | 71.1 | |
| loc_R | 311 | 29.5 | |
| loc_vignettes | 115 | 56.3 | |
| loc_tests | 172 | 48.4 | |
| num_vignettes | 2 | 87.5 | |
| data_size_total | 79882 | 82.2 | |
| data_size_median | 79882 | 90.5 | |
| n_fns_r | 40 | 40.8 | |
| n_fns_r_exported | 40 | 83.0 | |
| n_fns_r_not_exported | 0 | 0.0 | TRUE |
| n_fns_per_file_r | 3 | 38.6 | |
| num_params_per_fn | 4 | 51.5 | |
| loc_per_fn_r | 8 | 28.2 | |
| loc_per_fn_r_exp | 35 | 70.3 | |
| loc_per_fn_r_not_exp | 5 | 17.3 | |
| rel_whitespace_R | 16 | 30.1 | |
| rel_whitespace_vignettes | 92 | 87.4 | |
| rel_whitespace_tests | 31 | 82.3 | |
| doclines_per_fn_exp | 40 | 49.4 | |
| doclines_per_fn_not_exp | 0 | 0.0 | TRUE |
| fn_call_network_size | 0 | 0.0 | TRUE |
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 check_fails:
- description_url
- description_bugreports
- no_import_package_as_a_whole
Test coverage with covr
Package coverage: 78.42
Cyclocomplexity with cyclocomp
No functions have cyclocomplexity >= 15
Static code analyses with lintr
lintr found the following 89 potential issues:
| message | number of times |
|---|---|
| Avoid changing the working directory, or restore it in on.exit | 3 |
| Lines should not be more than 80 characters. | 86 |
Package Versions
| package | version |
|---|---|
| pkgstats | 0.0.0.269 |
| pkgcheck | 0.0.1.373 |
Editor-in-Chief Instructions:
Processing may not proceed until the items marked with :heavy_multiplication_x: have been resolved.
@cromanpa94 Please excuse the delayed response. Most of the ROpenSci team were on vacation, and only now able to debug our new package check bot. Current Editor-in-Chief @noamross will respond asap.
Hi @mpadge! No worries! I actually made some updates to the package earlier this month (currently on my dev branch). I will address these issues by the end of this week.
@cromanpa94 To make editor @annakrystalli's job easier, can you run pkgcheck::pkgcheck() yourself once you've made appropriate changes and confirm the summary at the top (or result of summary() applied to check results) gives all :heavy_check_mark: and no :heavy_multiplication_x:? It should also confirm, "This package may be submitted." Thanks!
Thanks for the suggestion @mpadge ! And hello @cromanpa94 π, I'll be your handling editor.
Let me know when you've resolved the issues in the initial checks and we'll take it from there.
P.S. Ξ¦ΟΞΏΟΟΞ± (frouta in english characters) is also fruit in Greek! π
@mpadge: Passing pkgcheck::pkgcheck() checks!! Thank you!
@annakrystalli: Hi there!! Looking forward to working with you! :) The latest version of the package is now live in the repo! Please let me know if there's anything else I should go over before we move on.
P.S. That's amazing!! I'm planning to add more details about the package's name later on! Ξ¦ΟΞΏΟΟΞ± will certainly be there!
@ropensci-review-bot check package
Thanks, about to send the query.
:rocket:
Editor check started
:wave:
Editor checks:
- [x] Documentation: The package has sufficient documentation available online (README, pkgdown docs) to allow for an assessment of functionality and scope without installing the package.
- [x] Fit: The package meets criteria for fit and overlap
- [x] Automated tests: Package has a testing suite and is tested via a CI service.
- [x] License: The package has a CRAN or OSI accepted license
- [x] Repository: The repository link resolves correctly
Editor comments
Thanks again for your submission @cromanpa94! We might get confirmation from our review-bot at some point too but in the meantime, I've just finished full local editors checks and there's a few overall minor issues to sort out before proceeding. Please see below:
Installation issues
Was getting the following error when attempting to install from GitHub
devtools::install_github("cromanpa94/phruta", dependencies = T, build_vignettes = T)
Error: Failed to install 'phruta' from GitHub:
System command 'R' failed, exit status: 1, stdout + stderr (last 10 lines):
E> ** inst
E> ** byte-compile and prepare package for lazy loading
E> Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) :
E> there is no package called βGenomeInfoDbDataβ
E> Calls: <Anonymous> ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart
E> Execution halted
E> ERROR: lazy loading failed for package βphrutaβ
E> * removing β/private/var/folders/8p/87cqdx2s34vfvcgh04l6z72w0000gn/T/RtmpaDpus1/Rinst13e512d837390/phrutaβ
E> -----------------------------------
E> ERROR: package installation failed
Had to install GenomeInfoDbData manually from source with BiocManager::install("GenomeInfoDbData", type = "source") to successfully install phruta.
Internal functions
I've noticed that you are exporting all functions but suppressing the creation on manual pages by adding @keywords internal (e.g. getListConstraints). This is a little bit unusual. Are you sure you want every function in the package exported? If a function shouldn't really be used by users, it's best not to export it. Here's a useful post by @maelle on this topic to help you decide! :)
Good practice issues
Some overall minor issues raised by goodpractice::gp
ββ GP phruta ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
It is good practice to
β avoid long code lines, it is bad for readability. Also, many people prefer editor windows that are about 80 characters wide. Try make your lines shorter than 80 characters
R/sq.aln.R:9:1
R/SW.phruta.R:21:1
R/tree.raxml.R:4:1
R/tree.raxml.R:7:1
R/tree.raxml.R:8:1
... and 10 more lines
β avoid calling setwd(), it changes the global environment. If you need it, consider using on.exit() to restore the working directory.
R/tree.raxml.R:70:5
R/tree.raxml.R:93:9
R/tree.raxml.R:114:9
R/tree.raxml.R:118:5
β avoid 1:length(...), 1:nrow(...), 1:ncol(...), 1:NROW(...) and 1:NCOL(...) expressions. They are error prone and result 1:0 if the expression on the right hand side is zero. Use seq_len() or seq_along() instead.
R/getListConstraints.R:7:28
R/getListConstraints.R:38:15
R/getListConstraints.R:48:19
R/getListConstraints.R:57:19
R/getListConstraints.R:69:15
... and 3 more lines
β not import packages as a whole, as this can cause name clashes between the imported packages. Instead, import only the specific functions you need. β avoid 'T' and 'F', as they are just variables which are set to the logicals 'TRUE' and 'FALSE' by default, but are not reserved words and hence can be overwritten by the user. Hence, one should always use 'TRUE' and 'FALSE' for the logicals.
R/getListConstraints.R:NA:NA
R/getListConstraints.R:NA:NA
R/sq.add.R:NA:NA
R/sq.add.R:NA:NA
R/sq.aln.R:NA:NA
... and 20 more lines
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Package coverage
While overall coverage is acceptable, a few R files have very low to no coverage. Is there a reason for this?
> covr::package_coverage(pkg_dir)
R/tree.roguetaxa.R: 0.00%
R/tree.dating.R: 9.38%
R/tree.raxml.R: 12.70%
R/sq.partitionfinderv1.R: 39.39%
R/taxonomy.retrieve.R: 73.44%
R/sq.curate.R: 89.42%
R/sq.add.R: 97.44%
R/sq.retrieve.R: 98.73%
R/getListConstraints.R: 100.00%
R/init.R: 100.00%
R/sq.aln.R: 100.00%
R/tree.constraint.R: 100.00%
.DS_Store files
There are many occasions of .DS_Store files in the package source code. These files are harmless but in the end superfluous and it's best practice not to include them in repositories. Could you please remove them and .DS_Store to your .gitignore files to prevent adding them in future?
Let me know if anything is unclear or you need help with anything!
Checks for phruta (v0.1.1)
git hash: 34e19606
- :heavy_check_mark: Package uses 'roxygen2'
- :heavy_check_mark: Package has a 'contributing.md' file
- :heavy_check_mark: Package has a 'CITATION' file
- :heavy_check_mark: Package has a 'codemeta.json' file
- :heavy_check_mark: All functions have examples
- :heavy_check_mark: Package 'DESCRIPTION' has a URL field
- :heavy_check_mark: Package 'DESCRIPTION' has a BugReports field
- :heavy_check_mark: Package name is available
- :heavy_check_mark: Package has continuous integration checks
- :heavy_check_mark: Package coverage is 75%
- :heavy_check_mark: R CMD check found no errors
- :heavy_check_mark: R CMD check found no warnings
Package License: MIT + 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 14 files) and
- 1 authors
- 4 vignettes
- 1 internal data file
- 11 imported packages
- 11 exported functions (median 40 lines of code)
- 14 non-exported functions in R (median 51 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 | 14 | 68.3 | |
| files_vignettes | 6 | 97.5 | |
| files_tests | 3 | 71.1 | |
| loc_R | 657 | 53.2 | |
| loc_vignettes | 201 | 69.8 | |
| loc_tests | 219 | 54.3 | |
| num_vignettes | 4 | 96.0 | TRUE |
| data_size_total | 79882 | 82.2 | |
| data_size_median | 79882 | 90.5 | |
| n_fns_r | 25 | 26.1 | |
| n_fns_r_exported | 11 | 45.5 | |
| n_fns_r_not_exported | 14 | 21.1 | |
| n_fns_per_file_r | 1 | 8.0 | |
| num_params_per_fn | 4 | 54.3 | |
| loc_per_fn_r | 46 | 93.5 | |
| loc_per_fn_r_exp | 40 | 74.5 | |
| loc_per_fn_r_not_exp | 51 | 95.6 | TRUE |
| rel_whitespace_R | 12 | 41.6 | |
| rel_whitespace_vignettes | 90 | 93.4 | |
| rel_whitespace_tests | 28 | 83.7 | |
| doclines_per_fn_exp | 39 | 48.1 | |
| doclines_per_fn_not_exp | 0 | 0.0 | TRUE |
| fn_call_network_size | 5 | 12.6 |
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
3b. goodpractice results
R CMD check with rcmdcheck
R CMD check generated the following check_fail:
- no_import_package_as_a_whole
Test coverage with covr
Package coverage: 74.96
Cyclocomplexity with cyclocomp
The following function have cyclocomplexity >= 15:
| function | cyclocomplexity |
|---|---|
| getListConstraints | 18 |
Static code analyses with lintr
lintr found the following 27 potential issues:
| message | number of times |
|---|---|
| Avoid 1:length(...) expressions, use seq_len. | 7 |
| Avoid 1:nrow(...) expressions, use seq_len. | 1 |
| Avoid changing the working directory, or restore it in on.exit | 4 |
| Lines should not be more than 80 characters. | 15 |
Package Versions
| package | version |
|---|---|
| pkgstats | 0.0.0.301 |
| pkgcheck | 0.0.1.380 |
Editor-in-Chief Instructions:
This package is in top shape and may be passed on to a handling editor
Sorry for the delay @annakrystalli! The latest version is in my repo now! Please let me know if you find any other issues before sending it out to review!
Installation issues
GenomeInfoDbData should now be installed with phruta. Thank you so much for pointing this out.
Internal functions
Thanks for the advice! I decided not to export the internal functions!
Good practice issues
- [x] avoid long code lines: Fixed (I hope!)!
- [x] avoid calling setwd(): I cannot avoid changing the directory for the relevant functions. However, if the analyses run, the function returns to the original directory.
- [x] avoid 1:length(...), 1:nrow(...), 1:ncol(...), 1:NROW(...) and 1:NCOL(...) expressions: Fixed (I think!)
- [x] not import packages as a whole: I'm now following this suggestion.
- [x] avoid 'T' and 'F': Perf!
Package coverage While overall coverage is acceptable, a few R files have very low to no coverage. Is there a reason for this?
Correct. Functions with low/intermediate coverage are wrappers to external software (e.g. raxml). I'm doing my best to have 100% coverage in all of the other functions that manipulate data within R.
.DS_Store files .DS_Store removed!
Hello again @cromanpa94 ,
Good to see most issues resolved. There's a few I can still see though:
.DS_Storestill in theRdirectory.- Just noticed that
.Rhistoryand.Rproj.userare being version controlled. These will need removing from git also. As you may want to keep the files locally (just don't want them tracked by git), here's a useful post on how to do that. It's best to add.Rhistoryand.Rproj.user/*to your.gitignoreafterwards.
notes for reviewers
One note on setwd. I appreciate that in some cases it might be necessary and that restoring it with on.exit() is a good way. But I do wonder whether it is necessary and couldn't instead be handled by having an explicit parent directory argument set to default to "." (equivalent to the current working directory) and better use of the file argument in ips::raxml(). The important thing here is that it is clear to the user where files will be written out and ideally give them the option to override the default.
Another thing to think about is the deletion prior to re-writing of complete folders. You will likely have trouble submitting to CRAN with the current approach because it deletes existing files without asking the user for confirmation. This goes against CRAN policy, in particular:
Packages should not write in the userβs home filespace (including clipboards), nor anywhere else on the file system apart from the R sessionβs temporary directory (or during installation in the location pointed to by TMPDIR: and such usage should be cleaned up). Installing into the systemβs R installation (e.g., scripts to its bin directory) is not allowed. Limited exceptions may be allowed in interactive sessions if the package obtains confirmation from the user.
You might want to use/explore how usethis::write_over() function handles this and include an overwrite argument that y default is set to FALSE but can be set to overwrite folders explicitly by the user.
In any case, I won't hold up the review process for these points and will start looking for reviewers. However, it gives you some time to consider them and I will point these out to the reviewers so we can get their thoughts too and resolve by the end of the process. ππ
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
- Briefly describe any working relationship you have (had) with the package authors.
None. I have never met the author or contributors.
- [x] As the reviewer I confirm that there are no conflicts of interest for me to review this work (if you are unsure whether you are in conflict, please speak to your editor before starting your review).
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,BugReportsandMaintainer(which may be autogenerated viaAuthors@R).
Functionality
- [ ] Installation: Installation succeeds as documented.
Partially. The R package itself installed just fine. RAxML installed just fine, thanks to an easy conda install option.
I wasn't able to download and successfully install PATHd-8 or treePL, so instead of running tree.dating(), I used ape's read.tree() function and plotted the tree with plot()
- [ ] Functionality: Any functional claims of the software been confirmed.
With the exception of tree.dating, all the functions I tested worked as expected.
- [x] Performance: Any performance claims of the software been confirmed.
- [ ] Automated tests: Unit tests cover essential functions of the package and a reasonable range of inputs and conditions. All tests pass on the local machine.
Did not perform any automated tests.
- [x] Packaging guidelines: The package conforms to the rOpenSci packaging guidelines.
Estimated hours spent reviewing: 8
- [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
The author wrote the phruta R package to simplify the basic phylogenetic pipeline. As promised, this R packages brings the functionality of multiple phylogenetic tools into the same environment where they can be used in a pipeline. The files are clearly organized and have standard formats, which makes it easy to use in combination with other tools outside the fruta package.
sq.retrieve is my favorite function from this package. I wish I had this 10 years ago when I was searching for sequences in a webbrowser one at a time. I can clearly see how I could incorporate this into a data discovery workflow. I also think would be a useful tool to use when teaching, to allow students to quickly make trees with their genes and species of interest.
The tutorial was easy to follow. However, I found it a little difficult to find detailed information about the functions. It would be nice if some of the descriptions for the functions were listed or described on the home page of the website, so the uses knows more about the capability of the package.
Thank you so much @raynamharris for your review!
@cromanpa94 , I am unfortunately having trouble finding the second reviewer so I would wait to make changes in response to @raynamharris 's review at this until all reviews are in, at least in the main branch. I will continue to look for a second reviewer but if I have not by the end of the week, I will do the review for you. Does that sound good @cromanpa94 ?
@raynamharris , I'm just going to officially assign you as a reviewer now (apologies for the confusion, I was waiting to set both reviews off at the same time) so please ignore the deadline the bot returns. And thanks again for your review comments!
@ropensci-review-bot assign @raynamharris to reviewers
Can't assign reviewer because there is no editor assigned for this submission yet
@ropensci-review-bot assign @annakrystalli as editor
Assigned! @annakrystalli is now the editor
@ropensci-review-bot add @raynamharris to reviewers
@raynamharris added to the reviewers list. Review due date is 2021-12-13. Thanks @raynamharris for accepting to review! Please refer to our reviewer guide.
@raynamharris: If you haven't done so, please fill this form for us to update our reviewers records.
@ropensci-review-bot add @fboehm to reviewers
@fboehm added to the reviewers list. Review due date is 2021-12-16. Thanks @fboehm for accepting to review! Please refer to our reviewer guide.
@fboehm: If you haven't done so, please fill this form for us to update our reviewers records.
@ropensci-review-bot submit review https://github.com/ropensci/software-review/issues/458#issuecomment-974524115 time 8
Logged review for raynamharris (hours: 8)
@annakrystalli, that sounds good to me! Thank you so much for your time! I will start working on the next release once all the reviews are in. @raynamharris β your comments are great.Β I'm so glad you find some functions to be especially useful! I will try to improve the connection between tree.* functions. Thank you both (and @fboehm in advance)!