knitr::opts_chunk$set(echo = TRUE)
Open science workflows should ideally span an unbroken chain between data-ingest to production of a scientific summary such as a manuscript. Such extensive workflows provide an explicit means of linking all content in a scientific summary with the analysis that it reports.
ready4show
includes a number of classes and methods that help integrate manuscript authoring into a reproducible workflow. These tools are part of the ready4 framework for transparent, reusable and updatable health economic models.
We first begin by loading the libraries we will require to implement this workflow.
library(ready4) library(ready4show) library(bookdown) library(rticles)
By default, methods in the ready4show
package will request your consent before writing files to your machine. This is the safest option. However, as there are many files that need to be written locally for this program to execute, you can overwrite this default by supplying the value "Y" to methods with a consent_1L_chr
argument.
consent_1L_chr <- "" # Default value - asks for consent prior to writing each file.
consent_1L_chr <- "Y" # Gives consent to write files without additional requests. Necessary for automatic rendering of this vignette.
To start with we create X
, an instance of Ready4showSynopsis
, a ready4 module (S4 class). We can use X
to record metadata about the manuscript to be authored (including details about the study being summarised and the title and format of the intended output).
X <- Ready4showSynopsis(background_1L_chr = "Our study is entirely fictional.", coi_1L_chr = "None declared.", conclusion_1L_chr = "These fake results are not interesting.", digits_int = 3L, ethics_1L_chr = "The study was reviewed and granted approval by Awesome University's Human Research Ethics Committee (1111111.1).", funding_1L_chr = "The study was funded by Generous Benefactor.", interval_chr = "three months", keywords_chr = c("entirely","fake","do", "not","cite"), outp_formats_chr = "PDF", sample_desc_1L_chr = "The study sample is fake data that pretends to be young people aged 12 to 25 years who attended Australian primary care services for mental health related needs between November 2019 to August 2020.", title_1L_chr = "A hypothetical study using fake data")
Authorship details can be added to slots of X
that contain ready4show_authors
and ready4show_instututes
ready4 sub-modules.
As we can see from the below call to exhibitSlot
, X
was created with no authorship information.
exhibitSlot(X, "authors_r3", scroll_box_args_ls = list(width = "100%"))
We can add details on each author by repeated calls to the renewSlot
method.
X <- renewSlot(X, "authors_r3", first_nm_chr = "Alejandra", middle_nm_chr = "Rocio", last_nm_chr = "Scienceace", title_chr = "Dr", qualifications_chr = "MD, PhD", institute_chr = "Institute_A, Institute_B", sequence_int = 1, is_corresponding_lgl = T, email_chr = "fake_email@fake_institute.com") %>% renewSlot("authors_r3", first_nm_chr = "Fionn", middle_nm_chr = "Seamus", last_nm_chr = "Researchchamp", title_chr = "Prof", qualifications_chr = "MSc, PhD", institute_chr = "Institute_C, Institute_B", sequence_int = 2, email_chr = "fake_email@unreal_institute.com")
The updated authorship table can now be inspected.
X %>% exhibitSlot("authors_r3", scroll_box_args_ls = list(width = "100%"))
We now need to add additional information for each author institute.
X <- renewSlot(X, "institutes_r3", short_name_chr = "Institute_A", long_name_chr = "Awesome University, Shanghai") %>% renewSlot("institutes_r3", short_name_chr = "Institute_B", long_name_chr = "August Institution, London") %>% renewSlot("institutes_r3", new_val_xx = "use_renew_mthd", short_name_chr = "Institute_C", long_name_chr = "Highly Ranked Uni, Montreal")
The updated institutes table can now be inspected.
X %>% exhibitSlot("institutes_r3", scroll_box_args_ls = list(width = "100%"))
We can also add a look-up table about any changes we wish to make from the analysis code of how names of variables / parameters are presented in the manuscript text.
X <- renewSlot(X, "correspondences_r3", old_nms_chr = c("PHQ9", "GAD7"), new_nms_chr = c("PHQ-9", "GAD-7"))
These edits can now be inspected with a call to exhibitSlot
.
X %>% exhibitSlot("correspondences_r3", scroll_box_args_ls = list(width = "100%")) # Add Exhibit Method
We now update X
with details of the directory to which we wish to write the manuscript we are authoring and all its supporting files.
X <- renewSlot(X, "a_Ready4showPaths@outp_data_dir_1L_chr", new_val_xx = tempdir())
Our next step is to copy a dataset of files that can implement a literate program to generate our manuscript. If you have a template you wish to work with, you can specify its local path using the a_Ready4showPaths@mkdn_source_dir_1L_chr
slot of the X
. Skip this step if you wish to use the default markdown dataset, which leverages popular rmarkdown toolkits such as bookdown
and rticles
.
## Not run # procureSlot(X, # "a_Ready4showPaths@mkdn_source_dir_1L_chr", # new_val_xx = "PATH TO MARKDOWN DATASET")
We create the dataset copy with the authorData
method.
# DEPRECATED SINCE CONSENT OPTION HAS BEEN ADDED. # This section is only required when rendering vignettes (it replaces interactivity). # Currently not evaluated (as with subsequent chunks) so the vignette can also be rendered by the ready4-dev website. # file_fl <- file() # write(paste(c("Y","Y","Y","Y","Y","Y"), collapse = "\n"), file_fl) # options("prompt_opts.con" = file_fl)
authorData(X, consent_1L_chr = consent_1L_chr)
Having created a local copy of the template literate program files dataset, it is now possible to manually edit the markdown files to author the manuscript. However, in this example we are skipping this step and will continue to use the unedited template in conjunction with the metadata we have specified in X
. We combine the two to author a manuscript using the authorReport
method.
authorReport(X, consent_1L_chr = consent_1L_chr)
If we wish, we can now ammend X
and then rerun the authorReport
method to generate Word and HTML versions of the manuscript.
renewSlot(X, "outp_formats_chr", new_val_xx = "Word") %>% authorReport(consent_1L_chr = consent_1L_chr)
renewSlot(X, "outp_formats_chr", new_val_xx = "HTML") %>% authorReport(consent_1L_chr = consent_1L_chr)
# Upload output to Release Repo purrr::walk(paste0(X@a_Ready4showPaths@outp_data_dir_1L_chr, "/Reports/Manuscript") %>% list.files(full.names = T), ~ { if(file.exists(.x)){ piggyback::pb_upload(.x, repo = "ready4-dev/ready4show", #Change to your repo tag = "Documentation_0.0") # Change to your Release } } )
The outputed files are as follows:
# DEPRECATED # Closes vignette specific connection to replace interactivity. # close(file_fl) # # options("prompt_opts.con" = stdin())
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.