Skip to content

PySCeS release 1.2.0

Choose a tag to compare

@jmrohwer jmrohwer released this 14 Feb 14:06
· 54 commits to main since this release

We are pleased to announce the release of the Python Simulator for Cellular Systems: PySCeS (https://pysces.github.io/) version 1.2.0. This is the first release in the 1.2 series and contains some new features and various bug fixes.

New features

There have been major changes in the build system for PySCeS. This release implements meson-python, a PEP 517 compliant Python build backend that is suitable for building C and Fortran extension modules by implementing the meson build system. There is no more setup.py and project build options and metadata are now in pyproject.toml.

The main motivation for this has been support for Python 3.12, which deprecated the use of distutils, and consequently numpy dropped numpy.distutils. The previous build system had relied on numpy.distutils for building Fortran extension modules, which would no longer work on Python 3.12. In the mean time, scipy, numpy, as well as a number of other packages in the scientific Python ecosystem have moved their build systems to meson-python. This version thus brings PySCeS in line with the other packages. For further background refer to #94.

In addition, binary wheels for macOS on Apple silicon (arm64) are provided for the first time (Python 3.11 and 3.12).

What has changed?

  • From a regular user perspective, not much. Installation is still via pip or conda.

  • From a developer perspective: there is no longer a setup.py. Metadata has been migrated to pyproject.toml. Build settings are spread between pyproject.toml and various meson.build files. The build is straightforward using one of:

    $ pip wheel -w dist .
    $ python -m build .

    as long as the relevant compiler toolchain is installed (gcc and gfortran on Linux and macOS, RTools on Windows). Installation can be done with

    $ pip install .
             or
    $ pip install --no-build-isolation -e .          (for an editable install)

    Refer to INSTALL.md.

  • Numpy version >=1.26 is required for the build, as older versions of f2py (which is distributed with numpy) are not compatible. At runtime, any numpy version >=1.23 is supported, older versions don't work due to ABI incompatibility.

  • Binaries (wheels) are distributed for Python versions 3.9-3.12. Python 3.8 support is dropped as the latest numpy and scipy versions also no longer support it.

  • Documentation has been updated to reflect these changes.

Bug fixes

  • Fixed a bug with assignment rule evaluation when one species was an exact substring of another species.
  • Use vectorised functions numpy.log, numpy.log10, numpy.exp instead of their math.* counterparts to support their application to arrays in e.g. assignment rules.
  • Removed a bunch of deprecated scipy.* functions that have moved to the numpy.* namespace.
  • Cleaned up unused imports.

README: https://github.com/PySCeS/pysces/blob/main/README.md

DOCUMENTATION: https://pyscesdocs.readthedocs.io/en/latest/

© Brett Olivier and Johann Rohwer, February 2024.