Skip to content

SBML Upgrades, Species Clamping, and Smart Copy / Paste Fixes

Choose a tag to compare

@CodeByDrescher CodeByDrescher released this 16 Oct 14:09
· 18 commits to master since this release
b6a707a

[8.2.1.01] - October 16th, 2026

Highlights: Spatial stochastic models — Smoldyn particle models and PDE/particle hybrids, where some
species are individual molecules and others are concentrations — can be exported to SBML Spatial and
imported back. Until now VCell refused to export them. Copying simulation results into a stochastic
application's initial conditions or Math Overrides also works again: these pastes often found no target
and changed nothing.

Added

  • SBML Spatial: export and import of spatial stochastic applications. Whether each species is a particle
    or a concentration is recorded in VCell's species annotation
    (<vcell:SpeciesContextSpecSettings vcell:representation="particle"/>). A species without the
    annotation is a concentration, so plain SBML Spatial models still import as deterministic PDE models.
    On import, a clamped species marked as particles is reported and kept as a concentration, since VCell
    requires clamped species to be continuous. Rule-based and SpringSaLaD applications are still refused,
    and SED-ML export still skips spatial stochastic applications. (#2175)

Fixed

  • SBML import of a spatial stochastic model converts it, geometry included, to VCell's default units
    (µm, µM, s). VCell's spatial stochastic math is only consistent in those units: a hybrid imported in
    VCell's SBML units (dm, µmol, l) gave Smoldyn a world measured in dm while particle creation stayed per
    µm³, so it created about 10⁻¹⁵ of the expected molecules. (#2175)
  • Pasting initial conditions between stochastic (molecule count) and deterministic (concentration)
    applications works in both directions, in Specifications → Initial Conditions and in a simulation's
    Math Overrides. The value to replace is now found by following the model's math to the constant that
    sets each variable's starting value, rather than by guessing from its name (<var>_init_…), which
    missed particle, count and membrane variables. Each pasted value goes to its own row. (#2180)

Changed

  • Plot2D data panel (the table behind a plot): clearer layout and labels. (#2180)
  • Math Overrides keep a fixed order instead of hash order. (#2180)
  • Java API, for code built against VCell: in MathOverrides, ScanIndex is now a record (.index →
    .index()) and getOverridesHashKeys() is now getOverrideKeys(). Compare.nullState is now
    Compare.Nullness.determineNullState, and MathOverridesPanel.setMathOverrides is now setMath,
    which also takes the MathSymbolMapping. New: cbit.vcell.mapping.MathRelationMappings, which finds
    the constant that initializes a math variable. (#2180)
  • Developer builds: SlurmProxyTest passes on Windows (25 of 25; before, 18 failures and 1 skipped).
    Generated Slurm scripts use Unix paths and line endings whatever the developer's OS; nothing changes on
    the Linux servers. (#2182)