neworder is a microsimulation framework inspired by openm++, MODGEN and, to a lesser extent, the python-based LIAM2 tool, and can be thought of as a powerful best-of-both-worlds hybrid of MODGEN and LIAM2. Modellers can define their models in a simple, well-known language, yet benefit from the efficiency of compiled code and parallel execution:
- python module: easy to install and integrate, available on all common platforms
- low barriers to entry: users need only write standard python code, little or no new coding skills required.
- flexibility: models are specified in python code, so can be arbitrarily complex
- data agnosticism: the framework does not impose any constraints on data formats for either sources or outputs.
- reusability: leverage python modules like numpy, pandas and matplotlib.
- reproducibility: built-in, customisable random generator seeding strategies
- speed: the module is predominantly written in optimised C++ and provides fast Monte-Carlo, statistical and data manipulation functions.
- compatibility: operate directly on numpy arrays and pandas DataFrames
- scalability: can be run on a desktop or a HPC cluster, supporting parallel execution using MPI.
neworder requires python 3.12 or above and runs on 64-bit linux, OSX and Windows platforms. To take advantage of the optional parallel execution functionality, you will also need an MPI implementation, such as open-mpi or mpich. Note that MPI packages are not currently available for Windows via pip - Windows users must install an MPI runtime separately (e.g. MS-MPI) and use the parallel-native extra.
The package can be installed from pypi.
For a basic (serial only) installation,
pip install neworderor to enable parallel execution using MPI use one of the following:
pip install neworder[parallel-openmpi] # install the openmpi runtime in the virtual environment
pip install neworder[parallel-mpich] # install the mpich runtime in the virtual environment
pip install neworder[parallel-native] # use the system's mpi runtimeand to enable the (geo)spatial graph functionality:
pip install neworder[geospatial]or a combination of the two:
pip install neworder[parallel-openmpi,geospatial]To get started first see the detailed documentation here. Then, check out "Hello World" and the other examples.