Skip to content

Commit

Permalink
5.0.3 Release (#45)
Browse files Browse the repository at this point in the history
Version 5.0.3 (2024-11)
==========================

Python API
----------
1. Added `HDF5MultiFileReader` to read simulation data from several HDF5 files at once.
2. `Simulation.toDB` can now be called without a `uid`.
3. Random number generators (`RNG` class) now have default constructor arguments

Bugfixes
--------
1. Improve behavior of stochastic paths (added in 5.0.1). Vesicles test more available sites on path, which reduces chance of vesicle becoming blocked if furthest site is unavailable.
2. Fix rare vesicle surface diffusion crash for boost versions < 1.73 (issue was introduced in 5.0.2)
3. Fix vesicles erroneously diffusing to different compartment (issue was introduced in 5.0.1)
5. Fix compilation issues with mpi4py >= 4.0.0 and Open MPI < 5.0.0
6. Fix `DistMesh.intersect` method computations failing under some conditions

Dependencies
------------

1. Updated the [overlap](https://github.com/severinstrobl/overlap) library to [d2a165e](https://github.com/severinstrobl/overlap/commits/d2a165e1e3ac3519fc18b9c260811f15ffe3aa5b) (development version)
  • Loading branch information
jlallouette authored Nov 11, 2024
1 parent b9ae592 commit 9d5faab
Show file tree
Hide file tree
Showing 188 changed files with 8,100 additions and 2,778 deletions.
70 changes: 70 additions & 0 deletions .github/workflows/sdist.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
name: Create and test source distribution
on:
pull_request: null
push:
branches:
- main
env:
apt_option: -o Acquire::Retries=3
apt_pkgs: >
build-essential git libgl1 libglu1 libopenblas-dev libopenmpi-dev
librdmacm-dev libxcursor1 libxft2 libxinerama1 libxrender1 pkg-config
zlib1g-dev
jobs:
build-sdist:
name: build source distribution
runs-on: ubuntu-latest
steps:
- name: Setup Python
uses: actions/setup-python@v3
with:
python-version: 3.11
- name: Setup MPI
uses: mpi4py/setup-mpi@v1
with:
mpi: openmpi
- name: Install system packages for MPI
run: |
sudo apt-get ${{ env.apt_options }} update -y
sudo apt-get ${{ env.apt_options }} install ${{ env.apt_pkgs }}
- name: install Python build packages
run: |
python -m pip install build "pip<23.1"
python --version
pip --version
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true
- name: Create source distribution
run: python -m build --sdist .
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: sdist
path: |
dist/*.tar.gz
requirements.txt
- name: Install source distribution
run: |
cd dist
tar zxf *.tar.gz
rm -f *.tar.gz
cd steps-*
python -m pip install ".[bundle]"
- name: Check installation by importing the steps module
uses: jannekem/run-python-script-action@v1
with:
script: |
import steps
steps._greet()
- name: Checkout STEPS example repository
uses: actions/checkout@v4
with:
repository: CNS-OIST/STEPS_Example
path: example
- name: Run a few simulations
run: |
python3 example/python_scripts/API_2/well_mixed/well_mixed.py
python3 example/python_scripts/API_2/diffusion/diffusion.py
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,10 @@ Pipfile.lock
.pre-commit-config.yaml
.bbp-project-venv/

# spack build files
spconfig.*
spack*
.spack*

# ignore checkpoints created by UT
test/unit/py/*.cp
Expand Down
3 changes: 3 additions & 0 deletions CMake/BundleOmega_h.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ ExternalProject_Add(
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=../omega_h-install -DOmega_h_USE_MPI:BOOL=ON
-DCMAKE_CXX_COMPILER:FILEPATH=mpicxx -DOmega_h_USE_Gmsh_DEFAULT:BOOL=ON
-DOmega_h_USE_Gmsh:BOOL=ON -DCMAKE_CXX_FLAGS=-O3
-DGmsh_INCLUDE_DIRS=${Gmsh_INCLUDE_DIRS}
-DGmsh_EXECUTABLE=${Gmsh_EXECUTABLE}
-DGmsh_LIBRARIES=${Gmsh_LIBRARIES}
EXCLUDE_FROM_ALL True)
ExternalProject_Add_StepTargets(omega_h install)

Expand Down
97 changes: 97 additions & 0 deletions CMake/FindEigen3.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# ~~~
# - Try to find Eigen3 lib
#
# This module supports requiring a minimum version, e.g. you can do
# find_package(Eigen3 3.1.2)
# to require version 3.1.2 or newer of Eigen3.
#
# Once done this will define
#
# EIGEN3_FOUND - system has eigen lib with correct version
# EIGEN3_INCLUDE_DIR - the eigen include directory
# EIGEN3_VERSION - eigen version
#
# This module reads hints about search locations from
# the following enviroment variables:
#
# EIGEN3_ROOT
# EIGEN3_ROOT_DIR

# Copyright (c) 2006, 2007 Montel Laurent, <[email protected]> Copyright (c) 2008, 2009 Gael
# Guennebaud, <[email protected]> Copyright (c) 2009 Benoit Jacob <[email protected]>
# Redistribution and use is allowed according to the terms of the 2-clause BSD license.
# ~~~

if(NOT Eigen3_FIND_VERSION)
if(NOT Eigen3_FIND_VERSION_MAJOR)
set(Eigen3_FIND_VERSION_MAJOR 2)
endif(NOT Eigen3_FIND_VERSION_MAJOR)
if(NOT Eigen3_FIND_VERSION_MINOR)
set(Eigen3_FIND_VERSION_MINOR 91)
endif(NOT Eigen3_FIND_VERSION_MINOR)
if(NOT Eigen3_FIND_VERSION_PATCH)
set(Eigen3_FIND_VERSION_PATCH 0)
endif(NOT Eigen3_FIND_VERSION_PATCH)

set(Eigen3_FIND_VERSION
"${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
endif(NOT Eigen3_FIND_VERSION)

macro(_eigen3_check_version)
file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)

string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match
"${_eigen3_version_header}")
set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match
"${_eigen3_version_header}")
set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match
"${_eigen3_version_header}")
set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")

set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
set(EIGEN3_VERSION_OK FALSE)
else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
set(EIGEN3_VERSION_OK TRUE)
endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})

if(NOT EIGEN3_VERSION_OK)

message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, "
"but at least version ${Eigen3_FIND_VERSION} is required")
endif(NOT EIGEN3_VERSION_OK)
endmacro(_eigen3_check_version)

if(EIGEN3_INCLUDE_DIR)

# in cache already
_eigen3_check_version()
set(EIGEN3_FOUND ${EIGEN3_VERSION_OK})

else(EIGEN3_INCLUDE_DIR)

# search first if an Eigen3Config.cmake is available in the system, if successful this would set
# EIGEN3_INCLUDE_DIR and the rest of the script will work as usual
find_package(Eigen3 ${Eigen3_FIND_VERSION} NO_MODULE QUIET)

if(NOT EIGEN3_INCLUDE_DIR)
find_path(
EIGEN3_INCLUDE_DIR
NAMES signature_of_eigen3_matrix_library
HINTS ENV EIGEN3_ROOT ENV EIGEN3_ROOT_DIR
PATHS ${CMAKE_INSTALL_PREFIX}/include ${KDE4_INCLUDE_DIR}
PATH_SUFFIXES eigen3 eigen)
endif(NOT EIGEN3_INCLUDE_DIR)

if(EIGEN3_INCLUDE_DIR)
_eigen3_check_version()
endif(EIGEN3_INCLUDE_DIR)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)

mark_as_advanced(EIGEN3_INCLUDE_DIR)

endif(EIGEN3_INCLUDE_DIR)
3 changes: 2 additions & 1 deletion CMake/FindGmsh.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ if(Gmsh_EXECUTABLE)
endif()

find_path(Gmsh_INCLUDE_DIRS NAMES gmsh.h)
find_library(Gmsh_LIBRARIES NAMES gmsh)
find_library(Gmsh_LIBRARIES NAMES gmsh gmsh.${Gmsh_VERSION_MAJOR}.${Gmsh_VERSION_MINOR}
libgmsh.so.${Gmsh_VERSION_MAJOR}.${Gmsh_VERSION_MINOR})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
Expand Down
Loading

0 comments on commit 9d5faab

Please sign in to comment.