Works with Cytoscape
3.10
Release Notes
# Release notes for cy3sbml-v0.6.0

We are pleased to release a new version of cy3sbml. This release completes the support of
the SBML comp package, updates JSBML and all dependencies, fixes the BioModels import and the
annotation lookups, and fixes many import and user interface problems. It also changes parts of the Java API that other Cytoscape apps
use, see Changed and removed.
## Highlights
- Complete support of hierarchical models (comp package): external model definitions are
read, the references of ports, deletions and replacements are resolved and linked to
their targets, and the flattened model is imported as its own network (#401, #220).
- The BioModels import works again after BioModels moved to www.biomodels.org, and the
BioModels dialog no longer freezes Cytoscape while it searches or downloads.
- The ChEBI, OLS and UniProt information of annotations is shown again, using the current
REST APIs of these services.
- Non-ASCII characters in SBML files are imported correctly on all platforms, including
Windows.
- The flux bounds of fbc v1 models are imported, and comp models with a port or replacement
that references a missing element can be imported.
- The SBase information shows the equation of a reaction and its coefficients in the flux
objectives (#403).
- A new documentation site with a user guide and a development guide.
## New and improved
- updated JSBML to its current development version (sbmlteam/jsbml commit 8192a8a7 of
2026-09-07, previously 22659a76 of 2023-01-03), plus the rewritten comp flattening and
resolution of external model definitions (sbmlteam/jsbml#324) and the error messages in
the JSBML jar, from the branch `cy3sbml` of the fork matthiaskoenig/jsbml
- updated the dependencies and removed unnecessary ones (#395)
- an SBML file becomes one network collection per model: the main model, the comp model
definitions, the models of the external model definitions (also those in further
external files, each model once), and the flattened model `Flat__<id>` if the main model
has submodels that can all be instantiated (#220, #401)
- external model definitions are read relative to the location of their file (also from a
URL, with the Cytoscape proxy), each file once, with the md5 checksum checked; a missing or
broken file, an unknown model or an instantiation cycle is reported and skips only its
network (#220)
- the references of ports, deletions, replaced elements and replaced by elements are
resolved to their target (also nested references through further submodels), written to
the new columns `comp_targetModel`, `comp_targetId`, `comp_targetMetaId`,
`comp_targetType`, `comp_resolution` and `comp_sBaseRef`, and linked by edges to their
submodel and target (#401)
- the SBase information shows submodels, ports, deletions, replaced elements, replaced by
elements, model definitions and external model definitions, with a link that selects the
target of a reference, also in the network collection of another model (#401)
- the SBase information shows the equation of a reaction (stoichiometries, reversible or
irreversible arrow, modifiers) and the coefficient of the reaction in each flux objective
(#403)
- the SBase information shows the inputs and outputs of qual transitions
- unset attributes are shown as empty cells instead of an icon (#428), and long values in the
SBase information wrap instead of widening the panel
- ontology terms are looked up with the OLS page of the registry resource instead of a
guess of the ontology from the identifier prefix, and a term that does not match the
annotation is not shown (#403)
- updated the model examples with comp submodels and a QualTab example
- rewrote the ChEBI, OLS and UniProt lookups of the SBase information as small clients of the
current REST APIs (OLS4, UniProt REST, ChEBI backend) with timeouts and an in-memory cache;
each lookup is loaded once, and terms that are not found are not requested again on every
render
- the MIRIAM registry is no longer downloaded twice while Cytoscape starts, and the download no
longer blocks the start: the bundled registry is used right away and without network, and
is replaced by the current registry from identifiers.org once it is downloaded
- the SBase information in the cy3sbml panel is rendered off the user interface thread; a new
selection cancels the render of the previous one, and repeated renders while a model loads
are combined
- the BioModels dialog no longer freezes Cytoscape while it searches, gets model information or
downloads models; it shows a busy state instead, and selecting a model no longer queries
BioModels again
- multiple BioModels search terms are combined with the selected AND or OR, and the help text
of the BioModels dialog describes the search that is available
- a failed BioModels search or download is reported with its cause
- a BioModels search lists up to 1000 models instead of only the first 10, with their name and
dates; the details of a model (description, authors, publication) are looked up when it is
selected, and the information scrolls to the selected model (#402)
- BioModels are downloaded and loaded in a Cytoscape task, with progress and cancel, into the
folder `biomodels` of the cy3sbml directory, so the file is named by the model id (#402)
- closing the BioModels dialog stops a running search (#402)
- loading an example model or importing an SBML file with the cy3sbml import button runs in
a Cytoscape task with progress instead of blocking the user interface (#402)
- a BioModels download larger than 100 MB is stopped and reported instead of filling the disk
- an SBML file that cannot be read is reported once, with the file name, a short cause and a
working link to the SBML validator, instead of twice with the raw parser exception
- import failures are reported in the task monitor, and cancelling an import stops it
- the cy3sbml panel opens with a usable width instead of about 145 pixels
- inline formatting in ontology texts, e.g. the small capital D in ChEBI definitions, is shown
formatted instead of as literal tags
- indented the headers, texts and notes of the cy3sbml panel
- sessions whose SBML mappings refer to deleted nodes are restored, and a failure in one
saved file no longer stops the restore of the others
- an HTTP proxy in the Cytoscape settings without host or port is ignored with a warning,
instead of stopping the start of cy3sbml
- the log file is also written to `~/CytoscapeConfiguration/cy3sbml/` if cy3sbml fails early
during its start, instead of to a file `logfile.name_IS_UNDEFINED` in the Cytoscape directory
## Fixed
- fixed a security issue: XML read by cy3sbml (layout files, notes) could make the parser read
local files or make network requests through external entities (XXE); DOCTYPE declarations
and external entities are now rejected
- fixed the BioModels import, which found no models and could not load any model since
BioModels moved to www.biomodels.org
- fixed the ChEBI information, which was no longer shown
- fixed ontology lookups for annotations with mixed-case prefixes such as NCBITaxon and VariO,
which never showed their term in the SBase information; lowercase prefixes such as
`go:0006915` still resolve
- fixed garbled non-ASCII characters in imported SBML, which was decoded with the platform
charset (e.g. on Windows) instead of the encoding declared in the XML (UTF-8 by default)
- fixed the flux bounds of fbc v1 models, which were never imported as the
`fbc_lowerFluxBound` and `fbc_upperFluxBound` reaction attributes
- fixed the import of comp models with a port or replacement that references a missing
element, which failed with "target node is not a member of this network"
- fixed the COBRA notes attributes (e.g. `GENE_ASSOCIATION`, `SUBSYSTEM`) of models whose notes
hold the `<p>` paragraphs directly or inside an `<html>` element instead of a `<body>`, which
were not imported
- fixed identifiers of compact identifiers.org URIs whose data collection embeds its prefix,
e.g. the DOI `10.1063/1.1681288`, which was shortened to `1.1681288`
- ports and unit definitions no longer hide model elements with the same id, and elements
without id and name (e.g. replaced elements) no longer share one entry in the network
mapping
- the GUI resources extracted to `~/CytoscapeConfiguration/cy3sbml/` are replaced on every
start, so files of earlier versions no longer accumulate, and the unused `ro/`, `omex/` and
`biomodels/` folders are removed (#404)
- fixed the network names of a model without id imported with File > Import > Network from
URL, which were the whole URL instead of the file name
- fixed the import of layouts with bounding boxes that have missing or invalid attributes
- fixed the label `qual_initialLevel/qual_maxLevel` of the initial and maximum level
in the SBase information of qualitative species
- fixed the empty `name` column of nodes and edges in the `All__` network, so selecting and
searching nodes by name works there as in the other networks
- the edges from the event delay math to an event have the interaction type `delay_event`
instead of `priority_event`
- showing the SBase information no longer adds a CVTerm for the SBO term to the model, which
was then saved in the session; the SBO term is now also shown the first time an SBase
without annotation is selected
- fixed the help page in the results panel sometimes being replaced right after opening it
by a slow SBase render (e.g. a web-service lookup) that was still in flight for the
previously selected node
- fixed the missing icons on the cy3sbml help page and the missing export icon in the SBase
information
- fixed the empty area below the Name field in the BioModels dialog, left over after
removing the unused search fields
- the actions of the links in the cy3sbml panel (dialogs, selections, cofactor nodes) run on
the Swing event thread instead of the JavaFX thread
- fixed logging warnings (#390) and the date format of the log
- annotations with `urn:miriam:` resource URNs (e.g. `urn:miriam:obo.chebi:CHEBI%3A15422`)
are shown in the SBase information; before, only identifiers.org URIs were shown
- the links of an annotation go to a current resource of its data collection, preferring the
official one, instead of the first listed resource, which can be deprecated (e.g. the SBO
term links led to an identifiers.org deprecation page)
- fixed the missing creators in the model history of models with vCard4 creators, e.g.
models created with sbmlutils (#397); the history dates are shown in UTC as in the SBML
file (e.g. `2024-05-06T07:08:09Z`)
- fixed the true and false icons in the SBase information, which needed Font Awesome from a
CDN (#440): booleans are shown as a green check and a red cross, and the icons of the
cy3sbml panel are inline SVG icons from Bootstrap Icons, so the panel loads no stylesheets
from the web
- the vertical scrollbar of the cy3sbml panel no longer hides the right edge of the text
- fixed the missing error messages of JSBML: the JSBML jar lacked `SBMLErrors.json`, so
every error JSBML created (e.g. for undefined units) failed with a NullPointerException
and had no message
- fixed the import of BIOMD0000000327, which failed with a NullPointerException in JSBML
while expanding the function definitions to compute derived units (#381); the
model is part of the BioModels test corpus again
## Changed and removed
- COMBINE archives (OMEX) are not supported yet (#116): the archive reader and its toolbar
button are no longer registered, so importing a zip file no longer creates an empty network
- the BioModels import uses the base URL `https://www.biomodels.org/` instead of
`www.ebi.ac.uk/biomodels`
- removed all static singleton accessors (`getInstance` of `SBMLManager`, `WebViewPanel`,
`CofactorManager`, `ServiceAdapter`, `StyleManager`, `BiomodelsDialog`) and the static
`SBaseHTMLFactory` setters; `CyActivator` creates each instance once, and other apps get the
`SBMLManager` from the OSGi service registry, where it is registered as `org.cy3sbml.SBMLManager`
- the public node and edge type constants in `org.cy3sbml.SBML` (`coreNodeTypes`,
`coreEdgeTypes`, `kineticNodeTypes`, `kineticEdgeTypes`) changed from `String[]` to
unmodifiable `List<String>`
- `SBMLReaderTask` moved into the package `org.cy3sbml.reader`, and a failed import returns no
networks
- the JSBML packages are exported with the JSBML version instead of the cy3sbml version, and
the JUnit test classes of JSBML are no longer embedded and exported
- removed the dependencies ols-client, ehcache, registry-lib, miriam-lib, commons-lang and
guava, and the classes `MetaIdSBaseMap` and `IOUtil.inputStream2String`
- removed the unused dependencies xstream (only used by the online validator of JSBML),
commons-io, commons-text, commons-lang3, LibFX, `osgi.cmpn` and the JavaFX modules the app
does not use directly; links in the info panel are handled with the WebView DOM
- two SBML imports at the same time no longer fail with a `NoSuchElementException` from
JSBML, which is set up once when the app starts
- `BiomodelsDialog` takes the search and callbacks to open a URL and load models instead of the
`ServiceAdapter`; `BiomodelsQueryResult`, `BioModelInterfaceTools` and
`LoadBioModelTaskFactory` are replaced by `BiomodelsQuery.search`, `BiomodelsHtml` and
`BiomodelLoader`, and `ServiceAdapter.synchronousTaskManager` is removed (#402)
- JSBML logs through logback into the cy3sbml log file (log4j-over-slf4j replaces
reload4j), and the log file property is renamed to `cy3sbml.logfile`
## Developer and build
- JSBML is pinned to commit 8ceccc9b of the fork matthiaskoenig/jsbml under a release
version, built by `scripts/update_jsbml.py` without the JSBML test classes, with checksums
of the pinned artifacts in the in-project Maven repository
- the build uses the Maven Wrapper and compiles with `--release 17`; the Maven plugins and the
test stack (JUnit 6, Mockito) are updated
- the code is formatted with palantir-java-format through spotless, which CI checks
- the code is checked with Error Prone, and compiler warnings fail the build
- slow and network tests are selected with JUnit tags, so the regular test run needs no network
- the large model corpora of the `models` tests (1.2 GB) are no longer copied into
`target/test-classes` on every build, the test classes run in parallel, Mockito runs as a
Java agent, and the errors the tests cause on purpose are left out of the test output
- golden snapshot tests pin the imported networks of reference models, and a packaged-jar
integration test checks the bundled resources
- the SBML import is split into one reader per SBML package with shared attribute and graph
builders, and has unit tests for each reader
- new unit tests for the `util`, `archive`, `cofactors` and `layout` packages
- the comp flattening is checked against the libSBML flattening of the comp test models and
of the 123 comp cases of the SBML test suite
- a new documentation site built with zensical, with a user guide, a development guide,
current screenshots and the release notes; the README is shortened and links to it, and
a `CITATION.cff` is added
- rulesets protect `develop`, `main` and the release tags; CI runs on pull requests with a
stable tests check, and releases are built from tags by a release workflow that checks the
release notes and fast-forwards `main` to the release
Your cy3sbml team