<?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.122924.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>Sapporo: A workflow execution service that encourages the reuse of workflows in various languages in bioinformatics</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: 2 approved with reservations]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Suetake</surname>
                        <given-names>Hirotaka</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/">Investigation</role>
                    <role content-type="http://credit.niso.org/">Methodology</role>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <uri content-type="orcid">https://orcid.org/0000-0003-2765-0049</uri>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Tanjo</surname>
                        <given-names>Tomoya</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Ishii</surname>
                        <given-names>Manabu</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Data Curation</role>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <xref ref-type="aff" rid="a3">3</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>P. Kinoshita</surname>
                        <given-names>Bruno</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a4">4</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Fujino</surname>
                        <given-names>Takeshi</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Data Curation</role>
                    <xref ref-type="aff" rid="a5">5</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Hachiya</surname>
                        <given-names>Tsuyoshi</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Data Curation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a3">3</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Kodama</surname>
                        <given-names>Yuichi</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <uri content-type="orcid">https://orcid.org/0000-0001-7691-9812</uri>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Fujisawa</surname>
                        <given-names>Takatomo</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Resources</role>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Ogasawara</surname>
                        <given-names>Osamu</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Resources</role>
                    <uri content-type="orcid">https://orcid.org/0000-0001-6001-3397</uri>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Shimizu</surname>
                        <given-names>Atsushi</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Arita</surname>
                        <given-names>Masanori</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Funding Acquisition</role>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Fukusato</surname>
                        <given-names>Tsukasa</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Supervision</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a6">6</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Igarashi</surname>
                        <given-names>Takeo</given-names>
                    </name>
                    <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; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Ohta</surname>
                        <given-names>Tazro</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Investigation</role>
                    <role content-type="http://credit.niso.org/">Methodology</role>
                    <role content-type="http://credit.niso.org/">Project Administration</role>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Supervision</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <uri content-type="orcid">https://orcid.org/0000-0003-3777-5945</uri>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a7">7</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>Department of Creative Informatics, Graduate School of Information Science and Technology, The University of Tokyo, Bunkyo, Tokyo, Japan</aff>
                <aff id="a2">
                    <label>2</label>Bioinformation and DDBJ Center, National Institute of Genetics, Mishima, Shizuoka, Japan</aff>
                <aff id="a3">
                    <label>3</label>Genome Analytics Japan Inc, Shinjuku, Tokyo, Japan</aff>
                <aff id="a4">
                    <label>4</label>Curii Corporation, Sommerville, MA, USA</aff>
                <aff id="a5">
                    <label>5</label>Department of Computational Biology and Medical Sciences, Graduate School of Frontier Sciences, The University of Tokyo, Bunkyo, Tokyo, Japan</aff>
                <aff id="a6">
                    <label>6</label>Department of Computer Science, Graduate School of Information Science and Technology, The University of Tokyo, Bunkyo, Tokyo, Japan</aff>
                <aff id="a7">
                    <label>7</label>Database Center for Life Science, Joint Support-Center for Data Science Research, Research Organization of Information and Systems, Mishima, Shizuoka, Japan</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:tazro.ohta@chiba-u.jp">tazro.ohta@chiba-u.jp</email>
                </corresp>
                <fn fn-type="conflict">
                    <p>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>4</day>
                <month>8</month>
                <year>2022</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2022</year>
            </pub-date>
            <volume>11</volume>
            <elocation-id>889</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>28</day>
                    <month>7</month>
                    <year>2022</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2022 Suetake H et al.</copyright-statement>
                <copyright-year>2022</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/11-889/pdf"/>
            <abstract>
                <p>The increased demand for efficient computation in data analysis encourages researchers in biomedical science to use workflow systems. Workflow systems, or so-called workflow languages, are used for the description and execution of a set of data analysis steps. Workflow systems increase the productivity of researchers, specifically in fields that use high-throughput DNA sequencing applications, where scalable computation is required. As systems have improved the portability of data analysis workflows, research communities are able to share workflows to reduce the cost of building ordinary analysis procedures. However, having multiple workflow systems in a research field has resulted in the distribution of efforts across different workflow system communities. As each workflow system has its unique characteristics, it is not feasible to learn every single system in order to use publicly shared workflows. Thus, we developed Sapporo, an application to provide a unified layer of workflow execution upon the differences of various workflow systems. Sapporo has two components: an application programming interface (API) that receives the request of a workflow run and a browser-based client for the API. The API follows the Workflow Execution Service API standard proposed by the Global Alliance for Genomics and Health. The current implementation supports the execution of workflows in four languages: Common Workflow Language, Workflow Description Language, Snakemake, and Nextflow. With its extensible and scalable design, Sapporo can support the research community in utilizing valuable resources for data analysis.</p>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>workflow</kwd>
                <kwd>workflow language</kwd>
                <kwd>workflow execution service</kwd>
                <kwd>open science</kwd>
            </kwd-group>
            <funding-group>
                <award-group id="fund-1">
                    <funding-source>Ministry of Education, Culture, Sports, Science, and Technology (MEXT) of Japan</funding-source>
                </award-group>
                <award-group id="fund-2" xlink:href="http://dx.doi.org/10.13039/501100002241">
                    <funding-source>Japan Science and Technology Agency</funding-source>
                    <award-id>JPMJCR17A1</award-id>
                </award-group>
                <award-group id="fund-3">
                    <funding-source>JSPS KAKENHI</funding-source>
                    <award-id>20J22439</award-id>
                </award-group>
                <funding-statement>This study was supported by JSPS KAKENHI (Grant Number 20J22439; assigned to H.S.), the Life Science Database Integration Project, and the National Bioscience Database Center (NBDC) of the Japan Science and Technology Agency (JST). DDBJ is supported by the Research Organization of Information and Systems (ROIS) under the Ministry of Education, Culture, Sports, Science, and Technology (MEXT) of Japan.&#13;
This study was also supported by the CREST program of the Japan Science and Technology Agency (Grant Number JPMJCR17A1, assigned to T.I.).</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 id="sec1">
            <title>Background</title>
            <p>Modern experimental instruments that convert biological samples into digital data have lower costs and higher throughput than conventional ones.
                <sup>
                    <xref ref-type="bibr" rid="ref1">1</xref>
                </sup> Those instruments have made it possible to conduct large-scale data-driven biology, not only in large projects but also in smaller studies. A DNA sequencer is one such technology in biology, which has shown a drastic improvement in throughput since the late 2000s.
                <sup>
                    <xref ref-type="bibr" rid="ref1">1</xref>
                </sup> DNA sequencing technology highlighted the data science aspect of biology, sparking the demand for computation in biology.
                <sup>
                    <xref ref-type="bibr" rid="ref2">2</xref>
                </sup>
            </p>
            <p>Raw data, the fragments of nucleotide sequences for a DNA sequencer, often called &#x201c;reads,&#x201d; are not biologically interpretable in their unprocessed form. Researchers need to process the data using computational methods to obtain biological insights from the samples. The data processing includes, for example, estimation of sequence error rates, read alignment to a reference genome sequence, extraction of genomic features from aligned data, and annotation with the information obtained from public databases. Researchers develop and share the command-line tools for each step in an analysis. They use the raw data as the initial input data of the first tool and pass its output on as input for the next tool. This chain of processes, connecting a sequence of tools according to their inputs and outputs, is called a workflow.
                <sup>
                    <xref ref-type="bibr" rid="ref3">3</xref>
                </sup>
            </p>
            <p>Workflow structure can be complicated as various sequencing applications require multiple steps of data processing. Combining many tools to construct a complex workflow that performs as intended is not straightforward. It is also not practical to fully understand the internal processes of all the tools. Thus, ensuring that every individual part of a workflow is working correctly depends heavily on the skills of the workflow developer. Even if a workflow runs successfully once, maintaining it is another issue. The tools in a workflow are often developed as open-source software and are frequently updated to improve performance and fix bugs. It is time-consuming to assess the impact of updates associated with individual tools. The tools in a workflow often work in an unintended manner for many reasons, such as changes in hardware, operating system (OS), software dependencies, or input data. Difficulties in building and maintaining workflows cause portability issues with workflows.
                <sup>
                    <xref ref-type="bibr" rid="ref4">4</xref>
                </sup> Because of this, researchers have to spend a great deal of time building workflows similar to those that others have already created.</p>
            <p>To address these issues, researchers have developed many workflow systems in bioinformatics.
                <sup>
                    <xref ref-type="bibr" rid="ref5">5</xref>
                </sup> Each workflow system has unique characteristics, but generally, they all have a language syntax and a workflow engine. Workflow languages define a syntax to describe the inputs and arguments passed to tools and the handling of outputs. Workflow engines often take two arguments to execute a workflow: a workflow definition file that specifies the processes and a job file for input parameters. In many cases, techniques, such as package managers and container virtualization, make it easier to build, maintain, and share complex workflows by pinning down the versions of workflow tools.
                <sup>
                    <xref ref-type="bibr" rid="ref6">6</xref>
                </sup>
            </p>
            <p>Open-source workflow systems help the research community work efficiently by reusing published workflows.
                <sup>
                    <xref ref-type="bibr" rid="ref7">7</xref>
                </sup> However, having multiple systems has resulted in resources distributed across various workflow system communities. For example, the Galaxy community is known for being one of the largest for data analysis in biology.
                <sup>
                    <xref ref-type="bibr" rid="ref8">8</xref>
                </sup> The community maintains a number of workflows and learning materials that users can run on public Galaxy instances. However, as the Galaxy workflows are only runnable on the Galaxy platform, users will face difficulties in running these workflows on other platforms. As another example, Nextflow, one of the most popular command-line-based workflow systems, has a mature community called nf-core to share standard workflows.
                <sup>
                    <xref ref-type="bibr" rid="ref9">9</xref>
                </sup>
                <sup>,</sup>
                <sup>
                    <xref ref-type="bibr" rid="ref10">10</xref>
                </sup> The community has excellent resources, but these are usable only by Nextflow users. It is not reasonable to have a &#x201c;one-size-fits-all&#x201d; workflow system in science because various approaches have pros and cons.
                <sup>
                    <xref ref-type="bibr" rid="ref3">3</xref>
                </sup> Learning the different concepts and features of each workflow system has a high cost associated with it. Thus, it is not practical to consider becoming familiar with a large number of workflow systems in order to be able to utilize the workflows shared by their community users.</p>
            <p>In this paper, we introduce Sapporo, a platform for running multiple workflow systems in the same computing environment. Sapporo wraps the differences in the workflow systems and provides an application programming interface (API) for executing them in a unified way. Sapporo also provides a graphical user interface (GUI) that works as its API client. By enabling users to run multiple workflow systems on the same computing environment, Sapporo gives users the ability to reuse workflows without having to learn a new workflow system.</p>
        </sec>
        <sec id="sec2" sec-type="methods">
            <title>Methods</title>
            <sec id="sec3">
                <title>System overview</title>
                <p>Sapporo consists of two components: Sapporo-service and Sapporo-web (
                    <xref ref-type="fig" rid="f1">Figure 1</xref>). Sapporo-service is an API that receives requests for workflow execution from clients, then executes them in a specified manner. Sapporo-service has an API scheme that satisfies the Global Alliance for Genomics and Health (GA4GH) Workflow Execution Service (WES) standard.
                    <sup>
                        <xref ref-type="bibr" rid="ref11">11</xref>
                    </sup> Sapporo-web is a workflow management client. It is a client of Sapporo-service and other GA4GH WES compatible API servers. The GUI is a browser-based application that does not require user installation.</p>
                <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                    <label>Figure 1. </label>
                    <caption>
                        <title>Overview of the Sapporo system.</title>
                        <p>The component at the bottom is Sapporo-service, a Global Alliance for Genomics and Health (GA4GH) Workflow Execution Service (WES) standard compatible application programming interface (API) to manage the workflow execution. The box at the top is Sapporo-web, the graphical user interface (GUI) client for WES implementations. Sapporo-service has the open specification of the API endpoints, which users can access programmatically.</p>
                    </caption>
                    <graphic id="gr1" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/134975/75ea9d02-ee11-4f3e-8f0b-68c38c0ab237_figure1.gif"/>
                </fig>
                <p>We designed the Sapporo system based on the concept of microservices architecture.
                    <sup>
                        <xref ref-type="bibr" rid="ref12">12</xref>
                    </sup> Unlike conventional computation server applications, we expect multiple Sapporo-service instances to be run on servers as independent endpoints on demand. To manage the runs on the different API servers, we separate the implementation of the server and its client, allowing clients to connect to multiple servers (
                    <xref ref-type="fig" rid="f2">Figure 2</xref>). One of the unique features of the Sapporo system is that it has no authentication mechanism on the application layer. Instead of having users&#x2019; information on the server-side, the user&#x2019;s web browser stores the information, such as workflow execution history. The online documentation &#x201c;Sapporo: Getting Started&#x201d;, available in 
                    <italic toggle="yes">Extended data</italic>, shows the step-by-step procedures to deploy a Sapporo instance on a local computer to test the system.
                    <sup>
                        <xref ref-type="bibr" rid="ref13">13</xref>
                    </sup>
                    <sup>,</sup>
                    <sup>
                        <xref ref-type="bibr" rid="ref34">34</xref>
                    </sup>
                </p>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>Figure 2. </label>
                    <caption>
                        <title>The distribution model of the Sapporo system.</title>
                        <p>Researchers often have multiple computing environments for their data analysis. We designed the Sapporo system to work with a distributed computation model. For example, users can deploy the application programming interface (API) on their local computer, remote computing server, and public cloud instances. As long as the API is running, the user can send a request to execute a workflow from a local client computer.</p>
                    </caption>
                    <graphic id="gr2" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/134975/75ea9d02-ee11-4f3e-8f0b-68c38c0ab237_figure2.gif"/>
                </fig>
                <p>The source code, test code, and documentation for Sapporo-service and Sapporo-web are available from GitHub and archived in Zenodo.
                    <sup>
                        <xref ref-type="bibr" rid="ref35">35</xref>
                    </sup>
                    <sup>,</sup>
                    <sup>
                        <xref ref-type="bibr" rid="ref36">36</xref>
                    </sup>
                </p>
            </sec>
            <sec id="sec4">
                <title>Workflow execution service</title>
                <p>The WES has two layers: the API and the execute function (
                    <xref ref-type="fig" rid="f3">Figure 3</xref>). The API structure and the response are compliant with the GA4GH WES standard.
                    <sup>
                        <xref ref-type="bibr" rid="ref14">14</xref>
                    </sup> The API specification defines the methods to manipulate workflow runs, such as execution, stop, and checking the outputs. In addition, Sapporo-service has its own unique features (
                    <xref ref-type="table" rid="T1">Table 1</xref>). The key feature that makes Sapporo notable is the workflow engine selection. While the other workflow management systems accept one or a few workflow languages, Sapporo-service can accept any workflow language as long as it has a corresponding workflow engine.</p>
                <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                    <label>Figure 3. </label>
                    <caption>
                        <title>The Sapporo-service components.</title>
                        <p>Sapporo-service&#x2019;s application programming interface (API) layer implemented in Python works as an API server to receive the request of a workflow run. Once the API receives the request, it creates a directory to store all the related information and execute run.sh. The run.sh script receives the arguments from the API request and runs the workflow with the specified workflow engine.</p>
                    </caption>
                    <graphic id="gr3" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/134975/75ea9d02-ee11-4f3e-8f0b-68c38c0ab237_figure3.gif"/>
                </fig>
                <table-wrap id="T1" orientation="portrait" position="float">
                    <label>Table 1. </label>
                    <caption>
                        <title>The list of Sapporo-service&#x2019;s features.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Feature</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Description</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Engine selector</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Select engine from available implementations</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Remote URL as attachment</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Fetch remote file and attach to the run</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Output downloader</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Direct download of workflow results</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Registered-only mode</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Restrict workflows by allowed-list</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Workflow parser</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Return parsed workflow information</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>The execution layer executes the workflow system according to the request. It has a simple shell script named &#x201c;run.sh&#x201d; as its easily extendable core component. The number of workflow systems increased from just one at the beginning of the project to seven in the current version (
                    <xref ref-type="table" rid="T2">Table 2</xref>). Once the system receives a workflow run request, it issues a universally unique identifier (UUID) and creates a directory named with the UUID, where the system stores all the necessary files. The workflow definition files, intermediate and final outputs, and the other metadata are stored in that directory. This per-run directory can act as a bundle of provenance for the workflow run (
                    <xref ref-type="fig" rid="f4">Figure 4</xref>).</p>
                <table-wrap id="T2" orientation="portrait" position="float">
                    <label>Table 2. </label>
                    <caption>
                        <title>The list of workflow engines available in Sapporo.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Engine</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Supported language(s)</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">cwltool
                                    <sup>
                                        <xref ref-type="bibr" rid="ref15">15</xref>
                                    </sup>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">CWL</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Nextflow
                                    <sup>
                                        <xref ref-type="bibr" rid="ref9">9</xref>
                                    </sup>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Nextflow</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Toil
                                    <sup>
                                        <xref ref-type="bibr" rid="ref16">16</xref>
                                    </sup>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">CWL</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Cromwell
                                    <sup>
                                        <xref ref-type="bibr" rid="ref17">17</xref>
                                    </sup>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">WDL, CWL</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Snakemake
                                    <sup>
                                        <xref ref-type="bibr" rid="ref18">18</xref>
                                    </sup>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Snakemake</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">ep3
                                    <sup>
                                        <xref ref-type="bibr" rid="ref19">19</xref>
                                    </sup>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">CWL</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">StreamFlow
                                    <sup>
                                        <xref ref-type="bibr" rid="ref20">20</xref>
                                    </sup>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">CWL</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <fig fig-type="figure" id="f4" orientation="portrait" position="float">
                    <label>Figure 4. </label>
                    <caption>
                        <title>The contents in the per-run directory.</title>
                        <p>Various types of information, such as run requests, execution results, and runtime information, are stored as a bundle of provenance for the workflow run.</p>
                    </caption>
                    <graphic id="gr4" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/134975/75ea9d02-ee11-4f3e-8f0b-68c38c0ab237_figure4.gif"/>
                </fig>
                <p>The system has no backend database as it stores all the information in the file system. This architecture allows the system administrators to manage the data as they do for normal server operations. We also provide a Docker image of the application, which can completely separate the system into the application (container image) and data (file system) for better portability and scalability.
                    <sup>
                        <xref ref-type="bibr" rid="ref21">21</xref>
                    </sup>
                </p>
                <p>Another feature not implemented in a standard WES server is a registered-only mode. By enabling it at the server start-up, users can execute only the workflows in the allowed list specified by the administrator. This function helps the administrators launch a public WES instance while preventing suspicious programs from running on the server. Instead of implementing user authentication on the application, we expect the administrators to do the required authentication to the server on the network layer, such as virtual private network (VPN).</p>
            </sec>
            <sec id="sec5">
                <title>Workflow management console</title>
                <p>We designed Sapporo-web as a browser-based GUI client for GA4GH WES endpoints. The system is a JavaScript application that runs on a web page, which users do not need to install on their computers. It stores user data in the browser&#x2019;s local storage, so users do not need to sign up to start running workflows. No information other than the access log is preserved on the server-side. The Sapporo-web system is compliant with the GA4GH WES specification. We used Elixir WES, another WES implementation, to confirm Sapporo&#x2019;s GA4GH WES specification compliance.
                    <sup>
                        <xref ref-type="bibr" rid="ref22">22</xref>
                    </sup>
                </p>
                <p>To execute a workflow with Sapporo-web, users take the following five steps (
                    <xref ref-type="fig" rid="f5">Figure 5</xref>). Users can use a WES endpoint either running remotely or locally. Following the user&#x2019;s connection request, Sapporo-web requests the service-info API of the WES to read the endpoint metadata and display the information (
                    <xref ref-type="fig" rid="f6">Figure 6</xref>). Users can select a workflow to run by entering a published workflow URL, uploading a workflow definition file, or selecting from the workflows registered on the WES server. Sapporo-web also can accept the GA4GH Tool Registry Service (TRS) protocol as a source of published workflows. Sapporo-web retrieves the content of the requested workflow definition file to generate a web form for entering input parameters (
                    <xref ref-type="fig" rid="f7">Figure 7</xref>). The type of web form depends on the workflow language. For example, loading a workflow described in Common Workflow Language (CWL) generates a typed input form per parameter because CWL specifies input parameters with a structured text form.
                    <sup>
                        <xref ref-type="bibr" rid="ref23">23</xref>
                    </sup> In contrast, loading a workflow described in languages other than CWL generates a text editor to change the parameters in the corresponding format. After the edit, users can click &#x201c;execute&#x201d; to request the workflow to run on the server where the WES endpoint is running.</p>
                <fig fig-type="figure" id="f5" orientation="portrait" position="float">
                    <label>Figure 5. </label>
                    <caption>
                        <title>User actions to execute a workflow on Sapporo-web.</title>
                        <p>Sapporo-web provides a step-by-step user interface to help users set up a workflow run. First, users need to specify where to execute a workflow (Workflow Execution Service (WES) instance). Next, users select what to run (workflow) and then how it should be run (input parameters). The UI allows users to download a set of input parameters, which users can upload to re-run a workflow with the same parameters.</p>
                    </caption>
                    <graphic id="gr5" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/134975/75ea9d02-ee11-4f3e-8f0b-68c38c0ab237_figure5.gif"/>
                </fig>
                <fig fig-type="figure" id="f6" orientation="portrait" position="float">
                    <label>Figure 6. </label>
                    <caption>
                        <title>Sapporo-web displays the metadata of the specified Workflow Execution Service (WES) endpoint.</title>
                        <p>The Global Alliance for Genomics and Health (GA4GH) WES specification defines the scheme of the response of service-info. It has the basic information of the WES endpoint, such as supported workflow language and workflow engines. Sapporo-web reads the WES metadata and provides the interface to start composing a workflow run.</p>
                    </caption>
                    <graphic id="gr6" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/134975/75ea9d02-ee11-4f3e-8f0b-68c38c0ab237_figure6.gif"/>
                </fig>
                <fig fig-type="figure" id="f7" orientation="portrait" position="float">
                    <label>Figure 7. </label>
                    <caption>
                        <title>The generated web form to input parameters.</title>
                        <p>Sapporo-web automatically generates a typed input form for a given workflow. It is possible when the given workflow language has a structured job configuration file, for example, a YAML format file for a Common Workflow Language (CWL) workflow. The form has the type validation function for users&#x2019; input, such as a file, integer, or array of strings.</p>
                    </caption>
                    <graphic id="gr7" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/134975/75ea9d02-ee11-4f3e-8f0b-68c38c0ab237_figure7.gif"/>
                </fig>
                <p>While the workflow is running, users can check the execution log via Sapporo-web. The standard output and the standard error of the workflow run retrieved from the WES endpoint show up in the log history section. The running status becomes &#x201c;complete&#x201d; when the execution finishes on the server. Workflow outputs stored in the WES server are downloadable via a link in the Sapporo-web user interface. If the workflow run failed with an error, the status &#x201c;executor error&#x201d; would be shown. Users can visualize the error log in Sapporo-web.</p>
            </sec>
        </sec>
        <sec id="sec6" sec-type="results">
            <title>Results</title>
            <p>We developed Sapporo as a WES implementation that allows developers to add new workflow systems. Developers only need to implement the command line procedure in the run.sh script, which is a simple bash script. The project was hosted on GitHub from its inception, with the intention to have other developers contribute with new workflow systems. A good example of this in practice can be seen in the pull request (
                <ext-link ext-link-type="uri" xlink:href="https://github.com/sapporo-wes/sapporo-service/pull/29">https://github.com/sapporo-wes/sapporo-service/pull/29</ext-link>) that added a new workflow system called StreamFlow.
                <sup>
                    <xref ref-type="bibr" rid="ref20">20</xref>
                </sup>
            </p>
            <p>To evaluate the usability with real use cases, we used Sapporo to run the public workflows that researchers frequently use. We successfully executed the following three workflows: Mitochondrial short variant discovery from the GATK best practice workflows (language: WDL), RNA-Seq workflow from the nf-core repository (language: Nextflow), and a GATK best practice-compatible germline short variant discovery workflow, which is used to process whole-genome sequencing data of the Japanese Genotype-phenotype Archive (language: CWL).
                <sup>
                    <xref ref-type="bibr" rid="ref24">24</xref>
                </sup> We published the description of the test procedures for these workflows on GitHub,
                <sup>
                    <xref ref-type="bibr" rid="ref25">25</xref>
                </sup> and the results of the test runs on Zenodo.
                <sup>
                    <xref ref-type="bibr" rid="ref26">26</xref>
                </sup>
                <sup>&#x2013;</sup>
                <sup>
                    <xref ref-type="bibr" rid="ref28">28</xref>
                </sup>
            </p>
        </sec>
        <sec id="sec7" sec-type="discussion">
            <title>Discussion</title>
            <p>In the big-data era in biology, the demand for efficient data processing will never stop increasing.
                <sup>
                    <xref ref-type="bibr" rid="ref29">29</xref>
                </sup> There are countless painful tasks in data processing, and researchers have developed methods to solve each of them, resulting in many different workflow systems.
                <sup>
                    <xref ref-type="bibr" rid="ref30">30</xref>
                </sup> We appreciate that many options are available as open-source so that researchers can choose one for their specific needs. The situation strongly encourages open science: each workflow system community is there so that individuals can help each other by sharing resources.
                <sup>
                    <xref ref-type="bibr" rid="ref31">31</xref>
                </sup> However, as each community grows, the gap between the communities also becomes larger. We developed Sapporo to bridge these gaps by providing a new layer to better utilize resources across communities. As the workflow systems are for the increased productivity of data scientists, improving resource interoperability must not interfere with researchers doing their science. An upper layer, the layer of workflow execution, can be a better solution than proposing a new language convertible to other existing languages. The concept of abstraction of workflow execution, as well as the idea of &#x201c;bringing the algorithms to the data,&#x201d; is also proposed by the GA4GH cloud work stream, which resulted in the development of the GA4GH Cloud standards. As of May 2022, the GA4GH WES specification supports only CWL and WDL for their workflow format. There is no official list of WES implementations; however, no other service that allows the addition of workflow systems is available as far as we investigated.</p>
            <p>Although Sapporo is a flexible system covering many use cases, we recognize that the current implementation has a few technical limitations. The main objective of Sapporo is to absorb the variance of the execution methods per workflow system. We achieved building a unified way to request a workflow run by providing the API and its client. However, there is still a challenge in the user experience with regard to the parameter editing function. This is caused by differences in the workflow system concepts. For example, some workflow systems, such as Nextflow or Snakemake, use Domain Specific Language (DSL) model in their syntax for better productivity, so users can write a workflow as they would write a script in their preferred programming language.
                <sup>
                    <xref ref-type="bibr" rid="ref9">9</xref>
                </sup>
                <sup>,</sup>
                <sup>
                    <xref ref-type="bibr" rid="ref18">18</xref>
                </sup> However, this flexibility in describing the procedures often makes the required input parameters unparsable by other applications. It means that users need to learn how to edit the parameters for each workflow system they are using. Though often this is not too difficult, the workflow system communities need to lower the learning costs to use a workflow. For example, finding a more generic representation of workflow inputs between workflow language systems could alleviate the situation.</p>
            <p>Sapporo is a unique WES implementation that accepts multiple workflow languages. Researchers can use the system to utilize community workflows without regarding what language they are written in. One downside of this flexibility is that errors reported by Sapporo from different workflow engines may not look familiar to users. Many well-maintained workflow registries are available, such as nf-core and WorkflowHub, but the quality of the workflows published in these registries relies on each community&#x2019;s efforts.
                <sup>
                    <xref ref-type="bibr" rid="ref10">10</xref>
                </sup>
                <sup>,</sup>
                <sup>
                    <xref ref-type="bibr" rid="ref32">32</xref>
                </sup>
                <sup>,</sup>
                <sup>
                    <xref ref-type="bibr" rid="ref33">33</xref>
                </sup> A system that validates and verifies the quality of workflows is also required for the sustainability of the resources published in the workflow registries.</p>
            <p>Data processing methods vary greatly depending on the type of input data and the computational platform. In bioinformatics, the laboratory equipment and computers available drive changes. New computing applications for efficient data science, and new problems of resource portability may appear if variables such as input data, equipment, and computing resources keep changing in the future. Through its concept of abstraction, Sapporo can be a key player in assisting different communities in sharing and reusing workflows and other computing resources.</p>
        </sec>
        <sec id="sec8">
            <title>Data availability</title>
            <p>All of these projects are licensed under the Apache License 2.0.</p>
            <sec id="sec9">
                <title>Underlying data</title>
                <p>Zenodo: sapporo-wes/test-workflow: 1.0.1. 
                    <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.6618935">https://doi.org/10.5281/zenodo.6618935</ext-link>.
                    <sup>
                        <xref ref-type="bibr" rid="ref25">25</xref>
                    </sup>
                </p>
                <p>This project contains the following underlying data:
                    <list list-type="bullet">
                        <list-item>
                            <label>&#x2022;</label>
                            <p>sapporo-wes/test-workflow-1.0.1.zip (description of the test procedures and results of the workflows described in section 
                                <italic toggle="yes">Use cases</italic>).</p>
                        </list-item>
                    </list>
                </p>
                <p>The results of the test runs are contained in the following projects:
                    <list list-type="bullet">
                        <list-item>
                            <label>&#x2022;</label>
                            <p>Zenodo: Sapporo execution results - broadinstitute/gatk/MitochondriaPipeline: 1.0.0. 
                                <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.6535083">https://doi.org/10.5281/zenodo.6535083</ext-link>.
                                <sup>
                                    <xref ref-type="bibr" rid="ref26">26</xref>
                                </sup>
                            </p>
                        </list-item>
                        <list-item>
                            <label>&#x2022;</label>
                            <p>Zenodo: Sapporo execution results - nf-core/rnaseq: 1.0.0. 
                                <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.6534202">https://doi.org/10.5281/zenodo.6534202</ext-link>.
                                <sup>
                                    <xref ref-type="bibr" rid="ref27">27</xref>
                                </sup>
                            </p>
                        </list-item>
                        <list-item>
                            <label>&#x2022;</label>
                            <p>Zenodo: Sapporo execution results - JGA analysis - per-sample: 1.0.0. 
                                <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.6612737">https://doi.org/10.5281/zenodo.6612737</ext-link>.
                                <sup>
                                    <xref ref-type="bibr" rid="ref28">28</xref>
                                </sup>
                            </p>
                        </list-item>
                    </list>
                </p>
            </sec>
            <sec id="sec10">
                <title>Extended data</title>
                <p>Zenodo: sapporo-wes/sapporo: 1.0.0. 
                    <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.6462774">https://doi.org/10.5281/zenodo.6462774</ext-link>.
                    <sup>
                        <xref ref-type="bibr" rid="ref34">34</xref>
                    </sup>
                </p>
                <p>This project contains the following extended data:
                    <list list-type="bullet">
                        <list-item>
                            <label>&#x2022;</label>
                            <p>Sapporo: Getting Started.md (step-by-step procedures for deploying a Sapporo instance on a local computer and testing the system).</p>
                        </list-item>
                    </list>
                </p>
            </sec>
        </sec>
        <sec id="sec11">
            <title>Software availability</title>
            <p>Sapporo-service&#x2019;s source code, test code, and documentation:
                <list list-type="bullet">
                    <list-item>
                        <label>&#x2022;</label>
                        <p>Source code available from: 
                            <ext-link ext-link-type="uri" xlink:href="https://github.com/sapporo-wes/sapporo-service/tree/1.2.4">https://github.com/sapporo-wes/sapporo-service/tree/1.2.4</ext-link>
                        </p>
                    </list-item>
                    <list-item>
                        <label>&#x2022;</label>
                        <p>Archived source code at time of publication: 
                            <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.6609570">https://doi.org/10.5281/zenodo.6609570</ext-link>.
                            <sup>
                                <xref ref-type="bibr" rid="ref35">35</xref>
                            </sup>
                        </p>
                    </list-item>
                    <list-item>
                        <label>&#x2022;</label>
                        <p>License: Apache License 2.0</p>
                    </list-item>
                </list>
            </p>
            <p>Sapporo-web&#x2019;s source code, test code, and documentation:
                <list list-type="bullet">
                    <list-item>
                        <label>&#x2022;</label>
                        <p>Source code available from: 
                            <ext-link ext-link-type="uri" xlink:href="https://github.com/sapporo-wes/sapporo-web/tree/1.1.2">https://github.com/sapporo-wes/sapporo-web/tree/1.1.2</ext-link>
                        </p>
                    </list-item>
                    <list-item>
                        <label>&#x2022;</label>
                        <p>Archived source code at time of publication: 
                            <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.6462809">https://doi.org/10.5281/zenodo.6462809</ext-link>.
                            <sup>
                                <xref ref-type="bibr" rid="ref36">36</xref>
                            </sup>
                        </p>
                    </list-item>
                    <list-item>
                        <label>&#x2022;</label>
                        <p>License: Apache License 2.0</p>
                    </list-item>
                </list>
            </p>
        </sec>
    </body>
    <back>
        <ack>
            <title>Acknowledgements</title>
            <p>
We acknowledge and thank the following scientific communities and their collaborative events where several of the authors engaged in irreplaceable discussions and development throughout the project: the Pitagora Meetup, Workflow Meetup Japan, NBDC/DBCLS BioHackathon Series, Elixir&#x2019;s BioHackathon Europe Series, GA4GH Cloud WorkStream, Common Workflow Language Community, Nextflow Community, Galaxy Community, and Open Bioinformatics Foundation Bioinformatics Open Source Conference Collaboration Fest. We would like to acknowledge Dr. Alexander Kanitz for his support of the collaboration with WES-ELIXIR. We also would like to thank Dr. Ivan Topolsky for his assistance with the implementation of Sapporo-service. We also acknowledge Prof. Kazuki Yoshizoe for his valuable comments on the project. We also would like to thank Ascade Inc. for their support with the software development. Computations were partially performed on the NIG supercomputer at the ROIS National Institute of Genetics.</p>
        </ack>
        <ref-list>
            <title>References</title>
            <ref id="ref1">
                <label>1</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

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

                        <name name-style="western">
                            <surname>McCombie</surname>
                            <given-names>RW</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Coming of age: Ten years of next-generation sequencing technologies.</article-title>
                    <source>

                        <italic toggle="yes">Nat. Rev. Genet.</italic>
</source>
                    <year>2016</year>;<volume>17</volume>(<issue>6</issue>):<fpage>333</fpage>&#x2013;<lpage>351</lpage>.
                    <pub-id pub-id-type="pmid">27184599</pub-id>
                    <pub-id pub-id-type="doi">10.1038/nrg.2016.49</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref2">
                <label>2</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Stein</surname>
                            <given-names>LD</given-names>
                        </name>
</person-group>:
                    <article-title>The case for cloud computing in genome informatics.</article-title>
                    <source>

                        <italic toggle="yes">Genome Biol.</italic>
</source>
                    <year>2010</year>;<volume>11</volume>(<issue>5</issue>):<fpage>207</fpage>&#x2013;<lpage>207</lpage>.
                    <pub-id pub-id-type="doi">10.1186/gb-2010-11-5-207</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref3">
                <label>3</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Perkel</surname>
                            <given-names>JM</given-names>
                        </name>
</person-group>:
                    <article-title>Workflow systems turn raw data into scientific knowledge.</article-title>
                    <source>

                        <italic toggle="yes">Nature.</italic>
</source>
                    <year>2019</year>;<volume>573</volume>(<issue>7772</issue>):<fpage>149</fpage>&#x2013;<lpage>150</lpage>.
                    <pub-id pub-id-type="pmid">31477884</pub-id>
                    <pub-id pub-id-type="doi">10.1038/d41586-019-02619-z</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref4">
                <label>4</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Leprevost</surname>
                            <given-names>FdV</given-names>
                            <prefix>da</prefix>
                        </name>

                        <name name-style="western">
                            <surname>Barbosa</surname>
                            <given-names>VC</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Barbosa</surname>
                            <given-names>EL</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>On best practices in the development of bioinformatics software.</article-title>
                    <source>

                        <italic toggle="yes">Front. Genet.</italic>
</source>
                    <year>2014</year>;<volume>5</volume>:<fpage>199</fpage>.
                    <pub-id pub-id-type="doi">10.3389/fgene.2014.00199</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref5">
                <label>5</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

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

                        <name name-style="western">
                            <surname>G&#x00f6;ke</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Reproducible, scalable, and shareable analysis pipelines with bioinformatics workflow managers.</article-title>
                    <source>

                        <italic toggle="yes">Nat. Methods.</italic>
</source>
                    <year>2021</year>;<volume>18</volume>(<issue>10</issue>):<fpage>1161</fpage>&#x2013;<lpage>1168</lpage>.
                    <pub-id pub-id-type="pmid">34556866</pub-id>
                    <pub-id pub-id-type="doi">10.1038/s41592-021-01254-9</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref6">
                <label>6</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Leprevost</surname>
                            <given-names>FdV</given-names>
                        </name>

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

                        <name name-style="western">
                            <surname>Aflitos</surname>
                            <given-names>SA</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Biocontainers: An open-source and community-driven framework for software standardization.</article-title>
                    <source>

                        <italic toggle="yes">Bioinformatics.</italic>
</source>
                    <year>2017</year>;<volume>33</volume>(<issue>16</issue>):<fpage>2580</fpage>&#x2013;<lpage>2582</lpage>.
                    <pub-id pub-id-type="pmid">28379341</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btx192</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref7">
                <label>7</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Khan</surname>
                            <given-names>FZ</given-names>
                        </name>

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

                        <name name-style="western">
                            <surname>Sinnott</surname>
                            <given-names>RO</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Sharing interoperable workflow provenance: A review of best practices and their practical application in cwlprov.</article-title>
                    <source>

                        <italic toggle="yes">GigaScience.</italic>
</source>
                    <year>2019</year>;<volume>8</volume>(<issue>11</issue>):<fpage>giz095</fpage>.
                    <pub-id pub-id-type="doi">10.1093/gigascience/giz095</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref8">
                <label>8</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

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

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

                        <etal/>
</person-group>:
                    <article-title>Community-driven data analysis training for biology.</article-title>
                    <source>

                        <italic toggle="yes">Cell Systems.</italic>
</source>
                    <year>2018</year>;<volume>6</volume>(<issue>6</issue>):<fpage>752</fpage>&#x2013;<lpage>758.e1</lpage>.
                    <pub-id pub-id-type="pmid">29953864</pub-id>
                    <pub-id pub-id-type="doi">10.1016/j.cels.2018.05.012</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref9">
                <label>9</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

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

                        <name name-style="western">
                            <surname>Floden</surname>
                            <given-names>EW</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Nextflow enables reproducible computational workflows.</article-title>
                    <source>

                        <italic toggle="yes">Nat. Biotechnol.</italic>
</source>
                    <year>2017</year>;<volume>35</volume>(<issue>4</issue>):<fpage>316</fpage>&#x2013;<lpage>319</lpage>.
                    <pub-id pub-id-type="doi">10.1038/nbt.3820</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref10">
                <label>10</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ewels</surname>
                            <given-names>PA</given-names>
                        </name>

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

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

                        <etal/>
</person-group>:
                    <article-title>The nf-core framework for community-curated bioinformatics pipelines.</article-title>
                    <source>

                        <italic toggle="yes">Nat. Biotechnol.</italic>
</source>
                    <year>2020</year>;<volume>38</volume>(<issue>3</issue>):<fpage>276</fpage>&#x2013;<lpage>278</lpage>.
                    <pub-id pub-id-type="doi">10.1038/s41587-020-0439-x</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref11">
                <label>11</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Rehm</surname>
                            <given-names>HL</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Page</surname>
                            <given-names>AJH</given-names>
                        </name>

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

                        <etal/>
</person-group>:
                    <article-title>GA4GH: International policies and standards for data sharing across genomic research and healthcare.</article-title>
                    <source>

                        <italic toggle="yes">Cell Genomics.</italic>
</source>
                    <year>2021</year>;<volume>1</volume>(<issue>2</issue>):<fpage>100029</fpage>.
                    <pub-id pub-id-type="pmid">35072136</pub-id>
                    <pub-id pub-id-type="doi">10.1016/j.xgen.2021.100029</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref12">
                <label>12</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Cerny</surname>
                            <given-names>T</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Donahoo</surname>
                            <given-names>MJ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Trnka</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Contextual understanding of microservice architecture: Current and future directions.</article-title>
                    <source>

                        <italic toggle="yes">ACM SIGAPP Applied Computing Review.</italic>
</source>
                    <year>2018</year>;<volume>17</volume>(<issue>4</issue>):<fpage>29</fpage>&#x2013;<lpage>45</lpage>.
                    <pub-id pub-id-type="doi">10.1145/3183628.3183631</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref13">
                <label>13</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

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

                        <name name-style="western">
                            <surname>Ohta</surname>
                            <given-names>T</given-names>
                        </name>
</person-group>:
                    <article-title>Sapporo: Getting started.</article-title>
                    <year>2021</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://sapporo-wes.github.io/sapporo/GettingStarted">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref14">
                <label>14</label>
                <mixed-citation publication-type="other">
                    <collab>The Global Alliance for Genomics and Health Cloud Work Stream</collab>:
                    <article-title>Workflow Execution Service (WES) API.</article-title>
                    <year>2017</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/ga4gh/workflow-execution-service-schemas">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref15">
                <label>15</label>
                <mixed-citation publication-type="other">
                    <collab>Common Workflow Language</collab>:
                    <article-title>common-workflow-language/cwltool.</article-title>
                    <year>2015</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/common-workflow-language/cwltool">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref16">
                <label>16</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

                        <name name-style="western">
                            <surname>Rao</surname>
                            <given-names>AA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Nothaft</surname>
                            <given-names>FA</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Toil enables reproducible, open source, big biomedical data analyses.</article-title>
                    <source>

                        <italic toggle="yes">Nat. Biotechnol.</italic>
</source>
                    <year>2017</year>;<volume>35</volume>(<issue>4</issue>):<fpage>314</fpage>&#x2013;<lpage>316</lpage>.
                    <pub-id pub-id-type="pmid">28398314</pub-id>
                    <pub-id pub-id-type="doi">10.1038/nbt.3772</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref17">
                <label>17</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="editor">

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

                        <name name-style="western">
                            <surname>Auwera</surname>
                            <given-names>G</given-names>
                            <prefix>Van Der</prefix>
                        </name>

                        <name name-style="western">
                            <surname>Gentry</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Full-stack genomics pipelining with GATK4 + WDL + Cromwell.</article-title>
                    <year>2017</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://f1000research.com/slides/6-1381">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref18">
                <label>18</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&#x2014;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="doi">10.1093/bioinformatics/bts480</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref19">
                <label>19</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Tanjo</surname>
                            <given-names>T</given-names>
                        </name>
</person-group>:
                    <article-title>tom-tan/ep3.</article-title>
                    <year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/tom-tan/ep3">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref20">
                <label>20</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Colonnelli</surname>
                            <given-names>I</given-names>
                        </name>

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

                        <name name-style="western">
                            <surname>Merelli</surname>
                            <given-names>I</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Streamflow: Cross-breeding cloud with hpc.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Trans. Emerg. Top. Comput.</italic>
</source>
                    <year>2020</year>;<volume>9</volume>(<issue>4</issue>):<fpage>1723</fpage>&#x2013;<lpage>1737</lpage>.</mixed-citation>
            </ref>
            <ref id="ref21">
                <label>21</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Merkel</surname>
                            <given-names>D</given-names>
                        </name>
</person-group>:
                    <article-title>Docker: Lightweight linux containers for consistent development and deployment.</article-title>
                    <source>

                        <italic toggle="yes">Linux Journal.</italic>
</source>
                    <year>2014</year>;<volume>2014</volume>(<issue>239</issue>):<fpage>2</fpage>.</mixed-citation>
            </ref>
            <ref id="ref22">
                <label>22</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

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

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

                        <etal/>
</person-group>:
                    <article-title>ELIXIR: Providing a sustainable infrastructure for life science data at European scale.</article-title>
                    <source>

                        <italic toggle="yes">Bioinformatics.</italic>
</source>
                    <year>2021</year>;<volume>37</volume>(<issue>16</issue>):<fpage>2506</fpage>&#x2013;<lpage>2511</lpage>.
                    <pub-id pub-id-type="pmid">34175941</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btab481</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref23">
                <label>23</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="editor">

                        <name name-style="western">
                            <surname>Crusoe</surname>
                            <given-names>MR</given-names>
                        </name>

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

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

                        <etal/>
</person-group>:
                    <article-title>Methods included: Standardizing computational reuse and portability with the common workflow language.</article-title>
                    <source>

                        <italic toggle="yes">arXiv.</italic>
</source>
                    <year>2021</year>.</mixed-citation>
            </ref>
            <ref id="ref24">
                <label>24</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

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

                        <name name-style="western">
                            <surname>Kosuge</surname>
                            <given-names>T</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>The ddbj japanese genotype-phenotype archive for genetic and phenotypic human data.</article-title>
                    <source>

                        <italic toggle="yes">Nucleic Acids Res.</italic>
</source>
                    <year>2015</year>;<volume>43</volume>(<issue>D1</issue>):<fpage>D18</fpage>&#x2013;<lpage>D22</lpage>.
                    <pub-id pub-id-type="pmid">25477381</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gku1120</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref25">
                <label>25</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

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

                        <name name-style="western">
                            <surname>Ohta</surname>
                            <given-names>T</given-names>
                        </name>
</person-group>:
                    <article-title>sapporo-wes/test-workflow: 1.0.1.</article-title>
                    <year>2022</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.6618935</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref26">
                <label>26</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Suetake</surname>
                            <given-names>H</given-names>
                        </name>
</person-group>:
                    <bold>Sapporo execution results - broadinstitute/gatk/MitochondriaPipeline.</bold>
                    <year>2022</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.6535083</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref27">
                <label>27</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Suetake</surname>
                            <given-names>H</given-names>
                        </name>
</person-group>:
                    <article-title>Sapporo execution results - nf-core/rnaseq.</article-title>
                    <year>2022</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.6534202</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref28">
                <label>28</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Suetake</surname>
                            <given-names>H</given-names>
                        </name>
</person-group>:
                    <article-title>Sapporo execution results - JGA analysis - per- sample.</article-title>
                    <year>2022</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.6612737</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref29">
                <label>29</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

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

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

                        <etal/>
</person-group>:
                    <article-title>Toward effective software solutions for big biology.</article-title>
                    <source>

                        <italic toggle="yes">Nat. Biotechnol.</italic>
</source>
                    <year>2015</year>;<volume>33</volume>(<issue>7</issue>):<fpage>686</fpage>&#x2013;<lpage>687</lpage>.
                    <pub-id pub-id-type="doi">10.1038/nbt.3240</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref30">
                <label>30</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

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

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

                        <name name-style="western">
                            <surname>Crusoe</surname>
                            <given-names>MR</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Existing workflow systems.</article-title>
                    <year>2021</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://s.apache.org/existing-workflow-systems">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref31">
                <label>31</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wilkinson</surname>
                            <given-names>MD</given-names>
                        </name>

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

                        <name name-style="western">
                            <surname>Aalbersberg</surname>
                            <given-names>IJJ</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>The fair guiding principles for scientific data management and stewardship.</article-title>
                    <source>

                        <italic toggle="yes">Sci. Data.</italic>
</source>
                    <year>2016</year>;<volume>3</volume>(<issue>1</issue>):<fpage>1</fpage>&#x2013;<lpage>9</lpage>.</mixed-citation>
            </ref>
            <ref id="ref32">
                <label>32</label>
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

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

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

                        <name name-style="western">
                            <surname>Bacall</surname>
                            <given-names>F</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Implementing FAIR digital objects in the EOSC-life workflow collaboratory.</article-title>
                    <year>2021</year>.</mixed-citation>
            </ref>
            <ref id="ref33">
                <label>33</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>O&#x2019;Connor</surname>
                            <given-names>BD</given-names>
                        </name>

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

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

                        <etal/>
</person-group>:
                    <article-title>The dockstore: enabling modular, community-focused sharing of docker-based genomics tools and workflows.</article-title>
                    <source>

                        <italic toggle="yes">F1000Res.</italic>
</source>
                    <year>2017</year>;<volume>6</volume>.
                    <pub-id pub-id-type="doi">10.12688/f1000research.10137.1</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref34">
                <label>34</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

                        <name name-style="western">
                            <surname>Ohta</surname>
                            <given-names>T</given-names>
                        </name>
</person-group>:
                    <article-title>sapporo-wes/sapporo: 1.0.0.</article-title>
                    <source>

                        <italic toggle="yes">Zenodo.</italic>
</source>
                    <year>2022</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.6462774</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref35">
                <label>35</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

                        <name name-style="western">
                            <surname>Ohta</surname>
                            <given-names>T</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Tanjo</surname>
                            <given-names>T</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>sapporo-wes/sapporo-service: 1.2.4.</article-title>
                    <source>

                        <italic toggle="yes">Zenodo.</italic>
</source>
                    <year>2022</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.6609570</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref36">
                <label>36</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

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

                        <name name-style="western">
                            <surname>Ohta</surname>
                            <given-names>T</given-names>
                        </name>
</person-group>:
                    <article-title>sapporo-wes/sapporo-web: 1.1.2.</article-title>
                    <source>

                        <italic toggle="yes">Zenodo.</italic>
</source>
                    <year>2022</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.6462809</pub-id>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report185836">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.134975.r185836</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Colonnelli</surname>
                        <given-names>Iacopo</given-names>
                    </name>
                    <xref ref-type="aff" rid="r185836a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0001-9290-2017</uri>
                </contrib>
                <aff id="r185836a1">
                    <label>1</label>Universita degli Studi di Torino, Turin, Piedmont, Italy</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>5</day>
                <month>10</month>
                <year>2023</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2023 Colonnelli I</copyright-statement>
                <copyright-year>2023</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="relatedArticleReport185836" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.122924.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve-with-reservations</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>In this article, the authors describe Sapporo, a WES-compatible web-based interface to multiple workflow management systems (WMSs). Sapporo aims to act as a common interface to different underlying WMSs, abstracting product-specific details and complexities to the end users. This way, Sapporo fosters WMSs interoperability and lowers the technical barriers between domain experts and workflow execution.</p>
            <p> </p>
            <p> The description of Sapporo is kept at a high level of abstraction, without many technical details about the implementation. However, it is detailed enough to let the reader capture all the crucial aspects of the software architecture, the frontend and backend structure, and the main limitations of the current version. A link to a Docker Compose manifest for quick evaluation would be a plus.</p>
            <p> </p>
            <p> For implementers, the description is too high-level to understand how to replicate the software development. Additional material published on GitHub and Zenodo contains further details for the developers. However, having at least a high-level description of the `run.sh` script, which constitutes the core of the Sapporo backend, would improve the article's understandability.</p>
            <p> </p>
            <p> The main flaw of the article in its current form is that the description of the experimental evaluation and the obtained results is left to external references. The authors describe three different experiments using three different workflow languages and datasets. Adding a detailed description of one of them directly in the article, together with the steps needed to reproduce it, would allow the reader to better understand the features Sapporo provided.</p>
            <p> </p>
            <p> Also, there is no quantitative measure of achieved results in the article. Some quantitative measures of the Sapporo complexity (e.g., the percentage of product-specific lines of code that users are still forced to write to specify workflow parameters or the average lines of code needed to add support for a new WMS) would enable a more scientifically sound evaluation of the product.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Partly</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>No</p>
            <p>Reviewer Expertise:</p>
            <p>Workflows, High Performance Computing, Parallel Computing, Distributed Computing</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, however I have significant reservations, as outlined above.</p>
        </body>
        <sub-article article-type="response" id="comment11769-185836">
            <front-stub>
                <contrib-group>
                    <contrib contrib-type="author">
                        <name>
                            <surname>Ohta</surname>
                            <given-names>Tazro</given-names>
                        </name>
                        <aff>DBCLS, Japan</aff>
                    </contrib>
                </contrib-group>
                <author-notes>
                    <fn fn-type="conflict">
                        <p>
                            <bold>Competing interests: </bold>NA</p>
                    </fn>
                </author-notes>
                <pub-date pub-type="epub">
                    <day>13</day>
                    <month>6</month>
                    <year>2024</year>
                </pub-date>
            </front-stub>
            <body>
                <p>We deeply thank you for taking the time to review our manuscript.</p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>1. A link to a Docker Compose manifest for quick evaluation would be a plus.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> Thank you for the great suggestion. We added a line to indicate the location of the docker compose manifest for each of Sapporo-service and Sapporo-web.</p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>2. For implementers, the description is too high-level to understand how to replicate the software development. Additional material published on GitHub and Zenodo contains further details for the developers. However, having at least a high-level description of the `run.sh` script, which constitutes the core of the Sapporo backend, would improve the article's understandability.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> We agree with your assessment. We modified the paragraphs in the subsection "Workflow execution service" in the Methods section to describe the run.sh function of Sapporo-service:</p>
                <p> </p>
                <p> 
                    <italic>&gt; The system is designed to separate the execution layer from the handling of API requests, thereby enhancing modularity and extensibility. The execution layer operates through a well-structured shell script named "run.sh." Upon receiving an API request, the system forks "run.sh," which then generates command lines for the workflow system and executes them. This separation enables the addition of new workflow systems without changes to the API server's code. As a result, adding new workflows becomes straightforward, with the number of systems growing from just one at the beginning of the project to seven in the current version (Table 2). The flexibility of the "run.sh" also allows for specific adjustments for each workflow system, supporting pre- and post-execution processes, such as authentication, staging input files, and uploading results. Additionally, it is enabled to manage environment-specific requirements, including executing jobs on grid engines and handling file I/O with S3-like object storage. Once the system receives a workflow run request, it issues a universally unique identifier (UUID) and creates a directory named with the UUID, where the system stores all the necessary files. The workflow definition files, intermediate and final outputs, and the other metadata are stored in that directory. This per-run directory can act as a bundle of provenance for the workflow run (Figure 4).</italic>
                </p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>3. The main flaw of the article in its current form is that the description of the experimental evaluation and the obtained results is left to external references. The authors describe three different experiments using three different workflow languages and datasets. Adding a detailed description of one of them directly in the article, together with the steps needed to reproduce it, would allow the reader to better understand the features Sapporo provided.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> In response to the comment by another reviewer (Dr. Justin M. Wozniak), we added the details of how users can specify the workflow condition in the Result section and the new figure Figure 8. We believe the addition can guide users to understand how they can run a workflow using our implementation.</p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>4. Also, there is no quantitative measure of achieved results in the article. Some quantitative measures of the Sapporo complexity (e.g., the percentage of product-specific lines of code that users are still forced to write to specify workflow parameters or the average lines of code needed to add support for a new WMS) would enable a more scientifically sound evaluation of the product.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> We agree with the reviewer's feedback. Indeed, quantitatively evaluating how much the adoption of our system reduces the barrier to using different workflow management systems is challenging, which made this article posted as a software tool article. Methods such as user surveys could be considered for evaluation, but attempting to familiarize participants with multiple workflow systems without the assistance of our system or having learners of one language use a system in another language would not be practical. Demonstrating quantitatively that "using workflow systems is inherently more productive than executing workflows built with shell scripts on job queuing systems via the command line" poses a challenge for the entire developer community involved in developing workflow systems. Considering the challenges in the evaluation, with this paper we believe that providing the option of not only multiple different workflow management systems but also a system that can be used across them is our main contribution to the community.</p>
            </body>
        </sub-article>
    </sub-article>
    <sub-article article-type="reviewer-report" id="report185842">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.134975.r185842</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Wozniak</surname>
                        <given-names>Justin M.</given-names>
                    </name>
                    <xref ref-type="aff" rid="r185842a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-2441-2048</uri>
                </contrib>
                <aff id="r185842a1">
                    <label>1</label>Data Science and Learning, Argonne National Laboratory, Lemont, IL, USA</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>26</day>
                <month>7</month>
                <year>2023</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2023 Wozniak JM</copyright-statement>
                <copyright-year>2023</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="relatedArticleReport185842" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.122924.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve-with-reservations</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>This article presents a new abstraction layer (Sapporo) over existing workflow systems to support portability and interoperability. The paper is oriented around a bioinformatics workload. The paper is primarily focused on how Sapporo operates as a web service and runs underlying workflows using the other existing systems.</p>
            <p> </p>
            <p> The paper provides a pretty good high-level state-of-the-art in the workflow ecosystem and the bioinformatics use case.</p>
            <p> </p>
            <p> The paper spends most of its space describing the abstraction over workflow systems and figures that illustrate the corresponding architecture. It does not contain a deep dive into any challenges regarding workflow system interoperability.</p>
            <p> </p>
            <p> From a bioinformatics perspective, the description of support for the application workload is very high-level. There is no deep dive into what is really required to make this workload work. There are results posted for the run that are linked on the Internet, but they are not summarized in the text.</p>
            <p> </p>
            <p> The architecture figures are very spacious and do not provide much technical insight.</p>
            <p> </p>
            <p> There is an illustration of the web form used to run Sapporo, but it seems oversimplified and does not convey what the user would be faced with in a real-world problem.</p>
            <p> </p>
            <p> I downloaded the Sapporo source zip via the links in the paper. The source tree was not very revealing and I am not set up to run a new web service. The README pointed me to web-based docs that seemed quite good and included detailed installation notes.</p>
            <p> </p>
            <p> Overall, this is a good high-level introduction to Sapporo, but does not offer detailed technical insights into the problem space or the Sapporo solution. More details are necessary about these topics to provide insight to the community and allow for a better evaluation of the Sapporo contribution.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Partly</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>Partly</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>No</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>No</p>
            <p>Reviewer Expertise:</p>
            <p>workflows, hpc, distributed computing</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, however I have significant reservations, as outlined above.</p>
        </body>
        <sub-article article-type="response" id="comment11768-185842">
            <front-stub>
                <contrib-group>
                    <contrib contrib-type="author">
                        <name>
                            <surname>Ohta</surname>
                            <given-names>Tazro</given-names>
                        </name>
                        <aff>DBCLS, Japan</aff>
                    </contrib>
                </contrib-group>
                <author-notes>
                    <fn fn-type="conflict">
                        <p>
                            <bold>Competing interests: </bold>NA</p>
                    </fn>
                </author-notes>
                <pub-date pub-type="epub">
                    <day>13</day>
                    <month>6</month>
                    <year>2024</year>
                </pub-date>
            </front-stub>
            <body>
                <p>We deeply thank you for taking the time to review our manuscript.&#x00a0;</p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>1. The paper spends most of its space describing the abstraction over workflow systems and figures that illustrate the corresponding architecture. It does not contain a deep dive into any challenges regarding workflow system interoperability.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> We agree with your assessment. We added the text below in the Background section to emphasize the challenge in making the existing workflow systems:</p>
                <p> </p>
                <p> 
                    <italic>&gt; Workflow systems have different language syntaxes and engines, each designed for specific purposes. For instance, Nextflow aims to boost developer productivity and scalability, while Snakemake focuses on flexibility and simplicity, using Python as its base. In contrast, the Common Workflow Language (CWL) project aims to promote interoperability by creating a standardized syntax that various workflow engines can understand. However, workflows written in different languages cannot be easily converted into each other automatically. The most popular workflow systems used in bioinformatics, such as CWL, WDL, Nextflow, and Snakemake, take a workflow definition and input parameters to produce output result files, while there are differences between these workflow systems in command-line options, workflow description syntax, methods for specifying inputs, and how expected output files are defined.</italic>
                </p>
                <p> 
                    <italic>&gt; Creating a universal language converter isn't practical because some languages lack the necessary syntax parsers, or contain features that are not commonly found in other workflow engines (e.g. JavaScript evaluation as in CWL, loops in workflows or cyclic workflows instead of DAG-based systems). To bridge the gap between different workflow systems, we need a standardized way to specify workflows, input parameters, and expected outputs. Additionally, a system that supports various engines and selects the appropriate one for a given workflow is essential for smooth interoperability.</italic>
                </p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>2. From a bioinformatics perspective, the description of support for the application workload is very high-level. There is no deep dive into what is really required to make this workload work. There are results posted for the run that are linked on the Internet, but they are not summarized in the text.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> We agree again with your assessment. To clarify the user's procedure for performing the analysis, we modified the paragraph in the Result section as follows:</p>
                <p> </p>
                <p> 
                    <italic>&gt; To evaluate the practical applicability and robustness of Sapporo, we executed public workflows frequently used by researchers. Specifically, we chose the Mitochondrial Short Variant Discovery workflow from the GATK best practices (written in WDL), the RNA-seq workflow from the nf-core repository (written in Nextflow), and a Germine Short Variant Discovery workflow for processing whole-genome sequencing data from the Japanese Genotype-phonotype Archive (written in CWL). Users access Sapporo's endpoint specifying the input parameters following the WES specification. The required parameters are workflow_url, workflow_type, workflow_type_version, and workflow_params. The workflow_url argument specifies the location of the workflow definition file (e.g. CWL file) to be executed, typically hosted on a remote server, enabling the API to access and utilize the workflow's instructions. The workflow_params argument points to a JSON file containing input parameters essential for the workflow execution, facilitating customization and adaptation of the workflow's behavior. The arguments workflow_type and workflow_type_version arguments indicate the type and version of the workflow language being employed, ensuring compatibility and proper interpretation of the workflow instructions by engines supported inside Sapporo. Additionally, the workflow_engine_name argument specifies the execution engine to be used, while the default engine for the given workflow language is assigned when it is not specified. Lastly, another optional argument workflow_engine_parameters argument allows for the specification of additional parameters tailored to the execution engine, providing fine-grained control over the execution environment and behavior of the workflow engine.&#x00a0; We published the detailed description of the test procedures for these workflows on GitHub, and the results of the test runs on Zenodo.</italic>
                </p>
                <p> </p>
                <p> We also added a detailed view of user's procedure to run a workflow with Sapporo as Figure 8.</p>
                <p> </p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>3. The architecture figures are very spacious and do not provide much technical insight.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> The architecture figures presented in the paper aim to illustrate the concept of our approach, which is not a monolithic software but rather divided into multiple layers. The figure aims to focus on the concept itself, because the technologies employed for implementation may change in the future. While we implemented the Sapporo-service providing the Web API in Python Flask and the Web UI accessing the API in Vue.js to enhance our development efficiency, we do not claim technical superiority over them here. As the software stacks evolve, we acknowledge the possibility of changing technology choices in the future. The idea of decomposing components into functionalities, as exemplified by microservices architecture, is common in today's software engineering, and we do not consider it novel. However, in the field of bioinformatics where existing workflow systems tend to be monolithic, easily extensible and layered systems are not as prevalent. Thus, we argue in the paper that such a design is beneficial for solving the problem we raise. Nonetheless, from the series of comments received from the reviewer, we recognized that the main message of the paper might not have been as clear as we intended. We believe the paragraphs added in Background and Discussion according to your comments may help readers to understand the aim of our projects.</p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>4. There is an illustration of the web form used to run Sapporo, but it seems oversimplified and does not convey what the user would be faced with in a real-world problem.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> We understand the reviewer's concern about the oversimplified depiction of the workflow in Figure 7, resulting in a very basic UI representation that may differ from what users may encounter when using Sapporo-web in real-world scenarios. The intention behind this illustration was to demonstrate the automatic rendering of the UI based on the input in the workflow definition file. We do not assume or claim here that highly complex workflows with complicated input parameter sets can be executed seamlessly through the generated Web UI. We added the following sentences in the Discussion section to claim the relationship between the user interface and the improvement of workflow usability:</p>
                <p> </p>
                <p> 
                    <italic>&gt; As the complexity of the workflow increases, so does the difficulty of executing it. Sapporo's primary goal is to reduce the time and learning costs associated with deployment, parameterization, and execution due to changes in workflow languages or systems, not to reduce the inherent complexity of given workflows. The use of complex workflows requires complex input parameter specifications due to the intricacies of their internal processes, and using them without understanding them would not reflect scientific integrity in data analysis. Of course, some costs can be mitigated through UI enhancements, such as optimizing sets of multiple input parameters or streamlining iterations for numerous input files. However, it's not practical for Sapporo-web's default UI to cover all these scenarios, as web UIs are not one-size-fits-all. There is potential to solve this problem by semi-automatically generating a UI for each workflow, a concept we're exploring in another project. However, even in this scenario, the advantage of splitting our UI into standardized APIs remains apparent.</italic>
                </p>
                <p> </p>
                <p> 
                    <italic>
                        <bold>5. Overall, this is a good high-level introduction to Sapporo, but does not offer detailed technical insights into the problem space or the Sapporo solution. More details are necessary about these topics to provide insight to the community and allow for a better evaluation of the Sapporo contribution.</bold>
                    </italic>
                </p>
                <p> </p>
                <p> In response to your comment; we believe that your previous points stressed this same point, and the content added there addresses this same issue. As outlined in our response to your first comment, we have added descriptions in the updated manuscript about the issues Sapporo aims to address. Additionally, we have incorporated the following passage into the Discussion section:</p>
                <p> </p>
                <p> 
                    <italic>&gt; To support workflow developers and researchers conducting data analysis, multiple different workflow management systems have been developed. These systems enhance productivity and reproducibility in data analysis, enabling more effective science. However, the proliferation of multiple systems has revealed inefficiencies, leading to fragmentation within developer and user communities. While it is crucial to effectively leverage the assets of each system and community, it is not practical to provide the methods for syntax conversion between workflow systems and extending execution engines. Therefore, Sapporo aims to absorb differences between systems by wrapping multiple systems. Specifically, we provide an API that rewrites workflow definitions and runtime parameters into the command lines of each system based on the type of workflow definition received, enabling the execution of different workflows using the same client.&#x00a0; Inside the API server, we use Docker containers to ensure the usability of different workflow engines. The use of containers also ensures future additions of workflow engines while maintaining the portability of the API server. The Web API adheres to the internationally defined GA4GH WES standard, ensuring interoperability with other GA4GH WES implementations. By developing and releasing Sapporo Web as an example of a GA4GH WES client, we demonstrate the readiness of our developed API for research use.</italic>
                </p>
            </body>
        </sub-article>
    </sub-article>
</article>
