-
Notifications
You must be signed in to change notification settings - Fork 129
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
Reproducible session management #765
Conversation
Codecov Report
@@ Coverage Diff @@
## master #765 +/- ##
=====================================
Coverage 100% 100%
=====================================
Files 72 73 +1
Lines 6121 6178 +57
=====================================
+ Hits 6121 6178 +57
Continue to review full report at Codecov.
|
Merging, re #761 (comment). |
This might be a dumb question but what exactly is the advantage of the approach with |
It is mainly about childproofing. It is easy to forget to start a fresh session and source the correct setup scripts in the correct order, especially for new users, and the consequences of getting it wrong are painful. For a package that claims to aid reproducibility, this is important. It also turns out to be convenient in practice. I am using |
Also, I skimmed the draft of your blog post, and those are some super valuable workarounds for Things I like about your post that are still current:
|
Thanks, I will have a look at the two links. The reason this post was not published is because drogger and teamtools is not ready for prime time. Also, I think other packages such as drogger can fill the logging gap. It helps keeping drake lightweight and also it is kind of orthogonal to drake because logging has many other applications. |
* Change the video player in the drake tech note The default PowToon player is having problems, so I propose a switch to Wistia. * Add technote: drake version 7.0.0 * Try to fix authors field * Rm mtcars beforehand Needed to consistently reproduce `lock_envir = FALSE` behavior. Also add a link. * Reknit drake tech note ropensci/drake#756 * Reknit to remove superfluous message * Add a tag * Update drake 7.0.0 tech note... ...re ropensci/drake#762 * Add more thanks * Update a header * Clean up error messages in drake itself * Minor edit * Minor elaboration * Minor update: reduced verbosity in drake * Mention some future work * Update drake tech note re ropensci/drake#765 * Clean up the section on interactive sessions * Fix a typo * Fix a link * Edit recap section in drake tech note * Sync recap * Mention @tjmahr Ref: ropensci/drake#775 * Last-minute edits to the drake v7 tech note * Update word choice * Knit in batch mode * Mention literate programming * Address https://github.com/ropensci/roweb2/pull/423/files#r264418051 * Address https://github.com/ropensci/roweb2/pull/423/files#r264418238 * Add a mention Reduced trigger verbosity suggested by @aedobbyn: ropensci/drake@ec050a4 * Alphabetize mentions by first name
Summary
This PR implements the proposal in #761 (comment). We can achieve reproducible session management if we rely on a master R script file that returns a
drake_config()
object. See the help file ofr_make()
for details. Usage:Created on 2019-03-02 by the reprex package (v0.2.1)
Packages
callr
+parallel
(forks specifically) can be a dangerous combination (ref: r-lib/processx#113) but simple tests of multicoreclustermq
andfuture
parallelism seem to run just fine inr_make()
.cc:
Related GitHub issues and pull requests
Checklist
drake
's code of conduct, and I agree to follow its rules.testthat
unit tests totests/testthat
to confirm that any new features or functionality work correctly.devtools::check()