| Author | Topic |
Posts: 122
Registered: February 2010
|
|
Release of libSBML-5.4.0
|
15 Feb '12 10:22
|
 |
|
---------------------
libSBML-5.4.0
---------------------
We are pleased to announce the release of libSBML-5.4.0 which is
available for download from
https://sourceforge.net/projects/sbml/files/libsbml/5.4.0/
======================================================================
Version 5.4.0 (2012-02-15)
======================================================================
STABLE RELEASE
* New features
- Basic validation of MIRIAM compliant RDF annotations that
are parsed into ModelHistory or CVTerm objects has been
added to facilitate the use of annotations that are not
yet quite complete. Warnings are now issued relating to
whether or not the rdf:about attribute accurately points to
the metaid of the containing object and whether the object
that was created was consisdered a valid object in the
attributes and subelements that are required.
- It has been noted that unless the checkConsistency function is
called immediately after reading an SBML document, it does not
report all potential errors. Since users may wish to apply the
function to a model being constructed this seems to be a
disadvantage of the function. However, as this function has been
in libSBML for many years it was decided not to alter the
functionality but to add a new function 'validateSBML' which, when
called from a document object, will force a write and read of the
in memory object and report validation errors for the object as
written. Thus, all errors will be reported with line numbers that
would correspond to the document if written out.
- Conversion of a model containing FunctionDefinitions to L1
is now supported.
- Conversion of a model containing InitialAssignments to L2V1
and L1 is now supported.
- There is a new isSetBody() function for the FunctionDefinition
class that returns true if the body of the lambda function
has been set.
- The MATLAB/Octave binding function OutputSBML now takes an
additional optional flag (extensions_allowed defaulting to true)
that allows a user to specify whether the MATLAB_SBML structure
should be considered valid if it contains any additional fields.
- Multiple namespaces using the same prefix are not allowed in XML.
The function that added XMLNamespaces in libSBML checks for an
existing namespace with the prefix of the namespace being added
and overwrites the original if a duplicate is found. This
behaviour meant that it was possible to unintentionally remove
the sbml namespace. The behaviour of the function has been altered
such that if the namespace being added has a prefix that duplicates
that of the existing sbml namepace then the function returns failure
and the new namespace is not added. Should the sbml namespace need
to be replaced it can be done by using the remove function before
adding the new namespace.
- SBase objects that occur in Level 3 package code need to keep
track of the namespace of the package to which they belong. However,
a conversion might alter the namespace; for example with layout
where the level 2 layout annotation has its own namespace.
The getURI function has been altered to adopt the approach used for
tracking the core sbml namespace of any object i.e. the namespaces of
the containing document take precedence and the namespace stored on
an actual object is only considered if it does not belong to a document.
An additional function getElementNamespace() can be used to obtain
the namespace stored on the actual object.
* Bug fixes
- Tracker issue #3472034
Line numbers were not being reported as accurately for L2 models
as for L3 models. We have overviewed all the code relating
to line numbers and improved the accuracy and consistency
of line numbers reported. Thanks to Raimund Rˆnn for the report.
- Tracker issue #3471902
The documentation for the readSBMLFromString function claimed it
prepend the xml encoding if it was not present. In fact, the
function did not do this. This has been corrected. Thanks to
Raimund Rˆnn for reporting it.
- Tracker issue #3466104
Fixed inaccuracies in the documentation. Thanks to Raimund Rˆnn
for his careful reading and taking the time to report the errors.
- Validation failed to notice that csymbol avogadro was not valid
in Level 2. This is fixed.
- Exceptions were not being correctly wrapped for language bindings
causing potential code crashes. This has been corrected.
- A number of minor issues with regard to conversion between levels
and versions have been fixed. These include conversion from L3 to
L1 failing to include a compartment; stopping conversion of models
with hasOnlySubstanceUnits = true to L1; correcting conversion of
L3 models with localParameters and preventing conversion of L3
models where Events had Priorities or where the csymbol avogadro
had been used.
- The internalConsistency validator was incorrectly reporting that
the an Event must have a listOfEventAssignments in a level 3 model.
This restriction was actually removed in SBML Level 3.
- The MathML subset used by SBML has plus/times/and/or/xor. In the
MathML specification all these functions are nary functions i.e.
they are permitted to have any number of arguments including zero.
LibSBML had in fact restricted these functions to two or more
arguments. This inconsistency has been corrected.
- Validation was failing to apply constraints to L3 LocalParameters.
This has been corrected.
- Using a value for a units attribute that was not a builtin unit or
the identifier of a UnitDefinition is invalid. However, the way in
which this was reported varied according to which unit attribute
caused the issue. This has been standardized to produce an id
warning about a dangling UnitSIdRef and (if selected) unit warnings
relating to the impact of the actual attribute.
- In certain situations libSBML would write out both the stoichiometry
attribute and a stoichiometryMath element. Since these are mutually
exclusive this should not happen. It has been fixed.
- The code that checked for consistent namespaces when adding one
object to another was too restrictive. This has been sorted. Thanks
to Chris Myers for reporting it.
- Conversion between levels was inconsistent when it came to dealing
with rational stoichiometry. This has been fixed.
- The tests for the Perl bindings use of BigInt caused ActivePerl
to crash on a Windows system. A workaround to prevent this has
been put in place.
- LibSBML class constructors currently throw exceptions rather than
create objects with invalid SBML namespace/level/version
information. This could potential result in code crashing
when using one of the language bindings. These have now been
rigorously tested and measures put in place to prevent such
crashes from happening.
- The SBMLTransforms class now correctly evaluates piecewise
expressions.
- The MathML infix converter now deals correctly with unary plus
and times.
- The help text for classes and methods in the Python library were
previously unformatted, marked-up Doxygen input text, making the
help text unhelpful. We wrote a new conversion program to process
the marked-up text and produce plain-text documentation strings in
the Python library. Users can now use the standard Python 'help'
function to obtain help as expected.
- The StripPackageConverter was not working as expected. This has been
fixed.
* Miscellaneous
* Configuration/build system changes
- As libSBML has evolved over the years the header files
included by a given code file have expanded. This makes it
necessary to recompile many files when only a single header
file has been altered. In an attempt to eliminate unnecessary
dependencies we have done an overview of the code. However,
merely replacing existing include files with those that are
actually required may cause build issues for other users. Thus we have
introduced a LIBSBML_USE_STRICT_INCLUDES flag. This flag is
not defined by default and thus no includes will change. Defining
the flag means that code will only include the minimum number of
necessary header files. We encourage people to consider using this
flag as it may become the default behaviour in later versions of
libSBML. The flag is available via the CMake build interface.
EXPERIMENTAL RELEASE
* New features
- Code for the 'render' extension is now available.
- All package code has been updated to use the new line/column
number reporting mechanism.
- Package language bindings have been updated to properly wrap
exceptions and use covariant return types.
- There is a new example with the 'layout' package that demonstrates
conversion between the layout and render L3 package representation
and the L2 annotation representation.
======================================================================
Please report any problems you encounter using libSBML either to the
mailing list libsbml-team@caltech.edu or using the issue tracker
for libSBML at
https://sourceforge.net/tracker/?group_id=71971&atid=942737
Thanks
Frank, Sarah & Mike
____________________________________________________________
To manage your libsbml-development list subscription, visit
https://utils.its.caltech.edu/mailman/listinfo/libsbml-development
For a web interface to the libsbml-development mailing list, visit
http://sbml.org/Forums/
For questions or feedback about the libsbml-development list,
contact sbml-team@caltech.edu
|
|
|