BACKGROUND
computational representations of pathways and models lie at the core of systems biology research  <cit> .
formats have been designed to encode these complex knowledge representations, either as community standards or as formats specific to a software tool  <cit> .
different formats are preferentially used to address specific problems or use different approaches, thus limiting interoperability.
however, one often needs to use several tools and approaches to answer a biological question, or to reuse existing pathways and models in different contexts.
many format converters have been written over the years.
often, several converters between the same formats are developed independently by different groups.
this results in a duplication of efforts and waste of time, energy and money.
the different converters may be inconsistent, leading to different results.
in addition, being developed by one person or one team, those software tools tend to go unmaintained while the formats they are covering keep evolving.
finally, some of these converters are embedded in larger pieces of software, which hinders their use.
to overcome these challenges, the systems biology format converter  software provides an open source modular and extensible framework to potentially support conversion between any two formats using a single executable or web service.
implementation
sbfc was built to support rapid implementation and integration of new converters.
therefore, it was designed with a high degree of modularity.
at the core of the software are the generalmodel interface and the generalconverter abstract class.
the former is used for data exchange and describes the operations that every input or output format object must implement to be processed by sbfc.
the latter represents the generic algorithm for converting one format into another.
an overview of the sbfc framework is provided on fig.
<dig>
fig.
<dig> sbfc overview.
overview for the software package sbfc.
at the sbfc core a general converter translates a general model into another.
instantiations of general model and general converter are easily implemented in sbfc, providing users with a wide range of options for converting between specific model formats.
software libraries for importing or exporting model formats can be reused by different converters.
for instance, the converter sbml2biopax currently uses the software libraries jsbml to import an sbml model, and paxtools to export it
to add a new format, a developer must simply implement the generalmodel interface, which provides some methods to read and write the format to file or string.
adding a new converter requires extending the generalconverter class and implementing the generalmodel convert method, where the model parameter is the input format that needs to be converted and the returned generalmodel object is the new converted format.
for instance a converter a2b translating from a file formatted as model a to a file formatted as model b, requires the definition of two classes modela and modelb implementing the generalmodel interface.
the class converter a2b must extend the abstract class generalconverter and implement the method generalmodel convert.
this method will receive an input object named model, whose dynamic type is modela.
the object returned by this method will have dynamic type modelb.
because all sbfc format classes are implementations of the generalmodel interface, it is possible to create new converters re-using existing converters by simply invoking the generic convert() method for each existing converter .
the convert() method in the new converter a2c is implemented by calling the convert() methods in the converters a2b and b2c, respectively .
fig.
<dig> creation of complex converters.
a in this scenario, three existing formats  and two converters  are considered.
each of the a, b and c classes represents a different format and implements the interface generalmodel.
the converters extend the generalconverter class and translate from a to b, and from b to c respectively.
b a new converter a2c translating from a to c, can be added effortlessly by invoking the method convert() implemented in the converters a2b and b2c.
c java source code illustrating the implementation of the method convert() for the converter class a2c
sbfc is developed using the java programming language.
however, if an existing converter is developed in a programming language other than java, it is still possible to create a new sbfc converter that will invoke the existing converter using the java runtime exec() method.
this approach can be used for invoking any external program or command without having to re-write the full converter.
once the converter is integrated into the framework, it can be used and combined effortlessly with other converters .
a potential disadvantage of this approach is the loss of interoperability when using operating system-dependent code.
the advantage is that the specific sbfc converters directly rely on the development of the original external converters reducing code duplication.
each format is identified by an identifiers.org uri  <cit>  or an internet media type.
if none of them exists, the developers of the format and converter classes must agree on an identifier  for this format.
sbfc allows multiple classes implementing the generalmodel interface for a given format, using different tools to read and write models.
all classes should return the same value for the geturi() method.
for instance, the implementation of a converter for the systems biology markup language  <cit>  may rely on jsbml  <cit> , libsbml  <cit> , or a dom document structure  <cit> .
this design can be advantageous when 1) a given library does not read a version of a format properly; 2) a converter was written with an old or newer version of a library that has a different api; or 3) high performance is required .
at the beginning of a conversion, the converter checks that the value returned by the geturi() method of the input generalmodel is a uri of a format it does support.
if the converter recognises the format uri, the generic write methods  or modeltofile) are used in order to retrieve the file content.
RESULTS
available formats and converters
the sbfc project already implemented support for several formats and developed several converters.
the following format classes are provided:
apmmodel for the apmonitor modelling language .
apmonitor is an optimization software for mixed-integer and differential algebraic equations  <cit> ;
biopaxmodel for biopax, format to exchange descriptions of biomolecular pathways, including reaction and interaction networks  <cit> ;
dotmodel for the dot format, that encodes graph descriptions used by the open source graph visualisation software graphviz  <cit>  to generate multiple image formats ;
gpmlmodel for the format used by the pathway drawing and analysis tool pathvisio  <cit>  and the pathway database wikipathways  <cit> ;
mdlmodel for the format used by the single particle simulator mcell  <cit> ;
octavemodel for octave and matlab m-file formats, encoding mathematical models usable by the modeling environments gnu octave  <cit>  and matlab;
sbgnmlmodel for sbgn-ml format, a format to encode graphical maps in the systems biology graphical notation  <cit> ;
sbmlmodel for sbml  <cit> , a format encoding mathematical models;
xppmodel for xpp format, encoding mathematical models usable by the numerical analysis software xppaut  <cit> .
this core set of model formats was based on the set of converters internally used by the biomodels project  <cit> .
as sbml is central for this resource, the focus was on implementing converters from sbml to other formats.
the following converters listed by class name are currently available: sbml2sbml, sbml2apm, sbml2biopax, sbml2sbgnml, sbml2matlab, sbml2octave, sbml2xpp, sbml2dot.
sbfc also supports conversions between sbml model annotations urn:miriam  <cit>  and identifiers.org url  <cit>  with the converters urn2url and url2urn.
the systems biology community has been developing additional converters, including mdl2sbml, gpml2biopax, biopax2biopaxl <dig> .
running sbfc as a standalone application
sbfc can be used as a standalone application and executed via a basic graphical user interface or the command line.
the general command to convert one model into another on the command line is provided by the converter class within the package org.sbfc.converter.
the syntax for this generic command is:
java org.sbfc.converter.converter
for instance, a model in sbml format can be converted to octave format using the command:
java org.sbfc.converter.converter sbmlmodel sbml2octave model.xml
bash and bat scripts are provided for most converters.
this removes the need to specify the java classpath, the input class, and converter classes.
the previous conversion becomes:
./sbml2octave.sh my-sbml-model.xml
users can specify a folder name as parameter, instead of a model file.
in this case, the script will try to convert all xml files found in the folder.
if the number of files to be converted is limited, a simple standalone gui can also be used .
the general syntax is:
java -jar sbfc-x.y.z-standalone.jarfig.
<dig> sbfc standalone graphical user interface.
a simple gui is provided to quickly convert a file.
the user can browse and select a file, choose a converter, select a destination for the resulting conversion an launch the job.
the result can optionally be displayed in a separate window
on most systems, a double click on the jar is sufficient but some scripts are also provided to help users to launch the gui:
./sbfconvertergui.sh for linux or sbfconvertergui.bat on windows
this gui can be embedded in any 3rd party java software with the command:
convertergui.getconverterguiinstance().setvisible;
running sbfc online
to provide easy access to sbfc, a web application has been deployed at the european bioinformatics institute   <cit> .
the web page is used in four successive steps as shown in fig.
<dig>  the user must first specify the input and output model formats.
once the input format is selected, the list of possible output formats is updated depending of the converters available on the system.
an e-mail address can be optionally provided to receive a url link to these results.
finally, the documents to convert can be selected.
this can be done via three methods: file upload, model url or copy/paste.
once a conversion is launched, the user is redirected to a result page.
all the jobs launched during a browser session will be displayed.
the results can be downloaded for  <dig> h. it is worth noting that for privacy purposes neither the original nor the converted models are kept on the servers for a period longer than  <dig> h.
fig.
<dig> sbfc online.
after selecting the input format, the available output format list is updated accordingly.
a short description about the selected model format appears once an item from the combobox is selected.
three methods to submit the files to be converted are offered: file upload, model url, and copy/paste.
files can be uploaded via a dialog window or by simply dragging and dropping them on the red box.
several files can be loaded before launching the conversion.
the result page presents a list of all conversion jobs.
until the job is completed, a red “pending” box is displayed.
the box turns to a green “complete” when the resulting files are available
the sbfc online application can be downloaded from the sourceforge website and installed locally as described in the sbfc developer manual.
running sbfc through web services
for automatic and programmatic access, sbfc provides rest like webservices using the http post method.
for java users, an helper class sbfcwebserviceclient provides an api that simplifies the use of the web services.
depending on user requirements, two types of methods can be selected for submitting conversion jobs.
the first type performs blocking calls.
the methods submitandgetresultfromfile, submitandgetresultfromurl and submitandgetresultfromstring start a conversion job and wait until the model is converted and returned from the web server.
for large models, the conversion process can last several minutes, particularly if the cluster load is high.
the second type of methods use asynchronous, nonblocking calls.
the methods submitjobfromfile, submitjobfromurl and submitjobfromstring start a conversion job and immediately return a conversionid object that contain some metadata about the job.
the status of the job can be checked later with the getjobstatus method.
when the returned status is ‘done’, the user can use the method getconvertionresult to retrieve the output file.
an example of java code that launches several conversions through the sbfc web services is provided in the additional file usageexample.java .
discussion
novel formats are created on a regular basis in systems biology, due to the development of new software tools for building and analysing biological pathways, networks and models.
while these developments are necessary for the progress of the domain, interoperability is a crucial challenge and conversion tools play a central role.
in order to maintain feature rich and up to date code, as well as to limit redundant efforts, community efforts are need.
sbfc is an attempt in that direction.
sbfc was implemented in java in order to be fully portable on all operating systems provided with a java virtual machine.
this facilitates software adoption by users as these do not have to install platform-specific versions, and by developers who can easily integrate sbfc in their existing java software if needed.
the provided web services also allow software not implemented in java to use sbfc easily.
sbfc architecture is sufficiently generic to permit rapid implementations and additions of new formats and converters.
with this solid but flexible design, sbfc aims to make existing efforts to develop systems biology converters converge into a single community activity.
a roadmap including new features and converters to be developed in the near future is available  <cit> .
contribution from the community is needed to integrate converters more quickly.
an important feature which is still in progress is the complete adoption of the osgi framework  <cit>  within sbfc.
this implementation would reduce problems related to library conflicts between different converters.
the future sbfc osgi plugins would also enable a complete integration of sbfc as cytoscape  <dig>  <cit>  plugin.
CONCLUSIONS
sbfc is a novel open source software that provides a generic java-based architecture for converting between systems biology model formats .
it helps computational biologists to process or visualise their models using different software tools, and software developers to implement format conversion.
we hope that new converters will be contributed in the future.
availability and requirements
project name: systems biology format converter  project home page: http://sbfc.sourceforge.net/
operating system: platform independent programming language: java se  <dig> or higher other requirements: none license: gnu lgpl v2
additional file
additional file  <dig> sbfc web services usage example.
the file usageexample.java presents some code using several methods of the sbfcwebserviceclient class to perform some conversions, retrieve the results and save them to local files.
abbreviations
apmapmonitor modelling language
biopaxbiological pathway exchange
gpmlpathvisio graphical pathway markup language
mdlmcell modelling description language
sbfcsystems biology format converter
sbgnsystems biology graphical notation
sbmlsystems biology markup language
uriuniform resource identifier
competing interests
the authors declare that they have no competing interests.
authors’ contributions
jbp, nln, nr, mk and mpi conceived and designed the project; jpb, mk, mpi, nr and pdp implemented the software; in addition ll, ah, gk and kn contributed to some of the included converters.
jpb, pdp, nln and nr wrote the manuscript.
all authors read and approved the final manuscript.
fundings
the work was funded by british bbsrc , embl-ebi and us national institute of health .

 computational representations of pathways and models lie at the core of systems biology research. formats have been designed to encode these complex knowledge representations, either as community standards or as formats specific to a software tool. different formats are preferentially used to address specific problems or use different approaches, thus limiting interoperability. however, one often needs to use several tools and approaches to answer a biological question, or to reuse existing pathways and models in different contexts. many format converters have been written over the years. often, several converters between the same formats are developed independently by different groups. this results in a duplication of efforts and waste of time, energy and money. the different converters may be inconsistent, leading to different results. in addition, being developed by one person or one team, those software tools tend to go unmaintained while the formats they are covering keep evolving. finally, some of these converters are embedded in larger pieces of software, which hinders their use. to overcome these challenges, the systems biology format converter software provides an open source modular and extensible framework to potentially support conversion between any two formats using a single executable or web service. implementation sbfc was built to support rapid implementation and integration of new converters. therefore, it was designed with a high degree of modularity. at the core of the software are the generalmodel interface and the generalconverter abstract class. the former is used for data exchange and describes the operations that every input or output format object must implement to be processed by sbfc. the latter represents the generic algorithm for converting one format into another. an overview of the sbfc framework is provided on fig. fig. sbfc overview. overview for the software package sbfc. at the sbfc core a general converter translates a general model into another. instantiations of general model and general converter are easily implemented in sbfc, providing users with a wide range of options for converting between specific model formats. software libraries for importing or exporting model formats can be reused by different converters. for instance, the converter sbml2biopax currently uses the software libraries jsbml to import an sbml model, and paxtools to export it to add a new format, a developer must simply implement the generalmodel interface, which provides some methods to read and write the format to file or string. adding a new converter requires extending the generalconverter class and implementing the generalmodel convert method, where the model parameter is the input format that needs to be converted and the returned generalmodel object is the new converted format. for instance a converter a2b translating from a file formatted as model a to a file formatted as model b, requires the definition of two classes modela and modelb implementing the generalmodel interface. the class converter a2b must extend the abstract class generalconverter and implement the method generalmodel convert. this method will receive an input object named model, whose dynamic type is modela. the object returned by this method will have dynamic type modelb. because all sbfc format classes are implementations of the generalmodel interface, it is possible to create new converters re-using existing converters by simply invoking the generic convert() method for each existing converter. the convert() method in the new converter a2c is implemented by calling the convert() methods in the converters a2b and b2c, respectively. fig. creation of complex converters. a in this scenario, three existing formats and two converters are considered. each of the a, b and c classes represents a different format and implements the interface generalmodel. the converters extend the generalconverter class and translate from a to b, and from b to c respectively. b a new converter a2c translating from a to c, can be added effortlessly by invoking the method convert() implemented in the converters a2b and b2c. c java source code illustrating the implementation of the method convert() for the converter class a2c sbfc is developed using the java programming language. however, if an existing converter is developed in a programming language other than java, it is still possible to create a new sbfc converter that will invoke the existing converter using the java runtime exec() method. this approach can be used for invoking any external program or command without having to re-write the full converter. once the converter is integrated into the framework, it can be used and combined effortlessly with other converters. a potential disadvantage of this approach is the loss of interoperability when using operating system-dependent code. the advantage is that the specific sbfc converters directly rely on the development of the original external converters reducing code duplication. each format is identified by an identifiers.org uri or an internet media type. if none of them exists, the developers of the format and converter classes must agree on an identifier for this format. sbfc allows multiple classes implementing the generalmodel interface for a given format, using different tools to read and write models. all classes should return the same value for the geturi() method. for instance, the implementation of a converter for the systems biology markup language may rely on jsbml, libsbml, or a dom document structure. this design can be advantageous when 1) a given library does not read a version of a format properly; 2) a converter was written with an old or newer version of a library that has a different api; or 3) high performance is required. at the beginning of a conversion, the converter checks that the value returned by the geturi() method of the input generalmodel is a uri of a format it does support. if the converter recognises the format uri, the generic write methods or modeltofile) are used in order to retrieve the file content.  available formats and converters the sbfc project already implemented support for several formats and developed several converters. the following format classes are provided: apmmodel for the apmonitor modelling language. apmonitor is an optimization software for mixed-integer and differential algebraic equations; biopaxmodel for biopax, format to exchange descriptions of biomolecular pathways, including reaction and interaction networks; dotmodel for the dot format, that encodes graph descriptions used by the open source graph visualisation software graphviz to generate multiple image formats; gpmlmodel for the format used by the pathway drawing and analysis tool pathvisio and the pathway database wikipathways; mdlmodel for the format used by the single particle simulator mcell; octavemodel for octave and matlab m-file formats, encoding mathematical models usable by the modeling environments gnu octave and matlab; sbgnmlmodel for sbgn-ml format, a format to encode graphical maps in the systems biology graphical notation; sbmlmodel for sbml, a format encoding mathematical models; xppmodel for xpp format, encoding mathematical models usable by the numerical analysis software xppaut. this core set of model formats was based on the set of converters internally used by the biomodels project. as sbml is central for this resource, the focus was on implementing converters from sbml to other formats. the following converters listed by class name are currently available: sbml2sbml, sbml2apm, sbml2biopax, sbml2sbgnml, sbml2matlab, sbml2octave, sbml2xpp, sbml2dot. sbfc also supports conversions between sbml model annotations urn:miriam and identifiers.org url with the converters urn2url and url2urn. the systems biology community has been developing additional converters, including mdl2sbml, gpml2biopax, biopax2biopaxl. running sbfc as a standalone application sbfc can be used as a standalone application and executed via a basic graphical user interface or the command line. the general command to convert one model into another on the command line is provided by the converter class within the package org.sbfc.converter. the syntax for this generic command is: java org.sbfc.converter.converter for instance, a model in sbml format can be converted to octave format using the command: java org.sbfc.converter.converter sbmlmodel sbml2octave model.xml bash and bat scripts are provided for most converters. this removes the need to specify the java classpath, the input class, and converter classes. the previous conversion becomes:./sbml2octave.sh my-sbml-model.xml users can specify a folder name as parameter, instead of a model file. in this case, the script will try to convert all xml files found in the folder. if the number of files to be converted is limited, a simple standalone gui can also be used. the general syntax is: java -jar sbfc-x.y.z-standalone.jarfig. sbfc standalone graphical user interface. a simple gui is provided to quickly convert a file. the user can browse and select a file, choose a converter, select a destination for the resulting conversion an launch the job. the result can optionally be displayed in a separate window on most systems, a double click on the jar is sufficient but some scripts are also provided to help users to launch the gui:./sbfconvertergui.sh for linux or sbfconvertergui.bat on windows this gui can be embedded in any 3rd party java software with the command: convertergui.getconverterguiinstance().setvisible; running sbfc online to provide easy access to sbfc, a web application has been deployed at the european bioinformatics institute. the web page is used in four successive steps as shown in fig. the user must first specify the input and output model formats. once the input format is selected, the list of possible output formats is updated depending of the converters available on the system. an e-mail address can be optionally provided to receive a url link to these results. finally, the documents to convert can be selected. this can be done via three methods: file upload, model url or copy/paste. once a conversion is launched, the user is redirected to a result page. all the jobs launched during a browser session will be displayed. the results can be downloaded for h. it is worth noting that for privacy purposes neither the original nor the converted models are kept on the servers for a period longer than h. fig. sbfc online. after selecting the input format, the available output format list is updated accordingly. a short description about the selected model format appears once an item from the combobox is selected. three methods to submit the files to be converted are offered: file upload, model url, and copy/paste. files can be uploaded via a dialog window or by simply dragging and dropping them on the red box. several files can be loaded before launching the conversion. the result page presents a list of all conversion jobs. until the job is completed, a red “pending” box is displayed. the box turns to a green “complete” when the resulting files are available the sbfc online application can be downloaded from the sourceforge website and installed locally as described in the sbfc developer manual. running sbfc through web services for automatic and programmatic access, sbfc provides rest like webservices using the http post method. for java users, an helper class sbfcwebserviceclient provides an api that simplifies the use of the web services. depending on user requirements, two types of methods can be selected for submitting conversion jobs. the first type performs blocking calls. the methods submitandgetresultfromfile, submitandgetresultfromurl and submitandgetresultfromstring start a conversion job and wait until the model is converted and returned from the web server. for large models, the conversion process can last several minutes, particularly if the cluster load is high. the second type of methods use asynchronous, nonblocking calls. the methods submitjobfromfile, submitjobfromurl and submitjobfromstring start a conversion job and immediately return a conversionid object that contain some metadata about the job. the status of the job can be checked later with the getjobstatus method. when the returned status is ‘done’, the user can use the method getconvertionresult to retrieve the output file. an example of java code that launches several conversions through the sbfc web services is provided in the additional file usageexample.java. discussion novel formats are created on a regular basis in systems biology, due to the development of new software tools for building and analysing biological pathways, networks and models. while these developments are necessary for the progress of the domain, interoperability is a crucial challenge and conversion tools play a central role. in order to maintain feature rich and up to date code, as well as to limit redundant efforts, community efforts are need. sbfc is an attempt in that direction. sbfc was implemented in java in order to be fully portable on all operating systems provided with a java virtual machine. this facilitates software adoption by users as these do not have to install platform-specific versions, and by developers who can easily integrate sbfc in their existing java software if needed. the provided web services also allow software not implemented in java to use sbfc easily. sbfc architecture is sufficiently generic to permit rapid implementations and additions of new formats and converters. with this solid but flexible design, sbfc aims to make existing efforts to develop systems biology converters converge into a single community activity. a roadmap including new features and converters to be developed in the near future is available. contribution from the community is needed to integrate converters more quickly. an important feature which is still in progress is the complete adoption of the osgi framework within sbfc. this implementation would reduce problems related to library conflicts between different converters. the future sbfc osgi plugins would also enable a complete integration of sbfc as cytoscape plugin.  sbfc is a novel open source software that provides a generic java-based architecture for converting between systems biology model formats. it helps computational biologists to process or visualise their models using different software tools, and software developers to implement format conversion. we hope that new converters will be contributed in the future. availability and requirements project name: systems biology format converter project home page: http://sbfc.sourceforge.net/ operating system: platform independent programming language: java se or higher other requirements: none license: gnu lgpl v2 additional file additional file sbfc web services usage example. the file usageexample.java presents some code using several methods of the sbfcwebserviceclient class to perform some conversions, retrieve the results and save them to local files. abbreviations apmapmonitor modelling language biopaxbiological pathway exchange gpmlpathvisio graphical pathway markup language mdlmcell modelling description language sbfcsystems biology format converter sbgnsystems biology graphical notation sbmlsystems biology markup language uriuniform resource identifier competing interests the authors declare that they have no competing interests. authors’ contributions jbp, nln, nr, mk and mpi conceived and designed the project; jpb, mk, mpi, nr and pdp implemented the software; in addition ll, ah, gk and kn contributed to some of the included converters. jpb, pdp, nln and nr wrote the manuscript. all authors read and approved the final manuscript. fundings the work was funded by british bbsrc, embl-ebi and us national institute of health.
this software is written in java and can be used as a standalone executable or web service. the sbfc framework is an evolving software project. existing converters can be used and improved, and new converters can be easily added, making sbfc useful to both modellers and developers.
 interoperability between formats is a recurring problem in systems biology research. many tools have been developed to convert computational models from one format to another. however, they have been developed independently, resulting in redundancy of efforts and lack of synergy.  here we present the system biology format converter, which provide a generic framework to potentially convert any format into another. the framework currently includes several converters translating between the following formats: sbml, biopax, sbgn-ml, matlab, octave, xpp, gpml, dot, mdl and apm. this software is written in java and can be used as a standalone executable or web service.  the sbfc framework is an evolving software project. existing converters can be used and improved, and new converters can be easily added, making sbfc useful to both modellers and developers. the source code and documentation of the framework are freely available from the project web site. electronic supplementary material the online version of this article contains supplementary material, which is available to authorized users. keywords converterformatsystems biologysbmlhttp://dx.doi.org/ /501100000268biotechnology and biological sciences research councilbb/f010516/1le novère nicolas http://dx.doi.org/ /501100000268biotechnology and biological sciences research councilbbs/e/b/000c0419le novère nicolas http://dx.doi.org/ /100000057national institute of general medical sciencesgm070923cle novère nicolas issue-copyright-statement© the author 2016 