|
{ |
|
"IAFs": { |
|
"format": "ModECI MDF v0.4", |
|
"generating_application": "Python modeci-mdf v0.4.11", |
|
"metadata": { |
|
"preferred_duration": 100, |
|
"preferred_dt": 0.1 |
|
}, |
|
"graphs": { |
|
"IAFs": { |
|
"nodes": { |
|
"current_input_node": { |
|
"parameters": { |
|
"time": { |
|
"default_initial_value": 0, |
|
"time_derivative": "1" |
|
}, |
|
"start": { |
|
"value": 20 |
|
}, |
|
"duration": { |
|
"value": 60 |
|
}, |
|
"amplitude": { |
|
"value": 10 |
|
}, |
|
"level": { |
|
"value": 0, |
|
"conditions": [ |
|
{ |
|
"id": "on", |
|
"test": "time > start", |
|
"value": "amplitude" |
|
}, |
|
{ |
|
"id": "off", |
|
"test": "time > start + duration", |
|
"value": "amplitude*0" |
|
} |
|
] |
|
} |
|
}, |
|
"output_ports": { |
|
"current_output": { |
|
"value": "level" |
|
} |
|
} |
|
}, |
|
"pre": { |
|
"input_ports": { |
|
"current_input": { |
|
"shape": [ |
|
1 |
|
] |
|
} |
|
}, |
|
"parameters": { |
|
"v0": { |
|
"value": [ |
|
-60 |
|
] |
|
}, |
|
"erev": { |
|
"value": [ |
|
-70 |
|
] |
|
}, |
|
"tau": { |
|
"value": 10.0 |
|
}, |
|
"thresh": { |
|
"value": [ |
|
-20 |
|
] |
|
}, |
|
"spiking": { |
|
"default_initial_value": "0", |
|
"conditions": [ |
|
{ |
|
"id": "is_spiking", |
|
"test": "v >= thresh", |
|
"value": "1" |
|
}, |
|
{ |
|
"id": "not_spiking", |
|
"test": "v < thresh", |
|
"value": "0" |
|
} |
|
] |
|
}, |
|
"v": { |
|
"default_initial_value": "v0", |
|
"time_derivative": "-1 * (v-erev)/tau + current_input", |
|
"conditions": [ |
|
{ |
|
"id": "reset", |
|
"test": "v > thresh", |
|
"value": "erev" |
|
} |
|
] |
|
} |
|
}, |
|
"output_ports": { |
|
"v_output": { |
|
"value": "v" |
|
}, |
|
"spiking_output": { |
|
"value": "spiking" |
|
} |
|
} |
|
}, |
|
"post": { |
|
"input_ports": { |
|
"current_input": { |
|
"shape": [ |
|
1 |
|
] |
|
} |
|
}, |
|
"parameters": { |
|
"v0": { |
|
"value": [ |
|
-60 |
|
] |
|
}, |
|
"erev": { |
|
"value": [ |
|
-70 |
|
] |
|
}, |
|
"tau": { |
|
"value": 10.0 |
|
}, |
|
"thresh": { |
|
"value": [ |
|
-20 |
|
] |
|
}, |
|
"spiking": { |
|
"default_initial_value": "0", |
|
"conditions": [ |
|
{ |
|
"id": "is_spiking", |
|
"test": "v >= thresh", |
|
"value": "1" |
|
}, |
|
{ |
|
"id": "not_spiking", |
|
"test": "v < thresh", |
|
"value": "0" |
|
} |
|
] |
|
}, |
|
"v": { |
|
"default_initial_value": "v0", |
|
"time_derivative": "-1 * (v-erev)/tau + current_input", |
|
"conditions": [ |
|
{ |
|
"id": "reset", |
|
"test": "v > thresh", |
|
"value": "erev" |
|
} |
|
] |
|
} |
|
}, |
|
"output_ports": { |
|
"v_output": { |
|
"value": "v" |
|
}, |
|
"spiking_output": { |
|
"value": "spiking" |
|
} |
|
} |
|
}, |
|
"syn_post": { |
|
"input_ports": { |
|
"spike_input": { |
|
"shape": [ |
|
1 |
|
] |
|
} |
|
}, |
|
"parameters": { |
|
"syn_tau": { |
|
"value": 10 |
|
}, |
|
"spike_weights": { |
|
"value": [ |
|
40 |
|
] |
|
}, |
|
"weighted_spike": { |
|
"function": "MatMul", |
|
"args": { |
|
"A": "spike_weights", |
|
"B": "spike_input" |
|
} |
|
}, |
|
"syn_i": { |
|
"default_initial_value": "0", |
|
"time_derivative": "-1 * syn_i", |
|
"conditions": [ |
|
{ |
|
"id": "spike_detected", |
|
"test": "spike_input > 0", |
|
"value": "weighted_spike" |
|
} |
|
] |
|
} |
|
}, |
|
"output_ports": { |
|
"current_output": { |
|
"value": "syn_i" |
|
} |
|
} |
|
} |
|
}, |
|
"edges": { |
|
"input_edge": { |
|
"sender": "current_input_node", |
|
"receiver": "pre", |
|
"sender_port": "current_output", |
|
"receiver_port": "current_input" |
|
}, |
|
"post_internal_edge": { |
|
"sender": "syn_post", |
|
"receiver": "post", |
|
"sender_port": "current_output", |
|
"receiver_port": "current_input" |
|
}, |
|
"syn_edge": { |
|
"sender": "pre", |
|
"receiver": "syn_post", |
|
"sender_port": "spiking_output", |
|
"receiver_port": "spike_input" |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|