Skip to content

Commit

Permalink
Release 0.4.4
Browse files Browse the repository at this point in the history

* AMICI-related
  * Update to AMICI v0.11.2 (#295)
  * adjoint preequilibration
  * reduced memory requirements
  * Make proper use of amici::RDataReporting to avoid computing costly disregarded results (#296)
  * Add script / cmake target to update amici (Closes #288)
  * Handle AMICI failures more gracefully
  * Fix misc/rebuild_amici.sh in case of changed AMICI SWIG interface
* Fix: HierarchicalOptimizationWrapper: Return full parameters and full gradient even if nothing computed analytically
* Fix C++17 in CMakeLists template
* Fix: Use absolute path in misc/setup_amici_model.sh
* Fix PEtab import issues
* Fix icpc option overriding warning (Closes #220)
* Update example notebooks and run on github actions (#294)
* Add CLI option to simulator to run simulations with nominal parameters (#293)
* Various cleanup
  * #287, #285, #271, #270, #268, #267, and others
  * Remove obsolete parpeamici/steadystateSimulator.cpp
  * Remove outdated amiciHelper.py module for parsing AMICI source files
  * Remove all uses of std::tmpnam
* Handle IpOpt reporting obj_value 0.0 in case of non-finite fval or gradient (#221)
* Base image ubuntu:19.10 (EOL ubuntu:19.04)
* adapt dataprovider and simulatio to df to third column in simulation condition table (#272)
* Update gsllite (#269)
* Fix petab import when online some measurements have preequilibrationCondition set
* Add basic contribution guide
* Fix race conditions in steadystate example (#265)
* Cache sonar files on github actions
* CI: No shallow clone for running sonarscanner
* Remove obsolete and unreliabe functions parpe::launchedWithMpi and parpe::initMpiIfNeeded -- using MPI must be specified via CLI now
  • Loading branch information
dweindl authored Oct 14, 2020
2 parents 142271c + 0324d38 commit 0750546
Show file tree
Hide file tree
Showing 1,100 changed files with 128,601 additions and 39,854 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/benchmark_models.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
# https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables
name: Test benchmark collection models
on: [push]
on: [push, pull_request, workflow_dispatch]
jobs:
container:
runs-on: ubuntu-latest
Expand All @@ -10,9 +10,9 @@ jobs:
steps:
- uses: actions/checkout@master

- run: echo "::set-env name=PARPE_BASE::$(pwd)"
- run: echo "::set-env name=PARPE_BUILD::${PARPE_BASE}/build"
- run: echo "::set-env name=AMICI_PATH::${PARPE_BASE}/deps/AMICI/"
- run: echo "PARPE_BASE=$(pwd)" >> $GITHUB_ENV
- run: echo "PARPE_BUILD=${PARPE_BASE}/build" >> $GITHUB_ENV
- run: echo "AMICI_PATH=${PARPE_BASE}/deps/AMICI/" >> $GITHUB_ENV

# Build dependencies

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy_dockerhub.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# https://github.com/marketplace/actions/publish-docker
name: Deploy to dockerhub
on: [push]
on: [push, workflow_dispatch]
jobs:
build:
name: Deploy to dockerhub
Expand Down
41 changes: 28 additions & 13 deletions .github/workflows/parpe_tests.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
# https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables
name: parPE tests
on: [push]
on: [push, pull_request, workflow_dispatch]
jobs:
container:
runs-on: ubuntu-latest
container: dweindl/parpeci:1511078
name: parPE tests
env:
# mpiexec prefix for running tests
# If we are running in docker, we generally don't have SYS_PTRACE
# permissions and thus, cannot use vader. Also disable Infiniband.
PARPE_TESTS_MPIEXEC: mpiexec -n 5 --oversubscribe --allow-run-as-root --mca btl_vader_single_copy_mechanism none --mca btl ^openib --mca oob_tcp_if_include lo --mca btl_tcp_if_include lo --mca orte_base_help_aggregate 0

steps:
- uses: actions/checkout@master
with:
fetch-depth: 42
- run: git fetch --prune --unshallow


- run: echo "::set-env name=PARPE_BASE::$(pwd)"
- run: echo "::set-env name=PARPE_BUILD::${PARPE_BASE}/build"
- run: echo "::set-env name=AMICI_PATH::${PARPE_BASE}/deps/AMICI/"
- run: echo "PARPE_BASE=$(pwd)" >> $GITHUB_ENV
- run: echo "PARPE_BUILD=${PARPE_BASE}/build" >> $GITHUB_ENV
- run: echo "AMICI_PATH=${PARPE_BASE}/deps/AMICI/" >> $GITHUB_ENV

# sonar cloud
- run: echo "::set-env name=SONAR_SCANNER_VERSION::4.2.0.1873"
- run: echo "::set-env name=SONAR_SCANNER_HOME::/root/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux"
- run: echo "::set-env name=SONAR_SCANNER_OPTS::-server"
- run: echo "::add-path::${SONAR_SCANNER_HOME}/bin"
- run: echo "::add-path::/root/.sonar/build-wrapper-linux-x86"
- run: echo "SONAR_SCANNER_VERSION=4.2.0.1873" >> $GITHUB_ENV
- run: echo "SONAR_SCANNER_HOME=/root/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux" >> $GITHUB_ENV
- run: echo "SONAR_SCANNER_OPTS=-server" >> $GITHUB_ENV
- run: echo "${SONAR_SCANNER_HOME}/bin" >> $GITHUB_PATH
- run: echo "/root/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH

- name: Info
run: lsb_release -a && printenv
Expand Down Expand Up @@ -83,7 +87,7 @@ jobs:
&& $PARPE_BASE/misc/run_in_venv.sh $PARPE_BASE/build/venv \
pytest \
--cov-report=xml:$PARPE_BUILD/coverage_py.xml \
--cov=./ \
--cov=parpe --cov-append \
$PARPE_BASE/python/tests/
# Redundant with parpe_coverage_cobertura
Expand All @@ -96,6 +100,13 @@ jobs:
&& CTEST_OUTPUT_ON_FAILURE=1 make parpe_coverage \
&& make ExperimentalCoverage
- name: Cache sonar files
id: cache-sonar
uses: actions/cache@v1
with:
path: sonar_cache
key: ${{ runner.os }}-sonar_cache

- name: Run sonar-scanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -104,6 +115,10 @@ jobs:
-Dsonar.cfamily.build-wrapper-output=bw-output \
-Dsonar.projectVersion="$(git describe --abbrev=4 --dirty=-dirty --always --tags | tr -d '\n')"
- name: Run example notebooks
run: |
misc/run_notebook.sh examples/parpeamici/steadystate/parpeExampleSteadystateBasic.ipynb examples/parpeamici/steadystate/parpeExampleSteadystateHierarchical.ipynb
- name: Run valgrind
run: |
cd ${PARPE_BUILD} \
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/petab_testsuite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables

name: PEtab test suite
on: [push]
on: [push, pull_request, workflow_dispatch]
jobs:
container:
runs-on: ubuntu-latest
Expand All @@ -11,9 +11,9 @@ jobs:
steps:
- uses: actions/checkout@master

- run: echo "::set-env name=PARPE_BASE::$(pwd)"
- run: echo "::set-env name=PARPE_BUILD::${PARPE_BASE}/build"
- run: echo "::set-env name=AMICI_PATH::${PARPE_BASE}/deps/AMICI/"
- run: echo "PARPE_BASE=$(pwd)" >> $GITHUB_ENV
- run: echo "PARPE_BUILD=${PARPE_BASE}/build" >> $GITHUB_ENV
- run: echo "AMICI_PATH=${PARPE_BASE}/deps/AMICI/" >> $GITHUB_ENV

# Build dependencies

Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,11 @@ python/test_*.png
# breathe-generatd files
doc/source/api/


# test files
tests/petab-test-suite/
test_*.png

# containers
/container/charliecloud/parpe_base/parpe.tar.gz
*.sif
15 changes: 9 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ project(parpe)

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMakeModules/")

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

include(BuildType) # Ensure CMAKE_BUILD_TYPE is always set
Expand All @@ -20,9 +20,9 @@ include(CTest)
set(CMAKE_DEBUG_POSTFIX "-dbg")
# -D_GNU_SOURCE for pthread recursive mutex
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
-std=c99 -Wall -Wno-unused-function -fopenmp -D_GNU_SOURCE")
-std=c99 -Wall -Wno-unused-function -D_GNU_SOURCE")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
-std=c++11 -Wall -Wno-unused-function -fopenmp -D_GNU_SOURCE")
-Wall -Wno-unused-function -D_GNU_SOURCE")

if(BUILD_PYTHON_MODULE)
# Build PIC code to be used for swig/python module
Expand Down Expand Up @@ -57,9 +57,6 @@ set(IPOPT_INCLUDE_DIRS "${IPOPT_DIR}/include/coin/"
set(IPOPT_LIBRARIES "${IPOPT_DIR}/lib/libipopt.a"
"${IPOPT_DIR}/lib/libcoinhsl.a" "gfortran"
CACHE STRING "IpOpt library")
set(CERES_INCLUDE_DIRS "" "/usr/include/eigen3"
CACHE PATH "CERES include directories")
set(CERES_LIBRARIES "" CACHE STRING "CERES libraries")
set(PARPE_ENABLE_IPOPT TRUE CACHE BOOL "Enable ipopt optimizer?")
set(PARPE_ENABLE_CERES TRUE CACHE BOOL "Enable ceres optimizer?")
set(PARPE_ENABLE_DLIB FALSE CACHE BOOL "Enable dlib optimizers?")
Expand All @@ -68,6 +65,9 @@ set(PARPE_ENABLE_FSQP FALSE CACHE BOOL "Enable FSQP optimizer?")
set(PARPE_EXPORT_PACKAGE FALSE CACHE BOOL
"Export this build to CMake registry?")

# OpenMP?
find_package(OpenMP)

# Enable MPI?
if(${PARPE_ENABLE_MPI})
find_package(MPI REQUIRED)
Expand Down Expand Up @@ -97,6 +97,9 @@ set(HDF5_LIBRARIES

# Guidelines Support Library (GSL-lite) directory
set(GSL_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/ThirdParty/gsl")
# Throw on contract violation instead of terminate to get more meaningful
# message
add_definitions(-Dgsl_CONFIG_CONTRACT_VIOLATION_THROWS)

# Build tests?
if(${BUILD_TESTING})
Expand Down
3 changes: 1 addition & 2 deletions CMakeModules/BuildOptimized.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ if(CMAKE_BUILD_TYPE MATCHES Release OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)

if(COMPILER_SUPPORTS_XHOST)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHOST")
endif()
if(COMPILER_SUPPORTS_MARCHNATIVE)
elseif(COMPILER_SUPPORTS_MARCHNATIVE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
endif()
47 changes: 47 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# How to contribute

We are happy about contributions to parPE in any form, be it new functionality,
documentation, bug reports, or anything else.

When planning to contribute to parPE, it may be best to first create an issue
at [https://github.com/ICB-DCM/parPE/issues](https://github.com/ICB-DCM/parPE/issues)
to outline plans to avoid any redundant work.

For any contribution, please create a pull request. By creating a pull request,
you agree on contributing your code/text/image/etc. under the license terms
stated in [https://github.com/ICB-DCM/parPE/blob/master/LICENSE](https://github.com/ICB-DCM/parPE/blob/master/LICENSE).


## Style guide

For any code contributions, please follow the guidelines below.


### General

* All files and functions should come with file-level and function-level
documentation.

* All new functionality should be covered by unit or integration tests. Runtime
of those tests should be kept as short as possible.


### C++

* We use C++14

* New contributions should follow the
[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html).
Existing code does not yet, but will be adapted accordingly.


### Python

* We want to be compatible with Python 3.7

* For the Python code we want to follow
[PEP8](https://www.python.org/dev/peps/pep-0008/). Although this is not the
case for all existing code, any new contributions should do so.

* We use Python [type hints](https://docs.python.org/3/library/typing.html)
for all functions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ For full functionality, parPE requires the following libraries:
* CBLAS compatible BLAS (libcblas, Intel MKL, ...)
* [AMICI](https://github.com/ICB-DCM/AMICI) (included in this repository)
(uses SuiteSparse, Sundials)
* C++14 compiler
* C++17 compiler
* Python >= 3.6, including header files

On Debian-based systems, dependencies can be installed via:
Expand Down
Loading

0 comments on commit 0750546

Please sign in to comment.