Skip to content

Commit f9b56f5

Browse files
committed
Update changelog.
1 parent 8919299 commit f9b56f5

File tree

1 file changed

+145
-89
lines changed

1 file changed

+145
-89
lines changed

CHANGES.md

+145-89
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,100 @@
11
# PySCeS changes (per GitHub release)
22

3+
## PySCeS release 1.2.1 (May 2024)
4+
5+
We are pleased to announce the release of the Python Simulator for Cellular Systems:
6+
PySCeS (https://pysces.github.io/) version 1.2.1. This is a bugfix release.
7+
8+
### Fixes
9+
10+
- Fixed a bug in model evaluation where a model has events and assignment rules, and the
11+
assignment rule contains a variable name and a parameter with the variable a
12+
substring match of the parameter (e.g. `E1` and `E1tot`). Previously, this led to
13+
garbage code during string replacements.
14+
- Cleaned up various error messages.
15+
16+
## PySCeS release 1.2.0 (Feb 2024)
17+
18+
We are pleased to announce the release of the Python Simulator for Cellular Systems:
19+
PySCeS (https://pysces.github.io/) version 1.2.0. This is the first release in the 1.2
20+
series and contains some new features and various bug fixes.
21+
22+
### New features
23+
24+
There have been major changes in the build system for PySCeS. This release
25+
implements [meson-python](https://meson-python.readthedocs.io/),
26+
a [PEP 517](https://peps.python.org/pep-0517/) compliant Python build backend that
27+
is suitable for building C and Fortran extension modules by implementing
28+
the [meson build system](https://mesonbuild.com/). There is no more `setup.py` and
29+
project build options and metadata are now in `pyproject.toml`.
30+
31+
The main **motivation** for this has been support for Python 3.12, which deprecated
32+
the use of `distutils`, and consequently `numpy` dropped `numpy.distutils`. The
33+
previous build system had relied on `numpy.distutils` for building Fortran extension
34+
modules, which would no longer work on Python 3.12. In the mean time, `scipy`, `numpy`,
35+
as well as a number of other packages in the scientific Python ecosystem have moved
36+
their build systems to `meson-python`. This version thus brings PySCeS in line with
37+
the other packages.
38+
39+
In addition, **binary wheels for macOS on Apple silicon** (*arm64*) are provided
40+
for the first time (Python 3.11 and 3.12).
41+
42+
### What has changed?
43+
44+
- From a regular user perspective, not much. Installation is still via `pip` or `conda`.
45+
46+
- From a developer perspective: there is no longer a `setup.py`. Metadata has been
47+
migrated to `pyproject.toml`. Build settings are spread between `pyproject.toml` and
48+
various `meson.build` files. The build is straightforward using one of:
49+
```bash
50+
$ pip wheel -w dist .
51+
$ python -m build .
52+
```
53+
as long as the relevant compiler toolchain is installed (gcc and gfortran on Linux and
54+
macOS, RTools on Windows). Installation can be done with
55+
```bash
56+
$ pip install .
57+
or
58+
$ pip install --no-build-isolation -e . (for an editable install)
59+
```
60+
Refer to [INSTALL.md](https://github.com/PySCeS/pysces/blob/main/INSTALL.md).
61+
62+
- `Numpy` version >=1.26 is required for the build, as older versions of `f2py` (which
63+
is distributed with `numpy`) are not compatible. At runtime, any `numpy` version >
64+
=1.23 is supported, older versions don't work due to ABI incompatibility.
65+
- Binaries (wheels) are distributed for Python versions 3.9-3.12. Python 3.8 support is
66+
dropped as the latest `numpy` and `scipy` versions also no longer support it.
67+
- Documentation has been updated to reflect these changes.
68+
69+
### Bug fixes
70+
71+
- Fixed a bug with assignment rule evaluation when one species was an exact substring of
72+
another species.
73+
- Use vectorised functions `numpy.log`, `numpy.log10`, `numpy.exp` instead of
74+
their `math.*` counterparts to support their application to arrays in e.g. assignment
75+
rules.
76+
- Removed a bunch of deprecated `scipy.*` functions that have moved to the `numpy.*`
77+
namespace.
78+
- Cleaned up unused imports.
79+
380
## PySCeS release 1.1.1 (Jul 2023)
481

5-
We are pleased to announce the release of the Python Simulator for Cellular Systems:
6-
PySCeS (https://pysces.github.io/) version 1.1.1. This is the first release in the 1.1
82+
We are pleased to announce the release of the Python Simulator for Cellular Systems:
83+
PySCeS (https://pysces.github.io/) version 1.1.1. This is the first release in the 1.1
784
series and contains some new features and various bug fixes.
885

986
### New features
1087

11-
- When used in a notebook environment, the `ipympl` backend for matplotlib is now enabled if installed. This allows use in JupyterLab (as opposed to classic notebook). If `ipympl` is not installed, fallback is to the standard `nbAgg`, which is part of matplotlib.
12-
- Simulation results (`mod.sim` object) can now be returned as a pandas DataFrame if pandas is installed, otherwise a numpy recarray is returned as before. This option is configurable with `custom_datatype = pandas` in the user and system configuration files (see https://pyscesdocs.readthedocs.io/en/latest/userguide_doc.html#configuration), and can be enabled or disabled per session or per model:
88+
- When used in a notebook environment, the `ipympl` backend for matplotlib is now
89+
enabled if installed. This allows use in JupyterLab (as opposed to classic notebook).
90+
If `ipympl` is not installed, fallback is to the standard `nbAgg`, which is part of
91+
matplotlib.
92+
- Simulation results (`mod.sim` object) can now be returned as a pandas DataFrame if
93+
pandas is installed, otherwise a numpy recarray is returned as before. This option is
94+
configurable with `custom_datatype = pandas` in the user and system configuration
95+
files (
96+
see https://pyscesdocs.readthedocs.io/en/latest/userguide_doc.html#configuration), and
97+
can be enabled or disabled per session or per model:
1398
```python
1499
pysces.enablePandas()
15100
pysces.enablePandas(False)
@@ -19,170 +104,141 @@ series and contains some new features and various bug fixes.
19104

20105
### Bug fixes
21106

22-
- Fixed a bug in simulations with `RateRules` using Assimulo, where a wrong solver variable was being assigned internally.
107+
- Fixed a bug in simulations with `RateRules` using Assimulo, where a wrong solver
108+
variable was being assigned internally.
23109
- Fixed SBML export when assignment rules were evaluating reaction rates.
24-
- Enabled assignment rules (forcing functions) to track parameter changes when using CVODE. This is needed in case events change parameters during the course of the simulation.
25-
26-
README: https://github.com/PySCeS/pysces/blob/master/README.md
27-
28-
DOCUMENTATION: https://pyscesdocs.readthedocs.io/en/latest/
110+
- Enabled assignment rules (forcing functions) to track parameter changes when using
111+
CVODE. This is needed in case events change parameters during the course of the
112+
simulation.
29113

30114
## PySCeS release 1.1.0 (Apr 2023)
31115

32-
We are pleased to announce a new minor release (version 1.1.0) of the Python
33-
Simulator for Cellular Systems: PySCeS (https://pysces.github.io/). This is the
116+
We are pleased to announce a new minor release (version 1.1.0) of the Python
117+
Simulator for Cellular Systems: PySCeS (https://pysces.github.io/). This is the
34118
first release in the 1.1 series.
35119

36120
### What's new?
37121

38-
The most significant new feature in Version 1.1 is a major upgrade in the way
39-
**PySCeS handles events in simulations**. The definition of events follows the
40-
framework described in the SBML Level 3 Version 2 specification, thus making the
41-
event handling SBML-compliant. Specifically, event **persistence** (for events with
42-
a delay) is now handled correctly, and simultaneous events can be executed
122+
The most significant new feature in Version 1.1 is a major upgrade in the way
123+
**PySCeS handles events in simulations**. The definition of events follows the
124+
framework described in the SBML Level 3 Version 2 specification, thus making the
125+
event handling SBML-compliant. Specifically, event **persistence** (for events with
126+
a delay) is now handled correctly, and simultaneous events can be executed
43127
according to their assigned **priorities**.
44128

45129
The new **event specification** in the PySCeS input file reads:
130+
46131
```
47132
Event: <name>, <trigger>, <optional_kwargs> { <assignments> }
48133
```
49134

50-
To achieve this, three new optional keyword arguments have been added as a
51-
comma-separated list to the event specification. The general syntax for these
135+
To achieve this, three new optional keyword arguments have been added as a
136+
comma-separated list to the event specification. The general syntax for these
52137
arguments is `<attribute>=<value>`. The keywords are:
53138

54-
- *delay* (float): specifies a delay between when the trigger is fired (and the
55-
assignments are evaluated) and the eventual assignment to the model. If this
139+
- *delay* (float): specifies a delay between when the trigger is fired (and the
140+
assignments are evaluated) and the eventual assignment to the model. If this
56141
keyword is not specified, a value of `0.0` is assumed.
57-
- *priority* (integer or None): specifies a priority for events that trigger at the
58-
same simulation time. Events with a higher priority are executed before those
59-
with a lower priority, while events without a priority (`None`) are executed in
60-
random positions in the sequence. If this keyword is not specified, a value of
142+
- *priority* (integer or None): specifies a priority for events that trigger at the
143+
same simulation time. Events with a higher priority are executed before those
144+
with a lower priority, while events without a priority (`None`) are executed in
145+
random positions in the sequence. If this keyword is not specified, a value of
61146
`None` is assumed.
62-
- *persistent* (boolean): is only relevant to events with a delay, where the
63-
situation may occur that the trigger condition no longer holds by the time the
64-
delay in the simulation has passed. The persistent attribute specifies how to
65-
deal with this situation: if `True`, the event executes nevertheless; if `False`,
66-
the event does not execute if the trigger condition is no longer valid. If the
147+
- *persistent* (boolean): is only relevant to events with a delay, where the
148+
situation may occur that the trigger condition no longer holds by the time the
149+
delay in the simulation has passed. The persistent attribute specifies how to
150+
deal with this situation: if `True`, the event executes nevertheless; if `False`,
151+
the event does not execute if the trigger condition is no longer valid. If the
67152
keyword is not specified, a default of `True` is assumed.
68153

69-
The following event illustrates the use of a delay of ten time units with a
154+
The following event illustrates the use of a delay of ten time units with a
70155
non-persistent trigger and a priority of 3:
156+
71157
```
72158
Event: event2, geq(_TIME_, 15.0), delay=10.0, persistent=False, priority=3 {
73159
V3 = V3*vfact2
74160
}
75161
```
162+
76163
The legacy event syntax is still supported.
77164

78165
### Other changes
79166

80-
- A new setting has been added to the settings dictionary of the `PysMod` class
167+
- A new setting has been added to the settings dictionary of the `PysMod` class
81168
with the following default:
82169
`mod.__settings__["cvode_access_solver"] = True`
83-
This specifies if the Assimulo solver object is available from within the
84-
`PysMod` instance to make low-level changes to the integration algorithm. The
85-
current default emulates previous behaviour, but the setting can be changed to
86-
`False`, which facilitates serialization of the `PysMod` class in e.g. parallel
87-
computations. Previously, the attached Assimulo solver object would prevent
170+
This specifies if the Assimulo solver object is available from within the
171+
`PysMod` instance to make low-level changes to the integration algorithm. The
172+
current default emulates previous behaviour, but the setting can be changed to
173+
`False`, which facilitates serialization of the `PysMod` class in e.g. parallel
174+
computations. Previously, the attached Assimulo solver object would prevent
88175
serialization. Thanks @c-barry
89176
- Documentation has been updated to reflect the changes to the event syntax.
90-
- Various bug fixes, including dealing with deprecations for Numpy 1.24.x
177+
- Various bug fixes, including dealing with deprecations for Numpy 1.24.x
91178
compatibility.
92179

93-
README: https://github.com/PySCeS/pysces/blob/master/README.md
94-
95-
DOCUMENTATION: https://pyscesdocs.readthedocs.io/en/latest/
96-
97-
© Brett Olivier and Johann Rohwer, April 2023.
98-
99-
100180
## PySCeS release 1.0.3 (Sep 2022)
101181

102-
We are pleased to announce the release of the Python Simulator for Cellular
103-
Systems: PySCeS (https://pysces.github.io/) version 1.0.3. This is the third
182+
We are pleased to announce the release of the Python Simulator for Cellular
183+
Systems: PySCeS (https://pysces.github.io/) version 1.0.3. This is the third
104184
release in the 1.0 series.
105185

106186
### What's new?
107-
- The build-system has been adapted to make use of `scikit-build`. This gets rid of
108-
the `distutils` and `numpy.distutils` dependencies, which are deprecated and will
109-
be removed with the release of Python 3.12.
187+
188+
- The build-system has been adapted to make use of `scikit-build`. This gets rid of
189+
the `distutils` and `numpy.distutils` dependencies, which are deprecated and will
190+
be removed with the release of Python 3.12.
110191

111192
### Bug Fixes:
193+
112194
- Fixed CVODE defaults and set default tolerances to more sane levels
113195
- Fixed string replacement in parsing and construction of `PieceWise` functions
114196

115-
README: https://github.com/PySCeS/pysces/blob/master/README.md
116-
117-
DOCUMENTATION: https://pyscesdocs.readthedocs.io/en/latest/
118-
119-
&copy; Brett Olivier and Johann Rohwer, September 2022.
120-
121-
122197
## PySCeS release 1.0.2 (May 2022)
123198

124-
We are pleased to announce the release of the Python Simulator for Cellular Systems:
125-
PySCeS (https://pysces.github.io/) version 1.0.2.
199+
We are pleased to announce the release of the Python Simulator for Cellular Systems:
200+
PySCeS (https://pysces.github.io/) version 1.0.2.
126201
This is the second bug-fix release in the 1.0 series.
127202

128203
### Fixes:
129204

130205
- Fixed a number of bugs with `RateRule` execution with CVODE
131-
- Reintroduced the functionality to track additional items such as Assignment Rules
206+
- Reintroduced the functionality to track additional items such as Assignment Rules
132207
during a simulation with CVODE
133-
- The Assimulo `CVODE` implementation has been updated, and legacy PySUNDIALS CVODE
208+
- The Assimulo `CVODE` implementation has been updated, and legacy PySUNDIALS CVODE
134209
code removed
135-
- The `RateRule` and `AssignmentRule` implementations have been checked against the
210+
- The `RateRule` and `AssignmentRule` implementations have been checked against the
136211
SBML Test Suite
137212

138-
README: https://github.com/PySCeS/pysces/blob/master/README.md
139-
140-
DOCUMENTATION: https://pyscesdocs.readthedocs.io/en/latest/
141-
142-
&copy; Brett Olivier and Johann Rohwer, May 2022.
143-
144213
## PySCeS release 1.0.1 (Feb 2022)
145214

146-
We are pleased to announce the release of the Python Simulator for Cellular Systems:
147-
PySCeS (https://pysces.github.io/) version 1.0.1. This is the first bug-fix release
215+
We are pleased to announce the release of the Python Simulator for Cellular Systems:
216+
PySCeS (https://pysces.github.io/) version 1.0.1. This is the first bug-fix release
148217
in the 1.0 series.
149218

150219
### Fixes:
151220

152221
- Fixed references to numpy/scipy
153222
- Fixed a bug in `mod.Simulate(userinit=1)` with CVODE
154-
- Fixed bug where the maximal number of steps in LSODA would not be honoured from the
223+
- Fixed bug where the maximal number of steps in LSODA would not be honoured from the
155224
`mod.__settings__["lsoda_mxstep"]` dictionary entry
156225
- General cleanup of license files, version files, and the way requirements are handled
157226

158-
README: https://github.com/PySCeS/pysces/blob/master/README.md
159-
160-
DOCUMENTATION: https://pyscesdocs.readthedocs.io/en/latest/
161-
162-
&copy; Brett Olivier and Johann Rohwer, February 2022.
163-
164227
## PySCeS release 1.0.0 (Sep 2021)
165228

166-
We are pleased to announce the release of the Python Simulator for Cellular
229+
We are pleased to announce the release of the Python Simulator for Cellular
167230
Systems: PySCeS (https://pysces.github.io/) version 1.0.0.
168231

169232
**What's new in this release:**
170233

171-
- Re-introduced support for CVODE as integrator under Python 3 (via Assimulo),
234+
- Re-introduced support for CVODE as integrator under Python 3 (via Assimulo),
172235
which brings back support of events in models
173236
- Improved import and export of SBML
174237
- Automatic installation of optional dependencies with `pip install "pysces
175238
[optional_dep]"`
176239
- Extensive update of documentation
177240
- Numerous bug fixes
178241

179-
**README:** https://github.com/PySCeS/pysces/blob/master/README.md
180-
181-
**DOCUMENTATION:** https://pyscesdocs.readthedocs.io/en/latest/
182-
183-
&copy; Brett Olivier and Johann Rohwer, September 2021.
184-
185-
186242
## PySCeS release 0.9.8 (May 2020)
187243

188244
We are pleased to announce the release of the Python Simulator for Cellular Systems:
@@ -191,7 +247,7 @@ PySCeS (http://pysces.sourceforge.net) version 0.9.8
191247
**What's new in this release:**
192248

193249
* The main change from a user perspective is that the default model directory and output
194-
directory on Windows have moved to `%USERPROFILE%\Pysces` and subfolders
250+
directory on Windows have moved to `%USERPROFILE%\Pysces` and subfolders
195251
(e.g. `C:\Users\<username>\Pysces`). These folders are created by default on a fresh
196252
install. The previous default location was `C:\Pysces`. This change brings the Windows
197253
version in line with the Linux and macOS versions, and moreover allows multiple users
@@ -273,7 +329,7 @@ cycles), bugfixes (assignment rules) and updates (SED-ML and COMBINE archive exp
273329
## PySCeS releases 2004 - 2016
274330

275331
These releases are available for download
276-
from [SourceForge] (https://sourceforge.net/projects/pysces/files/pysces)
332+
from [SourceForge](https://sourceforge.net/projects/pysces/files/pysces)
277333

278-
© Brett G. Olivier & Johann M. Rohwer, August 2021
334+
© Brett G. Olivier & Johann M. Rohwer, 2004-2024
279335

0 commit comments

Comments
 (0)