smif¶
Simulation Modelling Integration Framework
Description¶
smif is a framework for handling the creation of system-of-systems models. The framework handles inputs and outputs, dependencies between models, persistence of data and the communication of state across years.
This early version of the framework handles simulation models that simulate the operation of a system within a year. smif exposes an interface to a planning module which will allows different algorithms to be used against a common API.
Setup and Configuration¶
smif is written in Python (Python>=3.5) and has a number of dependencies. See requirements.txt for a full list.
GLPK¶
The optimisation routines currently use GLPK - the GNU Linear Programming Kit. To install the glpk solver:
- on Linux or Mac OSX, you can likely use a package manager, e.g.
apt install python-glpk glpk-utilsfor Ubuntu orbrew install glpkfor OSX. - on Windows, GLPK for Windows provide
executables. For 64bit Windows, download and unzip the distribution files then
add the
w64folder to yourPATH.
fiona, GDAL and GEOS¶
We use fiona, which depends on GDAL and GEOS libraries.
On Mac or Linux these can be installed with your OS package manager, then install the python packages as usual using:
# On debian/Ubuntu:
apt-get install gdal-bin libspatialindex-dev libgeos-dev
# or on Mac
brew install gdal
brew install spatialindex
brew install geos
pip install -r requirements.txt
On Windows, the simplest approach seems to be using conda, which handles packages and virtual environments, along with the conda-forge channel which has a host of pre-built libraries and packages.
Create a conda environment:
conda create --name smif python=3.5 numpy scipy
Activate it (run each time you switch projects):
activate smif
Note that you source activate smif on OSX and Linux.
Add the conda-forge channel, which has shapely and fiona available:
conda config --add channels conda-forge
Install python packages, along with GDAL and dependencies:
conda install fiona shapely rtree
pip install -r requirements.txt
Installing smif¶
Once the dependencies are installed on your system, a normal installation of smif can be achieved using pip on the command line:
pip install smif
Versions under development can be installed from github using pip too:
pip install git+http://github.com/nismod/smif#egg=v0.2
The suffix #egg=v0.2 refers to a specific version of the source code.
Omitting the suffix installs the latest version of the library.
To install from the source code in development mode:
git clone http://github.com/nismod/smif
cd smif
python setup.py develop
Running smif from the command line¶
Follow the getting started guide to help set up the necessary configuration.
To list available model runs:
$ smif list
demo_model_run.yml
...
To run a system-of-systems model run:
$ smif run demo_model_run.yml
...
Model run complete
By default, all results will be saved to results.yaml
To see all options and flags:
$ smif --help
usage: smif [-h] [-V] [-v] {setup,list,run} ...
Command line tools for smif
positional arguments:
{setup,list,run} available commands
setup Setup the project folder
list List available model runs
run Run a model
optional arguments:
-h, --help show this help message and exit
-V, --version show the current version of smif
-v, --verbose show messages: -v to see messages reporting on progress,
-vv to see debug messages.
A word from our sponsors¶
smif was written and developed at the Environmental Change Institute, University of Oxford within the EPSRC sponsored MISTRAL programme, as part of the Infrastructure Transition Research Consortium.