You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Class Projection has two methods _connect and _convergent_connect which behave inconsistently when using native_synapse_type with tsodyks_synapse - the former ignores any provided tau_psc, the latter respects the provided tau_psc
Using native_synapse_type with tsodyks2_synapse leads to an error due to PyNN trying to provide tau_psc
(I kept them together as the issues seem connected)
Description - Issue 1
Nest provides two implementations of Tsodyks-Markram synapse:
with syn_pars dictionary containing tau_psc key, may lead to two results depending on the connector used later - either tau_psc in the synapse is the one provided in syn_pars or it is set to synaptic time constant.
If the connector calls method Projection._connect, PyNN checks the synaptic time constant and sets up tau_psc accordingly and creates the connections.
If the connector calls method Projection._convergent_connect, PyNN will use the provided tau_psc value, if given. The method works roughly as follows:
it is issued with dictionary connection_parameters where the tau_psc from syn_pars is stored
PyNN creates a dictionary syn_dict which is updated and will be used as a basis for creating connections and synapses
PyNN checks whether the synapse is Tsodyks type, if so, it will update syn_dict with tau_psc based on the synaptic time constant (so now, there are two tau_psc values, one in syn_dict and one in connection_parameters)
PyNN creates another dictionary _common_synapse_property_names which consist technical identifiers
PyNN initializes connections with paremteres from syn_dict
PyNN changes the parameters of synapses based on the values in connection_parameters (i.e. changing tau_psc to one provided in step 1.)
So PyNN behavior is (for tsodyks_synapse)
_connect:
use tau_psc based on synaptic time constant regardless tau_psc was provided or not
_convergent_connect:
if tau_psc is provided, it will be used (as it is done in step 6.)
if it is not provided, it will use synaptic time constant (as it is initialized in 3.)
Issue 2
This also explains the error for tsodyks2_synapse:
seting up synapse model as tsodyks2_synapse, PyNN loads tau_psc from synaptic time constant in step 3. and then tries to create the connection. That raises NESTError because nest does not expect tau_psc for tsodyks2_synapse model.
This seems it could be resolved by modifying the if conditions
Issues:
_connect
and_convergent_connect
which behave inconsistently when usingnative_synapse_type
withtsodyks_synapse
- the former ignores any providedtau_psc
, the latter respects the providedtau_psc
native_synapse_type
withtsodyks2_synapse
leads to an error due to PyNN trying to providetau_psc
(I kept them together as the issues seem connected)
Description - Issue 1
Nest provides two implementations of Tsodyks-Markram synapse:
tau_psc
in paramaterstau_psc
parameterUsing a synapse model like
with
syn_pars
dictionary containingtau_psc
key, may lead to two results depending on the connector used later - eithertau_psc
in the synapse is the one provided insyn_pars
or it is set to synaptic time constant.If the connector calls method
Projection._connect
, PyNN checks the synaptic time constant and sets uptau_psc
accordingly and creates the connections.If the connector calls method
Projection._convergent_connect
, PyNN will use the providedtau_psc
value, if given. The method works roughly as follows:connection_parameters
where thetau_psc
fromsyn_pars
is storedsyn_dict
which is updated and will be used as a basis for creating connections and synapsessyn_dict
withtau_psc
based on the synaptic time constant (so now, there are twotau_psc
values, one insyn_dict
and one inconnection_parameters
)_common_synapse_property_names
which consist technical identifierssyn_dict
connection_parameters
(i.e. changingtau_psc
to one provided in step 1.)So PyNN behavior is (for
tsodyks_synapse
)_connect
:tau_psc
based on synaptic time constant regardlesstau_psc
was provided or not_convergent_connect
:tau_psc
is provided, it will be used (as it is done in step 6.)Issue 2
This also explains the error for
tsodyks2_synapse
:seting up synapse model as
tsodyks2_synapse
, PyNN loadstau_psc
from synaptic time constant in step 3. and then tries to create the connection. That raisesNESTError
because nest does not expecttau_psc
fortsodyks2_synapse
model.This seems it could be resolved by modifying the
if
conditionsMinimal code raising the error
gives
The text was updated successfully, but these errors were encountered: