New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revise implementation of ht_neuron #491
Changes from all commits
8018857
96099dd
2bdc9ac
cf5805a
2fda52a
916bc07
5ee4829
a5b883c
ffbdb18
4998bf2
18fb781
57e5463
5c6b651
8018960
a157412
800bd08
b978ae0
25793f7
680f3f6
53f136e
0889bf5
a7d80c1
ceeb2a2
1f85a54
326799b
d63e9eb
4947fee
d7d048f
061776d
62ec13a
e225770
8ae1372
f5eb579
97e21db
6ca214f
900b308
4178bf2
ea6a79d
9fba9dc
badd650
25ef4ba
d252fcc
c443431
7b93243
e851207
ad2eddc
bec1c52
e7110c6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -31,24 +31,23 @@ | |
|
||
Description: | ||
This synapse implements the depression model described in [1, p 1678]. | ||
See docs/model_details/HillTononi.ipynb for details. | ||
|
||
Synaptic dynamics are given by | ||
|
||
P'(t) = ( 1 - P ) / tau_p | ||
P'(t) = ( 1 - P ) / tau_P | ||
P(T+) = (1 - delta_P) P(T-) for T : time of a spike | ||
P(t=0) = 1 | ||
|
||
w(t) = w_max * P(t) is the resulting synaptic weight | ||
|
||
Parameters: | ||
The following parameters can be set in the status dictionary: | ||
tauP double - synaptic vesicle pool recovery time constant [ms] | ||
tau_P double - synaptic vesicle pool recovery time constant [ms] | ||
delta_P double - fractional change in vesicle pool on incoming spikes | ||
[unitless] | ||
P double - current size of the vesicle pool [unitless, 0 <= P <= 1] | ||
|
||
Warning: | ||
THIS SYNAPSE MODEL HAS NOT BEEN TESTED EXTENSIVELY! | ||
|
||
References: | ||
[1] S Hill and G Tononi (2005). J Neurophysiol 93:1671-1698. | ||
|
||
|
@@ -61,7 +60,7 @@ | |
|
||
/** | ||
* Class representing a synapse with Hill short term plasticity. A | ||
* suitale Connector containing these connections can be obtained from | ||
* suitable Connector containing these connections can be obtained from | ||
* the template GenericConnector. | ||
*/ | ||
|
||
|
@@ -178,15 +177,12 @@ HTConnection< targetidentifierT >::send( Event& e, | |
double t_lastspike, | ||
const CommonSynapseProperties& ) | ||
{ | ||
double h = e.get_stamp().get_ms() - t_lastspike; | ||
Node* target = get_target( t ); | ||
// t_lastspike_ = 0 initially | ||
|
||
// propagation t_lastspike -> t_spike, t_lastspike_ = 0 initially, p_ = 1 | ||
const double h = e.get_stamp().get_ms() - t_lastspike; | ||
p_ = 1 - ( 1 - p_ ) * std::exp( -h / tau_P_ ); | ||
|
||
// send the spike to the target | ||
e.set_receiver( *target ); | ||
e.set_receiver( *get_target( t ) ); | ||
e.set_weight( weight_ * p_ ); | ||
e.set_delay( get_delay_steps() ); | ||
e.set_rport( get_rport() ); | ||
|
@@ -200,8 +196,8 @@ template < typename targetidentifierT > | |
HTConnection< targetidentifierT >::HTConnection() | ||
: ConnectionBase() | ||
, weight_( 1.0 ) | ||
, tau_P_( 50.0 ) | ||
, delta_P_( 0.2 ) | ||
, tau_P_( 500.0 ) | ||
, delta_P_( 0.125 ) | ||
, p_( 1.0 ) | ||
{ | ||
} | ||
|
@@ -222,9 +218,9 @@ HTConnection< targetidentifierT >::get_status( DictionaryDatum& d ) const | |
{ | ||
ConnectionBase::get_status( d ); | ||
def< double >( d, names::weight, weight_ ); | ||
def< double >( d, "tau_P", tau_P_ ); | ||
def< double >( d, "delta_P", delta_P_ ); | ||
def< double >( d, "P", p_ ); | ||
def< double >( d, names::tau_P, tau_P_ ); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since we are trying to limit the number of names and given that this is clearly a recovery time, I think it would be a good idea to set it to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see your point, but since everything here is about P, and I would like to stay reasonably close to the paper to ease comparisons, I would like to stick with There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fair enough ;) |
||
def< double >( d, names::delta_P, delta_P_ ); | ||
def< double >( d, names::P, p_ ); | ||
def< long >( d, names::size_of, sizeof( *this ) ); | ||
} | ||
|
||
|
@@ -236,12 +232,12 @@ HTConnection< targetidentifierT >::set_status( const DictionaryDatum& d, | |
ConnectionBase::set_status( d, cm ); | ||
|
||
updateValue< double >( d, names::weight, weight_ ); | ||
updateValue< double >( d, "tau_P", tau_P_ ); | ||
updateValue< double >( d, "delta_P", delta_P_ ); | ||
updateValue< double >( d, "P", p_ ); | ||
updateValue< double >( d, names::tau_P, tau_P_ ); | ||
updateValue< double >( d, names::delta_P, delta_P_ ); | ||
updateValue< double >( d, names::P, p_ ); | ||
|
||
if ( tau_P_ <= 0.0 ) | ||
throw BadProperty( "tau_P >= 0 required." ); | ||
throw BadProperty( "tau_P > 0 required." ); | ||
|
||
if ( delta_P_ < 0.0 || delta_P_ > 1.0 ) | ||
throw BadProperty( "0 <= delta_P <= 1 required." ); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
change
t_spike
tot_ref
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, here
t_spike
is actually the time of the spike passing through the synapse.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, right, I went a bit fast on that one ^^"