Hello group! This is probably a silly newbie mistake but consider the following program:

import libsbml

def getSBMLModel(biomodel_path):
    reader = libsbml.SBMLReader()

    sbml_doc = reader.readSBML(biomodel_path)
    sbml_model = None

    if sbml_doc.getNumErrors() > 0:
        print 'I couldn\'t read the file %s!' % biomodel_path
        return None
    else:
        sbml_model = sbml_doc.getModel()

    return sbml_doc.getModel() # None if file couldn't be opened


def way_1(biomodel_path):
    reader = libsbml.SBMLReader()
    sbml_doc = reader.readSBML(biomodel_path)
    sbml_model = sbml_doc.getModel()

    if sbml_model == None:
        return

    l = sbml_model.getListOfSpecies()
    print 'In way_1(): Got list %s with the length %i' % (l, len(l))


def way_2(biomodel_path):
    sbml_model = getSBMLModel(biomodel_path)

    if sbml_model == None:
        return

    l = sbml_model.getListOfSpecies()
    print 'In way_2(): Got list %s with the length %i' % (l, len(l))


file = '../BIOMD0000000003.xml'
# Changing the order of these two calls doesn't help, only way_1() works.
way_1(file)
way_2(file)

When run, the output is:
In way_1(): Got list <libsbml.ListOfSpecies; proxy of <Swig Object of type 'ListOfSpecies *' at 0x291c8bc> > with the length 3 In way_2(): Got list <libsbml.ListOfSpecies; proxy of <Swig Object of type 'ListOfSpecies *' at 0x27fb57c> > with the length 0

I don't get it way the species list obtained in way_2() is empty? For the input file I'm using I should be getting 3 species for the test file I'm using. I'm sorry that this program uses a third-party library which is probably unknown to many, but since I make a lot of newbie mistakes I thought that it's very likely that this is a issue in how I use python, not a library issue. To compensate somewhat I tried to show my entire test program and its output and make that test program as clear as possible.

So if anyone knows why I get this behavior I would like to hear it and I will have learned something today too! :)

- WP
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to