示例#1
0
    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
示例#2
0
 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
示例#3
0
 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
示例#4
0
 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  
示例#5
0
 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
示例#6
0
    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  
示例#8
0
 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)