Skip to content
This repository was archived by the owner on Sep 24, 2025. It is now read-only.

Last regular release. Sunday, 21 of September 2025

Latest

Choose a tag to compare

@amc1999 amc1999 released this 22 Sep 06:08

Last regular release. Sunday, 21 of September 2025

2025-09-21: v1.17.10

This is the last regular release of OpenM++. We may publish more releases if there are significant bugs discovered in our project.

Following included in this release:

  • c++ core: issue runtime error for case-based model if number of subs exceeds number of case seed generators
  • c++ core: create special WriteDebugTraceOrFail() to handle the situation when model developer forget to close Excel before running the model
  • c++ core: fix MPI process sub-values allocation: even up sub-values assignment to MPI processes
  • c++ core: use message.ini files for models translations
  • go and UI: use message.ini files for go utilities translations
  • go: fix bug in run comparison of scalar output tables
  • UI: allow to change models sort order on main landing UI page
  • Docker: add make-model scripts to build model with different versions of openM++ using Docker or just c++ native tools
  • Docker: use Windows 2025 LTSC, RedHat 10, Debian 13
  • perl CsvToDat: correct parameter handling for logical and cumrate parameters
  • other: create make-OncoSim variants build script for Windows and Linux

Issue runtime error for case-based model if number of subs exceeds number of case seed generators

Starting with this version, a case-based model will issue a runtime error if the number of subs in the run exceeds the number of available case seed generators, which is either 41 or 200, depending on the model framework. This change does not affect time-based models. The runtime message is

Simulation error: error : number of subs in run exceeds maximum supported by model framework.

Details:

Each sub/replicate in a case-based model uses a random number generator (RNG) to generate the case seeds for the cases in the sub. A fixed number of RNG are available for this purpose. If the framework module case_based/case_based_lcg41.ompp is used, 41 Modgen-compatible case seed generators are available. If the framework module case_based/case_based_lcg200.ompp is used, 200 case seed generators are available. If the number of subs in a run exceeds the number of case seed generators, case seed generators were re-used cyclically, with a distinct starting seed for each sub. However, the reuse of a case seed generator in two subs means there is a risk that the case seeds of those two subs will fall into alignment at some point, which results in identical cases across the two subs from that point onwards. If alignment occurs, the many identical cases in different subs invalidates statistics computed over the sub dimension, including those which estimate the statistical reliability of aggregate results. The risk that alignment occurs increases with the number of cases and can become significant for a run with many cases. There is no immediately obvious way to determine if alignment has occurred in a run, making this a silent issue with no symptoms, for runs with subs which exceed the available number of case seed generators. This enhancement defends against the possibility of case seed alignment by ensuring that the case seed generators in all subs are statistically independent.

The previous behaviour, namely cyclical reuse of case seed generators with no run-time error, can be enabled using the following option:

options allow_unlimited_subs = on;

If this option is on, the ompp compiler will issue the following warning during model build:

warning : option allow_unlimited_subs is on.

This option has no effect for time-based models.

Fix MPI process sub-values allocation: even up sub-values assignment to MPI processes

We have noticed uneven allocation of sub-values to MPI processes. For example, if you want to run the model with 101 sub-values using 100 CPUs on 25 servers then a disproportionately large number of sub-values will be assigned to one of the servers. As a result your model run time may be significantly longer than expected.

That problem is now fixed and the most recent version of production cloud models updated. Please let us know if you are experiencing that issue with older versions of the models.

CsvToDat: correct parameter handling for logical and cumrate parameters

CsvToDat utility was not able to handle logical and cumrate parameters. It's fixed now, thank you to Joel Barnes.

Please keep in mind, .dat files can be used only with Modgen models. We are not supporting Modgen, OpenM++ created to replace it.

Automate models build with make-model script shell script / CMD batch

There are:

  • ompp-docker/ompp-build-win/make-model.bat
  • ompp-docker/ompp-build-linux/make-model
    scripts which you can use to automate your models build on different platforms (Windows, Linux, MacOS).

For example, using Docker on Windows:

docker run ^
  -v C:\my\build:C:\build ^
  -e OM_ROOT=C:\build\openmpp_win_20250601 ^
  -e MODEL_NAME=RiskPaths ^
  openmpp/openmpp-build:windows-ltsc2025 ^
  make-model

Or without Docker using Visual Studio Command Prompt on Windows:

set OM_ROOT=C:\openmpp_win_20250601
set MODEL_DIR=C:\my\RiskPaths
C:\ompp-docker\ompp-build-win\make-model.bat

Using Docker on Linux, build and run model with my.ini file:

docker run \
  -v $HOME/stable-debian/build:/home/build \
  -e OMPP_USER=build -e OMPP_GROUP=build -e OMPP_UID=$UID -e OMPP_GID=`id -g` \
  -e OM_ROOT=ompp \
  -e MODEL_DIR=RiskPaths \
  -e MODEL_INI=ompp/models/RiskPaths/my.ini \
  openmpp/openmpp-build:debian \
  ./make-model

Without Docker on Linux (assuming you have g++ and make installed):

export MODEL_NAME=RiskPaths
export MODEL_DIR=~/my-models/RiskPaths
export OM_ROOT=~/openmpp_debian_20250601
~/openmpp_debian_20250923/ompp-docker/ompp-build-linux/make-model

You can find more details at:

  • ompp-docker/ompp-build-win/README.make-model.win.txt
  • ompp-docker/ompp-build-linux/README.make-model.linux.txt

There are also special versions of build scripts created or OncoSim model variants: breast, cervical, colorectal, lung, gmm, allcancers. It is available at our GitHub, https://github.com/openmpp/other/tree/master/model-build/OncoSim :

  • make-OncoSim.bat
  • make-OncoSim
  • README.make-OncoSim.win.txt
  • README.make-OncoSim.linux.txt

Go utilities translations

Messages from Go utilities (dbcopy, dbget, oms) are now translated in French using message.ini files:

  • bin/go-common.message.ini
  • bin/dbcopy.message.ini
  • bin/dbget.message.ini
  • bin/oms.message.ini
    When UI send request to oms web-server to invoke dbcopy for bulk database operations (e.g. database vacuuming), it passes UI user language from browser to the server and to dbcopy. Some error messages may not be translated yet due to the high volume of strings.

Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.