def setModifiers(self, modifierIdString): if self.Type != TYPE.REACTION: # can only do this for Reactions return False modifierIds = modifierIdString.replace(" ", "").split(",") if modifierIds is None or len(modifierIds) == 0: return False modifierRefs = self.Item.getListOfModifiers() IdsToRemove = [] for modifierRef in modifierRefs: orgId = modifierRef.getSpecies() IdsToRemove.append(orgId) for Id in IdsToRemove: logging.info("Removing Modifier: %s" % Id) self.Item.removeModifier(Id) for Id in modifierIds: if self.speciesIDExists(Id): speciesRef = libsbml.ModifierSpeciesReference(self.Item.getLevel(), self.Item.getVersion()) speciesRef.setSpecies(Id) self.Item.addModifier(speciesRef) return True
def test_ModifierSpeciesReference(self): msr = libsbml.ModifierSpeciesReference(2, 4) self.assertEqual(False, (msr.hasRequiredAttributes())) msr.setSpecies("msr") self.assertEqual(True, msr.hasRequiredAttributes()) msr = None pass
def test_SpeciesReference_Modifier_parent_add(self): sr = libsbml.ModifierSpeciesReference(2, 4) sr.setSpecies("s") r = libsbml.Reaction(2, 4) r.addModifier(sr) sr = None lo = r.getListOfModifiers() self.assert_(lo == r.getModifier(0).getParentSBMLObject()) self.assert_(r == lo.getParentSBMLObject()) pass
def test_SpeciesReference_Modifier_ancestor_add(self): sr = libsbml.ModifierSpeciesReference(2,4) sr.setSpecies("s") r = libsbml.Reaction(2,4) r.addModifier(sr) sr = None lo = r.getListOfModifiers() obj = r.getModifier(0) self.assert_( obj.getAncestorOfType(libsbml.SBML_REACTION) == r ) self.assert_( obj.getAncestorOfType(libsbml.SBML_LIST_OF) == lo ) self.assert_( obj.getAncestorOfType(libsbml.SBML_DOCUMENT) == None ) self.assert_( obj.getAncestorOfType(libsbml.SBML_COMPARTMENT) == None ) pass
def test_ModifierSpeciesReference_createWithNS(self): xmlns = libsbml.XMLNamespaces() xmlns.add("http://www.sbml.org", "testsbml") sbmlns = libsbml.SBMLNamespaces(2, 1) sbmlns.addNamespaces(xmlns) object = libsbml.ModifierSpeciesReference(sbmlns) self.assert_( object.getTypeCode() == libsbml.SBML_MODIFIER_SPECIES_REFERENCE) self.assert_(object.getMetaId() == "") self.assert_(object.getNotes() == None) self.assert_(object.getAnnotation() == None) self.assert_(object.getLevel() == 2) self.assert_(object.getVersion() == 1) self.assert_(object.getNamespaces() != None) n = object.getNamespaces() self.assert_(n.getLength() == 2) _dummyList = [object] _dummyList[:] = [] del _dummyList pass
def writeSBML( self, aSBMLDocument ): aModel = aSBMLDocument.getModel() aReaction = aModel.getReaction( self.id ) if not aReaction: aReaction = aModel.createReaction() aReaction.setId( self.id ) if not aReaction.isSetKineticLaw(): aKineticLaw = libsbml.KineticLaw() else: aKineticLaw = aReaction.getKineticLaw() fullID = ecell.ecssupport.createFullID( self.fullID ) if self.isSetId(): setSBaseAnnotation( aReaction, 'ID', fullID[ 2 ], aSBMLDocument.getNamespaces() ) compartment = ecell.ecssupport.createFullIDFromSystemPath( fullID[ 1 ] ) compartment = ecell.ecssupport.createFullIDString( compartment ) ( compartment, sbmlType ) \ = self.theSBMLExporter.searchIdFromFullID( compartment ) setSBaseAnnotation( aReaction, 'compartment', compartment, aSBMLDocument.getNamespaces() ) anExpression = self.theSBMLExporter.theEml.getEntityProperty( '%s:Expression' % ( self.fullID ) )[ 0 ] namespaceDict = self.createNamespaceFromVariableReferenceList() anExpressionParser = ExpressionParser( namespaceDict, compartment ) anASTNode = anExpressionParser.convertExpressionToASTNode( anExpression ) aKineticLaw.setFormula( libsbml.formulaToString( anASTNode ) ) parameterList = [] for i in range( aKineticLaw.getNumParameters() ): aParameter = aKineticLaw.getParameter( i ) if not aParameter.isSetId(): continue parameterList.append( aParameter.getId() ) reactantList = [] for i in range( aReaction.getNumReactants() ): aReactant = aReaction.getReactant( i ) if not aReactant.isSetSpecies(): continue reactantList.append( aReactant.getSpecies() ) productList = [] for i in range( aReaction.getNumProducts() ): aProduct = aReaction.getProduct( i ) if not aProduct.isSetSpecies(): continue productList.append( aProduct.getSpecies() ) modifierList = [] for i in range( aReaction.getNumModifiers() ): aModifier = aReaction.getModifier( i ) if not aModifier.isSetSpecies(): continue modifierList.append( aModifier.getSpecies() ) for ( id, coeff ) in namespaceDict.values(): if coeff > 0 and type( id ) == tuple: if productList.count( id[ 0 ] ) == 0: aReaction.addProduct( libsbml.SpeciesReference( id[ 0 ], coeff ) ) else: i = productList.index( id[ 0 ] ) aProduct = aReaction.getProduct( i ) aProduct.setStoichiometry( coeff ) elif coeff < 0 and type( id ) == tuple: if reactantList.count( id[ 0 ] ) == 0: aReaction.addReactant( libsbml.SpeciesReference( id[ 0 ], -coeff ) ) else: i = reactantList.index( id[ 0 ] ) aReactant = aReaction.getReactant( i ) aReactant.setStoichiometry( -coeff ) for id in anExpressionParser.modifierList: if modifierList.count( id ) == 0: aReaction.addModifier( libsbml.ModifierSpeciesReference( id ) ) propertyList = self.theSBMLExporter.theEml.getEntityPropertyList( self.fullID ) for pn in propertyList: if pn == 'Name': name = self.theSBMLExporter.theEml.getEntityProperty( '%s:Name' % ( self.fullID ) ) if len( name ) != 1: raise SBMLConvertError, \ 'The format of property [%s:Name] is invalid' \ % ( self.fullID ) name = name[ 0 ] aReaction.setName( name ) elif pn == 'VariableReferenceList' \ or pn == 'Expression' \ or pn == 'StepperID': pass elif pn == 'Priority': value = self.theSBMLExporter.theEml.getEntityProperty( '%s:Priority' % ( self.fullID ) ) if len( value ) != 1: raise SBMLConvertError, \ 'The type of Parameter [%s:Priority] is invalid' \ % ( self.fullID ) value = int( value[ 0 ] ) if value != 0: raise SBMLConvertError, 'The Parameter [%s:Priority] is not equal to 0. It cannnot be converted' % ( self.fullID ) else: value = self.theSBMLExporter.theEml.getEntityProperty( '%s:%s' % ( self.fullID, pn ) ) if len( value ) != 1: raise SBMLConvertError, \ 'The type of Parameter [%s] is invalid' % ( pn ) value = float( value[ 0 ] ) if parameterList.count( pn ) == 0: aParameter = libsbml.Parameter( pn, value ) aKineticLaw.addParameter( aParameter ) else: i = parameterList.index( pn ) aParameter = aKineticLaw.getParameter( i ) aParameter.setValue( value ) aReaction.setKineticLaw( aKineticLaw )
def test_ModifierSpeciesReference(self): msr = libsbml.ModifierSpeciesReference(2,4) self.assertEqual( True, msr.hasRequiredElements() ) msr = None pass
def setUp(self): self.MSR = libsbml.ModifierSpeciesReference(2, 4) if (self.MSR == None): pass pass
def test_ModifierSpeciesReference_constructor(self): s = None try: s = libsbml.ModifierSpeciesReference(2, 1) s = libsbml.ModifierSpeciesReference(2, 2) s = libsbml.ModifierSpeciesReference(2, 3) s = libsbml.ModifierSpeciesReference(2, 4) s = libsbml.ModifierSpeciesReference(3, 1) s = libsbml.ModifierSpeciesReference(self.SN21) s = libsbml.ModifierSpeciesReference(self.SN22) s = libsbml.ModifierSpeciesReference(self.SN23) s = libsbml.ModifierSpeciesReference(self.SN24) s = libsbml.ModifierSpeciesReference(self.SN31) except ValueError: inst = sys.exc_info()[1] s = None pass self.assert_(s != None) msg = "" try: s = libsbml.ModifierSpeciesReference(1, 1) except ValueError: inst = sys.exc_info()[1] msg = inst.args[0] pass self.assertEqual(msg, self.ERR_MSG) msg = "" try: s = libsbml.ModifierSpeciesReference(1, 2) except ValueError: inst = sys.exc_info()[1] msg = inst.args[0] pass self.assertEqual(msg, self.ERR_MSG) msg = "" try: s = libsbml.ModifierSpeciesReference(9, 9) except ValueError: inst = sys.exc_info()[1] msg = inst.args[0] pass self.assertEqual(msg, self.ERR_MSG) msg = "" try: s = libsbml.ModifierSpeciesReference(self.SN11) except ValueError: inst = sys.exc_info()[1] msg = inst.args[0] pass self.assertEqual(msg, self.ERR_MSG) msg = "" try: s = libsbml.ModifierSpeciesReference(self.SN12) except ValueError: inst = sys.exc_info()[1] msg = inst.args[0] pass self.assertEqual(msg, self.ERR_MSG) try: s = libsbml.ModifierSpeciesReference(self.SN99) except ValueError: inst = sys.exc_info()[1] msg = inst.args[0] pass self.assertEqual(msg, self.ERR_MSG)