This document is about the conversion of an existing model into a Neosim module. It explains the difference between the original source code and the new source code that uses Neosim interfaces as well as the new programming approach of the model.
Using Neosim requires to write a new program simulating the cell
behaviour or to make some changes in simulators already programmed.
We focus here on the conversion of a simulator already written.
We will call "user's source code" the code to be written by an user to
define a new model.
With most of the stand-alone simulators, not using Neosim, the
user's source code must define everything from the biological description to
the software simulation's control.
With models using Neosim, the user's code is much smaller as it concentrates only on the biological description level and can benefitiate from already written modules.
Neosim is highly modular, using several independent modules
in order to simulate a particular model.
The changes brought to an existing simulator will mainly be aimed at
taking most advantages from Neosim's modular
structure.
The various modules used in one model are :
Most of the conversion efforts will be aimed at changing the monolithic model into a modular one respecting the Neosim modularity achitecture, as shown in the figure below (fig 1.)
Using Neosim, it is possible to change the network connectivity and structure without touching the source code, just by swapping projection or population's structure module in the Neosim parametrisation.
There are projection modules, implementing the Neosim Projection Interface , and population structure module implementing the Neosim Population Interface.
Neosim offers some standard modules, like projection's module defining simple connectivity, and in case of complex projection a new projection module can be written (in java) using the Neosim interface, but no trace of the network definition appears anymore in the user's source code.
The new programming approach will be :
The new programming approach will be :
The new programming approach will be :