Skip to content

JSBML-1.0

Compare
Choose a tag to compare
@niko-rodrigue niko-rodrigue released this 23 May 12:46
· 2250 commits to master since this release

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).
  • 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.

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.
  • 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 RenderGroup and the Curve class to RenderCurve.
      Added the possibility to add children to a RenderGroup and
      corrected the way it was written to XML.