Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into code_generation_h…
Browse files Browse the repository at this point in the history
…elper
  • Loading branch information
C.A.P. Linssen committed Jul 3, 2023
2 parents 6d85b49 + ff24afe commit f3fb36e
Show file tree
Hide file tree
Showing 560 changed files with 22,281 additions and 17,374 deletions.
262 changes: 134 additions & 128 deletions .github/workflows/nestml-build.yml
Original file line number Diff line number Diff line change
@@ -1,33 +1,84 @@
name: NESTML build

on: [push, pull_request]

jobs:
nest-3-latest:

link_checker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Link Checker
uses: lycheeverse/[email protected]
with:
args: --verbose --no-progress **/*.md **/*.html **/*.rst
fail: true
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

static_checks:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
# Checkout the repository contents
- name: Checkout NESTML code
uses: actions/checkout@v2
uses: actions/checkout@v3

# Setup Python version
- name: Setup Python 3.9
uses: actions/setup-python@v2
- name: Setup Python 3.8
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: 3.8

# Install dependencies
- name: Install apt dependencies
run: |
sudo apt-get update
sudo apt-get install libltdl7-dev libgsl0-dev libncurses5-dev libreadline6-dev pkg-config
sudo apt-get install python3-all-dev
# Install Python dependencies
- name: Python dependencies
run: |
python -m pip install --upgrade pycodestyle
python -m pip install -r requirements.txt
# Static code analysis
- name: Static code style analysis
run: |
python3 extras/codeanalysis/check_copyright_headers.py && python3 -m pycodestyle $GITHUB_WORKSPACE -v --ignore=E241,E501,E714,E713,E714,E252,W503 --exclude=$GITHUB_WORKSPACE/doc,$GITHUB_WORKSPACE/.git,$GITHUB_WORKSPACE/NESTML.egg-info,$GITHUB_WORKSPACE/pynestml/generated,$GITHUB_WORKSPACE/extras,$GITHUB_WORKSPACE/build,$GITHUB_WORKSPACE/.github
build_and_test_py_standalone:
needs: [static_checks]
runs-on: ubuntu-latest
steps:
# Checkout the repository contents
- name: Checkout NESTML code
uses: actions/checkout@v3

# Setup Python version
- name: Setup Python 3.8
uses: actions/setup-python@v4
with:
python-version: 3.8

# Install dependencies
- name: Install apt dependencies
run: |
sudo apt-get update
sudo apt-get install libgsl0-dev libncurses5-dev pkg-config
sudo apt-get install python3-all-dev python3-matplotlib python3-numpy python3-scipy ipython3
# Install Python dependencies
- name: Python dependencies
run: |
python -m pip install --upgrade pip pytest jupyterlab matplotlib pycodestyle scipy
python -m pip install -r requirements.txt
# Install Java
- name: Install Java 11
uses: actions/setup-java@v1
uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11.0.x'
java-package: jre

Expand All @@ -41,130 +92,45 @@ jobs:
chmod +x antlr4
echo PATH=$PATH:`pwd` >> $GITHUB_ENV
# Install Python dependencies
- name: Python dependencies
run: |
python -m pip install --upgrade pip pytest jupyterlab matplotlib pycodestyle
python -m pip install -r requirements.txt
python -m pip install scipy
# python -m pip uninstall --yes odetoolbox
# python -m pip install git+https://github.com/nest/ode-toolbox
# Install NESTML
- name: Install NESTML
run: |
echo PYTHONPATH=`pwd` >> $GITHUB_ENV
export PYTHONPATH=${{ env.PYTHONPATH }}:${{ env.NEST_INSTALL }}/lib/python3.8/site-packages
#echo PYTHONPATH=`pwd` >> $GITHUB_ENV
echo "PYTHONPATH=$PYTHONPATH" >> $GITHUB_ENV
python setup.py install
- name: Generate Lexer and Parser using Antlr4
run: |
cd $GITHUB_WORKSPACE
find pynestml/generated -not -name __init__.py -a -not -name generated -delete
cd pynestml/grammars
./generate_lexer_parser
# Static code analysis
- name: Static code style analysis
run: |
python3 extras/codeanalysis/check_copyright_headers.py && python3 -m pycodestyle $GITHUB_WORKSPACE -v --ignore=E241,E501,E714,E713,E714,E252,W503 --exclude=$GITHUB_WORKSPACE/doc,$GITHUB_WORKSPACE/.git,$GITHUB_WORKSPACE/NESTML.egg-info,$GITHUB_WORKSPACE/pynestml/generated,$GITHUB_WORKSPACE/extras,$GITHUB_WORKSPACE/build,$GITHUB_WORKSPACE/.github
# Unit tests
- name: Run unit tests
run: |
pytest -s -o norecursedirs='*' -o log_cli=true -o log_cli_level="DEBUG" tests || :
git ls-remote git://github.com/nest/nest-simulator.git | grep refs/heads/master | cut -f 1 > latest_nest_master_commit_hash.txt
echo "Latest NEST master commit hash:"
cat latest_nest_master_commit_hash.txt
# Install NEST simulator
#- name: NEST simulator cache
# id: nest_simulator_cache
# uses: actions/cache@v2
# env:
# cache-name: nest-simulator-cache
# with:
# path: |
# /home/runner/work/nestml/nest-simulator
# /home/runner/work/nestml/nest_install
# key: nest-simulator-${{ hashFiles('latest_nest_master_commit_hash.txt') }}

# Install NEST simulator
- name: NEST simulator
#if: steps.nest_simulator_cache.outputs.cache-hit != 'true'
run: |
#echo "Latest NEST master commit hash:"
#cat latest_nest_master_commit_hash.txt
python -m pip install cython
echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE"
cd $GITHUB_WORKSPACE/..
NEST_SIMULATOR=$(pwd)/nest-simulator
NEST_INSTALL=$(pwd)/nest_install
echo "NEST_SIMULATOR = $NEST_SIMULATOR"
echo "NEST_INSTALL = $NEST_INSTALL"
git clone --depth=1 https://github.com/nest/nest-simulator
mkdir nest_install
echo "NEST_INSTALL=$NEST_INSTALL" >> $GITHUB_ENV
cd nest_install
cmake -DCMAKE_INSTALL_PREFIX=$NEST_INSTALL $NEST_SIMULATOR
make && make install
# Install NESTML (repeated)
- name: Install NESTML
run: |
export PYTHONPATH=${{ env.PYTHONPATH }}:${{ env.NEST_INSTALL }}/lib/python3.9/site-packages
echo "PYTHONPATH=$PYTHONPATH" >> $GITHUB_ENV
python setup.py install
# Run IPython/Jupyter notebooks
- name: Run Jupyter notebooks
run: |
cd $GITHUB_WORKSPACE
ipynb_fns=$(find $GITHUB_WORKSPACE/doc/tutorials -name '*.ipynb')
rc=0
for fn in $ipynb_fns; do
cd `dirname ${fn}`
ipython3 ${fn} || rc=1
done;
cd $GITHUB_WORKSPACE
exit $rc
# Integration tests: prepare (make module containing all NESTML models)
- name: Setup integration tests
run: |
cd $GITHUB_WORKSPACE
# exclude third factor plasticity models; these will only compile successfully if code generation is as a neuron+synapse pair
export ALL_MODEL_FILENAMES=`find models/neurons -name "*.nestml" | paste -sd " "`
echo $ALL_MODEL_FILENAMES
echo "NEST_INSTALL = ${{ env.NEST_INSTALL }}"
sed -i 's|%NEST_PATH%|${{ env.NEST_INSTALL }}|' tests/nest_tests/resources/nest_codegen_opts.json
nestml --input_path $ALL_MODEL_FILENAMES --target_path target --suffix _nestml --logging_level INFO --module_name nestml_allmodels_module --codegen_opts tests/nest_tests/resources/nest_codegen_opts.json
# Integration tests
# Run integration tests
- name: Run integration tests
run: |
cd $GITHUB_WORKSPACE
rc=0
for fn in $GITHUB_WORKSPACE/tests/nest_tests/*.py; do
for fn in $GITHUB_WORKSPACE/tests/python_standalone_tests/*.py; do
pytest -s -o log_cli=true -o log_cli_level="DEBUG" ${fn} || rc=1
done;
exit $rc
nest-2:
build_and_test:
needs: [static_checks]
runs-on: ubuntu-latest
strategy:
matrix:
nest_branch: ["v2.20.2", "v3.0", "v3.1", "v3.2", "v3.3", "v3.4", "master"]
fail-fast: false
env:
NEST_VERSION_MAJOR: 2
steps:
# Checkout the repository contents
- name: Checkout NESTML code
uses: actions/checkout@v2
uses: actions/checkout@v3

# Setup Python version
- name: Setup Python 3.9
uses: actions/setup-python@v2
- name: Setup Python 3.8
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: 3.8

# Install dependencies
- name: Install apt dependencies
Expand All @@ -176,64 +142,104 @@ jobs:
# Install Python dependencies
- name: Python dependencies
run: |
python -m pip install --upgrade pip pytest jupyterlab matplotlib pycodestyle
python -m pip install --upgrade pip pytest jupyterlab matplotlib pycodestyle scipy pandas
python -m pip install -r requirements.txt
python -m pip install scipy
# python -m pip uninstall --yes odetoolbox
# python -m pip install git+https://github.com/nest/ode-toolbox
- name: Install NESTML
# Install Java
- name: Install Java 11
uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11.0.x'
java-package: jre

# Install Antlr4
- name: Install Antlr4
run: |
echo PYTHONPATH=`pwd` >> $GITHUB_ENV
python setup.py install
wget http://www.antlr.org/download/antlr-4.10-complete.jar
echo \#\!/bin/bash > antlr4
echo java -cp \"`pwd`/antlr-4.10-complete.jar:$CLASSPATH\" org.antlr.v4.Tool \"\$@\" >> antlr4
echo >> antlr4
chmod +x antlr4
echo PATH=$PATH:`pwd` >> $GITHUB_ENV
# Install NEST simulator
- name: NEST simulator
run: |
python -m pip install cython
echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE"
cd $GITHUB_WORKSPACE/..
NEST_SIMULATOR=$(pwd)/nest-simulator
NEST_INSTALL=$(pwd)/nest_install
echo "NEST_SIMULATOR = $NEST_SIMULATOR"
echo "NEST_INSTALL = $NEST_INSTALL"
echo "NEST_VERSION_MAJOR = $NEST_VERSION_MAJOR"
git clone --depth=1 https://github.com/nest/nest-simulator --branch v2.20.2
cd nest-simulator
git status
cd ..
git clone --depth=1 https://github.com/nest/nest-simulator --branch ${{ matrix.nest_branch }}
mkdir nest_install
echo "NEST_INSTALL=$NEST_INSTALL" >> $GITHUB_ENV
cd nest_install
cmake -DCMAKE_INSTALL_PREFIX=$NEST_INSTALL $NEST_SIMULATOR
make && make install
cd ..
# Install NESTML (repeated)
- name: Install NESTML
run: |
export PYTHONPATH=${{ env.PYTHONPATH }}:${{ env.NEST_INSTALL }}/lib/python3.9/site-packages
export PYTHONPATH=${{ env.PYTHONPATH }}:${{ env.NEST_INSTALL }}/lib/python3.8/site-packages
#echo PYTHONPATH=`pwd` >> $GITHUB_ENV
echo "PYTHONPATH=$PYTHONPATH" >> $GITHUB_ENV
python setup.py install
- name: Generate Lexer and Parser using Antlr4
run: |
cd pynestml/grammars
./generate_lexer_parser
# Unit tests
- name: Run unit tests
run: |
pytest -s -o norecursedirs='*' -o log_cli=true -o log_cli_level="DEBUG" tests
# Integration tests: prepare (make module containing all NESTML models)
- name: Setup integration tests
run: |
cd $GITHUB_WORKSPACE
# exclude third factor plasticity models; these will only compile successfully if code generation is as a neuron+synapse pair
export ALL_MODEL_FILENAMES=`find models/neurons -name "*.nestml" | paste -sd " "`
echo $ALL_MODEL_FILENAMES
echo "NEST_INSTALL = ${{ env.NEST_INSTALL }}"
sed -i 's|%NEST_PATH%|${{ env.NEST_INSTALL }}|' tests/nest_tests/resources/nest2_allmodels_codegen_opts.json
cat tests/nest_tests/resources/nest2_allmodels_codegen_opts.json
nestml --input_path $ALL_MODEL_FILENAMES --target_path target --target_platform NEST2 --suffix _nestml --logging_level INFO --module_name nestml_allmodels_module --codegen_opts tests/nest_tests/resources/nest2_allmodels_codegen_opts.json
echo "NEST_VERSION = ${{ matrix.nest_branch }}"
sed -i 's|%NEST_PATH%|${{ env.NEST_INSTALL }}|' tests/nest_tests/resources/nest_codegen_opts.json
sed -i 's|%NEST_VERSION%|${{ matrix.nest_branch }}|' tests/nest_tests/resources/nest_codegen_opts.json
nestml --input_path $ALL_MODEL_FILENAMES --target_path target --suffix _nestml --logging_level INFO --module_name nestml_allmodels_module --codegen_opts tests/nest_tests/resources/nest_codegen_opts.json
# Integration tests
- name: Run integration tests
if: ${{ matrix.nest_branch == 'master' || matrix.nest_branch == 'v2.20.2' }}
env:
LD_LIBRARY_PATH: ${{ env.NEST_INSTALL }}/lib/nest
run: |
cd $GITHUB_WORKSPACE
rc=0
pytest -s -o log_cli=true -o log_cli_level="DEBUG" tests/nest_tests/nest2_compat_test.py || rc=1
for fn in $GITHUB_WORKSPACE/tests/nest_tests/*.py; do
pytest -s -o log_cli=true -o log_cli_level="DEBUG" ${fn} || rc=1
done;
exit $rc
# Run only the nest_integration_test for the NEST versions other than master and 2.20.2
- name: Run integration tests
if: ${{ !(matrix.nest_branch == 'master' || matrix.nest_branch == 'v2.20.2') }}
env:
LD_LIBRARY_PATH: ${{ env.NEST_INSTALL }}/lib/nest
run: |
pytest -s -o log_cli=true -o log_cli_level="DEBUG" tests/nest_tests/nest_integration_test.py
# Run IPython/Jupyter notebooks
- name: Run Jupyter notebooks
if: ${{ matrix.nest_branch == 'master' }}
run: |
ipynb_fns=$(find $GITHUB_WORKSPACE/doc/tutorials -name '*.ipynb')
rc=0
for fn in $ipynb_fns; do
cd `dirname ${fn}`
ipython3 ${fn} || rc=1
done;
cd $GITHUB_WORKSPACE
exit $rc
5 changes: 3 additions & 2 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
version: 2

build:
image: latest
os: ubuntu-20.04
tools:
python: "3.9"

sphinx:
configuration: doc/sphinx-apidoc/conf.py

python:
version: 3.8
install:
- requirements: doc/requirements.txt
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![astropy](http://img.shields.io/badge/powered%20by-AstroPy-orange.svg?style=flat)](http://www.astropy.org/) [![Build Status](https://travis-ci.org/nest/nestml.svg?branch=master)](https://travis-ci.org/nest/nestml)
[![astropy](http://img.shields.io/badge/powered%20by-AstroPy-orange.svg?style=flat)](http://www.astropy.org/) [![NESTML build](https://github.com/nest/nestml/actions/workflows/nestml-build.yml/badge.svg)](https://github.com/nest/nestml/actions/)

# NESTML: The NEST Modelling Language

Expand Down
4 changes: 4 additions & 0 deletions doc/citing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ In general, please cite the software release that you are using. In case you wis
Software releases
-----------------

Charl A.P. Linssen, Pooja N. Babu, Jingxuan He, Jochen Martin Eppler, Bernhard Rumpe and Abigail Morrison (2022). **NESTML 5.1.0.** Zenodo. `doi:10.5281/zenodo.7071624 <https://doi.org/10.5281/zenodo.7071624>`_.

Charl A.P. Linssen, Pooja N. Babu, Ayssar Benelhedi, Robin De Schepper, Tanguy Fardet, Jochen Martin Eppler, Bernhard Rumpe and Abigail Morrison (2022). **NESTML 5.0.0.** Zenodo. `doi:10.5281/zenodo.5784175 <https://doi.org/10.5281/zenodo.5784175>`_.

Pooja Nagendra Babu, Charl Linssen, Jochen Martin Eppler, Tobias Schulte to Brinke, Abolfazl Ziaeemehr, Tanguy Fardet, Younes Bouhadjar, Renato Duarte, Bernhard Rumpe and Abigail Morrison (2021). **NESTML 4.0.** Zenodo. `doi:10.5281/zenodo.4740083 <https://doi.org/10.5281/zenodo.4740083>`_.

Charl Linssen, Bernhard Rumpe, Sebastian Berns, Tanguy Fardet, Konstantin Perun, Tobias Schulte to Brinke, Dennis Terhorst, Jochen M. Eppler and Abigail Morrison (2020). **NESTML 3.1.** Zenodo. `doi:10.5281/zenodo.3697733 <http://doi.org/10.5281/zenodo.3697733>`_.
Expand Down
Loading

0 comments on commit f3fb36e

Please sign in to comment.