cannot read the Synechocystis SBML files

  • Alex


    I have installed the COBRA 2.0.3 edition with libSBML 5.3.0 and glpk4.47 in mac OS X lion 64 bit (I don't need gurobi or tomlab at the moment).
    I use MATLAB R2011b 64bit.

    Running testAll in the COBRA directory I get 14 out of 19 tests successfully passed.
    The testSBML command works fine as well.

    I have downloaded several SBML files from the BioModels database and managed to read them successfully using the readCbModel command.
    However, there are two particular xml files that I cannot read (not included in the BioModels database), published by Knoop et al. in the supplementary materials of the article with title: The Metabolic Network of Synechocystis sp. PCC 6803: Systemic Properties of Autotrophic Growth, in Plant Physiology (Vol 154, p.410-422) on 2010.

    In particular, when I use the readCbModel I get the following errors:

    Too many outputs requested.  Most likely cause is
    missing  around
    left hand side that has a comma separated list

    Error in convertSBMLToCobra (line 122)
            parameters =

    Error in readCbModel>readSBMLCbModel (line 182)
    model =

    Error in readCbModel (line 132)
                model = readSBMLCbModel([fileName

    The URL of the supplementary material is:
    and the xml files I want to read are the Supplemental_Data1.xml and Supplemental_Data7.xml

    Could anybody inform me if he/she can read the respective files using the readCbModel command, so as to define wether it is a problem of my system or of the published xml files.

    Thank you in advance for your time and consideration.


  • Daniel Hyduke
    Daniel Hyduke

    Looks like there is some parsing problem with the matlab sbml reader.

    I've parsed the code using cobra py and posted xml files that can be read in with cobra for matlab here:

    Please note that a significant amount of annotation from file 1 probably didn't make it through.  And for file 7 you should verify it's integrity by trying to replicate a few simulations from the study.

    I'll try to track & fix the bug but don't know how long that will take.

  • Alex

    Thank you very much!!!


  • Anonymous


    I'm not really a computer person, and this is based on a temporary workaround someone in my lab wrote.
    But, it seems like the structure generated in an SBML model contains an empty field for 'parameters', so when you get to

    if isfield(modelSBML.reaction(i).kineticLaw,'parameter')

    It sees the field, even though it's empty. Subsequently the line

    parameters = modelSBML.reaction(i).kineticLaw.parameter;

    fails to execute because of the empty field.

    inserting this in place:

    if isfield(modelSBML.reaction(i).kineticLaw,'parameter')
            try parameters = modelSBML.reaction(i).kineticLaw.parameter;
            catch parameters =;
            parameters =;
    seems to work and makes sense to me, but I can't vouch for it or take credit. Hope that helps though :)

  • Alex

    Thank you very much :)

    My system can now read the SBML files without any errors!

  • andrewng

    I am having a similar problem, except with the xls2model function attempting to parse the .xslx file from the paper: Detailing the optimality of photosynthesis in cyanobacteria through systems biology analysis by Nogales et al.

    The data can be found here

    and the error that is returned is

    Attempted to access MetNumbers(803,1); index out of bounds because size(MetNumbers)=.

    Error in xls2model (line 170)
                    model.metCharge(MetLoc) = MetNumbers(i-1,1);

    Thanks for any advice or help you can give