PySCeS release 1.2.0
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
piporconda. -
From a developer perspective: there is no longer a
setup.py. Metadata has been migrated topyproject.toml. Build settings are spread betweenpyproject.tomland variousmeson.buildfiles. 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.
-
Numpyversion >=1.26 is required for the build, as older versions off2py(which is distributed withnumpy) are not compatible. At runtime, anynumpyversion >=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
numpyandscipyversions 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.expinstead of theirmath.*counterparts to support their application to arrays in e.g. assignment rules. - Removed a bunch of deprecated
scipy.*functions that have moved to thenumpy.*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.