Open cpritcha opened 4 years ago
I would add to the goals section: 'with minimal or no coding changes needed in the original model(s)'
Similar (maintained and ongoing) project for coupling of simulation models: https://openresearchsoftware.metajnl.com/articles/10.5334/jors.265/
Source code: https://github.com/nismod/smif
Main application: https://github.com/nismod/nismod2
Recommend looking at https://www.dafni.ac.uk/ as well
Thanks @willu47! smif has a lot of overlap. I'll take a look at the docs and paper in more depth and see what questions I have.
I would add to the goals section: 'with minimal or no coding changes needed in the original model(s)'
Nothing in the work plan about the hydrology models. That is the other half of the project
I think @cpritcha called this the rain routing model
in the user story section (which may need some additional refinement :sweat_smile:)
I would add to the goals section: 'with minimal or no coding changes needed in the original model(s)'
Nothing in the work plan about the hydrology models. That is the other half of the project
I think @cpritcha called this the
rain routing model
in the user story section (which may need some additional refinement 😅)I would add to the goals section: 'with minimal or no coding changes needed in the original model(s)'
Nothing in the work plan about the hydrology models. That is the other half of the project
Nothing in the section entitled "Work Plan / Roadmap" about the hydrology model part
Goal
The goal of the OMF interoperability project is to be able to combine models written in different languages and environments with a low barrier to entry for model consumers.
Possible User Stories
Bob wants to couple two different models together. One is in Python (a rain routing model) and the other is in Fortran (a crop model). Bob wants to use the crop model as it was created as a command line program. This means Bob first has to figure out the format of any files consumed and produced by the crop model. Then he has to create a wrapper library to make the model easy to call.
Adison wants to couple two different models together. One is in Python (a rain routing model) and the other is in Fortran (a crop model). Adison is more comfortable with Fortran (and with the model itself) so she wants to build the portions of the application she is using as a library. This means Adison has to adapt portions of the application to make it possible to call directly from C, Python etc.
Acme Inc wants to make use of Adison's wrapped crop model in their project. They install the model and can now use it with their project. First they need to understand how the model works so experiment with the model in the REPL using a built in dataset and get documentation about the model's features. Then they integrate the model into their project.
Model Implementations
Model implementations are often implemented in compiled languages as libraries for executables (for C, C++, Fortran) and interpreted/JITed languages (R, Python, Julia, NetLogo). The challenges in creating model wrappers for these types of model implementations are outlined in this section.
Compiled Libraries
Compiled Executables
Interpreted
reticulate
and for Python to R there isrpython
).Model Metadata
In order to be able find models or know how to connect a model we need to have metadata about a particular model. Ideally this could be dynamic so that when a model instance is created the instance can be queried to determine it's interface.
Work Plan / Roadmap
SimpleCrop / LandLab Example
What has already been done:
What needs to be done (basics):
Short Term:
Medium Term:
Long Term: