<?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.7476.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>
                        <subject>Bioinformatics</subject>
                    </subj-group>
                    <subj-group>
                        <subject>Theory &amp; Simulation</subject>
                    </subj-group>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>Semi-automated Modular Program Constructor for physiological modeling: Building cell and organ models</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: 1 approved with reservations]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Jardine</surname>
                        <given-names>Bartholomew</given-names>
                    </name>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Raymond</surname>
                        <given-names>Gary M.</given-names>
                    </name>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Bassingthwaighte</surname>
                        <given-names>James B.</given-names>
                    </name>
                    <uri content-type="orcid">https://orcid.org/0000-0001-8679-7257</uri>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>Department of Bioengineering, University of Washington, Seattle, WA, 98195, USA</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:barthj@uw.edu">barthj@uw.edu</email>
                </corresp>
                <fn fn-type="con">
                    <p>Gary Raymond developed MPC. Bart Jardine currently maintains MPC source code and James Bassingthwaighte provides guidance and requirements for MPC development. All authors contributed to the design and organization of the paper and its writing and editing. All authors have seen and agreed to the final content of the manuscript.</p>
                </fn>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>The authors declared no competing interests.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>16</day>
                <month>12</month>
                <year>2015</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2015</year>
            </pub-date>
            <volume>4</volume>
            <elocation-id>1461</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>7</day>
                    <month>12</month>
                    <year>2015</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2015 Jardine B et al.</copyright-statement>
                <copyright-year>2015</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/4-1461/pdf"/>
            <abstract>
                <p>The Modular Program Constructor (MPC) is an open-source Java based utility, built upon JSim's Mathematical Modeling Language (MML) (
                    <ext-link ext-link-type="uri" xlink:href="http://www.physiome.org/jsim/">http://www.physiome.org/jsim/</ext-link>) that uses directives embedded in model code to construct larger, more complicated models quickly and with less error than manually combining models. A major obstacle in writing complex programs for modeling physiological processes is the large amount of time it takes to code the myriad processes taking place simultaneously in cells, tissues, and organs. MPC replaces this task by code-generating algorithms that take the code from several different modules and produce model code for a new JSim model. This is particularly useful during multi-scale model development where many variants are to be configured and tested against data. MPC is implemented in Java and requires JSim to use its output. MPC source code and documentation are available at 
                    <ext-link ext-link-type="uri" xlink:href="http://www.physiome.org/software/MPC/">http://www.physiome.org/software/MPC/</ext-link>.</p>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>multi-scale modeling</kwd>
                <kwd>JSim</kwd>
                <kwd>systems biology</kwd>
                <kwd>physiological modeling</kwd>
                <kwd>reproducibility</kwd>
                <kwd>uncertainty quantification</kwd>
            </kwd-group>
            <funding-group>
                <funding-statement>Research has been supported by NIH grants HL088516 (J.B. Bassingthwaighte) and HL073598 (J.B. Bassingthwaighte), BE08417 (J.B. Bassingthwaighte), the Virtual Physiological Rat program GM094503 (PI: D.A. Beard), and the Cardiac Energy Grid HL199122 (PI: J.B. Bassingthwaighte).</funding-statement>
                <funding-statement>
                    <italic>The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.</italic>
                </funding-statement>
            </funding-group>
        </article-meta>
    </front>
    <body>
        <sec sec-type="intro">
            <title>Introduction</title>
            <p>Many attempts have been made to provide modular programming systems for physiological applications (
                <xref ref-type="bibr" rid="ref-4">Erson 
                    <italic toggle="yes">et al.</italic>, 2012</xref>; 
                <xref ref-type="bibr" rid="ref-6">Krause 
                    <italic toggle="yes">et al.</italic>, 2010</xref>; 
                <xref ref-type="bibr" rid="ref-7">Mirschel 
                    <italic toggle="yes">et al.</italic>, 2009</xref>; 
                <xref ref-type="bibr" rid="ref-11">Smith 
                    <italic toggle="yes">et al.</italic>, 2009</xref>). We describe our system as a semi-automated modular programming construction. It is simple and not conceptually novel, but is easy to learn and use. For developing a series of models of increasing complexity, Modular Program Constructor (MPC) can serve well as the basis of the modeling code. The perspective is to take a modular approach; this means that for multi-scale modeling one builds from simple elements initially and then uses multi-modular constructs as modules in higher level systems.</p>
            <p>In MPC, a module can be any set of variable declarations, parameter declarations and mathematical equations that represent a process. This broad definition of a module has a broad variety of applications: from a simple first order enzyme reaction, to a complete model of coronary blood flow through heart muscle, which can then be incorporated into a yet larger systemic model.</p>
            <p>Based on ModelBuilder, which used FORTRAN to parse code and define directives (
                <xref ref-type="bibr" rid="ref-8">Raymond, 2008</xref>), we designed the current version in Java and renamed it MPC. It is now refined, simplified, robust, and used to develop several new applications (
                <xref ref-type="bibr" rid="ref-9">Raymond 
                    <italic toggle="yes">et al.</italic>, 2011</xref>; 
                <xref ref-type="bibr" rid="ref-10">Raymond 
                    <italic toggle="yes">et al.</italic>, 2012</xref>). The models include time-dependent two-dimensional models in both Cartesian and cylindrical coordinates (
                <xref ref-type="bibr" rid="ref-9">Raymond 
                    <italic toggle="yes">et al.</italic>, 2011</xref>; 
                <xref ref-type="bibr" rid="ref-10">Raymond 
                    <italic toggle="yes">et al.</italic>, 2012</xref>), as well as whole organ models with heterogeneous flow re-implementing earlier complex whole organ models of substrate metabolism (
                <xref ref-type="bibr" rid="ref-1">Bassingthwaighte 
                    <italic toggle="yes">et al.</italic>, 1989</xref>).</p>
        </sec>
        <sec sec-type="methods">
            <title>Methods</title>
            <sec>
                <title>MPC implementation</title>
                <p>MPC is a pre-compiler written in Java. It reads a text input file, parses the file for directives, and generates a text output file based on those directives. MPC is built upon the Mathematical Modeling Language (MML) of JSim (
                    <ext-link ext-link-type="uri" xlink:href="http://www.physiome.org/jsim/">http://www.physiome.org/jsim/</ext-link>) (
                    <xref ref-type="bibr" rid="ref-3">Butterworth 
                        <italic toggle="yes">et al.</italic>, 2014</xref>). It has been designed to work with JSim's MML and currently requires JSim to run the model output file that MPC produces. Through JSim, the final constructed model can be exported into Systems Biology Markup Language (SBML, 
                    <ext-link ext-link-type="uri" xlink:href="http://sbml.org/Main_Page">http://sbml.org/Main_Page</ext-link>), CellML (
                    <ext-link ext-link-type="uri" xlink:href="https://www.cellml.org/">https://www.cellml.org/</ext-link>), and downloaded from these sources to other simulation platforms (
                    <xref ref-type="bibr" rid="ref-12">Smith 
                        <italic toggle="yes">et al.</italic>, 2014</xref>).  MPC currently is executed as command line utility and requires the Java runtime environment (
                    <ext-link ext-link-type="uri" xlink:href="https://java.com/">https://java.com/</ext-link>).</p>
                <p>MPC has three components:</p>
                <list list-type="bullet">
                    <list-item>
                        <label>1.</label>
                        <p>
                            <italic toggle="yes">MML</italic>, the mathematical modeling language of JSim, is a declarative language designed for solving all the equations simultaneously; it is not procedural.  MML is used for declaring parameters and variables, for defining algebraic equations, ordinary differential equations, and partial differential equations with their associated constraints, and initial and boundary conditions.</p>
                    </list-item>
                    <list-item>
                        <label>2.</label>
                        <p>
                            <italic toggle="yes">Modules</italic>, are sets of MML code libraries which are variable declarations, parameter declarations, or mathematical equations for a particular process, for example, flow along a capillary, diffusion within a region, a chemical reaction, transport across a membrane, or even a whole organ. These are archived, forming libraries of operational code. This allows the user to generate multi-scale models with different sub-models to use in testing a hypothesis against data, i.e. validity testing.  For example, there have been a variety of models developed to describe the transmembrane sodium pump, NaKATPase which uses ATP to pump sodium out of, and potassium into, the cell. All of these models have the same essential external influences: the Na and K ion concentrations and the transmembrane electrical potential. Having a library of the MML code for the variant modules allows one to insert one's choice quickly into the template for the cell model. Changing combination(s) rapidly to match solutions with experimental results is invaluable for the early phases of developing alternative hypotheses.</p>
                    </list-item>
                    <list-item>
                        <label>3.</label>
                        <p>
                            <italic toggle="yes">Directives</italic>, the third component, comprises the set of instructions used by the MPC program to select processes and gather the code from existing modules, renaming parameters and variables to reflect the new purposes for which they will function, and automatically combining the mathematical structures into new structures. The directives control the identification, fetching and relabeling of variables and parameters, and the assembly and recombination of code into new equations. All MPC directives start with '//%'.</p>
                    </list-item>
                </list>
            </sec>
            <sec>
                <title>Selecting and arranging components using directives &#x2013; A simple example</title>
                <p>The MPC input file guides the construction of a model made of previously existing modules. It combines MML with &#x201c;directives&#x201d; embedded as comments. It uses code from other JSim model files that have been annotated so that they can be read by MPC, yet without interfering with their operability. MPC may also combine models with other models or with modules of preconstructed code from libraries. These modules are specified within a library with the START and END directive. A library with a few elementary operators from which we will build a model in out next step is illustrated below:</p>
                <p>
                    <bold>CodeLibrary.mod:</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:13px;">//------------------------- ODE DOMAINS
//%START     odeDomains     // START...END directives used to specify a module.
realDomain t s; t.min=0; t.max=16; t.delta = 0.1;
//%END     odeDomains
//------------------------- flowCalc
//%START      flowCalc
C:t = (F/V)*(Cin-C);
//%END       flowCalc
//------------------------- EXCHANGE CACULATIONS
//%START      exchangeCalc
C1:t = PS/V1*(C2-C1);    // Exchange between two compartments
C2:t = PS/V2*(C1-C2);
//%END           exchangeCalc
//------------------------- REACTION A-&gt;B
//%START     reactionCalc
real G = 5 ml/(g*min);   // Const reaction rate.
A:t = -G/V*A;
B:t = G/V*A;
//%END           reactionCalc
//------------------------- MM REACTION A-&gt;B
//%START    MMreactionCalc
real KmA =1.0 mM, VmaxA =2 umol/(g*min); // MM constant and max velocity of rxn
real G(t) ml/(g*min);    // MM reaction rate
G = (VmaxA/(KmA+A));
A:t = -G*(A)/V;
B:t =  G*(A)/V;
//%END       MmreactionCalc</styled-content>
                    </preformat>
                </p>
                <p>In JSim's MML, the colon signifies the derivative: C:t means dC/dt.  Within MPC we can write MML code directly or import code from operational JSim models that have been annotated to identify components. An example is a three species (A, B, C), two compartment model with two reactions in compartment two (
                    <xref ref-type="fig" rid="f1">Figure 1</xref>) with species concentrations described by ordinary differential equations (ODE). Species A enters, with flow F, a compartment with volume V1 and passive exchange between a second compartment with volume V2, where A reacts at rate GA2B to form B and B reacts with C at rate GB2C, a Michaelis-Menten reaction.</p>
                <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                    <label>Figure 1. </label>
                    <caption>
                        <title>Two compartment, three species model (A, B, C) with volumes V
                            <sub>1</sub>, V
                            <sub>2</sub>, respectively.</title>
                        <p>A
                            <sub>in</sub> is A entering compartment 1 with flow F (No flow in for species B, C).  Passive exchange between compartments for all three species and reactions only occur in compartment 2.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/8055/688619c7-1f04-4993-83ba-2c64db029c36_figure1.gif"/>
                </fig>
                <p>The MPC file defines the domain, parameters, variables, and initial conditions first. Using directives listed in &#x2018;Example.mpc&#x2019;, model code is extracted from the file &#x2018;CodeLibrary.mod&#x2019; shown above. Values and variable names needing replacement throughout the final model are specified by the REPLACE directive along with the '%symbol%' placeholder. The use of the REPLACE, GET, COLLECT, INSERTSTART and INSERTEND directives are used in Example.mpc shown below:</p>
                <p>
                    <bold>Example.mpc:</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:13px;">//%REPLACE %CL% =("CodeLibrary.mod") // Library to get code from, replace all
                 // occurrences of %CL% with CodeLibrary.mod
//%REPLACE (%N%=(&#x201c;1&#x201d;,&#x201d;2&#x201d;), %vol%=("0.05","0.05")) // Two compartments with volumes, replace
    	      // all occurrences of %N% with 1,2 and %vol% with 0.05, 0.15
//%REPLACE (%AB%=("A","B","C") %PS3%=("6","5","4")) // 3 species, PS init values.
import nsrunit; unit conversion on; // Use SI units for this model.
math example {         // model declaration
// INDEPENDENT VARIABLES
//%GET %CL% odeDomains()   // Get odeDomains section from CodeLibrary.mod
//%INSERTSTART a2bParmsVars  // Specify params and vars section
// PARAMETERS
real Flow = 1 ml/(g*min);    // Flow rate
real PS%AB%12 = %PS3% ml/(g*min); // Conductances: PSA12,PSB12,PSC12
real V%N% = %vol% ml/g;	 // Volume of V1, V2
extern real %AB%in(t) mM; // Inflowing concentrations
// DEPENDENT VARIABLES
real %AB%%N%(t) mM;       // A1,A2,B1,B2,C1,C2
// INITIAL CONDITIONS (IC's)
when(t=t.min)  %AB%%N%=0;      // Defines IC's for the ODEs
//%INSERTEND a2bParmsVars      // End params and var sec
//%INSERTSTART a2bCalc      // Specify calc section
// ODE CALCULATIONS
//%GET %CL% reactionCalc ("A=A2","B=B2","V=V2","G=Ga2b") // A-&gt;B reaction
//%GET %CL% MMreactionCalc ("A=B2","B=C2","V=V2","G=Gb2c", // B -&gt;C MM reaction
//% "KmA=KmB2",&#x201c;VmaxA = VmaxB2", "KmA = KmB2")        // B -&gt;C MM reaction continued
//%GET %CL% flowCalc ("Cin=%AB%in","C=%AB%1","V=V1","F=Flow","D=D%AB%1")
//%GET %CL% exchangeCalc ("C1=%AB%1","PS=PS%AB%12","C2=%AB%2")
//%COLLECT("%AB%%N%:t")     //Group all ODE calculations for a species together
//%INSERTEND a2bCalc
} // curly bracket ends model</styled-content>
                    </preformat>
                </p>
                <p>The GET directive warrants further explanation: it identifies a code library file and module name within the library to insert into the model, and changes old names (names of parameters and variables in the module) to new model names. From the example above, 
                    <monospace>//%GET %CL% reactionCalc</monospace>  (
                    <monospace>"A=A2","B=B2","V=V2","G=Ga2b"</monospace>) will get the module named 'reactionCalc' in file 'CodeLibrary.mod' and replace the variable names with the new model names (
                    <monospace>"A=A2"</monospace>, etc).</p>
                <p>The MPC directives control the identification, fetching, relabeling of variables and parameters, and assembling and recombining code into new equations. The directives extract equations from files, changing the names of the module variables to application specific names and assemble the code into combined equations. The code resulting from these instructions provides a complete program (Example.mod), with no further intervention on the part of the user except to adjust parameters, solution time step length and set up graphics in JSim to display solutions, as shown in 
                    <xref ref-type="fig" rid="f2">Figure 2</xref>.</p>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>Figure 2. </label>
                    <caption>
                        <title>Solution to two compartment model generated from MPC.</title>
                        <p>Species concentrations plotted as a function of time. Species A (red), B (green), C (blue). Compartment 1: solid line, Compartment 2: dashed line. External input for species A is A
                            <sub>in</sub>, the black solid line.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/8055/688619c7-1f04-4993-83ba-2c64db029c36_figure2.gif"/>
                </fig>
                <p>
                    <bold>MPC Output - Example.mod:</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:13px;">import nsrunit; unit conversion on;   // Use cgs units
math example {           // model declaration
// INDEPENDENT VARIABLES
realDomain t s; t.min=0; t.max=16; t.delta = 0.1;
//%START a2bParmsVars        // Specify parameters and variables sect.
// PARAMETERS
real Flow = 1 ml/(g*min);   // Flow rate
real PSA12 = 6 ml/(g*min);  // Conductance
real PSB12 = 5 ml/(g*min);  // Conductance
real PSC12 = 4 ml/(g*min);  // Conductance
real V1 = 0.05 ml/g;        // Volume
real V2 = 0.05 ml/g;        // Volume
extern real Ain(t) mM;      // Inflowing concentration
extern real Bin(t) mM;      // Inflowing concentration, set to zero
extern real Cin(t) mM;      // Inflowing concentration, set to zero
// DEPENDENT VARIABLES
real A1(t) mM; real A2(t) mM; real B1(t) mM;
real B2(t) mM; real C1(t) mM; real C2(t) mM;
// INITIAL CONDITIONS (IC's)
when(t=t.min)  A1=0;
when(t=t.min)  A2=0;
when(t=t.min)  B1=0;
when(t=t.min)  B2=0;
when(t=t.min)  C1=0;
when(t=t.min)  C2=0;
//%END a2bParmsVars    // End parameters and variables section
//%START a2bCalc    // Specify calculations section
real Ga2b = 5 ml/(g*min);   // A -&gt;B Const reaction rate.
real KmB2 =1.0 mM, VmaxB2 =2 umol/(g*min);// MM constant and max velocity of rxn
real Gb2c(t) ml/(g*min);      // B -&gt;C MM reaction rate
Gb2c = (VmaxB2/(KmB2+B2));
// ODE CALCULATIONS
A2:t = -Ga2b/V2*A2 +PSA12/V2*(A1-A2);
B2:t = Ga2b/V2*A2 -Gb2c*(B2)/V2 +PSB12/V2*(B1-B2);
C2:t = Gb2c*(B2)/V2 +PSC12/V2*(C1-C2);
A1:t = (Flow/V1)*(Ain-A1) +PSA12/V1*(A2-A1);
B1:t = (Flow/V1)*(Bin-B1) +PSB12/V1*(B2-B1);
C1:t = (Flow/V1)*(Cin-C1) +PSC12/V1*(C2-C1);
//%END a2bCalc
} // curly bracket ends model</styled-content>
                    </preformat>
                </p>
                <p>The process above is hardly worthwhile for small models but is highly efficient for larger models where flexibility in structure is desired. In the example above, converting the Ordinary Differential Equations (ODEs) to Partial Differential Equations (PDEs) requires a three line change. Addition of a new PDE e.g. for red blood cells in a capillary, takes four lines. For a five species, three region model, a three line change generates a 15 PDE model.</p>
                <p>The small set of directives builds complex models from simple processes.  MPC allows one to reliably reuse existing models in larger, multi-scale models. MPC encodes and preserves information about how a complex model is built from its modules allowing quick substitution of modules. The amount of actual code a user needs to write is reduced, especially for more complicated models. In MPC we have generated a full organ model with heterogeneity of flow, competitive transporters on the cell membranes, and reactions for multiple species (
                    <xref ref-type="bibr" rid="ref-2">Bassingthwaighte 
                        <italic toggle="yes">et al.</italic>, 2012</xref>) e.g. for adenosine processing in the heart. It is a 7-path, three region model that involves five species (adenosine, inosine, hypoxanthine, xanthine, and uric acid) in a sequential reaction chain. The model contains over 100 PDEs for convection, diffusion, and reactions.</p>
            </sec>
        </sec>
        <sec sec-type="discussion">
            <title>Discussion</title>
            <sec>
                <title>MPC and Uncertainty Quantification (UQ)</title>
                <p>Though a MPC-generated model is checked for syntax and unit balance through JSim, verification is required: analytical solutions can be written into the code to match specific limiting cases, but otherwise one depends on testing for mass, charge, or energy balances. Validation requires testing against data, independent of the construction method. These are key steps toward reproducibility and the VVUQ process. (VVUQ = verify, validate, uncertainty quantification; the latter defining predictive accuracy.) MPC as is, depends on semantic consistency throughout the libraries and models used. Automated systems using ontologies will help craft models (
                    <xref ref-type="bibr" rid="ref-5">Gennari 
                        <italic toggle="yes">et al.</italic>, 2011</xref>), but the great efficiency of MPC for construction begins to show when there are many modules in series/parallel arrangements as in biochemical networks or circulatory or airway mechanical modeling. UQ includes uncertainty in inputs and parameters, readily handled by JSim's Monte Carlo analysis, and in model structure.  Structural uncertainty, a major challenge, defines a major role for MPC: inserting different choices from amongst similar but differently functioning modules, into a large, multi-modular model, and solving the system many times with the variant constituents illustrating uncertainty in the projected outcomes.</p>
            </sec>
            <sec>
                <title>Summary</title>
                <p>A limited set of directives in MPC, our Modular Program Constructor, allows us to build complex models using small models for simple processes. MPC encodes and preserves information about how a complex model is built from its modules allowing the researcher to quickly substitute or update modules to validate a hypothesis. The amount of actual code a user needs to write is reduced, especially for more complicated models.</p>
                <p>Future updates will improve collection and insertion of model code, better identify external module 'connections' for easier incorporation into larger models, and more intelligent reconciliation of similar code between modules. The long-term strategy is to integrate MPC within JSim allowing the user to take advantage of JSim's MML compiler and graphical user interface to quickly merge code with less user intervention.</p>
            </sec>
        </sec>
        <sec>
            <title>Software availability</title>
            <sec>
                <title>Software access</title>
                <p>The Java code for MPC, the examples presented here, some more detailed examples, and instructions are available at 
                    <ext-link ext-link-type="uri" xlink:href="http://www.physiome.org/software/MPC/">http://www.physiome.org/software/MPC/</ext-link>.</p>
            </sec>
            <sec>
                <title>Source code as at the time of publication</title>
                <p>
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/F1000Research/MPC/releases/tag/v1.0">https://github.com/F1000Research/MPC/releases/tag/v1.0</ext-link>
                </p>
            </sec>
            <sec>
                <title>Archived source code as at the time of publication</title>
                <p>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.5281/zenodo.34208">http://dx.doi.org/10.5281/zenodo.34208</ext-link>
                </p>
            </sec>
            <sec>
                <title>Software license</title>
                <p>MPC is released under a 3-clause &#x2018;revised&#x2019; BSD license:</p>
                <p>Copyright (C) 1999&#x2013;2015 University of Washington</p>
                <p>Developed by the National Simulation Resource</p>
                <p>Department of Bioengineering, Box 355061</p>
                <p>University of Washington, Seattle, WA 98195-5061.</p>
                <p>Dr. J. B. Bassingthwaighte, Director</p>
                <p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p>
                <list list-type="bullet">
                    <list-item>
                        <label>*</label>
                        <p>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</p>
                    </list-item>
                    <list-item>
                        <label>*</label>
                        <p>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.</p>
                    </list-item>
                    <list-item>
                        <label>*</label>
                        <p>Neither the name of the University of Washington nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.</p>
                    </list-item>
                </list>
            </sec>
        </sec>
        <sec>
            <title>Data availability</title>
            <p>The data referenced by this article are under copyright with the following copyright statement: Copyright: &#x00ef;&#x00bf;&#x00bd; 2015 Jardine B et al.</p>
            <p>
                <ext-link ext-link-type="uri" xlink:href=""/>
            </p>
            <p>MPC generated models for review at 
                <ext-link ext-link-type="uri" xlink:href="http://www.physiome.org/">www.physiome.org</ext-link> are:</p>
            <list list-type="bullet">
                <list-item>
                    <label>&#x2022;</label>
                    <p>Concentration profiles in capillary and tissue when exchange is diffusion-limited (
                        <ext-link ext-link-type="uri" xlink:href="http://www.physiome.org/jsim/models/webmodel/NSR/DiffusionLimitedProfiles/">http://www.physiome.org/jsim/models/webmodel/NSR/DiffusionLimitedProfiles/</ext-link>).</p>
                </list-item>
                <list-item>
                    <label>&#x2022;</label>
                    <p>ODE model of actin polymerization and depolymerization with tracking of bound nucleotide (
                        <ext-link ext-link-type="uri" xlink:href="http://www.physiome.org/jsim/models/webmodel/NSR/ActinCycle1/">http://www.physiome.org/jsim/models/webmodel/NSR/ActinCycle1/</ext-link>).</p>
                </list-item>
                <list-item>
                    <label>&#x2022;</label>
                    <p>Multiple tracer dilution estimates of D- and 2-deoxy-D-glucose uptake by the heart (
                        <ext-link ext-link-type="uri" xlink:href="http://www.physiome.org/jsim/models/webmodel/NSR/Kuikka1986BTEX30MP/">http://www.physiome.org/jsim/models/webmodel/NSR/Kuikka1986BTEX30MP/</ext-link>).</p>
                </list-item>
            </list>
        </sec>
    </body>
    <back>
        <ref-list>
            <ref id="ref-1">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Bassingthwaighte</surname>
                            <given-names>JB</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Wang</surname>
                            <given-names>CY</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Chan</surname>
                            <given-names>IS</given-names>
                        </name>
					</person-group>:
                    <article-title>Blood-tissue exchange via transport and transformation by capillary endothelial cells.</article-title>
                    <source>
						
                        <italic toggle="yes">Circ Res.</italic>
					</source>
                    <year>1989</year>;<volume>65</volume>(<issue>4</issue>):<fpage>997</fpage>&#x2013;<lpage>1020</lpage>.
                    <pub-id pub-id-type="pmid">2791233</pub-id>
                    <pub-id pub-id-type="doi">10.1161/01.RES.65.4.997</pub-id>
                    <pub-id pub-id-type="pmcid">3454538</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-2">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Bassingthwaighte</surname>
                            <given-names>JB</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Raymond</surname>
                            <given-names>GM</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Chan</surname>
                            <given-names>JI</given-names>
                        </name>
					</person-group>:
                    <article-title>Tracer washout from an organ is predicted from the tracer center of mass.</article-title>
                    <source>
						
                        <italic toggle="yes">FASEB J.</italic>
					</source>
                    <year>2012</year>;<volume>26</volume>:<fpage>905.16</fpage>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.fasebj.org/cgi/content/meeting_abstract/26/1_MeetingAbstracts/905.16">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-3">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Butterworth</surname>
                            <given-names>E</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Jardine</surname>
                            <given-names>BE</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Raymond</surname>
                            <given-names>GM</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>JSim, an open-source modeling system for data analysis [version 3; referees: 2 approved].</article-title>
                    <source>
						
                        <italic toggle="yes">F1000Res.</italic>
					</source>
                    <year>2014</year>;<volume>2</volume>:<fpage>288</fpage>.
                    <pub-id pub-id-type="pmid">24555116</pub-id>
                    <pub-id pub-id-type="doi">10.12688/f1000research.2-288.v3</pub-id>
                    <pub-id pub-id-type="pmcid">3901508</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-4">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Erson</surname>
                            <given-names>EZ</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Cavu&#x015f;o&#x011f;lu</surname>
                            <given-names>MC</given-names>
                        </name>
					</person-group>:
                    <article-title>Design of a framework for modeling, integration and simulation of physiological models.</article-title>
                    <source>
						
                        <italic toggle="yes">Comput Methods Programs Biomed.</italic>
					</source>
                    <year>2012</year>;<volume>107</volume>(<issue>3</issue>):<fpage>524</fpage>&#x2013;<lpage>37</lpage>.
                    <pub-id pub-id-type="pmid">22309809</pub-id>
                    <pub-id pub-id-type="doi">10.1016/j.cmpb.2011.11.010</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-5">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Gennari</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Neal</surname>
                            <given-names>ML</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Galdzicki</surname>
                            <given-names>M</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Multiple ontologies in action: Composite annotations for biosimulation models.</article-title>
                    <source>
						
                        <italic toggle="yes">J Biomed Informatics.</italic>
					</source>
                    <year>2011</year>;<volume>44</volume>(<issue>1</issue>):<fpage>146</fpage>&#x2013;<lpage>154</lpage>.
                    <pub-id pub-id-type="pmid">20601121</pub-id>
                    <pub-id pub-id-type="doi">10.1016/j.jbi.2010.06.007</pub-id>
                    <pub-id pub-id-type="pmcid">2989341</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-6">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Krause</surname>
                            <given-names>F</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Uhlendorf</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Lubitz</surname>
                            <given-names>T</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Annotation and merging of SBML models with semanticSBML.</article-title>
                    <source>
						
                        <italic toggle="yes">Bioinformatics.</italic>
					</source>
                    <year>2010</year>;<volume>26</volume>(<issue>3</issue>):<fpage>421</fpage>&#x2013;<lpage>422</lpage>.
                    <pub-id pub-id-type="pmid">19933161</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btp642</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-7">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Mirschel</surname>
                            <given-names>S</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Steinmetz</surname>
                            <given-names>K</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Rempel</surname>
                            <given-names>M</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>PROMOT: modular modeling for systems biology.</article-title>
                    <source>
						
                        <italic toggle="yes">Bioinformatics.</italic>
					</source>
                    <year>2009</year>;<volume>25</volume>(<issue>5</issue>):<fpage>687</fpage>&#x2013;<lpage>689</lpage>.
                    <pub-id pub-id-type="pmid">19147665</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btp029</pub-id>
                    <pub-id pub-id-type="pmcid">2647835</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-8">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Raymond</surname>
                            <given-names>GM</given-names>
                        </name>
					</person-group>:
                    <article-title>Reusable modular code for multi-scale physiological systems modeling.</article-title>
                    <source>
						
                        <italic toggle="yes">Oral presentation 3rd MEI International symposium.</italic>
					</source>
                    <year>2008</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://physiome.org/jsim/models/webmodel/NSR/MPC/ModelBuilder.pdf?%3Erev=HEAD;content=type=application/octet-stream">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-9">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Raymond</surname>
                            <given-names>GM</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Bassingthwaighte</surname>
                            <given-names>JB</given-names>
                        </name>
					</person-group>:
                    <article-title>Automating modular model construction using JSim.</article-title>
                    <source>
						
                        <italic toggle="yes">FASEB J.</italic>
					</source>
                    <year>2011</year>;<volume>25</volume>:<fpage>863.9</fpage>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.fasebj.org/cgi/content/meeting_abstract/25/1_MeetingAbstracts/863.9">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-10">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Raymond</surname>
                            <given-names>GM</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Bassingthwaighte</surname>
                            <given-names>JB</given-names>
                        </name>
					</person-group>:
                    <article-title>JSim models of two-dimensional concentrations in capillary-tissue systems relating center-of-mass of retained tracer to washout kinetics.</article-title>
                    <source>
						
                        <italic toggle="yes">FASEB J.</italic>
					</source>
                    <year>2012</year>;<volume>26</volume>:<fpage>905.17</fpage>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.fasebj.org/cgi/content/meeting_abstract/26/1_MeetingAbstracts/905.17">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-11">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>LP</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Bergmann</surname>
                            <given-names>FT</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Chandran</surname>
                            <given-names>D</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Antimony: a modular model definition language.</article-title>
                    <source>
						
                        <italic toggle="yes">Bioinformatics.</italic>
					</source>
                    <year>2009</year>;<volume>25</volume>(<issue>18</issue>):<fpage>2452</fpage>&#x2013;<lpage>2454</lpage>.
                    <pub-id pub-id-type="pmid">19578039</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btp401</pub-id>
                    <pub-id pub-id-type="pmcid">2735663</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-12">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>LP</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Butterworth</surname>
                            <given-names>E</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Bassingthwaighte</surname>
                            <given-names>JB</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>SBML and CellML translation in Antimony and JSim.</article-title>
                    <source>
						
                        <italic toggle="yes">Bioinformatics.</italic>
					</source>
                    <year>2014</year>;<volume>30</volume>(<issue>7</issue>):<fpage>903</fpage>&#x2013;<lpage>907</lpage>.
                    <pub-id pub-id-type="pmid">24215024</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btt641</pub-id>
                    <pub-id pub-id-type="pmcid">3967103</pub-id>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report11594">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.8055.r11594</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Waltemath</surname>
                        <given-names>Dagmar</given-names>
                    </name>
                    <xref ref-type="aff" rid="r11594a1">1</xref>
                    <role>Referee</role>
                </contrib>
                <aff id="r11594a1">
                    <label>1</label>Department of Systems Biology and Bioinformatics, University of Rostock, Rostock, Germany</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>1</month>
                <year>2016</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2016 Waltemath D</copyright-statement>
                <copyright-year>2016</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="relatedArticleReport11594" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.7476.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>The manuscript at hand describes MPC, a tool that supports modelers in constructing&#x00a0; complex models from smaller ones. MPC also keeps information about the single modules, making their exchange and further coupling even easier.</p>
            <p>The manuscript provides several examples (on code and abstract level) of how to use MPC, but it does not give details on how the algorithm itself works.</p>
            <p>My suggestions for improvements are mainly on the terminology used throughout the manuscript, and on the discussion of related work.
                <list list-type="order">
                    <list-item>
                        <p>Unifying terms: In the abstract alone you speak about programs, utilities, code; about models, processes, model code and modules. Maybe you could - not only in the abstract but throughout the manuscript - unify your wording a little bit more to make the text more comprehensive.</p>
                    </list-item>
                    <list-item>
                        <p>Related work: I missed a discussion of related systems, e.g. the model merge tool for SBML, semanticSBML, or the semantic-based system (there was a new publication just recently
                            <sup>
                                <xref ref-type="bibr" rid="rep-ref-11594-1">1</xref>
                            </sup>). While you mention them in the beginning of your introduction, I did not see a discussion of these systems, and how they differ from your approach. I, as a reader, would be interested to know which system is best to use when.&#x00a0;</p>
                    </list-item>
                </list>Furthermore, I have the following smaller comments:
                <list list-type="order">
                    <list-item>
                        <p>&#x00a0;Page 2, Introduction: "The models include time-dependent..." -- Here it was not clear to me what you mean by "models".</p>
                    </list-item>
                    <list-item>
                        <p>Page 2, MPC implementation: "Through JSim, the final constructed model...." -- I understand here, that you can upload your constructed models from JSim into an open model repository, and then directly download them into other simulation platforms. I am not sure that it is as easy as this, particularly for BioModels there will be a curation process in between, and there is thus no immediate reuse. The way the sentence is written now, a reader may assume that models can directly and immediately be exchanged through these resources, which is in my opinion misleading.</p>
                    </list-item>
                    <list-item>
                        <p>Page 2, MPC implementation: "These are archived, forming libraries of operational code" -- I would be interested to know how you archive the modules, where, and how/if/to what degree they are accessible/reusable?</p>
                    </list-item>
                    <list-item>
                        <p>Figure 1: I would like to suggest using an SBGN-compliant notation for the toy model.</p>
                    </list-item>
                    <list-item>
                        <p>Summary: "MPC encodes and preserves..." -- This is an important information for the users, and I would like to suggest to add this information to the abstract.</p>
                    </list-item>
                </list>
            </p>
            <p>Reviewer Expertise:</p>
            <p>NA</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>
        <back>
            <ref-list>
                <title>References</title>
                <ref id="rep-ref-11594-1">
                    <label>1</label>
                    <mixed-citation publication-type="journal">
                        <person-group person-group-type="author"/>:
                        <article-title>Semantics-Based Composition of Integrated Cardiomyocyte Models Motivated by Real-World Use Cases.</article-title>
                        <source>
                            <italic>PLoS One</italic>
                        </source>.<year>2015</year>;<volume>10</volume>(<issue>12</issue>) :
                        <elocation-id>10.1371/journal.pone.0145621</elocation-id>
                        <fpage>e0145621</fpage>
                        <pub-id pub-id-type="pmid">26716837</pub-id>
                        <pub-id pub-id-type="doi">10.1371/journal.pone.0145621</pub-id>
                    </mixed-citation>
                </ref>
            </ref-list>
        </back>
        <sub-article article-type="response" id="comment1907-11594">
            <front-stub>
                <contrib-group>
                    <contrib contrib-type="author">
                        <name>
                            <surname>Jardine</surname>
                            <given-names>Bartholomew</given-names>
                        </name>
                        <aff>University of Washigton, USA</aff>
                    </contrib>
                </contrib-group>
                <author-notes>
                    <fn fn-type="conflict">
                        <p>
                            <bold>Competing interests: </bold>None.</p>
                    </fn>
                </author-notes>
                <pub-date pub-type="epub">
                    <day>6</day>
                    <month>4</month>
                    <year>2016</year>
                </pub-date>
            </front-stub>
            <body>
                <p>Our responses to Referee Dagmar Waltemath's review:
                    <list list-type="order">
                        <list-item>
                            <p>
                                <italic>My suggestions for improvements are mainly on the terminology used throughout the manuscript, and on the discussion of related work. Unifying terms: In the abstract alone you speak about programs, utilities, code; about models, processes, model code and modules. Maybe you could - not only in the abstract but throughout the manuscript - unify your wording a little bit more to make the text more comprehensive.</italic>
                            </p>
                            <p>
                                <bold>
                                    <italic>Author Response:</italic>
                                </bold> Yes, we updated the abstract and paper as a whole to try to use consistent and unifying wording when discussing model code, processes, modules, etc. These changes are most notable in the abstract and introduction.</p>
                        </list-item>
                        <list-item>
                            <p>
                                <italic>Related work: I missed a discussion of related systems, e.g. the model merge tool for SBML, semanticSBML, or the semantic-based system (there was a new publication just recently1). While you mention them in the beginning of your introduction, I did not see a discussion of these systems, and how they differ from your approach. I, as a reader, would be interested to know which system is best to use when.</italic>
                            </p>
                            <p>
                                <bold>
                                    <italic>Author Response:</italic>
                                </bold> Added a paragraph in the Introduction that briefly discusses other tools in relation to MPC:</p>
                            <p>"Modular model creation and construction rely, to varying degrees, on meta-data to assist in reusing and merging previous models into a new one. Antimony (Smith 2009) is the simplest approach. It requires the user to be familiar with the model and just specify that you want to import it into the new model. It relies on the user to resolve discrepancies between models. SemanticSBML(Krause 2010),&#x00a0; SemGen (Genari 2011, Neal 2015), and Phy-Sim (Erson 2012)&#x00a0; make use of standard semantic and ontological descriptions of a biological model to allow large models to be broken down easily, without much user guidance, into biologically meaningful components linked to their mathematical description. Semantic and ontological metadata assists the construction of new models by providing suggested connections or relationships between models. This approach requires the user to invest time in complete annotation of models with standardized meta-data. The payoff is models that can be constructed and merged together using biological rather than mathematical terms. ProMot (Mirschel 2009) enforces an object-oriented approach to modeling (defining external interfaces for each object) and attempts to use network theory to describe biological systems through specifying elements and coupling elements (Mirschel 2009). MPC relies on the user to modularize a model using directives to specify them. MPC then requires the user to specify how the new model makes use of the modules. MPC only imposes unit balance constraints, indirectly, through the JSim MML compiler (Butterworth 2014)."</p>
                        </list-item>
                    </list>
                    <italic>Furthermore, I have the following smaller comments:</italic>
                    <list list-type="order">
                        <list-item>
                            <p>
                                <italic>Page 2, Introduction: "The models include time-dependent..." -- Here it was not clear to me what you mean by "models".</italic>
                            </p>
                            <p>
                                <bold>Author Response:</bold> Clarified sentence to make it clearer (Page 2, Introduction, 4th paragraph):</p>
                            <p>Some MPC built models include time-dependent two-dimensional spatial models in both Cartesian and cylindrical coordinates (Raymond et al., 2011; 2012), requiring PDEs, and whole organ models with heterogeneous flows, and substrate metabolism, including reconstructing Bassingthwaighte et al., 1989 blood-tissue exchange model.</p>
                        </list-item>
                        <list-item>
                            <p>
                                <italic>Page 2, MPC implementation: "Through JSim, the final constructed model...." -- I understand here, that you can upload your constructed models from JSim into an open model repository, and then directly download them into other simulation platforms. I am not sure that it is as easy as this, particularly for BioModels there will be a curation process in between, and there is thus no immediate reuse. The way the sentence is written now, a reader may assume that models can directly and immediately be exchanged through these resources, which is in my opinion misleading.</italic>
                            </p>
                            <p>
                                <bold>
                                    <italic>Author Response:</italic>
                                </bold> That sentence is confusing and not what we wanted to say. Changed to:</p>
                            <p>Through JSim, the final constructed model can be exported into Systems Biology Markup Language (SBML, http://sbml.org/Main_Page) or CellML (https://www.cellml.org/), and imported to other SBML or CellML supported simulation platforms [Smith et al., 2014].</p>
                        </list-item>
                        <list-item>
                            <p>
                                <italic>Page 2, MPC implementation: "These are archived, forming libraries of operational code" -- I would be interested to know how you archive the modules, where, and how/if/to what degree they are accessible/reusable?</italic>
                            </p>
                            <p>
                                <bold>
                                    <italic>Author Response:</italic>
                                </bold> Modules created and used by our team are currently available for download at physiome.org (http://physiome.org/software/MPC/) or search on term "mpc" (http://physiome.org/Models/modelDB/). At this time there are a very limited set of MPC modules available. Soon (May/June 2016) we will have individual MPC annotated modules accessible directly from our search page with all file dependencies listed and available for download as well as links to full JSim models that may use them. Contributions to our model repository are encouraged (Any modeling language accepted).</p>
                            <p>Sentence inserted on page 2, in MPC implementation, paragraph 2, Modules: "These are archived, forming libraries of operational module code that can be publicly distributed (some are available at http://www.physiome.org/software/MPC/)."</p>
                        </list-item>
                        <list-item>
                            <p>
                                <italic>Figure 1: I would like to suggest using an SBGN-compliant notation for the toy model.</italic>
                            </p>
                            <p>
                                <bold>
                                    <italic>Author Response:</italic>
                                </bold> Thank you for the suggestion, for this particular figure we would like to keep it as is, but since we are currently modeling cardiac metabolism at the sub-cellular level we will be adopting SBGN notation where possible. Arrowheads in figure are made smaller.</p>
                        </list-item>
                        <list-item>
                            <p>
                                <italic>Summary: "MPC encodes and preserves..." -- This is an important information for the users, and I would like to suggest to add this information to the abstract.</italic>
                            </p>
                            <p>
                                <bold>
                                    <italic>Author Response:</italic>
                                </bold> Added this sentence to the abstract.</p>
                        </list-item>
                    </list>
                </p>
            </body>
        </sub-article>
    </sub-article>
</article>
