LibSBML old-news
libSBML OLD_NEWS -- History of user-visible changes
This file stores the NEWS distributed with earlier versions of libSBML.
======================================================================
Version 4.1.0-b2
======================================================================
This is a second beta version which adds support for setting
new attributes as defined in the L3 specification
Public Review Draft published 2009-08-22.
Features introduced in this version:
- setFoo(xxx) functions for all new attributes
- unsetFoo() functions for all new optional attributes
- the "sbml:units" attribute on the cn element is now supported.
This includes reading and writing and getUnits, isSetUnits,
setUnits and unsetUnits functions for manipulating the
attribute on an ASTNode. Note that the support for
reading/writing is minimal and writing out a math element that
uses the attribute will always use 'sbml' as the prefix. This
implementation is temporary to allow users to work with the
attribute but complete implementation will require some
internal redesign.
Features that are not yet implemented:
- the "required" attribute for packages on the sbml element
- validation
- conversion to or from L3
* Bug fixes:
- [Tracker issue #2895082]
Building matlab bindings failed due to a wrong build argument.
This has been fixed. Thanks to Javier for reporting this problem.
- No errors were reported when reading an SBML file/string which
contains one or more default namespaces which are not schema
conformant. This has been fixed. Thanks to Camille Laibe for
reporting this problem.
- [Tracker issue #2878770]
The code that checked uniqueness of metaids was not checking all
of them. This has been fixed. Thanks to Frank Bergmann for
spotting this problem.
- [Tracker issue #2859186]
When the exponent argument to a power function is itself an
expression it was messing up unit checking. This is now reported
more clearly.
- SpeciesReference::isSetStoichiometry() function wrongly returned
false when a stoichiometry attribute is absent in an input SBML
Level 2. This has been fixed. Thanks to Frank Bergmann for spotting
this.
- The configure script failed in a test program for expat when
cross compiling detected. This has been fixed. Thanks to Lucian
Smith for reporting this.
- [Tracker issue #2865288]
Removed C++ style comments in C code (in List.h and ListOf.h)
which can cause compilation errors.
- Macros in SBMLDocument.h containd unnecessary ';'. This has been
fixed. Thanks to Lucian Smith for reporting this problem.
- MIRIAM annotations could not be properly cleared after
SBase::unsetCVTerms() function invoked. This has been fixed.
Thanks to Allyson Lister for spotting this problem.
- MIRIAM annotations could be wrongly updated when adding/removing
MIRIAM annotations. This has been fixed. Thanks to Allyson Lister
for spotting this problem.
- Compartment::setSpatialDimensions(unsigned int) function didn't
update a corresponding internal double value of spatialDimensions
attribute. This has been fixed. Thanks to Frank Bergmann for
reporting this.
- [Tracker issue #2856390]
FunctionDefinition elements and Event elements were not written
when writing an SBML Level 2 file/string. This has been fixed.
Thanks to Lucian for reporting this problem.
======================================================================
Version 4.1.0-b1 (released 2009-09-04)
======================================================================
This is a beta version that includes support for reading
SBML L3 core as currently defined in the L3 specification
Public Review Draft published 2009-08-22.
Features that are supported:
- reading an L3V1 SBML file
- getFoo() functions for all new attributes
- isSetFoo() functions for all newly required attributes
Features that are not yet implemented:
- the "required" attribute for packages on the sbml element
- the "sbml:units" attribute on the cn element
- the setFoo() functions
- validation
- conversion to or from L3
Note that since the type of both the spatialDimensions attribute
on a and the exponent attribute on a have
changed to double there are functions
double getSpatialDimensionsAsDouble()
double getExponentAsDouble()
in addition to the existing
unsigned int getSpatialDimensions()
int getExponent().
The former functions will return L2 values as doubles
whilst the latter will only return the value of the L3
attribute if it can be cast appropriately.
The implementation works for all language bindings except
MATLAB and Octave.
======================================================================
Version 4.0.0 (released 2009-08-26)
======================================================================
* Dependency changes:
- The language bindings now require SWIG 1.3.39 or later.
This is necessary to support Python 3.x.
* New features:
- [Tracker issue #2835929]
There is a new variant of setSBOTerm that takes a string as
argument.
- Classes now have removeXYZ functions for removing elements.
These take arguments of either an integer specifying the place
in the listOf or an id.
- Python bindings now support Python 3.x.
- libSBML RPM packages can be created using a spec file which is
generated by configure script. Please see libsbml.spec.in.
- libSBML package (.dmg file) for MacOSX can be created by running
"make create-dmg". Please see macosx/Makefile.in.
Thanks to Akira Funahashi for contributing skeleton files for
creating the package.
* Bug fixes:
- [Tracker issue #2840685]
Some include files incorrectly declared 'use namespace std'.
This has been fixed. Thanks to Lucian Smith for reporting it.
- [Tracker issue #2837191]
Code for checking the return type from equality functions was
crashing if the function had an incorrect number of arguments.
Thanks to Lucian Smith for testing this.
- [Tracker issue #2818945]
The documentation of the getDerivedUnitDefinition functions
was not clarifying when the function might return NULL. The
documentation has been updated. Thanks to Ralph Gauges for
reporting this.
- [Tracker issue #2818943]
The FormulaUnitsData class was not completely copying all data
and had no assignment operator defined. This has been fixed.
Thanks to Ralph Gauges for reporting this.
- Unit consistency checks were producing reporting incorrect
mismatches between units where the multiplier calculated
for comparison purposes contained rounding errors. This
has been corrected. Thanks to Sven Sahle for reporting this.
- '&' in a character reference (e.g. ¨) or predefined entity
(e.g. &) could be wrongly replaced with & (e.g. ¨
-> ¨) when writing an SBML file or string. This has been
fixed. Thanks to Andreas Drager for reporting this problem.
- The SBML_formulaToString function could crash if called with a
NULL argument. This has been fixed.
- A number of memory leaks have been fixed.
* Changes:
- [Tracker issue #2801571]
The function for converting strings to XMLNodes has been
streamlined to be less confusing.
- The directory structure for Windows specific builds has been
rearranged. Please see win/README.txt.
- Code that checks the syntax of XHTML now checks that an
html node contains a head node with a title.
- The constructors that take an SBMLNamespace as an argument
will now throw an exception if the argument is NULL.
- C functions that create a new SBase_t based object have been
changed to be consistent with corresponding C++ constructors.
There are two types of create functions like C++ constructors.
XXXX_create() functions take the SBML level and version.
XXXX_createWithNS() functions take an SBMLNamespaces_t structure.
- The readMathMLFromString function now returns NULL if the given
MathML string is NULL or invalid.
- A number of deprecated functions have been removed.
======================================================================
Version 4.0.0-b2 (released 2009-07-04)
======================================================================
This is a second beta release of libSBML-4.0.0.
Changes from the first beta release:
* New features:
- [Tracker issue #2766428]
In reponse to feedback a helper function has been implemented
to allow manipulation of the 'id' and 'name' attributes from
an SBase object.
- There is a new function setConsistencyChecksForConversion that
allows users to specify which validators are applied when a
'strict' conversion is requested. The setLevelAndVersion
function now defaults to a strict conversion and applies
all validators to both the source and target model to
determine validity. Users can choose to set the strict flag
to false or customize the validation that is applied.
- There is a new SyntaxChecker class which provides static
functions enabling users to check that attributes such as 'id',
'name' and 'metaid' and 'notes' elements have the correct syntax.
- Conversion of a model where annotations with duplicate top level
elements was permissible to a level/version where this is invalid
are now performed without producing invalid SBML. Duplicate
top level elements are placed into a single top level element
named duplicateTopLevelElements in the namespace
http://www.sbml.org/libsbml/annotation.
- The C++ library can now be built with the namespace 'libsbml'.
This feature can be enabled during configuration. Details of
macros used can be found in the new file common/libsbml-namespace.h.
- There is a new ListWrapper type in the SWIG bindings that allows
functions related to List objects to be wrapped. Each language
now has types ListModelCreators, ListCVTerms, ListDates and
ListASTNodes to allow Lists containing different types to be used.
* Bug fixes:
- [Tracker issue #2812794]
Validation was not correctly identifying that references to
reaction 'id' was invalid in L2V1. This has been fixed. Thanks
to Ralph Gauges for reporting it.
- Validation was incorrectly identifying some configuration of
notes as invalid. This has been fixed.
Changes also applied to Version 3.4.0 (released 2009-06-12)
* New features:
- There is a new class SBMLNamespaces. The SBMLNamespaces object
class tracks 3-tuples (triples) consisting of SBML Level, Version,
and the corresponding SBML XML namespace.
- There are new constructors for SBML objects that take an
SBMLNamespaces object as an argument, thereby allowing the
constructor to produce the proper combination of attributes and
other internal data structures for the given SBML Level and Version.
- It is possible to use create functions to construct new SBML
objects within a model. However, createTrigger, createDelay and
createStoichiometryMath functions were missing. These have now
been added. Thanks to Chris Myers and Lucian Smith, who both
spotted the ommission.
- [Tracker issue #2787514]
Additional const versions of the getDerivedUnitDefinition() and
containsUndeclaredUnits() functions have been added.
* Bug fixes:
- The code that tests for assignment cycles could cause an infinite
loop in certain cases. This was in fact a result of an earlier fix
that had intended to stop incorrect cycles being reported. The code
that been rewritten to solve both the issues. Thanks to the many
people who reported this one.
- The assignment operator functions now check for self assignment.
- The MATLAB binding was incorrectly importing SBO terms in certain
circumstances. This has been fixed. Thanks to Kieran Smallbone
for reporting it.
- [Tracker issue #2787352]
Annotations that included MIRIAM compliant RDF annotations and
additional RDF annotations were not being correctly roundtripped.
This has been fixed.
- [Tracker issue #2778709]
Validation of units was incorrectly reporting mismatches between
units. This has been fixed and further tests added. Thanks to
Lukas Endler for reporting this.
- [Tracker issue #2749067]
Models using FunctionDefinitions where the math element did not
contain a lambda expressions was causing validation code to crash.
This has been fixed. Thanks to Lucian Smith for reporting this.
- [Tracker issue #2748785]
The code that looks for assignment cycles was leaking memory; which
is now fixed. Thanks to Lucian Smith for reporting this.
- [Tracker issue #2714870]
The function getSBOTermID was crashing when called for an object on
which the SBO term had not been set. The function now returns an
empty string in this situation. Thanks to Alice Villeger for
reporting this.
- A number of documentation bugs in the Java documentation have been
fixed. Thanks to Nicolas Rodriguez and Alice Villeger for reporting
them during the 2009 SBML Hackathon. Also, all the javadoc errors
are now fixed, and most cross-references in the Java API documentation
are fixed as well.
- We have considerably expanded the documentation of SBase methods.
* Changes:
- Python bindings are now installed into an approprite directory
with Python 2.6 on Ubuntu 9.04.
======================================================================
Version 4.0.0-b1 (released 2009-03-16)
======================================================================
This is a beta release of libSBML-4.0.0.
LibSBML-4 focuses on reducing opportunities for users to create
invalid SBML. This has been done by changing the API and underlying
operations. The 'Major changes and new features' table at
http://sbml.org/SBML_Projects/Development/libSBML/LibSBML_Development_Roadmap
provides detailed information about the changes, together with
explanations of the rationale behind each change.
======================================================================
Version 3.3.2 (released 2009-03-03)
======================================================================
* New features:
- [Tracker issue #1820528]
The ASTNode class has as a user data field. This is a new member
variable of type void * which allows a user to add/retrieve their
own data. Thanks to Sebastian Bauer for contributing this code.
* Bug fixes:
- Conversion of an L2V4 model to an earlier version of SBML was
causing the code to crash if an invalid unit had been used within
the model. This has been fixed. Thanks to Norihiro Kikuchi for
reporting this
- An object being read from a file/string was not correctly
recording the SBMLDocument and ParentSBMLObject information. This
is fixed. Thanks to Andreas Drager for reporting this.
- In a couple of cases the return type for the clone function in
the C API was still an SBase_t *, rather than a pointer to the
structure being cloned. These have been changed.
- The code that converted a string to an XMLNode uses a dummy node
as part of the process. This empty dummy node was left in the
resulting XMLNode which, whilst not invalid, meant manipulating
the XMLNode was not intuitive. The code has been changed to
remove the dummy node from the resulting XMLNode.
- A potential memory leaks present within the appendNotes function
have been identified and fixed.
- The documentation for Java lacked content for the 'libsbml' class
(which mostly consists of functions outside of C++ classes).
Fixed.
- [Tracker issue #2641323]
In certain cases validation was failing to report that a species
used in a kineticLaw had not been listed as a reactant/product/
modifier of the reaction. Thanks to Lukas Endler and Ralph Gauges
who independently reported this (on the same day!).
- [Tracker issue #2599679]
Python bindings didn't work with the latest SWIG 1.3.38 due to
incompatible changes in SWIG-generated Python proxy code (libsbml.py).
The problem has been fixed.
======================================================================
Version 3.3.1 (released 2009-02-03)
======================================================================
* Changes
- Validation relating to attributes that have been removed from
later SBML Levels/Versions (e.g. 'offset' on ) has changed
slightly. Reading in a model that contains such an invalid
attribute reports a schema error. This has not changed but
checking the consistency of a document that has been created using
an invalid attribute will now report an error stating that the
attribute has been removed. This affects, e.g., validation rule
20411 in the SBML L2V2 specification.
- The code used to a convert an SBML L2V4 model would fail to
perform the conversion if the units in the L2V4 model would
produce a target model that had invalid units. Ralph Gauges
pointed out that this behaviour was inconsistent with existing
behaviour, which allows conversion of invalid models. The code
has been changed to merely log the invalid units as a warning,
but still perform the conversion if it is otherwise possible.
- The RDFAnnotationParser class was not marked as external within
the Windows prebuilt dlls. This has been changed and the relevant
functions have been implemented within the C API.
- The helper function 'printUnits' on the UnitDefinition class was
only printing out the knid and exponent of any unit. Sven Sahle
requested that this be extended to include scale and multiplier.
The unit
will now be output as
"mole (exponent = -1, multiplier 2, scale = 1)".
In addition, the function now has an optional argument,
defaulting to false, that if set to true will write the units out
in a more compact form e.g.
"(20 mole)^-1"
* Bug fixes:
- The makefile for the java examples directory incorrectly tested
only for Java 1.5.0, not for versions greater than or equal to
1.5.0 as it should have. Fixed. Thanks to Nicolas Rodriguez for
reporting this.
- A problem in error logging whilst reading a file meant that files
with certain errors caused libSBML to crash. This has been fixed.
- 'configure' requested doxygen version 1.5.4, but actually some of
the latest documentation code requires 1.5.8.
- The parseCVTerms function was crashing if the qualifier used
within one of the CVTerms was unknown. This has been fixed.
Thanks to Allyson Lister for the effort involved in tracking this
down.
======================================================================
Version 3.3.0 (released 2009-01-20)
======================================================================
* Dependency changes:
- Configuring and compiling libSBML with Java binding from sources
now requires Java version 1.5.0 or later. This was needed for
supporing virtual functions with covariant return types.
* New features:
- SBML Level 2 Version 4 support is now implemented.
- There is a new validator for checking the consistency of the
internal representation of a model. The need for this grew out of
the following situation. LibSBML classes representing SBML
components internally maintain all variables associated with
attributes from every Level/Version of SBML. This in fact makes
it possible to have an internal representation that is invalid
SBML. For example, one can create a Level 1 compartment in memory
with a 'spatialDimensions' attribute value of 2. This is invalid
for SBML Level 1, but previously, libSBML was only equipped to
catch this at the time the application attempted to write out the
internal representation. Until then, the (invalid) internal
representation could exist and confuse software applications. The
new validator can be called using the SBMLDocument class method
checkInternalConsistency(). As with all validators, errors are
logged in the SBMLErrorLog attached to the SBMLDocument.
- New methods getNumResources() and getResourceURI() are available
for the class CVTerm. These are convenience methods that allow
the user to determine how many resources are stored for the
particular term and to index into the values directly.
- Previously the error reported when the 'level' and 'version'
attributes on an SBMLDocument did not refer to a valid SBML
specification did not make the cause of the error clear. This
error should now be reported more clearly. Thanks to Lucian
Smith for noticing this.
- LibSBML was not reporting the use of invalid attributes on the
ListOfXXX classes as errors. This has now been fixed.
- The MATLAB language binding now correctly identifies the use of
the MathML 'delay' and provides the information to the
user in a similar fashion to 'time'.
- There is a new section in the user documentation for C++,
"Tutorial: Creating a complete model, from start to finish". This
describes the basics of constructing a model from scratch using
the libSBML API.
- [Tracker issue #2376930]
Validation rules 10401 and 10402 had not previously been
implemented. Thanks to Nicolas Rodriguez for reminding us.
- [Tracker issue #2183855]
Added methods to return the severity and category of the SBMLError
class as strings. Since the ErrorId is drawn from an enumeration,
returning the actual ErrorId or corresponding symbol did not see
useful. Instead, a getShortMessage function has been implemented
that returns a very brief description of the error.
- [Tracker issue #2136796]
There is now additional code to check the ordering of assignment
rules in a L1 or L2V1 model.
- [Tracker issue #2114473]
UnitDefinition has a new method, isVariantOfSubstancePerTime(),
which returns true if the unitDefinition is a variant of the SBML
predefined unit of 'substance' per the predefined unit of 'time'.
In other words, it returns true if, when multiplied by a unit of
'second', the resulting UnitDefinition is a variant of
'substance', meaning moles or items (and grams or kilograms from
SBML Level 2 Version 2 onwards) with only abritrary variations in
scale or multiplier values. The method returns false if the
UnitDefinition is not a variant of 'substance' per 'time'.
- [Tracker issue #2086644]
Validation was crashing when checking the math/units of an
expression using a functionDefinition that had not been properly
defined. The code that caused the crash has been fixed and the
MathML reader now checks that a