diff --git a/.github/workflows/ode-toolbox-build.yml b/.github/workflows/ode-toolbox-build.yml index 6483fb54..b5126dfb 100644 --- a/.github/workflows/ode-toolbox-build.yml +++ b/.github/workflows/ode-toolbox-build.yml @@ -6,12 +6,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout ODE-toolbox code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.9 - name: Install apt dependencies run: | @@ -47,12 +47,12 @@ jobs: steps: - name: Checkout ODE-toolbox code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.9 - name: Install apt dependencies run: | @@ -60,18 +60,20 @@ jobs: sudo apt install pkg-config python3-all-dev - name: Install GSL + if: ${{ matrix.with_gsl == '1' }} run: | + sudo apt remove libgsl27 libgsl-dev # remove system-wide GSL version that is installed by default cd .. - wget http://ftp.wrz.de/pub/gnu/gsl/gsl-2.5.tar.gz - tar -xzf gsl-2.5.tar.gz - cd gsl-2.5 + wget https://mirror.ibcp.fr/pub/gnu/gsl/gsl-2.7.tar.gz # this should be "gsl-latest.tar.gz", but there is an issue with GSL 2.8 (see https://github.com/pygsl/pygsl/issues/62) + tar -xzf gsl-2.7.tar.gz + cd gsl-2.7 ./configure && make && sudo make install - name: Install Python dependencies run: | python -m pip install --upgrade pip pytest pycodestyle codecov pytest-cov wheel python -m pip install numpy - if [ "${{ matrix.with_gsl }}" == "1" ]; then python -m pip install pygsl ; fi + if [ "${{ matrix.with_gsl }}" == "1" ]; then python3 -m pip install -v https://github.com/pygsl/pygsl/archive/refs/tags/v2.4.1.tar.gz ; fi # this should be "pip install pygsl", but see https://github.com/pygsl/pygsl/issues/59 python -m pip install -r requirements.txt export PYTHON_VERSION=`python -c "import sys; print('.'.join(map(str, [sys.version_info.major, sys.version_info.minor])))"` echo "Python version detected:" diff --git a/doc/index.rst b/doc/index.rst index 610f7cdb..4f53bdac 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -41,9 +41,9 @@ ODE-toolbox is written in Python and leverages SymPy for the symbolic manipulati Installation ------------ -.. Attention:: SymPy releases after 1.4 introduce a fourfold regression in runtime performance on the ODE-toolbox unit tests, compared to SymPy 1.4. Unless this conflicts with other version requirements, we would recommend to use SymPy 1.4 for now (for example, by editing ``requirements.txt`` to read ``sympy==1.4``). +.. Attention:: SymPy releases after 1.4 introduce a regression in runtime performance when computing matrix exponentials. Unless this conflicts with other version requirements, we recommend to use SymPy 1.4 for now (for example, by editing ``requirements.txt`` to read ``sympy==1.4``). This issue is being tracked at https://github.com/sympy/sympy/issues/23417. -.. Attention:: The latest SymPy release at time of writing, 1.10.1, introduces an issue that prevents ODE-toolbox from being used with many common neuron models. Please see https://github.com/sympy/sympy/issues/23417 and use an older SymPy version until this issue has been resolved. +.. Attention:: To perform solver benchmarking, ODE-toolbox relies on GSL and PyGSL. Currently, the latest PyGSL release is not compatible with GSL. We recommend to use GSL 2.7 for now. This issue is being tracked at https://github.com/pygsl/pygsl/issues/62. Prerequisites