1#!/usr/bin/env python 2## 3## @file promoteParameters.py 4## @brief promotes all local to global parameters 5## @author Frank T. Bergmann 6## 7## <!-------------------------------------------------------------------------- 8## This sample program is distributed under a different license than the rest 9## of libSBML. This program uses the open-source MIT license, as follows: 10## 11## Copyright (c) 2013-2018 by the California Institute of Technology 12## (California, USA), the European Bioinformatics Institute (EMBL-EBI, UK) 13## and the University of Heidelberg (Germany), with support from the National 14## Institutes of Health (USA) under grant R01GM070923. All rights reserved. 15## 16## Permission is hereby granted, free of charge, to any person obtaining a 17## copy of this software and associated documentation files (the "Software"), 18## to deal in the Software without restriction, including without limitation 19## the rights to use, copy, modify, merge, publish, distribute, sublicense, 20## and/or sell copies of the Software, and to permit persons to whom the 21## Software is furnished to do so, subject to the following conditions: 22## 23## The above copyright notice and this permission notice shall be included in 24## all copies or substantial portions of the Software. 25## 26## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 27## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 28## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 29## THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 30## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 31## FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 32## DEALINGS IN THE SOFTWARE. 33## 34## Neither the name of the California Institute of Technology (Caltech), nor 35## of the European Bioinformatics Institute (EMBL-EBI), nor of the University 36## of Heidelberg, nor the names of any contributors, may be used to endorse 37## or promote products derived from this software without specific prior 38## written permission. 39## ------------------------------------------------------------------------ --> 40 41import sys 42import os.path 43import libsbml 44 45def main (args): 46 """usage: promoteParameters.py input-filename output-filename 47 """ 48 if len(args) != 3: 49 print(main.__doc__) 50 sys.exit(1) 51 52 infile = args[1] 53 outfile = args[2] 54 55 if not os.path.exists(infile): 56 print("[Error] %s : No such file." % infile) 57 sys.exit(1) 58 59 reader = libsbml.SBMLReader() 60 writer = libsbml.SBMLWriter() 61 sbmldoc = reader.readSBML(infile) 62 63 if sbmldoc.getNumErrors() > 0: 64 if sbmldoc.getError(0).getErrorId() == libsbml.XMLFileUnreadable: 65 # Handle case of unreadable file here. 66 sbmldoc.printErrors() 67 elif sbmldoc.getError(0).getErrorId() == libsbml.XMLFileOperationError: 68 # Handle case of other file error here. 69 sbmldoc.printErrors() 70 else: 71 # Handle other error cases here. 72 sbmldoc.printErrors() 73 74 sys.exit(1) 75 76 props = libsbml.ConversionProperties() 77 props.addOption("promoteLocalParameters", True, "Promotes all Local Parameters to Global ones") 78 if sbmldoc.convert(props) != libsbml.LIBSBML_OPERATION_SUCCESS: 79 print("[Error] Conversion failed...") 80 sys.exit(1) 81 82 writer.writeSBML(sbmldoc, outfile) 83 print("[OK] wrote {}".format(outfile)) 84 85if __name__ == '__main__': 86 main(sys.argv) 87