Skip to content

dLEMS - a distilled version of the Low Entropy Model Specification language used to generate code for numerical integrators.

Notifications You must be signed in to change notification settings

borismarin/som-codegen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dLEMS

DOI

dLEMS (distilled LEMS) is a JSON based format, used to generate code for numerical integrators from LEMS models.

Work in progress! Expect major changes!

Specification (in progress)

Example illustrating supported constructs:

{
    "name":"izhikevich_burster",
    "state":{
        "v":"v0",
        "u":"b*v0"
    },
    "state_functions":{
        "phi":"0.04 * v**2 + 5*v + 140"
    },
    "dynamics":{
        "v":"phi - u + I",
        "u":"a * (b * v - u)"
    },
    "parameters":{
        "a":"0.02",
        "b":"0.2",
        "c":"-50",
        "d":"2",
        "I":"0",
        "v0":"-70"
    },
    "events":[
        {
            "name":"spike",
            "condition":"v - 30",
            "direction":"+",
            "effect":{
                "state":{
                    "v":"c",
                    "u":"u + d"
                }
            }
        },
        {
            "name":"start_inj",
            "condition":"t - 30",
            "direction":"+",
            "effect":{
                "parameters":{
                    "I":"5"
                }
            }
        },
        {
            "name":"end_inj",
            "condition":"t - 150",
            "direction":"+",
            "effect":{
                "parameters":{
                    "I":"0"
                }
            }
        }
    ],
    "t_start":"0",
    "t_end":"300",
    "dt":"0.01",

    "display": [
        {
            "abscissa_axis": {
                "max": "-2.",
                "min": "-16.0"
            },
            "ordinate_axis": {
                "max": "50.0",
                "min": "-90.0"
            },
            "curves": [
                {
                    "abscissa": "t",
                    "ordinate": "v",
                    "colour": "#ee40FF"
                },
                {
                    "abscissa": "t",
                    "ordinate": "u",
                    "colour": "#BBA0AA"
                }
            ]
        }
    ]
}
  • Fields:

    • name: the name of the component being described

    • state: object containing 'var name':'initial val' pairs. A compact way of determining both state variable names and initial values for integration. To be revised, since it introduces redundancy (see "dynamics" below).

    • state_functions: object containing 'func name':'expression' pairs. Auxiliary expressions (possibly) involving parameters and state variables. Are always recalculated at each integration step.

    • dynamics: object containing 'var name':'expression' pairs. Dynamics (in the form of time derivatives) of each state variable. Must contain the same key names as the "state" def above.

    • parameters: object containing 'par name':'par value' pairs. Parameters are expressions which do not have dynamics, i.e. will not be integrated. Parameters can be changed through events, though.

    • events: list of objects with fields

      • name:
      • condition: expression with format f(x, s, t) = 0 where x,s,t are dynamical variables, state functions, parameters or time
      • direction: "+", "-" or "0" if the condition is met where f(x,s,p,t) is increasing, decreasing or both.
      • effect: object containing at least one of state or parameter field, defining attributions for when condition is met.
    • t_start:

    • t_end:

    • dt:

Notes

Currently, only isolated LEMS components (no populations or networks) are supported; check the eco-som branch for a tentive multi-component format.

About

dLEMS - a distilled version of the Low Entropy Model Specification language used to generate code for numerical integrators.

Resources

Stars

Watchers

Forks

Packages

No packages published