<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="other" dtd-version="1.2" xml:lang="en">
    <front>
        <journal-meta>
            <journal-id journal-id-type="pmc">F1000Research</journal-id>
            <journal-title-group>
                <journal-title>F1000Research</journal-title>
            </journal-title-group>
            <issn pub-type="epub">2046-1402</issn>
            <publisher>
                <publisher-name>F1000 Research Limited</publisher-name>
                <publisher-loc>London, UK</publisher-loc>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.12688/f1000research.20843.1</article-id>
            <article-categories>
                <subj-group subj-group-type="heading">
                    <subject>Software Tool Article</subject>
                </subj-group>
                <subj-group>
                    <subject>Articles</subject>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>Creating and sharing reproducible research code the workflowr way</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: 3 approved]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Blischak</surname>
                        <given-names>John D.</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <uri content-type="orcid">https://orcid.org/0000-0003-2634-9879</uri>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Carbonetto</surname>
                        <given-names>Peter</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <uri content-type="orcid">https://orcid.org/0000-0003-1144-6780</uri>
                    <xref ref-type="aff" rid="a1">1</xref>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Stephens</surname>
                        <given-names>Matthew</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Funding Acquisition</role>
                    <role content-type="http://credit.niso.org/">Supervision</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a1">1</xref>
                    <xref ref-type="aff" rid="a3">3</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>Department of Human Genetics, University of Chicago, Chicago, IL, 60637, USA</aff>
                <aff id="a2">
                    <label>2</label>Research Computing Center, University of Chicago, Chicago, IL, 60637, USA</aff>
                <aff id="a3">
                    <label>3</label>Department of Statistics, University of Chicago, Chicago, IL, 60637, USA</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:jdblischak@gmail.com">jdblischak@gmail.com</email>
                </corresp>
                <fn fn-type="conflict">
                    <p>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>14</day>
                <month>10</month>
                <year>2019</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2019</year>
            </pub-date>
            <volume>8</volume>
            <elocation-id>1749</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>2</day>
                    <month>10</month>
                    <year>2019</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2019 Blischak JD et al.</copyright-statement>
                <copyright-year>2019</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <self-uri content-type="pdf" xlink:href="https://f1000research.com/articles/8-1749/pdf"/>
            <abstract>
                <p>Making scientific analyses reproducible, well documented, and easily shareable is crucial to maximizing their impact and ensuring that others can build on them. However, accomplishing these goals is not easy, requiring careful attention to organization, workflow, and familiarity with tools that are not a regular part of every scientist&#x2019;s toolbox. We have developed an R package, 
                    <bold>workflowr</bold>, to help all scientists, regardless of background, overcome these challenges. 
                    <bold>Workflowr</bold> aims to instill a particular &#x201c;workflow&#x201d; &#x2014; a sequence of steps to be repeated and integrated into research practice &#x2014; that helps make projects more reproducible and accessible.This workflow integrates four key elements: (1) version control (via 
                    <bold>Git</bold>); (2) literate programming (via R Markdown); (3) automatic checks and safeguards that improve code reproducibility; and (4) sharing code and results via a browsable website. These features exploit powerful existing tools, whose mastery would take considerable study. However, the 
                    <bold>workflowr</bold> interface is simple enough that novice users can quickly enjoy its many benefits. By simply following the 
                    <bold>workflowr</bold> &#x201c;workflow&#x201d;, R users can create projects whose results, figures, and development history are easily accessible on a static website &#x2014; thereby conveniently shareable with collaborators by sending them a URL &#x2014; and accompanied by source code and reproducibility safeguards. The 
                    <bold>workflowr</bold> R package is open source and available on CRAN, with full documentation and source code available at 
                    <monospace>
                        <ext-link ext-link-type="uri" xlink:href="https://github.com/jdblischak/workflowr">https://github.com/jdblischak/workflowr</ext-link>
                    </monospace>.</p>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>reproducibility</kwd>
                <kwd>open science</kwd>
                <kwd>workflow</kwd>
                <kwd>R</kwd>
                <kwd>interactive programming</kwd>
                <kwd>literate programming</kwd>
                <kwd>version control</kwd>
            </kwd-group>
            <funding-group>
                <award-group id="fund-1" xlink:href="http://dx.doi.org/10.13039/100000936">
                    <funding-source>Gordon and Betty Moore Foundation</funding-source>
                    <award-id>4559</award-id>
                </award-group>
                <funding-statement>This work was supported by the Gordon and Betty Moore Foundation [4559].</funding-statement>
                <funding-statement>
                    <italic>The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.</italic>
                </funding-statement>
            </funding-group>
        </article-meta>
    </front>
    <body>
        <sec sec-type="intro">
            <title>Introduction</title>
            <p>A central tenet of the scientific method is that results should be independently verifiable &#x2014; and, ideally, extendable &#x2014; by other researchers. As computational methods play an increasing role in many disciplines, key scientific results are often produced by computer code. Verifying and extending such results requires that the code be &#x201c;reproducible&#x201d;; that is, it can be accessed and run, with outputs that can be corroborated against published results
                <sup>
                    <xref ref-type="bibr" rid="ref-1">1</xref>&#x2013;
                    <xref ref-type="bibr" rid="ref-9">9</xref>
                </sup>. Unfortunately, this ideal is not usually achieved in practice; most scientific articles do not come with code that can reproduce their results
                <sup>
                    <xref ref-type="bibr" rid="ref-10">10</xref>&#x2013;
                    <xref ref-type="bibr" rid="ref-13">13</xref>
                </sup>.</p>
            <p>There are many barriers to sharing reproducible code and corresponding computational results
                <sup>
                    <xref ref-type="bibr" rid="ref-14">14</xref>
                </sup>. One barrier is simply that keeping code and results sufficiently organized and documented is difficult &#x2014; it is burdensome even for experienced programmers who are well-trained in relevant computational tools such as version control (discussed later), and even harder for the many domain scientists who write code with little formal training in computing and informatics
                <sup>
                    <xref ref-type="bibr" rid="ref-15">15</xref>
                </sup>. Further, modern interactive computer environments (e.g., R, Python), while greatly enhancing code development
                <sup>
                    <xref ref-type="bibr" rid="ref-16">16</xref>
                </sup>, also make it easier to create results that are irreducible. For example, it is all too easy to run interactive code without recording or controlling the seed of a pseudo-random number generator, or generate results in a &#x201c;contaminated&#x201d; environment that contains objects whose values are critical but unrecorded. Both these issues can lead to results that are difficult or impossible to reproduce. Finally, even when analysts produce code that is reproducible in principle, sharing it in a way that makes it easy for others to retrieve and use (e.g., via GitHub or Bitbucket) involves technologies that many scientists are not familiar with
                <sup>
                    <xref ref-type="bibr" rid="ref-13">13</xref>,
                    <xref ref-type="bibr" rid="ref-17">17</xref>
                </sup>.</p>
            <p>In light of this, there is a pressing need for easy-to-use tools to help analysts maintain reproducible code, document progress, and disseminate code and results to collaborators and to the scientific community. We have developed an open source R
                <sup>
                    <xref ref-type="bibr" rid="ref-18">18</xref>
                </sup> package, 
                <bold>workflowr</bold>, to address this need. The 
                <bold>workflowr</bold> package aims to instill a particular &#x201c;workflow&#x201d; &#x2014; a sequence of steps to be repeated and integrated into research practice &#x2014; that helps make projects more reproducible and accessible. To achieve this, 
                <bold>workflowr</bold> integrates four key features that facilitate reproducible code development: (1) version control
                <sup>
                    <xref ref-type="bibr" rid="ref-19">19</xref>,
                    <xref ref-type="bibr" rid="ref-20">20</xref>
                </sup>; (2) literate programming
                <sup>
                    <xref ref-type="bibr" rid="ref-21">21</xref>
                </sup>; (3) automatic checks and safeguards that improve code reproducibility; and (4) sharing code and results via a browsable website. These features exploit powerful existing tools, whose mastery would take considerable study. However, the 
                <bold>workflowr</bold> interface is designed to be simple so that learning it does not become another barrier in itself and novice users can quickly enjoy its many benefits. By simply following the 
                <bold>workflowr</bold> &#x201c;workflow&#x201d;, R users can create projects whose results and figures are easily accessible on a static website &#x2014; thereby conveniently shareable with collaborators by sending them a URL &#x2014; and accompanied by source code and reproducibility safeguards. The Web-based interface, updated with version control, also makes it easy to navigate through different parts of the project and browse the project history, including previous versions of figures and results, and the code used to produce them. By using 
                <bold>workflowr</bold>, all this can be achieved with minimal experience in version control systems and Web technologies.</p>
            <p>The 
                <bold>workflowr</bold> package builds on several software technologies and R packages, without which this work would have been impossible. 
                <bold>Workflowr</bold> builds on the invaluable R Markdown literate programming system implemented in 
                <bold>knitr</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-22">22</xref>,
                    <xref ref-type="bibr" rid="ref-23">23</xref>
                </sup> and 
                <bold>rmarkdown</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-21">21</xref>,
                    <xref ref-type="bibr" rid="ref-24">24</xref>
                </sup>, which in turn build on 
                <bold>pandoc</bold>, the &#x201c;Markdown&#x201d; markup language, and various Web technologies such as Cascading Style Sheets and Bootstrap
                <sup>
                    <xref ref-type="bibr" rid="ref-25">25</xref>
                </sup>. Several popular R packages extend 
                <bold>knitr</bold> and 
                <bold>rmarkdown</bold> for specific aims such as writing blogs (
                <bold>blogdown</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-26">26</xref>
                </sup>), monographs (
                <bold>bookdown</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-27">27</xref>
                </sup>), and software documentation (
                <bold>pkgdown</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-28">28</xref>
                </sup>). Analogously, 
                <bold>workflowr</bold> extends 
                <bold>rmarkdown</bold> with additional features such as the reproducibility safeguards, and adds integration with the version control system 
                <bold>Git</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-19">19</xref>,
                    <xref ref-type="bibr" rid="ref-20">20</xref>
                </sup>. 
                <bold>Git</bold> was designed to support large-scale, distributed software development, but in 
                <bold>workflowr</bold> it serves a different purpose: to record, and provide access to, the development history of a project. 
                <bold>Workflowr</bold> also uses another feature of 
                <bold>Git</bold>, &#x201c;remotes&#x201d;, to enable collaborative project development across multiple locations, and to help users create browsable projects via integration with popular online services such as GitHub Pages and GitLab Pages. These features are implemented using the R package 
                <bold>git2r</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-29">29</xref>
                </sup>, which provides an interface to the 
                <bold>libgit2</bold> C library. Finally, beyond extending the R programming language, 
                <bold>workflowr</bold> is also integrated with the popular 
                <bold>RStudio</bold> interactive development environment
                <sup>
                    <xref ref-type="bibr" rid="ref-30">30</xref>
                </sup>.</p>
            <p>In addition to the tools upon which 
                <bold>workflowr</bold> directly builds, there are many other related tools that directly or indirectly advance open and reproducible data analysis. A comprehensive review of such tools is beyond the scope of this article, but we note that many of these tools are complementary to 
                <bold>workflowr</bold> in that they tackle aspects of reproducibility that 
                <bold>workflowr</bold> currently leaves to the user, such as management and deployment of computational environments and dependencies (e.g., 
                <bold>conda</bold>, 
                <bold>Homebrew</bold>, 
                <bold>Singularity</bold>, 
                <bold>Docker</bold>, 
                <bold>Kubernetes</bold>, 
                <bold>packrat</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-31">31</xref>
                </sup>, 
                <bold>checkpoint</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-32">32</xref>
                </sup>, 
                <bold>switchr</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-33">33</xref>
                </sup>, 
                <bold>RSuite</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-34">34</xref>
                </sup>); development and management of computational pipelines (e.g., 
                <bold>GNU Make</bold>, 
                <bold>Snakemake</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-35">35</xref>
                </sup>, 
                <bold>drake</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-36">36</xref>
                </sup>); management and archiving of data objects (e.g., 
                <bold>archivist</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-37">37</xref>
                </sup>, Dryad
                <sup>
                    <xref ref-type="bibr" rid="ref-38">38</xref>
                </sup>, Zenodo); and distribution of open source software (e.g., CRAN, Bioconductor
                <sup>
                    <xref ref-type="bibr" rid="ref-39">39</xref>
                </sup>, Bioconda
                <sup>
                    <xref ref-type="bibr" rid="ref-40">40</xref>
                </sup>). Most of these tools or services could be used in combination with 
                <bold>workflowr</bold>. There are additional, ambitious efforts to develop cloud-based services that come with many computational reproducibility features (e.g., Code Ocean, Binder, Gigantum, The Whole Tale). Many of these platforms manage individual projects as 
                <bold>Git</bold> repositories, so 
                <bold>workflowr</bold> could, in principle, be installed and used on these platforms, possibly to enhance their existing features. Other R packages with utilities to facilitate reproducibility that could complement 
                <bold>workflowr</bold> include 
                <bold>ProjectTemplate</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-41">41</xref>
                </sup>, 
                <bold>rrtools</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-42">42</xref>
                </sup>, and 
                <bold>usethis</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-43">43</xref>
                </sup>, as well as many of the R packages listed in the 
                <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/view=ReproducibleResearch">&#x201c;Reproducible Research&#x201d; CRAN Task View</ext-link>.</p>
            <p>Of the available software tools facilitating reproducible research, perhaps the closest in scope to 
                <bold>workflowr</bold> are the R package 
                <bold>adapr</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-44">44</xref>
                </sup> and the Python-based toolkit 
                <bold>Sumatra</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-45">45</xref>
                </sup>. Like 
                <bold>workflowr</bold>, both 
                <bold>adapr</bold> and 
                <bold>Sumatra</bold> use version control to maintain a project development history. Unlike 
                <bold>workflowr</bold>, both place considerable emphasis on managing and documenting dependencies (software and data), whereas 
                <bold>workflowr</bold> only records this information. In contrast, 
                <bold>workflowr</bold> places more emphasis on literate programming &#x2014; the publishing of text and code in a readable form &#x2014; and more closely integrates other features such as tracking project development history via 
                <bold>Git</bold> with literate programming.</p>
            <p>The 
                <bold>workflowr</bold> R package is available from 
                <ext-link ext-link-type="uri" xlink:href="https://CRAN.R-project.org/package=workflowr">CRAN</ext-link> and 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/jdblischak/workflowr">GitHub</ext-link>, and is distributed under the flexible open source MIT license (see 
                <italic toggle="yes">Software availability</italic>). The R package and its dependencies are straightforward to install while being highly customizable for more dedicated users. Extensive documentation, tutorials, and user support can be found at the GitHub site. In the remainder of this article, we describe the 
                <bold>workflowr</bold> interface, explain its design, and give examples illustrating how 
                <bold>workflowr</bold> is used in practice.</p>
        </sec>
        <sec>
            <title>Operation</title>
            <p>In this section, we give an overview of 
                <bold>workflowr</bold>&#x2019;s main features from a user&#x2019;s perspective. For step-by-step instructions on starting a 
                <bold>workflowr</bold> project, see the 
                <ext-link ext-link-type="uri" xlink:href="https://jdblischak.github.io/workflowr/articles/wflow-01-getting-started.html">&#x201c;Getting started with 
                    <bold>workflowr</bold>&#x201d;</ext-link> vignette.</p>
            <p>For basic usage, only five functions are needed (summarized here, and described in more detail later):</p>
            <list list-type="bullet">
                <list-item>
                    <p>
                        <monospace>wflow_start()</monospace> initializes a new project, including the template directory structure (
                        <xref ref-type="fig" rid="f1">Figure 1A</xref>);</p>
                </list-item>
                <list-item>
                    <p>
                        <monospace>wflow_build()</monospace> renders webpages from R Markdown (Rmd) analysis files, with reproducibility safeguards in place;</p>
                </list-item>
                <list-item>
                    <p>
                        <monospace>wflow_publish()</monospace> renders the webpages and updates the project development history&#x2014;it commits the code, calls 
                        <monospace>wflow_build()</monospace>, then commits the webpages;</p>
                </list-item>
                <list-item>
                    <p>
                        <monospace>wflow_status()</monospace> reports the status of the project files; and</p>
                </list-item>
                <list-item>
                    <p>
                        <monospace>wflow_git_push()</monospace> uploads the results from the user&#x2019;s local repository to a website hosting service.</p>
                </list-item>
            </list>
            <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                <label>Figure 1. </label>
                <caption>
                    <title>The workflowr package helps organize project files and results.</title>
                    <p>
                        <bold>A</bold>) The function 
                        <monospace>wflow_start()</monospace> populates a project directory with all the files and subdirectories (shown in red) needed to begin a 
                        <bold>workflowr</bold> project. This default directory structure encourages users to organize their files as the project progresses&#x2014;as the project develops, additional Rmd files may be organized in the "analyses" folder. This is only a suggested structure; users can change the names of most files and directories. Required files are shown in boldface. 
                        <bold>B</bold>) All results are organized into a website (all HTML files generated by 
                        <bold>workflowr</bold> are automatically stored in 
                        <monospace>docs/</monospace>). The use of hyperlinks allows for efficient access to the results. The screenshots above illustrate how a 
                        <bold>workflowr</bold> website can be navigated. Clicking a hyperlink in the main page, 
                        <monospace>index.html</monospace>, (1) navigates the browser to a webpage containing some results, 
                        <monospace>visualize.html</monospace>; clicking on the &#x201c;Home&#x201d; hyperlink (2) in the navigation bar brings the browser back to the main page. For larger projects, the navigation bar can be used to quickly access different sections of a project.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/22923/510c4de2-c96e-4471-9853-4ebce466a666_figure1.gif"/>
            </fig>
            <p>The primary output of 
                <bold>workflowr</bold> is a project website for browsing the results generated by the Rmd analysis files (
                <xref ref-type="fig" rid="f1">Figure 1B</xref>). The use of websites to organize information is, of course, now widespread. Nonetheless, we believe they are under-utilized for organizing the results of scientific projects. In particular, hypertext provides an ideal way to connect different analyses that have been performed, and to provide easy access to relevant external data (e.g., related work or helpful background information); see 
                <xref ref-type="fig" rid="f1">Figure 1B</xref> and 
                <italic toggle="yes">Use cases</italic> below.</p>
            <sec>
                <title>Organizing the project: 
                    <monospace>wflow_start()</monospace>
                </title>
                <p>The function 
                    <monospace>wflow_start()</monospace> facilitates project organization by populating a directory with suggested subdirectories, scripts, and configuration files for a data analysis project (
                    <xref ref-type="fig" rid="f1">Figure 1A</xref>). The subdirectories created by default are 
                    <monospace>analysis/</monospace>, where the Rmd analysis files are stored; 
                    <monospace>docs/</monospace>, which stores the website HTML files; 
                    <monospace>code/</monospace>, which is intended for longer-running scripts, compiled code (e.g., C++) and other source code supporting the data analyses; 
                    <monospace>data/</monospace>, for storing raw data files; and 
                    <monospace>output/</monospace>, for saving processed data files and other outputs generated by the scripts and analyses. This setup is flexible and configurable; only two of the directories, 
                    <monospace>analysis/</monospace> and 
                    <monospace>docs/</monospace>, are required, and both can be renamed later.</p>
                <p>In addition to creating a default file structure for a data analysis project, 
                    <monospace>wflow_start()</monospace> also initializes the project development history: it creates a 
                    <bold>Git</bold> repository, and commits the files and directories to this repository. This is all done behind the scenes so no familiarity with 
                    <bold>Git</bold> is needed. We give more details about the 
                    <bold>Git</bold> repository in the 
                    <italic toggle="yes">Implementation</italic> section below.</p>
                <p>In some cases, a user will have an existing project (with files that may or may not be tracked by 
                    <bold>Git</bold>), and would like to incorporate 
                    <bold>workflowr</bold> into the project 
                    <monospace>&#x2014; wflow_start()</monospace> also easily accommodates this scenario, with additional arguments to control how the 
                    <bold>workflowr</bold> files are added to the existing project. See the package vignette, &#x201c;Migrating an existing project to use 
                    <bold>workflowr</bold>,&#x201d; for more details; it can be accessed by running 
                    <monospace>vignette("wflow-03-migrating")</monospace> after loading the 
                    <bold>workflowr</bold> package in R.</p>
                <p>Finally, 
                    <monospace>wflow_start()</monospace> changes R&#x2019;s working directory to the root of the project directory. Although this is a simple step, it is important for correctly resolving file paths. Forgetting to change the working directory is a very common source of errors in data analyses.</p>
            </sec>
            <sec>
                <title>Generating results reproducibly: 
                    <monospace>wflow_build()</monospace>
                </title>
                <p>In a 
                    <bold>workflowr</bold> project, analyses are performed using the R Markdown literate programming system
                    <sup>
                        <xref ref-type="bibr" rid="ref-21">21</xref>
                    </sup>. The user develops their R code inside Rmd files in the 
                    <monospace>analysis/</monospace> directory, then calls 
                    <monospace>wflow_build()</monospace>, which runs the code and renders the results as HTML files in the 
                    <monospace>docs/</monospace> directory. The 
                    <monospace>wflow_build()</monospace> function extends the 
                    <monospace>render_site()</monospace> command from the 
                    <bold>rmarkdown</bold> package with several reproducibility safeguards:</p>
                <p>1. It creates a clean R session for executing the code. This is critical for reproducibility&#x2014;results should not depend on the current state of the user&#x2019;s R environment, and all objects necessary to run the code should be defined in the code or loaded by packages.</p>
                <p>2. It automatically sets the working directory in a consistent manner (the exact setting is controlled by a configuration file; see 
                    <italic toggle="yes">Implementation</italic> below). This prevents one of the most common failures to reproduce in R&#x2014;not setting the working directory before running the R script, resulting in incorrectly resolved relative file paths.</p>
                <p>3. It sets a seed for the pseudorandom number generator before executing the code. This ensures that analyses that use random numbers always return the same result.</p>
                <p>4. It records information about the computing environment, including the operating system, the version of R used, and the packages that were used to produce the results.</p>
                <p>Finally, 
                    <monospace>wflow_build()</monospace> summarizes the results of these reproducibility safeguards in a report at the top of the webpage, along with additional &#x201c;reproducibility checks&#x201d;, which alert the user to potential reproducibility issues, such as changes that were not committed to the project development history, and the use of (non-reproducible) absolute file paths (
                    <xref ref-type="fig" rid="f2">Figure 2</xref>).</p>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>Figure 2. </label>
                    <caption>
                        <title>The workflowr reproducibility report summarizes the reproducibility checks inside the results webpage.</title>
                        <p>(
                            <bold>A</bold>) A button is added to the top of each webpage. Clicking on the button (1) reveals the full reproducibility report with multiple tabs. If any of the reproducibility checks have failed, a red warning symbol (!) is shown. Clicking on the "Checks" tab (2) summarizes the reproducibility checks, with icons next to each check indicating a pass or failure. Clicking on an individual item (3) reveals a more detailed description of the reproducibility check, with an explanation of why it passed or failed. In (
                            <bold>A</bold>), the Rmd file contains changes that have not yet been committed, so one of the reproducibility checks has failed (uncommitted changes are acceptable during active development, but not acceptable when results are published). In this case, the recommendation is given to run 
                            <monospace>wflow_publish()</monospace> to fix the issue. (
                            <bold>B</bold>) If all the 
                            <bold>workflowr</bold> reproducibility checks pass, the 
                            <bold>workflowr</bold> button shows a green check mark (&#x2714;), and clicking an individual item in the reproducibility report (3) gives more detail on the reproducibility check.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/22923/510c4de2-c96e-4471-9853-4ebce466a666_figure2.gif"/>
                </fig>
            </sec>
            <sec>
                <title>Keeping track of the project&#x2019;s development: 
                    <monospace>wflow_publish()</monospace>
                </title>
                <p>As a project progresses, many versions of the results will be generated as results are scrutinized, analyses are revised, errors are corrected, and new data are considered. Keeping track of a project&#x2019;s evolution is important for documenting progress and retracing the development of the analyses. This is sometimes done without version control tools by copying code and results whenever an important change is made. This typically results in a large collection of files with names such as 
                    <monospace>results-v2-final_final.pdf</monospace> or 
                    <monospace>anova_analyses_before_adding_new_samples.R.</monospace> This approach is tedious and error-prone, and makes it difficult to communicate changes to collaborators.</p>
                <p>The version control system, 
                    <bold>Git</bold>, provides a more systematic and reliable way to keep track of a project&#x2019;s development history. However, 
                    <bold>Git</bold> was designed to manage source code for large-scale software projects, and using it for scientific analyses brings some specific challenges. The relative complexity of 
                    <bold>Git</bold> provides a high barrier to entry, discouraging many researchers from adopting it for their projects. And 
                    <bold>Git</bold> is not ideally suited to data analysis projects where one wants to coordinate the tracking of source code, data, and the results generated by the code and data. Using 
                    <bold>Git</bold> commands to identify the version of the code that was used to generate a result can be non-trivial.</p>
                <p>The 
                    <monospace>wflow_publish()</monospace> function is designed to address these challenges: it takes the steps necessary to coordinate tracking of code and results, and reduces these steps to calling a single, easy-to-use function. The command performs three steps, detailed in 
                    <xref ref-type="fig" rid="f3">Figure 3</xref>. These steps are designed to ensure that each new collection of results added to the project development history has been produced by a unique and identifiable version of an Rmd analysis file.</p>
                <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                    <label>Figure 3. </label>
                    <caption>
                        <title>
                            <bold>The function</bold> 
                            <monospace>wflow_publish()</monospace> simplifies and coordinates tracking of the source code and results files in a Git repository.</title>
                        <p>The function performs a three-step procedure to store the code and results in a project development history, and ensure that the results HTML file is always created from a unique and identifiable versioned Rmd analysis file. (1) The first step commits the changes to the Rmd analysis file. (2) The second step builds the results HTML file from the Rmd file. These two steps ensure that the results were generated from the committed version of the Rmd file. Furthermore, the unique version of the Git repository is inserted directly into the HTML file so that the source code used to generate the results is easily identified and accessed. If the code generates an error, the entire process is aborted and the previous commit made in the first step is undone. (3) The results HTML file, as well as any related figure files, are committed to the Git repository. Thus, the versioning of Rmd analysis files and corresponding HTML results files are coordinated whenever 
                            <monospace>wflow_publish()</monospace>  is used.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/22923/510c4de2-c96e-4471-9853-4ebce466a666_figure3.gif"/>
                </fig>
                <p>Even experienced 
                    <bold>Git</bold> users will benefit from using 
                    <monospace>wflow_publish()</monospace>. Besides the convenience of a single function, 
                    <monospace>wflow_publish()</monospace> ensures that:</p>
                <list list-type="bullet">
                    <list-item>
                        <label>1.</label>
                        <p>Every commit to an (Rmd) analysis file is associated with a commit to the results file generated by that analysis file.</p>
                    </list-item>
                    <list-item>
                        <label>2.</label>
                        <p>An analysis file is only published and committed if it runs successfully; on failure, 
                            <monospace>wflow_publish()</monospace> aborts, and neither code nor results are committed to the 
                            <bold>Git</bold> repository (R code that does not work can still be committed to a 
                            <bold>workflowr</bold> project via other methods, e.g., directly using 
                            <bold>Git</bold>, but it will not be associated with a committed results file).</p>
                    </list-item>
                </list>
                <p>Publishing an analysis is not necessarily final &#x2014; after calling 
                    <monospace>wflow_publish()</monospace>, the analysis can be repeatedly updated and re-published using 
                    <monospace>wflow_publish()</monospace>. Each time 
                    <monospace>wflow_publish()</monospace> succeeds in committing a new version of the code and results, a link to previously published versions of the analysis are embedded in the webpage so that readers can easily access previous versions and compare with the latest results.</p>
            </sec>
            <sec>
                <title>Checking in on the project&#x2019;s development: 
                    <monospace>wflow_status()</monospace>
                </title>
                <p>As a 
                    <bold>workflowr</bold> project grows, it is important to be able to get an overview of the project&#x2019;s status and identify files that may need attention. This functionality is provided by the 
                    <monospace>wflow_status()</monospace> command, which gives the status of each Rmd file in the project &#x2014; either &#x201c;scratch&#x201d;, &#x201c;unpublished&#x201d;, or &#x201c;published&#x201d;, whose definitions are given in 
                    <xref ref-type="fig" rid="f4">Figure 4</xref>. The &#x201c;published&#x201d; Rmd files, which are those that have been run through 
                    <monospace>wflow_publish()</monospace>, are further recorded as either &#x201c;up-to-date&#x201d; or &#x201c;modified&#x201d; depending on whether the Rmd file has been modified since 
                    <monospace>wflow_publish()</monospace> was run. The 
                    <monospace>wflow_status()</monospace> function highlights all Rmd files in the &#x201c;scratch&#x201d;, &#x201c;unpublished&#x201d; or &#x201c;modified&#x201d; states, and suggests suitable next steps.</p>
                <fig fig-type="figure" id="f4" orientation="portrait" position="float">
                    <label>Figure 4. </label>
                    <caption>
                        <title>The workflowr package is an R Markdown-aware version control system.</title>
                        <p>The function 
                            <monospace>wflow_status()</monospace> assigns a state to each Rmd file in the 
                            <bold>workflowr</bold> project based on its status in the Git repository&#x2019;s working tree, and based on the Git status of the associated HTML results file.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/22923/510c4de2-c96e-4471-9853-4ebce466a666_figure4.gif"/>
                </fig>
            </sec>
            <sec>
                <title>Sharing code and results: 
                    <monospace>wflow_git_push()</monospace>
                </title>
                <p>The version-controlled website created by 
                    <bold>workflowr</bold> is self-contained, so it can be hosted by most Web servers with little effort. Once the website is available online, the code and results can be shared with collaborators and colleagues by providing them with the website&#x2019;s URL. Similarly, the 
                    <bold>workflowr</bold> repository can also serve as a companion resource for a manuscript by referencing the website URL in the paper.</p>
                <p>Since a 
                    <bold>workflowr</bold> project is also a 
                    <bold>Git</bold> repository, the most convenient way to make the website available online is to use a 
                    <bold>Git</bold> hosting service. The 
                    <bold>workflowr</bold> package includes functions 
                    <monospace>wflow_use_github()</monospace> and 
                    <monospace>wflow_use_gitlab()</monospace> to simplify the setup process on two of the most widely used services, GitHub and GitLab. Once a user has created a 
                    <bold>Git</bold> repository on one of these online platforms, the project can be easily uploaded using 
                    <monospace>wflow_git_push()</monospace> (there is also a companion function 
                    <monospace>wflow_git_pull()</monospace>, which is used when multiple people are collaborating on a 
                    <bold>workflowr</bold> project, or when a project is being updated from multiple computers).</p>
                <p>The results files in a 
                    <bold>workflowr</bold> website include links to past versions of analysis and figures, making it easy for collaborators to benefit from the versioning of analyses without knowing anything about 
                    <bold>Git</bold>. For example, if a collaborator wants to download a previous version of a figure generated several months ago, this can be done by navigating the links on the 
                    <bold>workflowr</bold> website.</p>
            </sec>
            <sec>
                <title>Installation</title>
                <p>The 
                    <bold>workflowr</bold> package is available on CRAN. It works with R versions 2.3.5 or later, and can be installed on any major platform that is supported by R (Linux, macOS, Windows). It is regularly tested on all major operating systems via several continuous integration services (AppVeyor, CircleCI, Travis CI). It is also regularly tested by CRAN using machines running Debian GNU/Linux, Fedora, macOS, Solaris, and Windows.</p>
                <p>Because 
                    <bold>workflowr</bold> uses the 
                    <bold>rmarkdown</bold> package to build the HTML pages, it requires the document conversion software 
                    <bold>pandoc</bold> to be installed. The easiest way for R users to install 
                    <bold>pandoc</bold> is to install 
                    <bold>RStudio</bold>.</p>
                <p>Installing 
                    <bold>Git</bold> is not required because the R package dependency 
                    <bold>git2r</bold> includes 
                    <bold>libgit2</bold>, a minimal 
                    <bold>Git</bold> implementation (nonetheless, installing 
                    <bold>Git</bold> may be useful for occasional management of the 
                    <bold>Git</bold> repository outside regular 
                    <bold>workflowr</bold> usage).</p>
            </sec>
            <sec>
                <title>Customization</title>
                <p>
                    <bold>Workflowr</bold> projects are highly customizable. For example, the look of the webpages can be customized, via options provided by the 
                    <bold>rmarkdown</bold> package, by editing the 
                    <monospace>analysis/_site.yml</monospace> configuration file. Additional settings specific to 
                    <bold>workflowr</bold>, such as setting the seed for the pseudorandom number generator, or setting the working directory for the Rmd files, can be controlled in the 
                    <monospace>_workflowr.yml</monospace> file.</p>
            </sec>
        </sec>
        <sec>
            <title>Implementation</title>
            <p>Here we give an overview of the 
                <bold>workflowr</bold> package implementation. All 
                <bold>workflowr</bold> commands can be invoked from R (or 
                <bold>RStudio</bold>) so long as the working directory in R is set to the directory containing a 
                <bold>workflowr</bold> project, or any subdirectory of a 
                <bold>workflowr</bold> project (this is similar to how 
                <bold>Git</bold> commands are invoked). To determine the root directory of a 
                <bold>workflowr</bold> project from a subdirectory, whenever a command is called from the R console, 
                <bold>workflowr</bold> uses the 
                <bold>rprojroot</bold>
                <sup>
                    <xref ref-type="bibr" rid="ref-46">46</xref>
                </sup> R package to search for the 
                <bold>RStudio</bold> project file stored at the root of the project (the 
                <bold>RStudio</bold> project file is a required file, so if this file is deleted, the 
                <bold>workflowr</bold> commands will not work).</p>
            <sec>
                <title>Organizing the project: 
                    <monospace>wflow_start()</monospace>
                </title>
                <p>The function 
                    <monospace>wflow_start()</monospace> populates the project directory using predefined template files (see 
                    <xref ref-type="fig" rid="f1">Figure 1</xref>). It uses the 
                    <bold>glue</bold>
                    <sup>
                        <xref ref-type="bibr" rid="ref-47">47</xref>
                    </sup> R package to insert relevant variables, e.g., the name of the project, directly into the newly created files. When 
                    <monospace>wflow_start()</monospace> is called with 
                    <monospace>git = TRUE</monospace> (which is the default), a 
                    <bold>Git</bold> repository is created in the project directory, and all newly created or modified files are committed to the repository. If the user has never previously created a 
                    <bold>Git</bold> repository on their computer, they may need to first call 
                    <monospace>wflow_git_config()</monospace> to configure 
                    <bold>Git</bold>.</p>
            </sec>
            <sec>
                <title>Generating results reproducibly: 
                    <monospace>wflow_build()</monospace>
                </title>
                <p>The 
                    <monospace>wflow_build()</monospace> function generates a responsive website from a collection of Rmd files. Both 
                    <monospace>wflow_build()</monospace> and 
                    <monospace>wflow_publish()</monospace> support file patterns, also known as &#x201c;wildcard expansion&#x201d;; for example, 
                    <monospace>wflow_build("analysis/*.Rmd")</monospace> will generate webpages for all the Rmd files in the 
                    <monospace>analysis/</monospace> directory.</p>
                <p>The 
                    <monospace>wflow_build()</monospace> function extends the 
                    <monospace>render_site()</monospace> function from the 
                    <bold>rmarkdown</bold> package. The 
                    <monospace>render_site()</monospace> function in turn builds on the Bootstrap framework to create a responsive website with a navigation bar. This rendering step includes downloading and linking to the required CSS and JavaScript files. Many website settings, such as the labels and URLs included in the navigation bar, can be adjusted in the 
                    <monospace>analysis/_site.yml</monospace> configuration file (these options can also be set individually inside the Rmd files, which will override the default options set in 
                    <monospace>analysis/_site.yml</monospace>). Like other R packages that extend 
                    <bold>rmarkdown</bold> (e.g., 
                    <bold>bookdown</bold>), 
                    <bold>workflowr</bold> provides a custom site generator in the function 
                    <monospace>wflow_site()</monospace>, which alters the website generation process. For example, one change to this process is that the generated website files (the HTML, CSS, JavaScript and figures) are moved instead of copied from 
                    <monospace>analysis/</monospace> to 
                    <monospace>docs/</monospace>. This reduces unnecessary duplication of files. Most of 
                    <bold>workflowr</bold>&#x2019;s key features, including the reproducibility report, are implemented in 
                    <monospace>wflow_html()</monospace>, which we describe next.</p>
                <p>In the 
                    <bold>rmarkdown</bold> package, the rendering of individual webpages from Rmd files is controlled by a separate function, 
                    <monospace>html_document()</monospace>. The 
                    <bold>workflowr</bold> package provides an analogous function, 
                    <monospace>wflow_html()</monospace>. This function also extends 
                    <monospace>html_document()</monospace>, so all features implemented in 
                    <bold>rmarkdown</bold> (e.g., code chunk folding, generating a table of contents from the section headings) are inherited by 
                    <monospace>wflow_html()</monospace>.</p>
                <p>Most of the 
                    <bold>workflowr</bold> content is added as a preprocessing step prior to executing the R code in the Rmd file. To achieve this, 
                    <monospace>wflow_html()</monospace> copies the original Rmd file to a temporary directory, incorporates the additional content, then executes the code. The content embedded into the Rmd file includes a code chunk that calls 
                    <monospace>set.seed()</monospace>, a code chunk toward the end of the file that calls 
                    <monospace>sessionInfo()</monospace>, and inline HTML tags for elements such as the reproducibility report (
                    <xref ref-type="fig" rid="f2">Figure 2</xref>) and links to previous versions of figures. There is also a brief postprocessing step to incorporate additional HTML, CSS, and JavaScript elements needed to display the 
                    <bold>workflowr</bold> elements added in the preprocessing step. This postprocessing is done when 
                    <bold>pandoc</bold> converts the generated markdown to the final webpage.</p>
                <p>The process for embedding links to past versions of files &#x2014; that is, files added to previous commits in a 
                    <bold>Git</bold> repository &#x2014; requires some additional explanation. Links to past versions are included only if the user has set up a remote repository hosted by either GitHub or GitLab. Clicking on a link to a past version of an Rmd file (or figure file) in a Web browser will load a webpage displaying the R Markdown source code (or figure file) as it is saved in the given commit. For past versions of the webpages, we use an independent service 
                    <ext-link ext-link-type="uri" xlink:href="https://raw.githack.com/">raw.githack.com</ext-link>, which displays the HTML file in the browser like any other webpage (this is because GitHub and GitLab only show the raw HTML code). These links will point to valid webpages only after the remote repository (on GitHub or GitLab) is updated, e.g., using 
                    <monospace>wflow_git_push()</monospace>. In the current implementation, when an Rmd file (and its corresponding HTML file) is renamed, the webpage does not include links to past versions prior to renaming. So renaming files will limit the ability to browse the project development history.</p>
                <p>The 
                    <monospace>wflow_html()</monospace> function allows for considerable customization of the 
                    <bold>workflowr</bold> reproducibility report, and other features. The settings in the 
                    <monospace>analysis/_site.yml</monospace> configuration file are passed to function 
                    <monospace>html_document()</monospace> in the 
                    <bold>rmarkdown</bold> package, whereas the settings in 
                    <monospace>_workflowr.yml</monospace> are read by 
                    <monospace>wflow_html()</monospace>; see 
                    <monospace>help(wflow_html)</monospace> for a full details on all 
                    <bold>workflowr</bold> settings that can be customized in this file. For example, the default function used to record the session information at the bottom of each webpage, 
                    <monospace>sessionInfo()</monospace>, can be overridden by adding the YAML field 
                    <monospace>sessioninfo</monospace> (e.g., the function from the 
                    <bold>devtools</bold>
                    <sup>
                        <xref ref-type="bibr" rid="ref-48">48</xref>
                    </sup> package could be used instead by setting 
                    <monospace>sessioninfo: devtools::session_info()</monospace>).</p>
                <p>To execute the code, 
                    <monospace>wflow_build()</monospace> first creates a new R session to execute the code. This is implemented using the R package 
                    <bold>callr</bold>
                    <sup>
                        <xref ref-type="bibr" rid="ref-49">49</xref>
                    </sup>.</p>
                <p>By default, the 
                    <bold>rmarkdown</bold> package renders an Rmd file in the directory where the Rmd file is stored; that is, the R working directory is automatically changed to the directory containing the target Rmd file. By default, 
                    <monospace>wflow_html()</monospace> overrides the behaviour, and instead executes the R code with respect to the root project directory. This default is intended to improve reproducibility by resolving file paths from a consistent reference point. This execution directory can be controlled by the 
                    <monospace>knit_root_dir</monospace> option, which is set in the 
                    <monospace>_workflowr.yml</monospace> configuration file. By default, new projects execute the R Markdown code chunks in the root directory. If this setting is not configured, 
                    <bold>workflowr</bold> reverts to the 
                    <bold>rmarkdown</bold> default. It is also possible to have a different 
                    <monospace>knit_root_dir</monospace> setting for different files, but this is generally not recommended as it will make the code more difficult to follow.</p>
            </sec>
            <sec>
                <title>Keeping track of the project&#x2019;s development: 
                    <monospace>wflow_publish()</monospace>
                </title>
                <p>One of the steps in 
                    <monospace>wflow_publish()</monospace>, as we have mentioned, is a call to 
                    <monospace>wflow_build()</monospace>. It also runs 
                    <bold>Git</bold> commands to commit the source code and rendered HTML files (
                    <xref ref-type="fig" rid="f3">Figure 3</xref>). These 
                    <bold>Git</bold> commands are executed behind the scenes. We have also implemented many checks and extensive error handling to make sure that the 
                    <bold>Git</bold> repository and R environment are in an acceptable state for committing the results. When an issue arises, 
                    <monospace>wflow_publish()</monospace> attempts to detect the issue as early as possible, then it reverts the 
                    <bold>Git</bold> repository to the initial state and, when possible, suggests how to fix the issue. For example, 
                    <monospace>wflow_publish()</monospace> will stop if any of the files contain conflicts from a previous merge using 
                    <bold>Git</bold>.</p>
            </sec>
            <sec>
                <title>Checking in on the project&#x2019;s development: 
                    <monospace>wflow_status()</monospace>
                </title>
                <p>The 
                    <monospace>wflow_status()</monospace> function checks the status of each Rmd file in the project by comparing the state of the file in the 
                    <bold>Git</bold> repository&#x2019;s working tree against the 
                    <bold>Git</bold> status of the corresponding HTML file. In 
                    <bold>Git</bold> terminology, a &#x201c;scratch&#x201d; Rmd file in a 
                    <bold>workflowr</bold> project is an uncommitted file in a 
                    <bold>Git</bold> repository; &#x201c;unpublished&#x201d; means that the Rmd file is committed to the 
                    <bold>Git</bold> repository but the corresponding HTML is not; a "published" Rmd file and its HTML file are both committed to the 
                    <bold>Git</bold> repository; and a "modified" Rmd file has changes &#x2014; these changes can be unstaged, staged, or committed &#x2014; that were made since the last time the corresponding HTML file was committed (
                    <xref ref-type="fig" rid="f4">Figure 4</xref>).</p>
                <p>Using 
                    <bold>git2r</bold>, it is mostly straightforward to determine the status of each file. The only complicated step is determining whether published Rmd files have been modified. If all changes to an Rmd file have been committed to the 
                    <bold>Git</bold> history, an Rmd file is considered &#x201c;modified&#x201d; if it has modifying commits that are more recent than commits modifying the corresponding HTML file.</p>
            </sec>
            <sec>
                <title>Sharing the code and results: 
                    <monospace>wflow_git_push()</monospace>
                </title>
                <p>To use 
                    <monospace>wflow_git_push()</monospace>, the remote 
                    <bold>Git</bold> repository must first be configured. The user can configure the remotes manually using the 
                    <monospace>git remote</monospace> subcommand or using 
                    <monospace>wflow_git_remote()</monospace>. Alternatively, the 
                    <bold>workflowr</bold> package provides two functions, 
                    <monospace>wflow_use_github()</monospace> and 
                    <monospace>wflow_use_gitlab()</monospace>, that simplify the creation and configuration of remote repositories hosted on GitHub and GitLab. These two convenience functions also add a navigation bar link with the URL of the remote source code repository. The 
                    <monospace>wflow_use_gitlab()</monospace> function takes the additional step of activating the GitLab Pages by creating a file 
                    <monospace>.gitlab-ci.yml</monospace> with the proper configuration (GitHub Pages must be set up manually; there is currently no way to automate this via the GitHub API).</p>
            </sec>
        </sec>
        <sec>
            <title>Use cases</title>
            <p>
                <bold>Workflowr</bold> was officially released on CRAN in April 2018. As of September 2019, it has been downloaded from CRAN over 7,000 times, and it has been adopted by many researchers. The most common use cases are 1) documenting research development and including the project website in the accompanying academic paper, and 2) developing reproducible course materials to share with students. Here we highlight some successful examples.</p>
            <sec>
                <title>Repositories for research projects</title>
                <p>
                    <bold>Human dermal fibroblast clonality project</bold>
                </p>
                <p>
                    <monospace>
                        <ext-link ext-link-type="uri" xlink:href="https://davismcc.github.io/fibroblast-clonality/">https://davismcc.github.io/fibroblast-clonality</ext-link>
                    </monospace>
                </p>
                <p>A 
                    <bold>workflowr</bold> project accompanying a scientific paper on computational methods for decoding the clonal substructures of somatic tissues from DNA sequencing data
                    <sup>
                        <xref ref-type="bibr" rid="ref-50">50</xref>
                    </sup>. The webpages describe how to reproduce the data processing and analysis, along with the outputs and plots.</p>
                <p>
                    <bold>Characterizing and inferring quantitative cell cycle phase in single-cell RNA-seq data analysis</bold>
                </p>
                <p>
                    <monospace>
                        <ext-link ext-link-type="uri" xlink:href="https://github.com/jdblischak/fucci-seq">https://github.com/jdblischak/fucci-seq</ext-link>
                    </monospace>
                </p>
                <p>A 
                    <bold>workflowr</bold> project supporting a paper on measuring cell cycle phase and gene expression levels in human induced pluripotent stem cells
                    <sup>
                        <xref ref-type="bibr" rid="ref-51">51</xref>
                    </sup>. The repository contains the processed data and the code implementing the analyses. The full results can be browsed on the website.</p>
                <p>
                    <bold>Flexible statistical methods for estimating and testing effects in genomic studies with multiple conditions</bold>
                </p>
                <p>
                    <monospace>
                        <ext-link ext-link-type="uri" xlink:href="https://github.com/stephenslab/gtexresults">https://github.com/stephenslab/gtexresults</ext-link>
                    </monospace>
                </p>
                <p>A 
                    <bold>workflowr</bold> project containing the code and data used to produce the results from the GTEx data set that were presented in Urbut 
                    <italic toggle="yes">et al.</italic>
                    <sup>
                        <xref ref-type="bibr" rid="ref-52">52</xref>
                    </sup>.</p>
                <p>
                    <bold>Investigations on "truncated adaptive shrinkage"</bold>
                </p>
                <p>
                    <monospace>
                        <ext-link ext-link-type="uri" xlink:href="https://github.com/LSun/truncash">https://github.com/LSun/truncash</ext-link>
                    </monospace>
                </p>
                <p>A 
                    <bold>workflowr</bold> project created by a Ph.D. student created to keep track of his investigations into controlling false discoveries in the presence of correlation and heteroskedastic noise. This repository illustrates the use of 
                    <bold>workflowr</bold> as a scientific notebook &#x2014; the webpages contain written notes, mathematical equations, source code, and the outputs generated from running the code.</p>
            </sec>
            <sec>
                <title>Repositories for courses</title>
                <p>
                    <bold>Stanford STATS 110</bold>
                </p>
                <p>
                    <monospace>
                        <ext-link ext-link-type="uri" xlink:href="https://xiangzhu.github.io/stanford-stats110">https://xiangzhu.github.io/stanford-stats110</ext-link>
                    </monospace>
                </p>
                <p>A 
                    <bold>workflowr</bold> website for a statistics course taught at Stanford. The website includes working R examples, homework, the course syllabus, and other course materials.</p>
                <p>
                    <bold>Single-cell RNA-seq workshop</bold>
                </p>
                <p>
                    <monospace>
                        <ext-link ext-link-type="uri" xlink:href="https://github.com/crazyhottommy/scRNA-seq-workshop-Fall-2019">https://github.com/crazyhottommy/scRNA-seq-workshop-Fall-2019</ext-link>
                    </monospace>
                </p>
                <p>A 
                    <bold>workflowr</bold> website for a workshop on analysis of single-cell RNA-seq data offered by the Harvard Faculty of Arts and Sciences Informatics group as part of a two-week long bioinformatics course. The R examples demonstrate how to use several bioinformatics packages such as 
                    <bold>Seurat</bold> and 
                    <bold>msigdbr</bold> to prepare and analyze single-cell RNA-seq data sets.</p>
                <p>
                    <bold>Introduction to GIS in R</bold>
                </p>
                <p>
                    <monospace>
                        <ext-link ext-link-type="uri" xlink:href="https://github.com/annakrystalli/intro-r-gis">https://github.com/annakrystalli/intro-r-gis</ext-link>
                    </monospace>
                </p>
                <p>A 
                    <bold>workflowr</bold> website for a workshop given at the 2018 Evolutionary Biology Conference. The website includes working R demonstrations, setup instructions, and exercises.</p>
            </sec>
        </sec>
        <sec>
            <title>Summary</title>
            <p>Our main aim in developing 
                <bold>workflowr</bold> is to lower barriers to open and reproducible code. 
                <bold>Workflowr</bold> provides a core set of commands that can be easily integrated into research practice, and combined with other tools, to make projects more accessible and reproducible. The R package is straightforward to install, easy to learn, and highly customizable.</p>
            <p>Since the first official release of 
                <bold>workflowr</bold> (version 1.0.1, released in April 2018), the core functionality has remained intact, and we expect it to remain that way. The core features of 
                <bold>workflowr</bold> have been carefully tested and revised, in large part thanks to feedback and issue reports from the user community. Our next aim is to implement several enhancements, including:</p>
            <list list-type="bullet">
                <list-item>
                    <p>Create a centralized 
                        <bold>workflowr</bold> project website to make it easier for researchers to share and discover 
                        <bold>workflowr</bold> projects.</p>
                </list-item>
                <list-item>
                    <p>Provide additional functions to simplify website hosting on other popular platforms such as Netlify and Heroku.</p>
                </list-item>
                <list-item>
                    <p>As 
                        <bold>workflowr</bold> projects grow, it becomes increasingly important to document not only the evolution of the code and results over time, but also how the results interrelate with one another. Therefore, we aim to implement syntax that allows file dependencies to be recorded in the Rmd files, and incorporate checking of dependencies as part of the 
                        <bold>workflowr</bold> reproducibility safeguards.</p>
                </list-item>
            </list>
            <p>As 
                <bold>workflowr</bold> has been used in a variety of settings, we have also uncovered some limitations. Here we report on some of the more common issues that have arisen.</p>
            <p>One limitation is that 
                <bold>Git</bold> &#x2014; hence 
                <bold>workflowr</bold> &#x2014; is not well suited to tracking very large files. Therefore, large data files must be left out of the project development history, which reduces reproducibility. One possible workaround is to use 
                <bold>Git LFS</bold> (Large File Storage) or related tools that allow large data files to be tracked and stored remotely inside a 
                <bold>Git</bold> repository. This, however, requires considerable expertise to install and configure 
                <bold>Git LFS</bold>, so it is not a satisfactory solution for some 
                <bold>workflowr</bold> users. Also note that sensitive or secure data can be added to a 
                <bold>workflowr</bold> project so long as the storage and access practices meet the data security requirements (
                <bold>workflowr</bold> has options to simplify creation and management of projects with security requirements).</p>
            <p>Since 
                <bold>workflowr</bold> builds on 
                <bold>Git</bold>, users who already have experience with 
                <bold>Git</bold> can use 
                <bold>Git</bold> directly to manage their 
                <bold>workflowr</bold> projects. This provides additional flexibility, but is not without risk; for example, 
                <bold>Git</bold> commands such as 
                <monospace>git reset</monospace> can be used to alter the project development history, and has the potential to break 
                <bold>workflowr</bold>.</p>
            <p>Finally, 
                <bold>workflowr</bold> records information about the computing environment used to generate the results, but it does not provide any facilities for replicating the environment. This is an area with many recent software advances &#x2014; there are many widely used tools for managing and deploying computational environments, from container technologies such as 
                <bold>Docker</bold> to package managers such as Anaconda and 
                <bold>packrat</bold>. We view these tools as being complementary to 
                <bold>workflowr</bold>, and one future direction would be to develop easy-to-use functions that configure such tools for use in a 
                <bold>workflowr</bold> project.</p>
        </sec>
        <sec>
            <title>Data availability</title>
            <p>All data underlying the results are available as part of the article and no additional source data are required.</p>
        </sec>
        <sec>
            <title>Software availability</title>
            <list list-type="bullet">
                <list-item>
                    <p>Software available from: 
                        <monospace>
                            <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=workflowr">https://cran.r-project.org/package=workflowr</ext-link>
                        </monospace>
                    </p>
                </list-item>
                <list-item>
                    <p>Source code available from: 
                        <monospace>
                            <ext-link ext-link-type="uri" xlink:href="https://github.com/jdblischak/workflowr">https://github.com/jdblischak/workflowr</ext-link>
                        </monospace>
                    </p>
                </list-item>
                <list-item>
                    <p>Archived source code at time of publication: 
                        <monospace>
                            <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.3241801">https://doi.org/10.5281/zenodo.3241801</ext-link>
                        </monospace>
                        <sup>
                            <xref ref-type="bibr" rid="ref-53">53</xref>
                        </sup>
                    </p>
                </list-item>
                <list-item>
                    <p>License: MIT</p>
                </list-item>
            </list>
        </sec>
    </body>
    <back>
        <ack>
            <title>Acknowledgments</title>
            <p>We thank the 
                <bold>workflowr</bold> 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/jdblischak/workflowr/graphs/contributors">contributors</ext-link> for helping improve the package. We are also grateful for the many 
                <bold>workflowr</bold> users for testing the package and providing feedback&#x2014;thanks especially to 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/LSun">Lei Sun</ext-link>, 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/xiangzhu">Xiang Zhu</ext-link>, 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/NKweiwang">Wei Wang</ext-link>, and many other members of the Stephens lab, past and present. We also acknowledge the authors and contributors of the many great open source packages that the 
                <bold>workflowr</bold> package builds on. R packages particularly critical to 
                <bold>workflowr</bold>&#x2019;s implementation are 
                <bold>
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/ropensci/git2r">git2r</ext-link>
                </bold>, 
                <bold>
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/yihui/knitr">knitr</ext-link>
                </bold>, and 
                <bold>
                    <ext-link ext-link-type="uri" xlink:href="https://rmarkdown.rstudio.com/">rmarkdown</ext-link>
                </bold>.</p>
        </ack>
        <ref-list>
            <ref id="ref-1">
                <label>1</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Buckheit</surname>
                            <given-names>JB</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Donoho</surname>
                            <given-names>DL</given-names>
                        </name>
</person-group>:
                    <article-title>WaveLab and reproducible research.</article-title>
                    <source>

                        <italic toggle="yes">Wavelets and Statistics.</italic>
</source>
                    <year>1995</year>;<volume>103</volume>:<fpage>55</fpage>&#x2013;<lpage>81</lpage>.
                    <pub-id pub-id-type="doi">10.1007/978-1-4612-2544-7_5</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-2">
                <label>2</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Easterbrook</surname>
                            <given-names>SM</given-names>
                        </name>
</person-group>:
                    <article-title>Open code for open science?</article-title>
                    <source>

                        <italic toggle="yes">Nat Geosci.</italic>
</source>
                    <year>2014</year>;<volume>7</volume>(<issue>11</issue>):<fpage>779</fpage>&#x2013;<lpage>781</lpage>.
                    <pub-id pub-id-type="doi">10.1038/ngeo2283</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-3">
                <label>3</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gentleman</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Lang</surname>
                            <given-names>TD</given-names>
                        </name>
</person-group>:
                    <article-title>Statistical analyses and reproducible research.</article-title>
                    <source>

                        <italic toggle="yes">J Comput Graph Stat.</italic>
</source>
                    <year>2007</year>;<volume>16</volume>(<issue>1</issue>):<fpage>1</fpage>&#x2013;<lpage>23</lpage>.
                    <pub-id pub-id-type="doi">10.1198/106186007X178663</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-4">
                <label>4</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ince</surname>
                            <given-names>DC</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hatton</surname>
                            <given-names>L</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Graham-Cummin</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title> The case for open computer programs.</article-title>
                    <source>

                        <italic toggle="yes">Nature.</italic>
</source>
                    <year>2012</year>;<volume>482</volume>(<issue>7386</issue>):<fpage>485</fpage>&#x2013;<lpage>488</lpage>.
                    <pub-id pub-id-type="pmid">22358837</pub-id>
                    <pub-id pub-id-type="doi">10.1038/nature10836</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-5">
                <label>5</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Lowndes</surname>
                            <given-names>JSS</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Best</surname>
                            <given-names>BD</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Scarborough</surname>
                            <given-names>C</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Our path to better science in less time using open data science tools.</article-title>
                    <source>

                        <italic toggle="yes">Nat Ecol Evol.</italic>
</source>
                    <year>2017</year>;<volume>1</volume>(<issue>6</issue>):<fpage>160</fpage>.
                    <pub-id pub-id-type="pmid">28812630</pub-id>
                    <pub-id pub-id-type="doi">10.1038/s41559-017-0160</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-6">
                <label>6</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Morin</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Urban</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Adams</surname>
                            <given-names>PD</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Research priorities. Shining light into black boxes.</article-title>
                    <source>

                        <italic toggle="yes">Science.</italic>
</source>
                    <year>2012</year>;<volume>336</volume>(<issue>6078</issue>):<fpage>159</fpage>&#x2013;<lpage>160</lpage>.
                    <pub-id pub-id-type="pmid">22499926</pub-id>
                    <pub-id pub-id-type="doi">10.1126/science.1218263</pub-id>
                    <pub-id pub-id-type="pmcid">4203337</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-7">
                <label>7</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Peng</surname>
                            <given-names>RD</given-names>
                        </name>
</person-group>:
                    <article-title>Reproducible research in computational science.</article-title>
                    <source>

                        <italic toggle="yes">Science.</italic>
</source>
                    <year>2011</year>;<volume>334</volume>(<issue>6060</issue>):<fpage>1226</fpage>&#x2013;<lpage>1227</lpage>.
                    <pub-id pub-id-type="pmid">22144613</pub-id>
                    <pub-id pub-id-type="doi">10.1126/science.1213847</pub-id>
                    <pub-id pub-id-type="pmcid">3383002</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-8">
                <label>8</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Sandve</surname>
                            <given-names>GK</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Nekrutenko</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Taylor</surname>
                            <given-names>J</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Ten simple rules for reproducible computational research.</article-title>
                    <source>

                        <italic toggle="yes">PLoS Comput Biol.</italic>
</source>
                    <year>2013</year>;<volume>9</volume>(<issue>10</issue>):<fpage>e1003285</fpage>.
                    <pub-id pub-id-type="pmid">24204232</pub-id>
                    <pub-id pub-id-type="doi">10.1371/journal.pcbi.1003285</pub-id>
                    <pub-id pub-id-type="pmcid">3812051</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-9">
                <label>9</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Stodden</surname>
                            <given-names>V</given-names>
                        </name>

                        <name name-style="western">
                            <surname>McNutt</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Bailey</surname>
                            <given-names>DH</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Enhancing reproducibility for computational methods.</article-title>
                    <source>

                        <italic toggle="yes">Science.</italic>
</source>
                    <year>2016</year>;<volume>354</volume>(<issue>6317</issue>):<fpage>1240</fpage>&#x2013;<lpage>1241</lpage>.
                    <pub-id pub-id-type="pmid">27940837</pub-id>
                    <pub-id pub-id-type="doi">10.1126/science.aah6168</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-10">
                <label>10</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ioannidis</surname>
                            <given-names>JP</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Allison</surname>
                            <given-names>DB</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ball</surname>
                            <given-names>CA</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Repeatability of published microarray gene expression analyses.</article-title>
                    <source>

                        <italic toggle="yes">Nat Genet.</italic>
</source>
                    <year>2009</year>;<volume>41</volume>(<issue>2</issue>):<fpage>149</fpage>&#x2013;<lpage>155</lpage>.
                    <pub-id pub-id-type="pmid">19174838</pub-id>
                    <pub-id pub-id-type="doi">10.1038/ng.295</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-11">
                <label>11</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ioannidis</surname>
                            <given-names>JP</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Greenland</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hlatky</surname>
                            <given-names>MA</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Increasing value and reducing waste in research design, conduct, and analysis.</article-title>
                    <source>

                        <italic toggle="yes">Lancet.</italic>
</source>
                    <year>2015</year>;<volume>383</volume>(<issue>9912</issue>):<fpage>166</fpage>&#x2013;<lpage>175</lpage>.
                    <pub-id pub-id-type="pmid">24411645</pub-id>
                    <pub-id pub-id-type="doi">10.1016/S0140-6736(13)62227-8</pub-id>
                    <pub-id pub-id-type="pmcid">4697939</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-12">
                <label>12</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Merali</surname>
                            <given-names>Z</given-names>
                        </name>
</person-group>:
                    <article-title>Computational science: ...error.</article-title>
                    <source>

                        <italic toggle="yes">Nature.</italic>
</source>
                    <year>2010</year>;<volume>467</volume>(<issue>7317</issue>):<fpage>775</fpage>&#x2013;<lpage>777</lpage>.
                    <pub-id pub-id-type="pmid">20944712</pub-id>
                    <pub-id pub-id-type="doi">10.1038/467775a</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-13">
                <label>13</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Stodden</surname>
                            <given-names>V</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Seiler</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ma</surname>
                            <given-names>Z</given-names>
                        </name>
</person-group>:
                    <article-title>An empirical analysis of journal policy effectiveness for computational reproducibility.</article-title>
                    <source>

                        <italic toggle="yes">Proc Natl Acad Sci U S A.</italic>
</source>
                    <year>2018</year>;<volume>115</volume>(<issue>11</issue>):<fpage>2584</fpage>&#x2013;<lpage>2589</lpage>.
                    <pub-id pub-id-type="pmid">29531050</pub-id>
                    <pub-id pub-id-type="doi">10.1073/pnas.1708290115</pub-id>
                    <pub-id pub-id-type="pmcid">5856507</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-14">
                <label>14</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Kitzes</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Turek</surname>
                            <given-names>D</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Deniz</surname>
                            <given-names>F</given-names>
                        </name>
</person-group>:
                    <article-title>The practice of reproducible research: case studies and lessons from the data-intensive sciences.</article-title>Univ of California Press,<year>2017</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://www.jstor.org/stable/10.1525/j.ctv1wxsc7">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-15">
                <label>15</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wilson</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Aruliah</surname>
                            <given-names>DA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Brown</surname>
                            <given-names>CT</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Best practices for scientific computing.</article-title>
                    <source>

                        <italic toggle="yes">PLoS Biol.</italic>
</source>
                    <year>2014</year>;<volume>12</volume>(<issue>1</issue>):<fpage>e1001745</fpage>.
                    <pub-id pub-id-type="pmid">24415924</pub-id>
                    <pub-id pub-id-type="doi">10.1371/journal.pbio.1001745</pub-id>
                    <pub-id pub-id-type="pmcid">3886731</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-16">
                <label>16</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Findler</surname>
                            <given-names>RB</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Clements </surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Flanagan</surname>
                            <given-names>C</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>DrScheme: a programming environment for Scheme.</article-title>
                    <source>

                        <italic toggle="yes">J Funct Program.</italic>
</source>
                    <year>2002</year>;<volume>12</volume>(<issue>2</issue>):<fpage>159</fpage>&#x2013;<lpage>182</lpage>.
                    <pub-id pub-id-type="doi">10.1017/S0956796801004208</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-17">
                <label>17</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Marwick</surname>
                            <given-names>B</given-names>
                        </name>
</person-group>:
                    <article-title>Computational reproducibility in archaeological research: basic principles and a case study of their implementation.</article-title>
                    <source>

                        <italic toggle="yes">J Archaeol Method Theory.</italic>
</source>
                    <year>2017</year>;<volume>24</volume>(<issue>2</issue>):<fpage>424</fpage>&#x2013;<lpage>450</lpage>.
                    <pub-id pub-id-type="doi">10.1007/s10816-015-9272-9</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-18">
                <label>18</label>
                <mixed-citation publication-type="journal">
                    <collab>R Core Team</collab>:
                    <article-title>R: a language and environment for statistical computing</article-title>. R Foundation for Statistical Computing, Vienna,   Austria,<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://www.R-project.org/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-19">
                <label>19</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Chacon</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Straub</surname>
                            <given-names>B</given-names>
                        </name>
</person-group>:
                    <article-title>Pro Git</article-title>. Springer, New York, NY, 2nd edition,<year>2014</year>.
                    <pub-id pub-id-type="doi">10.1007/978-1-4842-0076-6</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-20">
                <label>20</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Loeliger</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>McCullough</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Version control with Git</article-title>. O&#x2019;Reilly Media, Sebastopol, CA. 2nd edition,<year>2012</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://books.google.co.in/books/about/Version_Control_with_Git.html?id=qIucp61eqAwC&amp;printsec=frontcover&amp;source=kp_read_button&amp;redir_esc=y#v=onepage&amp;q&amp;f=false">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-21">
                <label>21</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Xie</surname>
                            <given-names>Y</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Allaire</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Grolemund</surname>
                            <given-names>G</given-names>
                        </name>
</person-group>:
                    <article-title>R Markdown: the definitive guide. </article-title>Chapman and Hall/CRC, New York, NY.<year>2018</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://books.google.co.in/books/about/R_Markdown.html?id=octmDwAAQBAJ&amp;printsec=frontcover&amp;source=kp_read_button&amp;redir_esc=y#v=onepage&amp;q&amp;f=false">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-22">
                <label>22</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Xie</surname>
                            <given-names>Y</given-names>
                        </name>
</person-group>:
                    <article-title>knitr: a comprehensive tool for reproducible research in R</article-title>. In V. Stodden, F. Leisch,  and R.D. Peng, editors,
                    <italic toggle="yes">Implementing Reproducible Computational Research</italic>. Chapman and Hall/CRC,<year>2014</year>.
                    <pub-id pub-id-type="doi">10.1201/9781315373461-1</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-23">
                <label>23</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Xie</surname>
                            <given-names>Y</given-names>
                        </name>
</person-group>:
                    <article-title>knitr: a general-purpose package for dynamic report generation in R</article-title>. R package version 1.23.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://yihui.name/knitr/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-24">
                <label>24</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Allaire</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Xie</surname>
                            <given-names>Y</given-names>
                        </name>

                        <name name-style="western">
                            <surname>McPherson</surname>
                            <given-names>J</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>rmarkdown: dynamic documents for R</article-title>. R package version 1.13.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://rmarkdown.rstudio.com">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-25">
                <label>25</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Spurlock</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Bootstrap</article-title>. O&#x2019;Reilly Media, Sebastopol, CA,<year>2013</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://pepa.holla.cz/wp-content/uploads/2015/10/Bootstrap.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-26">
                <label>26</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Xie</surname>
                            <given-names>Y</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hill</surname>
                            <given-names>AP</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Thomas</surname>
                            <given-names>A</given-names>
                        </name>
</person-group>:
                    <article-title>blogdown: creating websites with R Markdown.</article-title>Chapman and Hall/CRC, Boca Raton, Florida,<year>2017</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/rstudio/blogdown">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-27">
                <label>27</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Xie</surname>
                            <given-names>Y</given-names>
                        </name>
</person-group>:
                    <article-title>bookdown: authoring books and technical documents with R Markdown</article-title>. Chapman and Hall/CRC, Boca Raton, Florida,<year>2016</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://books.google.co.in/books/about/Bookdown.html?id=8nm0DQAAQBAJ&amp;printsec=frontcover&amp;source=kp_read_button&amp;redir_esc=y#v=onepage&amp;q=978-1138700109&amp;f=false">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-28">
                <label>28</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hesselberth</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>pkgdown: make static HTML documentation for a package</article-title>. R package version 1.4.1.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://CRAN.R-project.org/package=pkgdown">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-29">
                <label>29</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Widgren</surname>
                            <given-names>S</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>git2r: provides access to Git repositories</article-title>. R package version 0.26.1.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=git2r">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-30">
                <label>30</label>
                <mixed-citation publication-type="journal">
                    <collab>R Studio Team</collab>:
                    <article-title>RStudio: integrated development environment for R</article-title>. RStudio, Inc., Boston, MA.<year>2018</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.rstudio.com/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-31">
                <label>31</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ushey</surname>
                            <given-names>K</given-names>
                        </name>

                        <name name-style="western">
                            <surname>McPherson</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cheng</surname>
                            <given-names>J</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>packrat: a dependency management system for projects and their R package dependencies</article-title>. R package version 0.5.0.<year>2018</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://CRAN.R-project.org/package=packrat">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-32">
                <label>32</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ooi</surname>
                            <given-names>H</given-names>
                        </name>
</person-group>:
                    <article-title>checkpoint: install packages from snapshots on the checkpoint server for reproducibility</article-title>. R  package  version  0.4.7.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=checkpoint">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-33">
                <label>33</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Becker</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Barr</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Gentleman</surname>
                            <given-names>R</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Enhancing reproducibility and collaboration via management of R package cohorts.</article-title>
                    <source>

                        <italic toggle="yes">J Stat Softw.</italic>
</source>
                    <year>2017</year>;<volume>82</volume>(<issue>1</issue>):<fpage>1</fpage>&#x2013;<lpage>17</lpage>.
                    <pub-id pub-id-type="doi">10.18637/jss.v082.i01</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-34">
                <label>34</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Sokolowski</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Jakuczun</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Yakimechko</surname>
                            <given-names>Y</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>RSuite: supports developing, building and deploying R solution</article-title>. R package version 0.37-253.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://CRAN.R-project.org/package=RSuite">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-35">
                <label>35</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>K&#x00f6;ster</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Rahmann</surname>
                            <given-names>S</given-names>
                        </name>
</person-group>:
                    <article-title>Snakemake--a scalable bioinformatics workflow engine.</article-title>
                    <source>

                        <italic toggle="yes">Bioinformatics.</italic>
</source>
                    <year>2012</year>;<volume>28</volume>(<issue>19</issue>):<fpage>2520</fpage>&#x2013;<lpage>2522</lpage>.
                    <pub-id pub-id-type="pmid">22908215</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/bts480</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-36">
                <label>36</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Landau</surname>
                            <given-names>WM</given-names>
                        </name>
</person-group>:
                    <article-title>The drake R package: a pipeline toolkit for reproducibility and high-performance computing.</article-title>
                    <source>

                        <italic toggle="yes">J Open Source Softw.</italic>
</source>
                    <year>2018</year>;<volume>3</volume>(<issue>21</issue>):<fpage>550</fpage>.
                    <pub-id pub-id-type="doi">10.21105/joss.00550</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-37">
                <label>37</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Biecek</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Kosinski</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>archivist: an R package for managing, recording and restoring data analysis results.</article-title>
                    <source>

                        <italic toggle="yes">J Stat Softw.</italic>
</source>
                    <year>2017</year>;<volume>82</volume>(<issue>11</issue>):<fpage>1</fpage>&#x2013;<lpage>28</lpage>.
                    <pub-id pub-id-type="doi">10.18637/jss.v082.i11</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-38">
                <label>38</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Vision</surname>
                            <given-names>T</given-names>
                        </name>
</person-group>:
                    <article-title>The dryad digital repository: published evolutionary data as part of the greater data ecosystem</article-title>.<year>2010</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://precedings.nature.com/documents/4595/version/1/files/npre20104595-1.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-39">
                <label>39</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gentleman</surname>
                            <given-names>CR</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Carey</surname>
                            <given-names>VJ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Bates</surname>
                            <given-names>DM</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Bioconductor: open software development for computational biology and bioinformatics.</article-title>
                    <source>

                        <italic toggle="yes">Genome Biol.</italic>
</source>
                    <year>2004</year>;<volume>5</volume>(<issue>10</issue>):<fpage>R80</fpage>.
                    <pub-id pub-id-type="pmid">15461798</pub-id>
                    <pub-id pub-id-type="doi">10.1186/gb-2004-5-10-r80</pub-id>
                    <pub-id pub-id-type="pmcid">545600</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-40">
                <label>40</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gr&#x00fc;ning</surname>
                            <given-names>B</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Dale</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sj&#x00f6;din</surname>
                            <given-names>A</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Bioconda: sustainable and comprehensive software distribution for the life sciences.</article-title>
                    <source>

                        <italic toggle="yes">Nat Methods.</italic>
</source>
                    <year>2018</year>;<volume>15</volume>(<issue>7</issue>):<fpage>475</fpage>&#x2013;<lpage>476</lpage>.
                    <pub-id pub-id-type="pmid">29967506</pub-id>
                    <pub-id pub-id-type="doi">10.1038/s41592-018-0046-7</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-41">
                <label>41</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>White</surname>
                            <given-names>JM</given-names>
                        </name>
</person-group>:
                    <article-title>ProjectTemplate: automates the creation of new statistical analysis projects</article-title>. R  package  version  0.9.0.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://CRAN.R-project.org/package=ProjectTemplate">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-42">
                <label>42</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Marwick</surname>
                            <given-names>B</given-names>
                        </name>
</person-group>:
                    <article-title>rrtools: creates a reproducible research compendium</article-title>.  R package version 0.1.0.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/benmarwick/rrtools">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-43">
                <label>43</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Bryan</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>usethis: automate package and project setup</article-title>. R package version 1.5.1.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://CRAN.R-project.org/package=usethis">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-44">
                <label>44</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gelfond</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Goros</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hernandez</surname>
                            <given-names>B</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>A system for an accountable data analysis process in R.</article-title>
                    <source>

                        <italic toggle="yes">R J.</italic>
</source>
                    <year>2018</year>;<volume>10</volume>(<issue>1</issue>):<fpage>6</fpage>&#x2013;<lpage>21</lpage>.
                    <pub-id pub-id-type="pmid">30505573</pub-id>
                    <pub-id pub-id-type="doi">10.32614/RJ-2018-001</pub-id>
                    <pub-id pub-id-type="pmcid">6261481</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-45">
                <label>45</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Davidson</surname>
                            <given-names>AP</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Mattioni</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Samarkanov</surname>
                            <given-names>D</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Sumatra:  a toolkit for reproducible resesearch</article-title>. In V. Stodden, F. Leisch, and R. D. Peng, editors,
                    <italic toggle="yes">Implementing Reproducible Computational Research</italic>. Chapman and Hall/CRC.<year>2014</year>.
                    <pub-id pub-id-type="doi">10.1201/9781315373461-3</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-46">
                <label>46</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>M&#x00fc;ller</surname>
                            <given-names>K</given-names>
                        </name>
</person-group>:
                    <article-title>rprojroot: finding files in project subdirectories</article-title>. R package version 1.2.<year>2017</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=rprojroot">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-47">
                <label>47</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hester</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>glue: interpreted string literals</article-title>. R package version 1.3.1.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://CRAN.R-project.org/package=glue">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-48">
                <label>48</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hester</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Chang</surname>
                            <given-names>W</given-names>
                        </name>
</person-group>:
                    <article-title>devtools: tools to make developing R packages easier</article-title>. R  package  version  2.1.0.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://CRAN.R-project.org/package=devtools">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-49">
                <label>49</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Cs&#x00e1;rdi</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Chang</surname>
                            <given-names>W</given-names>
                        </name>
</person-group>:
                    <article-title>callr: call R from R</article-title>. R package version 3.3.2.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=callr">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-50">
                <label>50</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>McCarthy</surname>
                            <given-names>DJ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Rostom</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Huang</surname>
                            <given-names>Y</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Cardelino: integrating whole exomes and single-cell transcriptomes to reveal phenotypic impact of somatic variants.</article-title>
                    <source>

                        <italic toggle="yes">bioRxiv.</italic>
</source>
                    <year>2018</year>.
                    <pub-id pub-id-type="doi">10.1101/413047</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-51">
                <label>51</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hsiao</surname>
                            <given-names>CJ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Tung</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Blischak</surname>
                            <given-names>JD</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Characterizing and inferring quantitative cell cycle phase in single-cell RNA-seq data analysis.</article-title>
                    <source>

                        <italic toggle="yes">bioRxiv.</italic>
</source>
                    <year>2019</year>.
                    <pub-id pub-id-type="doi">10.1101/526848</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-52">
                <label>52</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Urbut</surname>
                            <given-names>SM</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Wang</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Carbonetto</surname>
                            <given-names>P</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Flexible statistical methods for estimating and testing effects in genomic studies with multiple conditions.</article-title>
                    <source>

                        <italic toggle="yes">Nat Genet.</italic>
</source>
                    <year>2019</year>;<volume>51</volume>(<issue>1</issue>):<fpage>187</fpage>&#x2013;<lpage>195</lpage>.
                    <pub-id pub-id-type="pmid">30478440</pub-id>
                    <pub-id pub-id-type="doi">10.1038/s41588-018-0268-8</pub-id>
                    <pub-id pub-id-type="pmcid">6309609</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-53">
                <label>53</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Blischak</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Carbonetto</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Li</surname>
                            <given-names>J</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>jdblischak/workflowr: workflowr 1.4.0</article-title>.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.5281/zenodo.3241801">Reference Source</ext-link>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report55117">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.22923.r55117</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Baker</surname>
                        <given-names>Peter</given-names>
                    </name>
                    <xref ref-type="aff" rid="r55117a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-1241-7263</uri>
                </contrib>
                <aff id="r55117a1">
                    <label>1</label>School of Public Health, University of Queensland, Herston, Qld, Australia</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>8</day>
                <month>11</month>
                <year>2019</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2019 Baker P</copyright-statement>
                <copyright-year>2019</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport55117" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.20843.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The authors introduce an R package that provides an easy way to set up a workflow for data analysis using R and publish results to a web page.</p>
            <p> </p>
            <p> The workflowr package seems to work well and appears to be widely used.</p>
            <p> </p>
            <p> What is relatively novel about this package is that while most workflow tools I have seen in R concentrate on setting up a directory structure, syntax files and producing output and reports from analyses, this package adds both the ability to publish the results to web pages and also to set up a Github or Gitlab project repositories with minimal effort.</p>
            <p> </p>
            <p> The article is clear and well written as are the associated vignettes. The underlying functions in the R are also well written but perhaps could employ more error checking and reporting (see below).</p>
            <p> </p>
            <p> While I am unlikely to use this approach myself I think it is an excellent approach for new users since it 
                <list list-type="order">
                    <list-item>
                        <p>sets up a project skeleton with instructions,</p>
                    </list-item>
                    <list-item>
                        <p>encourages users to document their project and workflow right from the start, and</p>
                    </list-item>
                    <list-item>
                        <p>also the package provides quite a few helpful vignettes and guides for various scenarios that should be useful for those starting in the area.</p>
                    </list-item>
                </list> However, I do have minor reservations with the approach outlined, including 
                <list list-type="bullet">
                    <list-item>
                        <p>for new users, they must not only learn R but also R Markdown which adds an extra level of complexity;</p>
                    </list-item>
                    <list-item>
                        <p>while it seems necessary in workflowr, users do not really need to use R Markdown files to produce well documented code (see 
                            <ext-link ext-link-type="uri" xlink:href="https://rmarkdown.rstudio.com/articles_report_from_r_script.html">https://rmarkdown.rstudio.com/articles_report_from_r_script.html</ext-link>) but R Markdown seems better suited to reports and articles;</p>
                    </list-item>
                    <list-item>
                        <p>the workflow is very R Markdown-centric: experienced users may wish to employ R or other software directly or a build system like Make or drake. While this is relatively straight forward outside of the package, e.g. by adding these to the git repository outside of the package and using employing R directly to update intermediate results the article or documentation do not give any details;</p>
                    </list-item>
                    <list-item>
                        <p>some functions do not appear to be particularly error-proof for new users, e.g. wflow_git_config will overwrite existing settings without checking or even providing a warning although this may conceivably change in future; and</p>
                    </list-item>
                    <list-item>
                        <p>new users will undoubtedly run into git merge issues and the version I reviewed (1.4.0) did not seem to cater for such eventualities although this appears to have been addressed according to the change log in the latest version (1.5.0).</p>
                    </list-item>
                </list> Minor comments are: 
                <list list-type="bullet">
                    <list-item>
                        <p>I am not sure why only some of the software on page 3 is cited when presumably a reader may benefit from the author's recommendations appropriate to the data analysis workflow area rather than tracking down a general reference for themselves;</p>
                    </list-item>
                    <list-item>
                        <p>while it is good that the potential pitfalls of using git directly or using git reset are addressed on page 11, it may also prove useful for readers to address limitations and potential pitfalls in more depth, perhaps not in the article but with reference to other material or vignettes. For example, users at all levels might benefit from knowing where to get help on merge conflicts, whether users with large data sets should consider databases rather than git or whether typical git workflows like branching would work with this package,</p>
                    </list-item>
                    <list-item>
                        <p>it would be nice to see how this package compares to other alternatives like drake but admittedly the scope this article is more an introduction to the workflowr package.</p>
                    </list-item>
                </list> In summary, this article is clear and well written. The package is an original contribution to the range of software addressing reproducibility and workflow in data analysis projects.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>Biostatistics, R, workflow of data analysis</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
    <sub-article article-type="reviewer-report" id="report55119">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.22923.r55119</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Biecek</surname>
                        <given-names>Przemys&#x0142;aw</given-names>
                    </name>
                    <xref ref-type="aff" rid="r55119a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0001-8423-1823</uri>
                </contrib>
                <aff id="r55119a1">
                    <label>1</label>Faculty of Mathematics and Information Science, Warsaw University of Technology, Warsaw, Poland</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>4</day>
                <month>11</month>
                <year>2019</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2019 Biecek P</copyright-statement>
                <copyright-year>2019</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport55119" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.20843.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>I like the workflowr package and I like the paper. Nicely written.</p>
            <p> Reproducibility is a big thing and workflowr lowers the entrance barrier for non technical users.&#x00a0;This is a huge benefit.</p>
            <p> The package has has already some visibility (judging based on GitHub stars) and is being adopted to various applications (based on examples presented in the paper).</p>
            <p> I recommend to accept the paper.</p>
            <p> Here are some comments that authors may consider: 
                <list list-type="bullet">
                    <list-item>
                        <p>
                            <bold>A. </bold>The point that I am missing the most is the comparison against the drake package. These two packages seems to be similar, maybe complementary. Can they be used together? It would be good to show pros and cons/similarities and differences.</p>
                    </list-item>
                    <list-item>
                        <p>
                            <bold>B. </bold>I like the workflowr package it is a useful tool. What I am missing is the methodology / description of a process / good practices of how the reproducible analysis should look like. This would be very useful for people that look&#x00a0;for precise guidelines on how to integrate the workflowr with every day practice. Wet labs researchers are used to "protocols" that directly guide step by step what to do during the analysis. Maybe it would be possible to give such protocols for reproducible research with the workflowr package.&#x00a0;</p>
                    </list-item>
                    <list-item>
                        <p>Just to give an example,&#x00a0;in the Model Development Process (
                            <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/1907.04461">https://arxiv.org/abs/1907.04461</ext-link>) article there is an overview of phases and tasks shared across model development. In which phases the workflowr or similar tools shall be used?&#x00a0;</p>
                    </list-item>
                    <list-item>
                        <p>
                            <bold>C. </bold>Authors have mentioned blogdown and bookdown packages. I think that even a closer match to the reproducibility problem is the package modelDown (see 
                            <ext-link ext-link-type="uri" xlink:href="https://joss.theoj.org/papers/10.21105/joss.01444">https://joss.theoj.org/papers/10.21105/joss.01444</ext-link>&#x00a0;or GitHub 
                            <ext-link ext-link-type="uri" xlink:href="http://github.com/ModelOriented/modelDown">http://github.com/ModelOriented/modelDown</ext-link>).
                            <sup>
                                <xref ref-type="bibr" rid="rep-ref-55119-1">1</xref>
                            </sup>
                        </p>
                        <p> The modelDown package takes predictive models and creates a HTML website with information about session info, binary&#x00a0;models, training/test data and model explanations.&#x00a0;The website is created without any additional effort. ModelDown automates the most boring part of the modeling i.e. model documentation.</p>
                    </list-item>
                    <list-item>
                        <p>
                            <bold>D. </bold>When mentioning tools for archivisation of binary objects, it may be also useful to add the pins package recently developed by RStudio (https://cran.r-project.org/web/packages/pins/index.html). It is more limited than other mentioned packages (do not keep information about meta data) but quickly gains popularity.</p>
                    </list-item>
                    <list-item>
                        <p>
                            <bold>E. </bold>After the "Unfortunately, this ideal is not usually achieved in practice; most scientific articles do not come with code that can reproduce their results" maybe authors could share their thoughts why it is the case. It will be useful to list specific reasons why reproducibility fails. Is it primarily because we do not have proper software, or they software is too complex, or one needs to pay for the proper software, or researchers are not aware of the problem?</p>
                    </list-item>
                </list>
            </p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Partly</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>Human-Oriented machine learning, Human-Centered Artificial Intelligence, Software engineering</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
        <back>
            <ref-list>
                <title>References</title>
                <ref id="rep-ref-55119-1">
                    <label>1</label>
                    <mixed-citation publication-type="journal">
                        <person-group person-group-type="author"/>:
                        <article-title>modelDown: automated website generator with interpretable documentation for predictive machine learning models</article-title>.
                        <source>
                            <italic>Journal of Open Source Software</italic>
                        </source>.<year>2019</year>;<volume>4</volume>(<issue>38</issue>) :
                        <elocation-id>10.21105/joss.01444</elocation-id>
                        <pub-id pub-id-type="doi">10.21105/joss.01444</pub-id>
                    </mixed-citation>
                </ref>
            </ref-list>
        </back>
    </sub-article>
    <sub-article article-type="reviewer-report" id="report55176">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.22923.r55176</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Hickey</surname>
                        <given-names>Peter&#x00a0;F.</given-names>
                    </name>
                    <xref ref-type="aff" rid="r55176a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-8153-6258</uri>
                </contrib>
                <aff id="r55176a1">
                    <label>1</label>Epigenetics and Development Division, Walter and Eliza Hall Institute of Medical Research, Parkville, Vic, Australia</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>Matthew Stephens and I are both members of the Genotype-Tissue Expression (GTEx) consortium. The consortiumcontains hundreds of scientists. As members of the consortium, we are co-authors on papers where the 'GTEx Consortium' has been listed as an author. That is, the GTEx consortium is listed as a co-author on papers I have authored and, separately, papers that Matthew has authored. We have not directly worked together via the consortium and, to the best of my knowledge, we are not both listed individually as authors on the same paper.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>31</day>
                <month>10</month>
                <year>2019</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2019 Hickey P</copyright-statement>
                <copyright-year>2019</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport55176" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.20843.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The workflowr package, available from CRAN for 1.5 years, has already demonstrated itself to be a valuable contribution to improving the reproducibility of scientific analyses.&#x00a0;This paper does a thorough job setting out the rationale, design, and implementation of the workflowr package. It is clear that the authors have spent considerable time thinking about some of the key challenges of this endeavour, learning about best practises, getting feedback from users, and implementing these using 4 key technologies/features:&#x00a0; 
                <list list-type="order">
                    <list-item>
                        <p>Version control.</p>
                    </list-item>
                    <list-item>
                        <p>Literate programming.</p>
                    </list-item>
                    <list-item>
                        <p>Automatic checks and safeguards to improve code&#x00a0;reproducibility.</p>
                    </list-item>
                    <list-item>
                        <p>Sharing code and results via a website.</p>
                    </list-item>
                </list> </p>
            <p> The paper is clearly written and I am happy to approve the article in its current form.</p>
            <p> </p>
            <p> Some minor comments, queries, and corrections&#x00a0;are given below: 
                <list list-type="bullet">
                    <list-item>
                        <p>Figure caption 1: '"analyses" folder' is '"analysis" folder' in the figure.</p>
                    </list-item>
                    <list-item>
                        <p>p5: Re workflowr executing code in a clean session. My impression was that rendering Rmarkdown documents, at least when done by clicking the 'knit' button in RStudio, was already run in a separate process. But I may be mistaken and perhaps this is different from running `rmarkdown::render_site()`?</p>
                    </list-item>
                    <list-item>
                        <p>Regarding published sites. Not all scientific analyses can be made public, particularly in the early stages. Some discussion of options available for private/protected hosting would be valuable.</p>
                    </list-item>
                    <list-item>
                        <p>I'm a little wary of relying on raw.githack.com for hosting past versions of the webpages. For example, what if the service becomes unavailable? Does or could workflowr support other hosting services?</p>
                    </list-item>
                    <list-item>
                        <p>p11: Is the idea of a 'centralized workflowr project website' like that of the homepage https://bookdown.org/ or for an organisation/user to share their personal workflowr projects?</p>
                    </list-item>
                </list>
            </p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>Statistics, bioinformatics, R programming</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
</article>
