Skip to content
BETSE 0.6.0 (Illustrious Ito) released.

Significant changes include:

* Core bioelectric features significantly improved, including:
  * Cell polarizability.
  * Charge balance in gene regulatory networks.
  * Electroosmotic flow, leveraging a new electric field formalism
    operating on free charge.
  * Extracellular currents.
  * Extracellular fields, now "...100% consistent with Maxwell's
    Equations to produce long-range electric fields in conjunction with
    (and balancing) ion currents resulting from Nernst-Planck
    electrodiffusive transport."
  * Fluid flow.
  * Flux transfer between the environment and cell cluster.
  * Microtubule alignment.
  * Modulator functions.
  * pH (i.e., hydrogen cations).
  * Voltage-gated calcium channels (e.g., CaV).
  * Voltage-gated potassium channels (e.g., Kv).
* Gene regulatory network (GRN) features added, including:
  * Piggybacking, permitting GRNs to be efficiently simulated over
    previously simulated simulations without inefficiently resimulating
    underlying physics.
  * Network optimizer, permitting gene regulatory networks to be
    efficiently optimized in isolation.
  * Substances may now be transmembrane components subject to
    electrophoretic or electroosmotic forces acting from the
    extracellular space.
  * Substances may now leverage electrophoretic mobility instead of
    calculating Einstein's coefficient, intended for larger
    macromolecules exhibiting low diffusion but significant mobility
    (in which case the Einstein coefficient is an unsuitable estimate of
    mobility).
  * Substance smoothing reduced significantly (i.e., from 1:2 to 1:100).
* "betse sim-brn" subcommand removed, obsoleted in entirety by the
  "betse sim-grn" subcommand simulating gene regulatory networks.
* Two-dimensional Cartesian geometry primitives added, including:
  * Cell cluster (and hence Voronoi diagram) boundaries resected via the
    well-known Sutherland-Hodgman polygon clipping algorithm.
  * Point-line intersection (i.e., intersection of two lines).
  * Point-vector spatiality (i.e., whether arbitrary points reside to the
    right or left of arbitrary vectors).
* Matplotlib backend detection significantly improved. Specifically, the
  Qt 5-based "Qt5Agg" backend is now BETSE's preferred backend under all
  recent releases of matplotlib (i.e., matplotlib >= 2.0.0). Under older
  releases of matplotlib, the obsolete Tcl/Tk-based "TkAgg" backend
  remains our preferred backend for stability.
* Transparency automatically enabled in all animation images and video
  for all file formats supporting transparency (e.g., PNG).
* Large-scale refactoring of simulation features for downstream use by
  BETSEE (the Qt 5-based BETSE GUI), including:
  * Spatial settings (e.g., cell lattice type, computational grid size,
    physical world size).
  * Temporal settings (e.g., time step, sampling rate).
  * Cut profiles.
  * Ion profiles.
  * Tissue profiles.
* Object-YAML mapping (OYM) API generalized into the
  "betse.lib.yaml" subpackage, providing an elegant pure-Python solution
  (driven by data descriptors) to transparently mapping between
  in-memory high-level Python objects and on-disk low-level YAML files.
* Backward compatibility API generalized into the new
  "betse.science.config.confcompat" and
  "betse.science.simulate.simcompat" submodules.
* CLI API generalized into the new "betse.util.cli" subpackage,
  eliminating excess boilerplate in downstream CLI applications.
* Current working directory (CWD) API generalized into the new
  "betse.util.os.shell.shelldir" submodule.
* Enumeration API generalized into the new "betse.util.type.enums"
  submodule.
* Exception handling API generalized into the new
  ""betse.util.io.ioexceptions" submodule.
* Float API generalized, providing both validation and conversion of
  floating point numbers in either decimal or scientific notation.
* Pathname API generalized into the new "betse.util.path.pathnames"
  submodule.
* Textual APIs (e.g., raw string, regular expression, version specifier)
  generalized into the new "betse.util.type.text" subpackage.
* Matplotlib colormap API generalized into the new
  "betse.lib.matplotlib.mplcolormap" subpackage.
* Recursive file and directory mtime (modification time) discovery,
  providing efficient inspection and comparison of filesystem contents.
* Sane default dictionary implementation now provided by the new
  "betse.util.type.mapping.mapcls.DefaultDict" class.
* Matplotlib >= 1.5.0 now required.
* Matplotlib >= 2.0.0 now supported.
* SciPy >= 1.0.0 now supported. Specifically, the third-party image
  processing framework Pillow is now leveraged in lieu of the
  now-deprecated scipy.misc.imread() function for low-level image I/O.
* Nominal "ruamel.yaml" compatibility. While we have yet to officially
  flip the switch on this alternate Python YAML implementation, BETSE
  now (in theory) supports roundtripped I/O via "ruamel.yaml".
* Python 3.6 officially supported.
* Python 3.6 support exercised with Windows-based AppVeyor CI.
* New functional tests exercising:
  * Backward compatibility with all simulation configurations and
    pickled files produced by BETSE >= 0.5.0.
  * Our default simulation configuration.