createKineticLaw() публичный Метод

public createKineticLaw ( ) : KineticLaw
Результат KineticLaw
Пример #1
0
 public void test_Model_createKineticLawParameters()
 {
     Model m = new  Model(2,2);
       Reaction r = m.createReaction();
       KineticLaw kl = m.createKineticLaw();
       Parameter p = m.createKineticLawParameter();
       assertTrue( r.isSetKineticLaw() == true );
       assertTrue( kl.getNumParameters() == 1 );
       assertTrue( (p).getLevel() == 2 );
       assertTrue( (p).getVersion() == 2 );
       m = null;
 }
Пример #2
0
 public void test_Model_createKineticLaw()
 {
     Model m = new  Model(2,2);
       Reaction p = m.createReaction();
       KineticLaw kl = m.createKineticLaw();
       assertTrue( p.isSetKineticLaw() == true );
       assertTrue( (kl).getLevel() == 2 );
       assertTrue( (kl).getVersion() == 2 );
       m = null;
 }
Пример #3
0
 public void test_KineticLaw_Parameter_parent_create_model()
 {
     Model m = new Model(2,4);
       Reaction r = m.createReaction();
       KineticLaw kl = m.createKineticLaw();
       Parameter p = m.createKineticLawParameter();
       assertTrue( kl.getNumParameters() == 1 );
       ListOfParameters lop = kl.getListOfParameters();
       assertTrue( r == kl.getParentSBMLObject() );
       assertTrue( kl == lop.getParentSBMLObject() );
       assertTrue( lop == p.getParentSBMLObject() );
       assertTrue( lop == kl.getParameter(0).getParentSBMLObject() );
       kl = null;
 }
Пример #4
0
        private static void createReaction(EcellObject anEml, Model aSBMLModel)
        {
            EcellProcess aProcess = (EcellProcess)anEml;
            List<EcellReference> aVariableReferenceList = aProcess.ReferenceList;
            string anExpression = aProcess.Expression;
            // ------------------
            //  make Rule object
            // ------------------
            if ( anEml.ParentSystemID == "/SBMLRule" )
            {
                // get Process Class

                anExpression = convertExpression(
                    anExpression,
                    aVariableReferenceList,
                    aProcess.ParentSystemID);

                if( aProcess.Classname == ProcessConstants.ExpressionAlgebraicProcess )
                {
                    // create AlgebraicRule object
                    AlgebraicRule anAlgebraicRule = aSBMLModel.createAlgebraicRule();

                    // set AlgebraicRule Formula
                    anAlgebraicRule.setFormula( anExpression );
                }
                else if( aProcess.Classname == ProcessConstants.ExpressionAssignmentProcess )
                {
                    foreach(EcellReference aVariableReference in aVariableReferenceList)
                    {
                        if ( aVariableReference.Coefficient != 0 )
                        {
                            // create AssignmentRule object
                            AssignmentRule anAssignmentRule =aSBMLModel.createAssignmentRule();
                            // set AssignmentRule Formula
                            anAssignmentRule.setFormula( aVariableReference.Coefficient.ToString() + "* ( " + anExpression + ")" );
                            string aVariableID = getVariableReferenceId( aVariableReference.FullID, aProcess.ParentSystemID );
                            anAssignmentRule.setVariable( aVariableID );
                        }
                    }
                }
                else if( aProcess.Classname == ProcessConstants.ExpressionFluxProcess )
                {
                    foreach(EcellReference aVariableReference in aVariableReferenceList)
                    {
                        if ( aVariableReference.Coefficient != 0 )
                        {
                            // create AssignmentRule object
                            RateRule aRateRule = aSBMLModel.createRateRule();

                            // set AssignmentRule Formula
                            aRateRule.setFormula( aVariableReference.Coefficient + "* ( " + anExpression + ")" );

                            string aVariableID = getVariableReferenceId( aVariableReference.FullID, aProcess.ParentSystemID );
                            aRateRule.setVariable( aVariableID );
                        }
                    }
                }
                else
                {
                    throw new EcellException("The type of Process must be Algebraic, Assignment, Flux Processes: " + aProcess.Key);
                }

            }
            // ----------------------
            //  make Reaction object
            // ----------------------
            else
            {
                // create Parameter object
                Reaction aReaction = aSBMLModel.createReaction();

                // create KineticLaw Object
                KineticLaw aKineticLaw = aSBMLModel.createKineticLaw();

                // set Reaction ID
                if (aSBMLModel.getLevel() == 1)
                    aReaction.setName( anEml.LocalID );
                if (aSBMLModel.getLevel() == 2)
                    aReaction.setId( anEml.LocalID );

                foreach(EcellData aProperty in anEml.Value)
                {
                    if (!aProperty.Loadable)
                        continue;

                    string aFullPN = aProcess.FullID + ":" + aProperty.Name;

                    // set Name property ( Name )
                    if ( aProperty.Name == "Name" )
                    {
                        // set Reaction Name
                        if (aSBMLModel.getLevel() == 1)
                        {
                        }
                        else if (aSBMLModel.getLevel() == 2)
                            aReaction.setName( (string)aProperty.Value );

                    }
                    // set Expression property ( KineticLaw Formula )
                    else if ( aProperty.Name == "Expression")
                    {
                        // convert Expression of the ECELL format to
                        // SBML kineticLaw formula
                        // setExpressionAnnotation( aKineticLaw, anExpression );
                        bool aDelayFlag = false;
                        anExpression = convertExpression(anExpression,
                                             aVariableReferenceList,
                                             aProcess.ParentSystemID);

                        // get Current System Id
                        string CompartmentOfReaction = "";
                        foreach (EcellReference aVariableReference in aVariableReferenceList)
                        {
                            if (aVariableReference.Coefficient == 0)
                                continue;
                            CompartmentOfReaction = getCompartmentID(aVariableReference.FullID, aProcess.ParentSystemID);
                        }

                        // set KineticLaw Formula
                        if ( aDelayFlag == false )
                            aKineticLaw.setFormula( anExpression );
                        else
                        {
                            ASTNode anASTNode = libsbml.libsbml.parseFormula( anExpression );
                            anASTNode = setDelayType( anASTNode );

                            aKineticLaw.setMath( anASTNode );
                        }
                    }
                    // set VariableReference property ( SpeciesReference )
                    else if ( aProperty.Name == "VariableReferenceList" )
                    {
                        // make a flag. Because SBML model is defined
                        // both Product and Reactant. This flag is required
                        // in order to judge whether the Product and the
                        // Reactant are defined.

                        bool aReactantFlag = false;
                        bool aProductFlag = false;

                        foreach(EcellReference aVariableReference in aVariableReferenceList)
                        {
                            // --------------------------------
                            // add Reactants to Reaction object
                            // --------------------------------
                            if ( aVariableReference.Coefficient < 0 )
                            {
                                // change the Reactant Flag
                                aReactantFlag = true;

                                // create Reactant object
                                SpeciesReference aReactant = aSBMLModel.createReactant();

                                // set Species Id to Reactant object
                                string aSpeciesReferenceId = getVariableReferenceId
                                                      ( aVariableReference.FullID,
                                                        aProcess.ParentSystemID );

                                aReactant.setSpecies( aSpeciesReferenceId );

                                // set Stoichiometry
                                aReactant.setStoichiometry( -aVariableReference.Coefficient );
                            }
                            // -------------------------------
                            // add Products to Reaction object
                            // -------------------------------
                            else if ( aVariableReference.Coefficient > 0 )
                            {
                                // change the Product Flag
                                aProductFlag = true;

                                // create Product object
                                SpeciesReference aProduct = aSBMLModel.createProduct();

                                // set Species Id
                                string aSpeciesReferenceId = getVariableReferenceId
                                                      ( aVariableReference.FullID,
                                                        aProcess.ParentSystemID );

                                aProduct.setSpecies( aSpeciesReferenceId );

                                // set Stoichiometry
                                aProduct.setStoichiometry( aVariableReference.Coefficient );
                            }

                            // --------------------------------
                            // add Modifiers to Reaction object
                            // --------------------------------

                            else
                            {
                                // create Modifier object
                                ModifierSpeciesReference aModifier = aSBMLModel.createModifier();

                                // set Species Id to Modifier object
                                string aVariableReferenceId = getVariableReferenceId( aVariableReference.FullID, aProcess.ParentSystemID );

                                aModifier.setSpecies( aVariableReferenceId );
                            }

                        }

                        // set EmptySet Species, because if it didn"t define,
                        // Reactant or Product can not be defined.
                        //if (!aReactantFlag)
                        //{
                        //    // create Reactant object
                        //    SpeciesReference aReactant = aSBMLModel.createReactant();

                        //    // set Species Id to Reactant object
                        //    aReactant.setSpecies("EmptySet");

                        //    // set Stoichiometry
                        //    aReactant.setStoichiometry(0);
                        //}
                        //else if (!aProductFlag)
                        //{
                        //    // create Product object
                        //    SpeciesReference aProduct = aSBMLModel.createProduct();

                        //    // set Species Id
                        //    aProduct.setSpecies("EmptySet");

                        //    // set Stoichiometry
                        //    aProduct.setStoichiometry(0);
                        //}
                    }
                    // These properties are not defined in SBML Lv2
                    else if ( aProperty.Name == "Priority" ||
                           aProperty.Name == "Activity" ||
                           aProperty.Name == "IsContinuous" ||
                           aProperty.Name == "StepperID" ||
                           aProperty.Name == "FireMethod" ||
                           aProperty.Name == "InitializeMethod" )
                    {
                        continue;
                    }
                    else
                    {
                        // create Parameter Object (Local)
                        Parameter aParameter = aSBMLModel.createKineticLawParameter();

                        // set Parameter ID
                        aParameter.setId( aProperty.Name );

                        // set Parameter Value
                        aParameter.setValue((double)aProperty.Value);
                    }
                }
                // add KineticLaw Object to Reaction Object
                aReaction.setKineticLaw( aKineticLaw );
            }
        }
Пример #5
0
 public void test_create_l1v1_units()
 {
     SBMLDocument d;
       Model m;
       Compartment c;
       KineticLaw kl;
       Parameter p;
       Reaction r;
       Species s;
       SpeciesReference sr;
       Unit u;
       UnitDefinition ud;
       d = new  SBMLDocument();
       m = new  Model(2,4);
       d.setModel(m);
       ud = m.createUnitDefinition();
       ud.setName( "substance");
       u = m.createUnit();
       u.setKind(libsbml.UNIT_KIND_MOLE);
       u.setScale(-3);
       ud = m.createUnitDefinition();
       ud.setName( "mls");
       u = m.createUnit();
       u.setKind(libsbml.UNIT_KIND_MOLE);
       u.setScale(-3);
       u = m.createUnit();
       u.setKind(libsbml.UNIT_KIND_LITER);
       u.setExponent(-1);
       u = m.createUnit();
       u.setKind(libsbml.UNIT_KIND_SECOND);
       u.setExponent(-1);
       c = m.createCompartment();
       c.setName( "cell");
       s = m.createSpecies();
       s.setName( "x0");
       s.setCompartment( "cell");
       s.setInitialAmount(1);
       s = m.createSpecies();
       s.setName( "x1");
       s.setCompartment( "cell");
       s.setInitialAmount(1);
       s = m.createSpecies();
       s.setName( "s1");
       s.setCompartment( "cell");
       s.setInitialAmount(1);
       s = m.createSpecies();
       s.setName( "s2");
       s.setCompartment( "cell");
       s.setInitialAmount(1);
       p = m.createParameter();
       p.setName( "vm");
       p.setUnits( "mls");
       p.setValue(2);
       p = m.createParameter();
       p.setName( "km");
       p.setValue(2);
       r = m.createReaction();
       r.setName( "v1");
       sr = m.createReactant();
       sr.setSpecies( "x0");
       sr = m.createProduct();
       sr.setSpecies( "s1");
       kl = m.createKineticLaw();
       kl.setFormula( "(vm * s1)/(km + s1)");
       r = m.createReaction();
       r.setName( "v2");
       sr = m.createReactant();
       sr.setSpecies( "s1");
       sr = m.createProduct();
       sr.setSpecies( "s2");
       kl = m.createKineticLaw();
       kl.setFormula( "(vm * s2)/(km + s2)");
       r = m.createReaction();
       r.setName( "v3");
       sr = m.createReactant();
       sr.setSpecies( "s2");
       sr = m.createProduct();
       sr.setSpecies( "x1");
       kl = m.createKineticLaw();
       kl.setFormula( "(vm * s1)/(km + s1)");
       d = null;
 }
Пример #6
0
 public void test_KineticLaw_Parameter_ancestor_create_model()
 {
     Model m = new Model(2,4);
       Reaction r = m.createReaction();
       KineticLaw kl = m.createKineticLaw();
       Parameter p = m.createKineticLawParameter();
       assertTrue( kl.getNumParameters() == 1 );
       ListOfParameters lop = kl.getListOfParameters();
       assertTrue( p.getAncestorOfType(libsbml.SBML_KINETIC_LAW) == kl );
       assertTrue( p.getAncestorOfType(libsbml.SBML_LIST_OF) == lop );
       assertTrue( p.getAncestorOfType(libsbml.SBML_REACTION) == r );
       assertTrue( p.getAncestorOfType(libsbml.SBML_MODEL) == m );
       assertTrue( p.getAncestorOfType(libsbml.SBML_DOCUMENT) == null );
       assertTrue( p.getAncestorOfType(libsbml.SBML_COMPARTMENT) == null );
       Parameter obj = kl.getParameter(0);
       assertTrue( obj.getAncestorOfType(libsbml.SBML_KINETIC_LAW) == kl );
       assertTrue( obj.getAncestorOfType(libsbml.SBML_LIST_OF) == lop );
       assertTrue( obj.getAncestorOfType(libsbml.SBML_REACTION) == r );
       assertTrue( obj.getAncestorOfType(libsbml.SBML_MODEL) == m );
       assertTrue( obj.getAncestorOfType(libsbml.SBML_DOCUMENT) == null );
       assertTrue( obj.getAncestorOfType(libsbml.SBML_COMPARTMENT) == null );
       kl = null;
 }