Releases: sbmlteam/jsbml
JSBML 1.6.1
This is a stable release of JSBML version 1.6.1. It comprises the two previously published snapshot releases, version 1.6 and version 1.6.1ɑ.
To access this version of JSBML via Maven, please use:
<dependency>
<groupId>org.sbml.jsbml</groupId>
<artifactId>jsbml</artifactId>
<version>1.6.1</version>
</dependency>
New Features
- biojava-ontology was bumped to version 6.0.4.
- Convenient features, such as quick check for the presence of any specific
SBase
extension - Improvements to the documentation (JavaDoc, users' guide, and the project's
README
file) - Broader coverage of the offline validation capability
- Improved support for constraint-based modeling in the
ModelBuilder
: automatic creation of common unit definition objects.
Bug Fixes
- Update the dependency to log4j to version 2.17.0 after the announcement of a major security issue in the previous version.
- JSBML core does no longer have dependencies to any of the packages
- Preventing
ASTNode.astNodeToTree
from recursive calls - Correction of wrong comparisons with
==
where.equals()
needs to be called forString
comparison - Fixed Incorrect usage of model annotation
- Fixed return type of
createRenderCubicBezier
method toRenderCubicBezier
Thanks to @eikept for this fix! - Fixed incorrect unit derivation. Thanks to @eikept for this analysis!
When using JSBML, please cite:
☞ Rodriguez N., Thomas A., Watanabe L., Vazirabad I.Y., Kofia V. et al. JSBML 1.0: providing a smorgasbord of options to encode systems biology models. Bioinformatics (2015), 31(20):3383–3386. https://doi.org/10.1093%2Fbioinformatics%2Fbtv341
JSBML 1.6.1ɑ
This release fixes dependencies to third-party libraries. Changes to the code base itself are very minor. Updated are the Maven files (pom.xml
) and included libraries (jar
files):
- log4j has been bumped to version 2.17.1
- biojava-ontology was bumped to version 6.0.4.
To access this version of JSBML via Maven use:
<dependency>
<groupId>org.sbml.jsbml</groupId>
<artifactId>jsbml</artifactId>
<version>1.6.1-SNAPSHOT</version>
</dependency>
JSBML 1.6
We are pleased to announce the release of JSBML-1.6, which is now available for download from GitHub and Maven.
JSBML is a community-driven project to create a free, open-source, pure Java library for reading, writing, and manipulating SBML files and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.
For more details, please visit the JSBML project home page:
https://sbml.org/software/jsbml/
Major new features
- Convenient features, such as quick check for the presence of any specific
SBase
extension - Improvements to the documentation (JavaDoc, users' guide, and the project's README file)
- Broader coverage of the offline validation capability
- Improved support for constraint-based modeling in the ModelBuilder: automatic creation of common unit definition objects.
Bug fixes
- Update the dependency to log4j to version 2.17.0 after the announcement of a major security issue in the previous version.
- JSBML core does no longer have dependencies to any of the packages
- Preventing
ASTNode.astNodeToTree
from recursive calls - Correction of wrong comparisons with
==
where.equals()
needs to be called forString
comparison - Fixed Incorrect usage of model annotation
- Fixed return type of
createRenderCubicBezier
method toRenderCubicBezier
- Fixed incorrect unit derivation
Thank you for your interest and support of JSBML and SBML in general.
When using JSBML, please cite
- N. Rodriguez et al. JSBML 1.0: providing a smorgasbord of options to encode systems biology models. Bioinformatics (2015), 31(20):3383–3386.
- A Dräger et al. JSBML: a flexible Java library for working with SBML. Bioinformatics (2011), 27(15):2167–2168.
The JSBML team.
JSBML 1.5
We are pleased to announce the release of JSBML-1.5, which is now available for download from GitHub and Maven.
JSBML is a community-driven project to create a free, open-source, pure Java library for reading, writing, and manipulating SBML files and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.
For more details, please visit the JSBML project home page:
http://sbml.org/Software/JSBML
Major new features
- Support the new SBML Level 3 Distributions (
distrib
) package, Version 1 - Support the latest draft specification for the SBML Level 3 Spatial Processes (
spatial
) package - Validation for the
spatial
and the SBML Level 3 Rendering (render
) packages
This release contain other features, improvements and bug fixes for SBML core and the SBML Level 3 packages. You can find a detailed list of the user-visible changes on the NEWS file.
Thank you for your interest and support of JSBML and SBML in general.
When using JSBML, please cite
- N. Rodriguez et al. JSBML 1.0: providing a smorgasbord of options to encode systems biology models. Bioinformatics (2015), 31(20):3383–3386.
- A Dräger et al. JSBML: a flexible Java library for working with SBML. Bioinformatics (2011), 27(15):2167–2168.
The JSBML team.
JSBML 1.4
We are pleased to announce the release of JSBML-1.4, which is now available for download from GitHub (above) and from SourceForge.
JSBML is a community-driven project to create a free, open-source, pure Java library for reading, writing, and manipulating SBML files and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.
For more details, please visit the JSBML project home page:
http://sbml.org/Software/JSBML
The main new feature in this release is the development of the offline validator. We have also started to write some converters that transform SBML documents. Some progress were made on the offline validator, you can get a detailed report of what is left to be done in a separate wiki page.
You can find a detailed list of the user-visible new features and bug fixes since JSBML version 1.3 on the NEWS file.
Thank you for your interest and support of JSBML and SBML in general.
The JSBML team.
JSBML-1.3.1
We are pleased to announce the release of JSBML-1.3.1, which is now available for download from GitHub (above) and from SourceForge.
JSBML is a community-driven project to create a free, open-source, pure Java library for reading, writing, and manipulating SBML files and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.
For more details, please visit the JSBML project home page:
http://sbml.org/Software/JSBML
The main new feature in this release is the support for SBML Level 3 Version 2 and the development of the offline validator. We have also started to write some converters that transform SBML documents. In particular, a converter that expands function definitions that was requested several times by our community. Some very good progress was made on the offline validator, you can get a detailed report of what is left to be done in a separate wiki page. Since the last release, we made the offline validator more user-friendly by provided error messages similar to libSBML with a first part that explains the specification and a second part that describe the element and why it failed the rule. We hope to have the offline validator complete by the end of next year when it will be used by default.
You can find a detailed list of the user-visible new features and bug fixes since JSBML version 1.2 on the NEWS file.
Thank you for your interest and support of JSBML and SBML in general.
The JSBML team.
JSBML-1.3
We are pleased to announce the release of JSBML-1.3, which is now available for download from GitHub (above) and SourceForge.
JSBML is a community-driven project to create a free, open-source, pure Java library for reading, writing, and manipulating SBML files and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.
For more details, please visit the JSBML project home page:
JSBML-1.2
We are pleased to announce the release of JSBML-1.2, which is now available for download from GitHub (above) and from SourceForge.
JSBML is a community-driven project to create a free, open-source, pure Java library for reading, writing, and manipulating SBML files and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.
For more details, please visit the JSBML project home page:
http://sbml.org/Software/JSBML
The main new feature in this release is the support for SBML Level 3 Version 2 (RC2). This involved some changes in the class hierarchy of JSBML. A notable SBML change introduced in SBML Level 3 Version 2 is that every SBase
object can have an id
and a name
attribute. In JSBML, for compatibility reasons, we did not change the NamedSBase
interface, so not every SBase
is a NamedSBase
. Only SBML elements that had id
and name
in SBML Levels/Versions below L3V2 will extend NamedSBase
. So, when implementing support for SBML L3V2, we recommend that developers try to avoid using NamedSBase
and just use SBase
instead. The same is true for the JSBML classes UniqueNamedSBase
and UniqueSId
. If you were using the UniqueNamedSBase
class, please try to use UniqueSId
instead. As part of the upgrade to support SBML L3V2, users should also consider checking how they access InitialAssignment
, Rule
and EventAssignment
objects, as often the methods make use of the variable
or symbol
attribute instead of the id
attribute.
We have upgraded the minimum JDK requirement to 1.7 for this release, to be able to use the latest versions of the third-party libraries needed by JSBML. As the number of third-party libraries having JDK 1.8 as a minimum requirement increases, we may need to increase the minimum JDK requirement to 1.8 for next year's JSBML releases. (Please let us know in advance if you think requiring JDK 1.8 will be a problem for you.)
The method toString()
available on most JSBML classes has been replaced by a generic method, so you may find some differences in the output produced by the JSBML classes compared to previous versions. One method we did not change for now is ASTNode.toString()
, because doing so could cause many side effects. As part of the upgrade to SBML L3V2 and JSBML 1.2, we advise users to make sure they use ASTNode.toFormula()
when they want to show/store the infix formula representation of an ASTNode, and to not rely on the toString()
method for that purpose. Don't hesitate to provide us with some feedback about this change. We tried to keep any significantly different toString()
method under a different name, starting with print
and followed by the class name, for example Unit.printUnit()
will produce the same output as the Unit.toString()
method in JSBML 1.1.
Since the time of the last JSBML release, we have moved the JSBML source code repository to GitHub. Although we provide the main download files from GitHub, we will continue to distribute the releases from SourceForge until we develop a suitable release replacement scheme using either GitHub or sbml.org.
You can find a detailed list of the user-visible new features and bug fixes since JSBML version 1.1 on the NEWS file.
Thank you for your interest and support of JSBML and SBML in general.
The JSBML team.
JSBML 1.2-β1
JSBML-1.2-beta1
We are pleased to announce the release of JSBML-1.2-beta1, which is now available for download from github below and from sourceforge.
JSBML is a community-driven project to create a free, open-source, pure Java library for reading, writing, and manipulating SBML files and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.
For more details, please visit
http://sbml.org/Software/JSBML
The main new feature in this release is the support for SBML Level 3 Version 2 (RC1). This involved some changes in the class hierarchy of JSBML. A notable SBML change introduced in SBML Level 3 Version 2 is that every SBase object can have an 'id' and a 'name' attribute. In JSBML, for compatibility reasons, we did not change the NamedSBase interface, so not every SBase is a NamedSBase. Only SBML elements that had 'id' and 'name' in SBML Levels/Versions below L3V2 will extend NamedSBase. So, when implementing support for SBML L3V2, we recommend that developers try to avoid using NamedSBase and just use SBase instead. The same is true for the JSBML classes UniqueNamedSBase and UniqueSId. If you were using the UniqueNamedSBase class, please try to use UniqueSId instead. As part of the upgrade to support SBML L3V2, users should also consider checking how they access InitialAssignment, Rule and EventAssignment objects, as often the methods make use of the 'variable' or 'symbol' attribute instead of the 'id' attribute.
We have upgraded the minimum JDK requirement to 1.7 for this release, to be able to use the latest versions of the third-party libraries needed by JSBML. As the number of third-party libraries requiring JDK 1.8 as a minimum requirement increases, we may need to increase the minimum JDK requirement to 1.8 for next year's JSBML releases. (Please let us know in advance if you think requiring JDK 1.8 will be a problem for you.)
The toString() method of most JSBML classes has been replaced by a generic method so you may find some changes in the output produced by the JSBML classes. One method we did not change for now is ASTNode.toString(), because doing so could cause many side effects. As part of the upgrade to SBML L3V2 and JSBML 1.2, we advise users to make sure they use ASTNode.toFormula() when they want to show/store the infix formula representation of an ASTNode, and to not rely on the toString() method for that purpose. Don't hesitate to provide us with some feedback about this change. We tried to keep any significantly different toString method under a different name, starting with 'print' and followed by the class name, for example Unit.printUnit() will produce the same output as the Unit.toString() method in JSBML 1.1.
Since the time of the last JSBML release, we have moved the JSBML source code repository to github.com. Although we provide the main download files from GitHub, we will continue to distribute the releases from SourceForge until we develop a suitable release replacement scheme using either GitHub or sbml.org.
You can find a detailed list of the user-visible new features and bug fixes since JSBML version 1.1 on the NEWS file.
Thank you for your interest and support of JSBML and SBML in general.
The JSBML team.
JSBML-1.0
JSBML-1.0
We are pleased to announce the final release of JSBML-1.0, which is now available for downloading from
https://sourceforge.net/projects/jsbml/files/jsbml/1.0
JSBML is a community-driven project to create a free, open-source, pure Java library for reading, writing, and manipulating SBML files and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.
For more details, please visit http://sbml.org/Software/JSBML
At the end of this message, you can find a detailed list of the user-visible new features and bug fixes since 1.0-beta1 and 1.0-rc1.
The most important new feature of JSBML-1.0 is the support for the SBML Level 3 packages. The list below explains which ones are supported exactly and which ones are experimental. An experimental package support is provided when the SBML Level 3 package specifications have not yet been finalized, and the package implementations are themselves in a state of development and provided 'as-is' for experimental development only.
An other major change is that now the XML annotation element is read as an XMLNode object class instead of String. This will hopefully make it easier to manipulate nonstandard annotations.
Other notable changes include: the manipulation and merging of units have been significantly improved, the modules for CellDesigner plugins and libSBML input/output have been rewritten, bugs have been fixed in the cloning of whole SBMLDocument and their subcomponents, and bug fixes have been fixed in the notification of change listeners.
For people using jsbml-0.8, the link below will highlight the api changes since 0.8:
http://sbml.org/Special/Software/JSBML/1.0/doc/JSBML_API_changes_0.8_to_1.0/changes.html
Release plan: We will try to have shorter release from now on. We will start working on the support for SBML L3V2, L2V5 that should arrive quickly and we will soon merge into trunk the work done on refactoring the ASTNode class.
Thank you for your interest and support of JSBML and SBML in general.
The JSBML team.
Version 1.0 (09-12-2014)
- New Features:
- Added a new module that contains a tidy SBMLWriter that uses
the jtidy library to correct the formatting of the XML file
before writing it out. - Created a new class SyntaxChecker that corresponds to the class in
libSBML and moved pattern matching for id comparisons and e-mail
addresses into this class. - Updated JSBML to create identifiers.org URIs instead of URNs for
units. - Support for SBML Level 3 'Dynamic Structures (dyn)' package:
- First draft of JSBML implementation done (experimental).
- Added a new module that contains a tidy SBMLWriter that uses
- Bug Fixes:
- Solved error #82 in Unit.removeMultiplier. Thanks to Christian
Thöns for pointing this out. - The registerChild method now returns a boolean value to indicate if
the operation was successfully completed. This prevents users from
adding duplicates to ListOf objects. - Improvements made to the java API documentation (javadoc).
- Added a check to write only the necessary namespaces when writing
CVTerm to XML. - Support for SBML Level 3 'Hierarchical Model Composition (comp)'
package: - Registering SBaseRef correctly in the document. Corrected the clone
constructor of SBaseRef that did not copy the recursive SBaseRef. - Added all the missing equals and hashCode methods in the comp
package. - Support for SBML Level 3 'Arrays' package:
- Several fixes and improvements in the validation code and the
flattening code.
- Solved error #82 in Unit.removeMultiplier. Thanks to Christian
Version 1.0-rc1 (24-09-2014)
- New Features:
- Changed the default behaviour of the parsing of math infix formula.
The methods concerned are JSBML#parseFormula and
ASTNode#parseFormula.
The changes include a different operator precedence, to match the
one used in the L3 libSBML parser. The parsing is also case
sensitive for mathML elements. Boolean operators are now
differently interpreted: '&&' and '||' are used instead of 'and'
and 'or'. Please consult the JavaDoc of those methods for more
details, it is also explain there what to do if you want to keep
the old behaviour. - Added two new BioModels.net qualifiers, bqmodel:isIntanceOf and
bqmodel:hasInstance. - BioJava was updated to the latest version and the dependency is
now to biojava3-ontology. - Added removeCVTerm methods in Annotation and SBase.
- An IdManager interface has been introduced to help deal with the
different id namespace in SBML core and in the different packages. - JSBML now provides a convenient ModelBuilder that can be used to
create SBML models with a significantly lower number of lines of
code for the end user. - Improved Java source code documentation (in particular CVTerm).
- The SBMLDocument has now a convenient method to access all metaIds
within the document in form of an unmodifiable Collection. - The SBO class provides more methods to access those terms that are
of particular interest for SBGN displays. - A general Pair of arbitrary values now generalizes ValuePair.
- The toString() methods in UnitDefinition and SpeciesReferences
have been improved and are now more informative. - Internally, JSBML no longer creates Unit objects that lack
required attributes when reading models. (However, this does not
prevent users from creating new Unit objects without such
attributes.) - Species and Compartment 'containsUndeclaredUnits' method has been
overridden because in SBML L3 Species and Compartments can inherit
a default unit from the Model. This is now considered. In this
case, containsUndeclaredUnits will return false even if the object
itself does not explicitly declare its unit. This is important
because the unit of the element is not undefined. - Added some missing methods to manipulate EvenAssignment in Event
and improved the JavaDoc of the Event class. - Added some missing getter in the L3 packages classes.
- Support for SBML Level 3 'Arrays' package:
- Arrays package implemented, version 05/05/14. Only selector and
vector supported for now. Validations, flattening available. - Added support for vector and selector infix parsing to support the
arrays package. - Support for SBML Level 3 'Layout' package:
- Added missing methods to remove GeneralGlyph objects from a Layout
object. - Added further missing remove or unset methods in the layout
package. - Support for SBML Level 3 'Qualitative Models (qual)' package:
- The class QualitativeModel in the qual package has been marked
deprecated and should no longer be used. Aiming to achieve better
compatibility to libSBML, the new class QualModelPlugin has been
created to be used instead. - Support for SBML Level 3 'Spatial Processes (spatial)' package:
- Updated to implement version 0.88 of the draft specifications.
- Changed the default behaviour of the parsing of math infix formula.
- Bug Fixes:
- Corrected the method AbstractSBase#getExtensionCount that was
always returning 0. - Corrected the SBMLWriter so that disabled packages are not written
to XML any more (they are still cloned). - Corrected the method SBase.appendNotes that contained several
problems. - Corrected a bug when cloning a text XMLToken.
- Fixed the AbstractSBase equals method that could throw a
NullPointerException in some cases and was not testing all fields. - Fixed the CVTerm.removeResource(String) method. Thanks to Camille
Laibe who reported the problem (tracker item #80). - Corrected the method ASTNode.parseFormula so that they catch any
Exception or Error and throw a ParseException instead. - Added the support for the 'root' function in the parsing of math
formula. - The FormulaParserLL3 was not reading properly formula like
'kf * S0 * S1'. Only two arguments were read instead of three or
more. Thanks to Chris J. Myers for reporting this problem. - Corrected a bug in Event#setListOfEventAssignments method that
prevented the listOfEventAssignments to be registered properly in
the model (ids and metaids registered). - Corrected the removeFromParent method to make it working for
SBasePlugin instances. - The ListOf.remove(String) will not throw a ClassCastException
anymore when used on list that do not contain elements with id. - The static method JSBML.read(String) was not calling the right
helper method. - ASTNode threw a NullPointerException when trying to un-set its
variable. - The AbstractTreeNode recursive method
removeTreeNodeChangeListener(TreeNodeChangeListener, boolean) was
not actually recursive. - Solved source for potential NullPointerException in LaTeXCompiler.
- Support for SBML Level 3 'Hierarchical Model Composition (comp)'
package: - Fixed several issues when cloning 'comp' elements and L3 packages
elements in general. Thanks to Chris J. Myers and the iBioSim team
for their help to find and fix all issues. - Support for SBML Level 3 'Flux Balance Constraints (fbc)' package:
- The required flag for the fbc package was set to true instead of
false, thanks to Chris J. Myers for reporting this problem. - Support for SBML Level 3 'Layout' package:
- The implementation of the layout package contained unnecessary
classes that all represented a Point object (Start, End, Position,
BasePoint1, BasePoint2). In order to avoid confusion and to
simplify the implementation, those classes have all been deleted. - Corrected the method Layout#setListOfAdditionalGraphicalObjects to
avoid the warnings when cloning the list and to avoid to create a
new list when not needed. - Support for SBML Level 3 'Qualitative Models (qual)' package:
- The SBML qual attribute Output.outputLevel was not read properly
from XML. - Support for SBML Level 3 'Rendering (render)' package:
- Fixed severals bugs in the experimental render package. Renamed
the Group class to Re...
- Corrected the method AbstractSBase#getExtensionCount that was