SpeciesReference.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:libSigNetSim 作者: vincent-noel 项目源码 文件源码
def writeSbml(self, sbml_speciesReference, sbml_level=Settings.defaultSbmlLevel, sbml_version=Settings.defaultSbmlVersion):
        """ Writes a species reference to  a sbml file """

        sbml_speciesReference.setSpecies(self.__species)
        SbmlObject.writeSbml(self, sbml_speciesReference, sbml_level, sbml_version)

        if sbml_level == 3 and self.__hasId:
            Variable.writeSbml(self, sbml_speciesReference, sbml_level, sbml_version)


        elif not sbml_speciesReference.isModifier():
            if sbml_level == 1:
                t_stoichiometry = nsimplify(self.stoichiometry.getInternalMathFormula())
                if t_stoichiometry.is_Rational and t_stoichiometry.q != 1:

                    sbml_speciesReference.setStoichiometry(int(t_stoichiometry.p))
                    sbml_speciesReference.setDenominator(int(t_stoichiometry.q))

                elif t_stoichiometry != MathFormula.ONE:
                    # print srepr(t_stoichiometry)
                    # t_stoichiometry = self.stoichiometry.getSbmlMathFormula(sbml_level, sbml_version)
                    sbml_speciesReference.setStoichiometry(int(t_stoichiometry))

            else:

                t_stoichiometry = self.stoichiometry.getSbmlMathFormula(sbml_level, sbml_version)

                if t_stoichiometry.getType() == AST_REAL:
                    if t_stoichiometry.getReal() != 1.0 or sbml_level == 3:
                        sbml_speciesReference.setStoichiometry(t_stoichiometry.getReal())

                elif t_stoichiometry.getType() == AST_INTEGER:
                    if t_stoichiometry.getInteger() != 1 or sbml_level == 3:
                        sbml_speciesReference.setStoichiometry(t_stoichiometry.getInteger())

                elif t_stoichiometry.getType() == AST_RATIONAL:
                    sbml_speciesReference.setStoichiometry(t_stoichiometry.getNumerator())
                    sbml_speciesReference.setDenominator(t_stoichiometry.getDenominator())

                else:
                    if sbml_level == 3:
                        if self.__model.listOfVariables.containsSymbol(self.stoichiometry.getInternalMathFormula()):
                            sbml_speciesReference.setId(t_stoichiometry.getName())

                        else:
                            sbml_speciesReference.setStoichiometry(t_stoichiometry)
                    else:
                        sbml_stoichiometry_math = sbml_speciesReference.createStoichiometryMath()
                        sbml_stoichiometry_math.setMath(t_stoichiometry)

            if sbml_level >= 3:
                sbml_speciesReference.setConstant(self.constant)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号