<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>IWSG</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Automatic generation of provenance metadata during execution of scientific workflows</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Felix Bartusch</institution>
          ,
          <addr-line>Maximilian Hanussek, Jens Kr u ̈ger</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>High-Performance and Cloud Computing Group Zentrum fu ̈r Datenverarbeitung University of Tu ̈bingen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Provenance</institution>
          ,
          <addr-line>Reproducibility, Workflows, Science Gateways-</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <volume>13</volume>
      <fpage>13</fpage>
      <lpage>15</lpage>
      <abstract>
        <p>-Data processing in data intensive scientific fields like bioinformatics is automated to a great extent. Among others, automation is achieved with workflow engines that execute an explicitly stated sequence of computations. Scientists can use these workflows through science gateways or they develop them by their own. In both cases they may have to preprocess their raw data and also may want to further process the workflow output. The scientist has to take care about provenance of the whole data processing pipeline. This is not a trivial task due to the diverse set of computational tools and environments used during the transformation of raw data to the final results. Thus we created a metadata schema to provide provenance for data processing pipelines and implemented a tool that creates this metadata during the execution of typical scientific computations.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Originally the term provenance is widely used in the field
of arts to ensure the passage of paintings through different
owners. Other fields like archeology also uses provenance
information to exactly describe the find spot of artifacts. In
an analogous way the term data provenance in computational
science describes the lineage of data [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. This lineage
encompasses transformations or computations on other data sets [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        Proper recording of provenance information has many
advantages. One important point is the reliability and
reproducibility of published results. If there is no or just weak
provenance for the result, it is not really reliable [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]
      </p>
      <p>In this work we present our tool Dataprov for automatic
generation of provenance metadata. It was our goal to develop
a tool that can record provenance data for arbitrary command
line tools and workflow management systems. A researcher
can use our tool to track provenance for computations on
resources the researcher has access to. At the same time a
provider of ready-to-use scientific pipelines can utilize our tool
to create provenance metadata for pipeline runs.</p>
      <p>The novelty of Dataprov is its extensibility and the support
for tracking metadata of used software containers. If a
command uses a Docker or Singularity container it is automatically
inferred and metadata of the container is incorporated into the
resulting provenance file.</p>
      <p>The recorded provenance data should be readable for human
beings as well as machines. Dataprov should be convenient to
use without huge changes to existing scripts or workflows.</p>
      <p>
        In Section II we focus on the provenance data format and
discuss which questions we want to answer with the recorded
provenance data and how we achieve that. Then we describe
how the provenance data is recorded with our tool Dataprov
for arbitrary command line tools as well as for Snakemake
workflows [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In the last part of the paper we discuss how
one could integrate the tool into science gateways that provide
access to workflows for scientists of a specific community.
      </p>
    </sec>
    <sec id="sec-2">
      <title>II. PROVENANCE DATA FORMAT</title>
      <p>
        Important information that should be provided by
provenance data are already stated in various publications [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
Given a previously computed result, typical questions that
should be answered by provenance data are:
      </p>
      <p>Who computed this result?
How was the result computed?
What input files were used and what is the provenance
chain of the input?
What was the environment on which the computation was
executed?</p>
      <p>Was the input or resulting data changed in the meantime?
We chose to represent the provenance data in the XML
format. The XML format has the advantage that humans as
well as machines can read them and that any produced XML
document can be validated against a XML schema. The XML
schema files for our provenance data format is available in the
Dataprov GitHub repository 1.</p>
      <p>Figure 1 shows the first three levels of the XML schema.
A data provenance (Dataprov) object provides metadata for
a file (target). We store the URI of the file and the SHA1
hashsum. The checksum can be used to detect changes since
file creation. The history contains a list of operations that lead
to the described file.</p>
      <p>The XML schema of such an operation is depicted in Figure
1. An operation can have several input files and can produce
several output files. As shown in Figure 1 a file is characterized
by the triple of filename, URI, and a SHA1 hashsum. The
operation is performed by a person (executor) on a specific
machine (host). The opClass element describes the operation
in more detail and one can provide a message in which the
purpose of the operation can be noted.</p>
    </sec>
    <sec id="sec-3">
      <title>1https://github.com/fbartusch/dataprov</title>
      <p>
        The operation class (opClass) element is the extensible part
of the schema. Currently our implementation supports shell
commands, commands executed in Docker [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and
Singularity [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] containers, Common Workflow Language (CWL)
command line tools [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], and Snakemake workflows. Each of
the operations has different information to track, hence the
different classes. The use cases in Section IV contain examples
for some of the supported operations.
      </p>
      <p>For shell commands just the executed tool and its version
is of importance. In contrast, for Snakemake workflows also
the workflow file, an optional configuration file, and several
workflow steps have to be tracked.</p>
      <p>Listing 1. XML Element describing the executor of an operation.
&lt;e x e c u t o r &gt;
&lt; t i t l e &gt;Dr . &lt;/ t i t l e &gt;
&lt;f i r s t N a m e &gt;John &lt;/ f i r s t N a m e &gt;
&lt;surname&gt;Doe&lt;/surname&gt;
&lt;mail&gt;j o h n . doe@any u n i . edu &lt;/ mail&gt;
&lt; a f f i l i a t i o n &gt;Group f o r Awsome Things &lt;/ a f f i l i a t i o n &gt;
&lt;/ e x e c u t o r &gt;</p>
    </sec>
    <sec id="sec-4">
      <title>III. IMPLEMENTATION AND EXTENSIBILITY</title>
      <p>The implementation of the data provenance schema in
Section II was done with Python and was tested with Python
2.7 and Python 3.6. The tool called Dataprov is available from
GitHub2. The general idea is to wrap computations with our
tool in the following way:
dataprov &lt;options&gt; run &lt;wrapped_command&gt;</p>
    </sec>
    <sec id="sec-5">
      <title>2https://github.com/fbartusch/dataprov</title>
      <p>Listing 2. XML Element describing the host machine of an operation.
&lt;h o s t&gt;
&lt;system&gt;Linux &lt;/ system&gt;
&lt;d i s t &gt;CentOS Linux &lt;/ d i s t &gt;
&lt;v e r s i o n &gt;7.3.1611 &lt;/ v e r s i o n &gt;
&lt;codename&gt;Core &lt;/codename&gt;
&lt;k e r n e l V e r s i o n &gt;4.9.34 29. e l 7 . x86 64 &lt;/ k e r n e l V e r s i o n &gt;
&lt;machine&gt;x86 64 &lt;/machine&gt;
&lt;p r o c e s s o r &gt;x86 64 &lt;/ p r o c e s s o r &gt;
&lt;hostname&gt;a n y h o s t n a m e . any u n i . edu &lt;/hostname&gt;
&lt;/ h o s t&gt;</p>
      <p>The operation class element of the XML schema was
introduced in Section II. Based on the first part of the wrapped
command Dataprov decides which specific element should be
generated. E.g. if the wrapped command starts with
’snakemake’, a snakemake workflow element will be generated.</p>
      <p>The simplest mode of Dataprov wraps shell commands.
The user has to define input files and expected output files
manually. One example would be
dataprov -i FILE_IN -o FILE_OUT run COMMAND
# Example
dataprov -i shakespeare.txt -o wc.txt run \
’wc shakespeare.txt &gt; wc.txt’</p>
      <p>The tool checks if provenance files for the input files are
available. If yes, the history of the input provenance data is
incorporated into the resulting history. Details about the host
architecture, running operation system are determined using
the Python package platform. We show an example of the
collected data in Listing 2. Information about the executor
are stored in a configuration file and provides among others
Listing 3. XML Element describing a simple command line operation with
one input and one output file.
elements.</p>
      <p>The fact that every schema element has a corresponding
counterpart in the Python code makes it convenient to support
new tools or workflow systems. In the first step the new XML
element for the new operation class is written. In the second
step on creates the corresponding Python class. This class
contains functions interacting with the wrapped command in
order to fill the XML schema with meaningful information.
name and affiliation as showed in Listing 1. When Dataprov
is first used this configuration file is created in the home
directory and the user is asked to fill in the needed information.
When the user wraps an operation with Dataprov the executor
information from the configuration file is incorporated into the
resulting provenance metadata.</p>
      <p>For simple command line options we try to infer the location
of the executable with the find executable function of the
Python distutils package and the software version by running
a subprocess of the tool with both the –version/-v switches
and capture the output.</p>
      <p>The wrapped commands are executed as subprocesses if
possible. The output of the subprocess is also written to
the shell such that no important output is masked. After the
subprocess has finished, we write the collected provenance
data for each output file to an XML file. If an error occurrs
during the subprocess no provenance data is written.</p>
      <p>In the word count example above one has to specify the
input and output files twice. First for Dataprov, the other time
in the wrapped command. This is tedious and also error-prone,
but for a simple wrapper without any alternative.</p>
      <p>Specifying the input and output files twice is dropped if
one implements support for specific commands into Dataprov.
An example for this is the implemented CWL command line
tool. To use the CWL reference implementation cwltool
one has to specifiy an cwl-file and an input binding file.
Dataprov infers information about input and output files by
using methods provided by the cwltool Python package. Then
the wrapped command will be executed.
dataprov run cwltool CWL_FILE INPUT_BINDING</p>
      <p>For each element of the XML schema there is a
corresponding class in the source code. The class implements basic
functionalities like creating Python objects from XML trees
and vice versa. Each element is described in its own schema
file, whose path is also set in the corresponding Python class.
This greatly simplifies the validation of read or written XML
Based on three use cases we show how the provenance data
is generated. The first use case comprises individual
computations. These play a decisive role during the development
of new workflows when a researcher tries several tools for a
specific task. With good provenance the researcher can track
which tool and parameter combination yielded a specific result.
It plays also a role for individual computations whose results
are used by workflows as input data like indices for reference
genomes . The second use shows how we handle provenance
information for Docker containers whereas the third use case
handles whole scientific workflows.</p>
      <sec id="sec-5-1">
        <title>A. Provenance for individual computations</title>
        <p>The researcher tries various tools and parameter choices
to evaluate what fits best for the workflow. Usually this is
done on the command line in an interactive manner and
the result files are stored somehow in a directory hierarchy.
Hence, one has to keep track from which tool and parameter
combination a result file originates. Annotating provenance
data for individual computations is also important for data
computed once and used often like indices for reference
genomes . To know how the genomic index, that is used in a
mapping step of a workflow, was generated also increases the
reproducibility of the entire workflow. Therefore, provenance
for individual computatations is the first use case we want to
tackle with our approach.</p>
        <p>Assuming that we compute a genomic index of some
reference genome with the Burrows-Wheeler Aligner (BWA):
bwa index genome.fa</p>
        <p>This results in a set of files describing the index of the
genome. We can use the index in a mapping workflow. But
after some time nobody can tell you which release of BWA
was used to generate the index or which coworker computed
the index. For individual computations one can use our tool
in the following way:
dataprov -i genome.fa -o genome.fa.bwt run \
bwa index genome.fa</p>
        <p>The original command is wrapped by our software
Dataprov. For single computations you have to tell Dataprov the
input and output files of the computations because it can not
infer it from the command. Dataprov generates a XML file
genome.fa.bwt.prov whose schema is shown in Figure
1.</p>
        <p>The overhead for the researcher consists of specifying
input and output files of the operation. This is feasible for
manually executing simple computations, but not for automatic
workflows.</p>
        <p>The second example of an individual computation also
shows how provenance information of input files are
incorporated into provenance information of output files. We map
a set of reads against the reference genome we just created.
The structure of the resulting XML file is shown in Listing 4.
dataprov -i genome.fa.bwt -i A.fastq \
-o A.bam run \
’bwa mem genome.fa A.fastq &gt; A.bam’</p>
        <p>Listing 4. Dataprov XML files inherit history of input files.
&lt;d a t a p r o v&gt;
&lt;t a r g e t &gt;
&lt;name&gt;A. bam&lt;/name&gt;
[ . . . ]
&lt;/ t a r g e t &gt;
&lt;h i s t o r y &gt;
&lt;o p e r a t i o n &gt;
[ . . .</p>
        <p>I n h e r i t e d from f i r s t c o m p u t a t i o n ,
d e s c r i b i n g c r e a t i o n o f genome . f a . bwt
. . . ]
&lt;/ o p e r a t i o n &gt;
&lt;o p e r a t i o n &gt;
[ . . .
d e s c r i b i n g c r e a t i o n o f A. bam
. . . ]
&lt;/ o p e r a t i o n &gt;
&lt;/ h i s t o r y &gt;
&lt;/ d a t a p r o v&gt;</p>
      </sec>
      <sec id="sec-5-2">
        <title>B. Provenance for software containers</title>
        <p>This use case is in principle the same as the first one, but
this time BWA is provided through a Docker container. We
show only the first computation, because it’s analogue to the
use case before.
docker pull biocontainers/bwa
dataprov -i genome.fa -o genome.fa.bwt run \
docker run -v $PWD/:/tmp/:z -it \
docker.io/biocontainers/bwa:latest \</p>
        <p>bwa index /tmp/genome.fa</p>
        <p>The computation takes now place in a Docker container.
Dataprov interpretes the docker command and extracts the
container name. Then it uses the python docker package to
inspect the container and creates a XML element describing
the operation and the container as shown in Listing 5.</p>
      </sec>
      <sec id="sec-5-3">
        <title>C. Provenance for workflows: Snakemake</title>
        <p>We implemented support for Snakemake workflows into our
application to demonstrate the main purpose of our work, the
automatic generation of provenance metadata during workflow
execution. This means you can run Snakemake workflows
whilst generating provenance data for the resulting files. The</p>
        <p>Listing 5. Docker commands have their own operation class. Not only the
wrapped command and details about used Docker version is stored, but also
valuable information about the Docker container.
&lt;opClass&gt;
&lt;docker&gt;
&lt;command&gt;d o c k e r run [ . . . ] &lt; / command&gt;
&lt;d o c k e r C o n t a i n e r &gt;
&lt;imageSource&gt;
&lt;d o c k e r L o c a l&gt;</p>
        <p>d o c k e r . i o / b i o c o n t a i n e r s / bwa : l a t e s t
&lt;/ d o c k e r L o c a l&gt;
&lt;/imageSource&gt;
&lt;i m a g e D e t a i l s &gt;
&lt;imageID&gt;sha256 : 0 b01483 [ . . . ] &lt; / imageID&gt;
&lt;repoTag&gt;d o c k e r . i o / b i o c o n t a i n e r s / bwa : l a t e s t &lt;/repoTag&gt;
&lt;r e p o D i g e s t &gt; [ . . . ] &lt; / r e p o D i g e s t &gt;
&lt;c r e a t e d &gt;2018 02 08T11 : 0 4 : 5 6 . 7 5 6 2 5 0 0 8 9 Z&lt;/ c r e a t e d &gt;
&lt;l a b e l s &gt;
&lt;i t e m key =” s o f t w a r e ” v a l u e =”bwa”/&gt;
&lt;i t e m key =” s o f t w a r e . v e r s i o n ” v a l u e =”0.7.15”/ &gt;
&lt;/ l a b e l s &gt;
&lt;/ i m a g e D e t a i l s &gt;
&lt;d o c k e r P a t h &gt;/ u s r / b i n / docker &lt;/ d o c k e r P a t h&gt;
&lt;d o c k e r V e r s i o n&gt;</p>
        <p>
          Docker v e r s i o n 1 . 1 2 . 6 , b u i l d 88 a4867 / 1 . 1 2 . 6
&lt;/ d o c k e r V e r s i o n&gt;
&lt;/ d o c k e r C o n t a i n e r &gt;
&lt;/docker&gt;
&lt;/ opClass&gt;
actual use case is composed of the workflow from the
snakemake tutorial3. The workflow searches for genomic variants
in sequencing data. The inputs are two sets of reads which
are then mapped to the reference genome using the
BurrowsWheeler Aligner (BWA) [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. The mapping result is sorted and
indexed with samtools [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] and genomic variants are called
with bcftools [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>To run the workflow and call all variants, one would execute
the following command:
snakemake all.vcf</p>
        <p>This runs the Snakemake workflow until the specified target
file is created. The workflow is described in a so-called
Snakefile that specifies rules. Rules have files as targets and
Snakemake builds a directed acyclic graph (DAG) from the
rules until the specified target file is reached. Then Snakemake
executes the commands inferred from the DAG.</p>
        <p>For creating the provenance data one has to execute the
following command:
dataprov run snakemake all.vcf</p>
        <p>Compared to the execution of individual commands the
overhead here is very small. Internally Dataprov performs a
dryrun of the Snakemake workflow to infer which rules are
executed and extract the corresponding commands. Finally the
workflow is executed and the resulting provenance files are
generated. Because the resulting XML file comprises over 200
lines and can be viewed in the example directory of the GitHub
repository4.</p>
        <p>3http://snakemake.readthedocs.io/en/stable/tutorial/tutorial.html
4https://github.com/fbartusch/dataprov/tree/master/examples/snakemake</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>V. INTEGRATION INTO SCIENCE GATEWAYS</title>
      <p>Dataprov is versatile and can be used on a local workstation,
a HPC cluster, or a virtual machine in the cloud. The tool does
not require any special privileges and can be integrated into
tools and workflows offered by science gateways.</p>
      <p>
        Science gateways offer convenient access to tools and
workflows. An example for such a science gateway is the
MoSGrid portal [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] that provides access for molecular
dynamics and docking workflows. A user does not have to
install and maintain software suits. Even though this is very
desirable for a scientist it renders science gateways more or
less a black box. All steps between upload and download are
not always verifiable for the user.
      </p>
      <p>If a science gateway integrates the proposed method the
gateway can return the provenance metadata together with the
computational results. The tools and workflows offered by the
science gateway are still convenient to use and in addition all
data processing steps are traceable for the scientist.</p>
      <p>As shown in the use cases the implementation has almost
no overhead for the operator of the science gateway if certain
workflow engines are used to perform the computation.</p>
    </sec>
    <sec id="sec-7">
      <title>VI. RELATED WORK</title>
      <p>
        The tool noWorkflow [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] captures provenance of Python
scripts by wrapping their execution and storing among others a
hash of the executed python script, the execution time, called
functions, and dependencies. Compared to the simple script
support of Dataprov, noWorkflow raises more provenance data
and provides more functionality. But currently it just supports
python scripts, in contrast to Dataprov which is agnostic to
the used script language.
      </p>
      <p>
        The tool ReproZip [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] traces the execution of a
computational experiment and packs all required dependencies
into one archive. ReproZip can unpack the archive and run
the experiment again on another Linux-based OS. ReproZip
identifies input and output files automatically using a heuristic.
If Dataprov is used with a reproducible environment like
software containers, the reproducibility and provenance of
the experiment is comparable to ReproZip. The difference
between both approaches is that ReproZip concentrates on
Provenance of one experiment and thus one environment,
whereas Dataprov can incorporate provenance data from
previous computations into the provenance of new experiments.
      </p>
      <p>CodaLab 5 offers a collaborative platform for reproducible
research. One can upload data and Docker containers to a
CodaLab server and run experiments on the data using an
environment provided by Docker containers. Data and runs
are stored on the platform as immutable bundles. Worksheets
written in a custom markdown language present an
experimental pipeline and can contain references to the immutable
bundles. Because whole research process takes place on the
CodaLab platform the experiments are well documented and
reproducible. The difference to Dataprov is that a researcher
moves the computational work to the CodaLab platform
whereas Dataprov runs in the familiar to the researcher.</p>
      <p>
        Several universal provenance models were created in the
past. Two of the most common are the Open Provenance
Model (OPM) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and the W3C PROV family [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. OPM
emerged from two community provenance challenges and the
W3C PROV documents want to set a standard format for the
representation of provenance and bases on OPM and other
semantic web ontologies. Because the W3C provenance model
is a standard for the whole world wide web it is much more
comprehensive than our approach. Every information we store
with our schema could be also described by the W3C standard,
but our method has the advantage that it is especially tailored
to the actual need of data scientists. Thus it is not required
to acquire full insight into the W3C provenance standard to
understand the provenance data our method derives.
      </p>
      <p>Many workflow engines like Snakemake or Galaxy are
able to generate a graphical representation of a workflow
and return also the commands that were executed during
workflow execution. The additional benefit of Dataprov is, that
the tracked operations can consist of entirely different types.
This means for example that the preprocessing of data can be
done via a Snakemake workflow whereas the key results are
generated by another script or even manual shell commands
and the provenance information is still available in a well
defined format.</p>
    </sec>
    <sec id="sec-8">
      <title>VII. DISCUSSION AND OUTLOOK</title>
      <p>The presented method is able to wrap single shell commands
as well as entire Snakemake workflows and produces a human
and machine readable provenance metadata. The provenance
metadata describes the transformation of the input data to the
output data in detail and thus enhances the reproducibility of
the computation massively.</p>
      <p>We also discussed how the integration of the proposed
metadata schema could improve data provenance of computations
executed through science gateways.</p>
      <p>Wrapping single computations on the command line has the
overhead of specifying input and output of the computation.
The support of workflow engines reduce this overhead to the
minimum. This has to be implemented for each workflow
engine individually. The implementation effort depends heavily
on the workflow engine and its capabilities. Engines providing
an easy to use API or even a dryrun functionality are easier
to support.</p>
      <p>The resulting XML metadata file is well defined by a
schema and can be validated. For computations with fewer
steps the XML document is with not much effort readable by
a human. The file tends to be very long and thus not so easy
readably if the computation comprises many steps, input files,
and output files. Thus a visual representation of the metadata
would give more insight into the provenance information.
This could be accomplished by generating a simple directed
acyclic graph showing data files as nodes and the executed
commands as edges between the nodes. A more sophisticated
visualization could comprise an interactive graph that shows
additional information about files, executors, and environment
as mouseover effect.</p>
    </sec>
    <sec id="sec-9">
      <title>VIII. ACKNOWLEDGEMENTS</title>
      <p>The authors acknowledge support by the High
Performance and Cloud Computing Group at the Zentrum fu¨ r
Datenverarbeitung of the University of Tu¨ bingen, the state
of Baden-Wu¨ rttemberg through bwHPC and the German
Research Foundation (DFG) through grant no INST 37/935-1
FUGG. Part of the work presented here was also supported
through BMBF funded project de.NBI (031 A 534A) and
MWK Baden-Wu¨ rttemberg funded project CiTAR (”Zitierbare
wissenschaftliche Methoden”).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Y. L.</given-names>
            <surname>Simmhan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Plale</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gannon</surname>
          </string-name>
          , “
          <article-title>A Survey of Data Provenance in e-</article-title>
          <string-name>
            <surname>Science</surname>
          </string-name>
          ,” pp.
          <fpage>31</fpage>
          -
          <lpage>36</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>P.</given-names>
            <surname>Buneman</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Davidson</surname>
          </string-name>
          , “
          <article-title>Data provenance-the foundation of data quality,” in Data provenance-the foundation of data quality'</article-title>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>N.</given-names>
            <surname>Prat</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Madnick</surname>
          </string-name>
          , “
          <article-title>Measuring data believability: A provenance approach</article-title>
          ,”
          <source>in Proceedings of the Annual Hawaii International Conference on System Sciences</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Ko</surname>
          </string-name>
          <article-title>¨ster and S</article-title>
          . Rahmann, “
          <article-title>Snakemake-a scalable bioinformatics workflow engine</article-title>
          ,
          <source>” Bioinformatics</source>
          , vol.
          <volume>28</volume>
          , no.
          <issue>19</issue>
          , pp.
          <fpage>2520</fpage>
          -
          <lpage>2522</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>L.</given-names>
            <surname>Moreau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Clifford</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Freire</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Futrelle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Gil</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Groth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Kwasnikowska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Miles</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Missier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Myers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Plale</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Simmhan</surname>
          </string-name>
          , E. Stephan, and
          <string-name>
            <given-names>J. V.</given-names>
            <surname>Den</surname>
          </string-name>
          <string-name>
            <surname>Bussche</surname>
          </string-name>
          , “
          <article-title>The Open Provenance Model core specification (v1.1),” Future Generation Computer Systems</article-title>
          , vol.
          <volume>27</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>743</fpage>
          -
          <lpage>756</lpage>
          ,
          <year>2011</year>
          . [Online]. Available: http://dx.doi.org/10.1016/j.future.
          <year>2010</year>
          .
          <volume>07</volume>
          .005
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bose</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Frew</surname>
          </string-name>
          , “
          <article-title>Lineage retrieval for scientific data processing: a survey,” ACM Computing Surveys</article-title>
          , vol.
          <volume>37</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>28</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Merkel</surname>
          </string-name>
          , “Docker:
          <article-title>Lightweight linux containers for consistent development</article-title>
          and deployment,” Linux J., vol.
          <year>2014</year>
          , no.
          <issue>239</issue>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>G. M.</given-names>
            <surname>Kurtzer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Sochat</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. W.</given-names>
            <surname>Bauer</surname>
          </string-name>
          , “Singularity:
          <article-title>Scientific containers for mobility of compute,”</article-title>
          <source>PLOS ONE</source>
          , vol.
          <volume>12</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>20</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>P.</given-names>
            <surname>Amstutz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Crusoe</surname>
          </string-name>
          , N. Tijanic´,
          <string-name>
            <given-names>B.</given-names>
            <surname>Chapman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Chilton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Heuer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kartashov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Leehr</surname>
          </string-name>
          , H. Me´nager, M. Nedeljkovich,
          <string-name>
            <given-names>M.</given-names>
            <surname>Scales</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Soiland-Reyes</surname>
          </string-name>
          , and L. Stojanovic, “Common Workflow Language,
          <year>v1</year>
          .0,”
          <year>2016</year>
          . [Online]. Available: https://figshare.com/articles/Common
          <source>Workflow Language draft 3/3115156</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>H.</given-names>
            <surname>Li</surname>
          </string-name>
          , “
          <article-title>Aligning sequence reads, clone sequences and assembly contigs with BWA-MEM</article-title>
          ,”
          <year>2013</year>
          . [Online]. Available: http://arxiv.org/abs/1303.3997
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>H.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Handsaker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wysoker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Fennell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Ruan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Homer</surname>
          </string-name>
          , G. Marth, G. Abecasis, and
          <string-name>
            <given-names>R.</given-names>
            <surname>Durbin</surname>
          </string-name>
          , “
          <article-title>The Sequence Alignment/Map format</article-title>
          and SAMtools,” Bioinformatics, vol.
          <volume>25</volume>
          , no.
          <issue>16</issue>
          , pp.
          <fpage>2078</fpage>
          -
          <lpage>2079</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>P.</given-names>
            <surname>Danecek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Schiffels</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Durbin</surname>
          </string-name>
          , “
          <article-title>Multiallelic calling model in bcftools ( -</article-title>
          m ),” pp.
          <fpage>1</fpage>
          -
          <lpage>2</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kru</surname>
          </string-name>
          ¨ger, R. Grunzke, and
          <string-name>
            <given-names>S.</given-names>
            <surname>Gesing</surname>
          </string-name>
          , “
          <article-title>The MoSGrid Science GatewayA Complete Solution for Molecular Simulations</article-title>
          ,
          <source>” Journal of Chemical Theory and Computation</source>
          , vol.
          <volume>10</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>2232</fpage>
          -
          <lpage>2245</lpage>
          ,
          <year>2014</year>
          . [Online]. Available: http://pubs.acs.org/doi/abs/10.1021/ct500159h
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>L.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Grunzke</surname>
          </string-name>
          , and J. Kru¨ger, “
          <article-title>Maintaining a Science Gateway Lessons Learned from MoSGrid,”</article-title>
          <source>Proceedings of the 50th Hawaii International Conference on System Sciences</source>
          , pp.
          <fpage>6233</fpage>
          -
          <lpage>6242</lpage>
          ,
          <year>2017</year>
          . [Online]. Available: http://hdl.handle.
          <source>net/10125/41918</source>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>L.</given-names>
            <surname>Murta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Braganholo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Freire</surname>
          </string-name>
          , “
          <article-title>noWorkflow: a Tool for Collecting, Analyzing, and Managing Provenance from Python Scripts,”</article-title>
          <source>Proceedings of the VLDB Endowment</source>
          , vol.
          <volume>10</volume>
          , no.
          <issue>12</issue>
          , pp.
          <fpage>1841</fpage>
          -
          <lpage>1844</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>F.</given-names>
            <surname>Chirigati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Rampin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Shasha</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Freire</surname>
          </string-name>
          , “ReproZip: Computational Reproducibility With Ease,
          <source>” Proceedings of the 2016 International Conference on Management of Data</source>
          , pp.
          <fpage>2085</fpage>
          -
          <lpage>2088</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>L.</given-names>
            <surname>Moreau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Groth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cheney</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Lebo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Miles</surname>
          </string-name>
          , “
          <article-title>The rationale of PROV,”</article-title>
          <source>Journal of Web Semantics</source>
          , vol.
          <volume>35</volume>
          , pp.
          <fpage>235</fpage>
          -
          <lpage>257</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>