<s> from __future__ import division <EOL> from PyDSTool import * <EOL> from common_lib import * <EOL> print "<STR_LIT>" <EOL> print "<STR_LIT>" <EOL> def make_single_IF ( gl , vl , C , I , E_spike_times , I_spike_times , <EOL> vthreshold = - <NUM_LIT> , vreset = - <NUM_LIT> , vic = - <NUM_LIT> ) : <EOL> """<STR_LIT>""" <EOL> leak_RHS = '<STR_LIT>' + '<STR_LIT>' <EOL> leak_event_args = { '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True } <EOL> leak_thresh_ev = Events . makeZeroCrossEvent ( '<STR_LIT>' % vthreshold , <EOL> <NUM_LIT:1> , leak_event_args , <EOL> varnames = [ '<STR_LIT:v>' ] ) <EOL> spike_E_ev_args0 = { '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True } <EOL> spike_E_ev_args1 = { '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True } <EOL> spike_E_ev0 = Events . makeZeroCrossEvent ( '<STR_LIT>' , <EOL> <NUM_LIT:1> , spike_E_ev_args0 , <EOL> parnames = [ '<STR_LIT>' ] ) <EOL> spike_E_ev1 = Events . makeZeroCrossEvent ( '<STR_LIT>' , <EOL> <NUM_LIT:1> , spike_E_ev_args1 , <EOL> parnames = [ '<STR_LIT>' ] ) <EOL> spike_I_ev_args0 = { '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True } <EOL> spike_I_ev_args1 = { '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : True } <EOL> spike_I_ev0 = Events . makeZeroCrossEvent ( '<STR_LIT>' , <EOL> <NUM_LIT:1> , spike_I_ev_args0 , <EOL> parnames = [ '<STR_LIT>' ] ) <EOL> spike_I_ev1 = Events . makeZeroCrossEvent ( '<STR_LIT>' , <EOL> <NUM_LIT:1> , spike_I_ev_args1 , <EOL> parnames = [ '<STR_LIT>' ] ) <EOL> assert vthreshold > vreset <EOL> assert vreset > - <NUM_LIT:200> <EOL> def _check_Eevs ( ds , t ) : <EOL> if ds . _current_E_ix == <NUM_LIT:0> : <EOL> ds . _current_E_ix = <NUM_LIT:1> <EOL> else : <EOL> ds . _current_E_ix = <NUM_LIT:0> <EOL> try : <EOL> next_t = ds . _Espike_list . pop ( ) <EOL> except IndexError : <EOL> return None , None <EOL> else : <EOL> return next_t , '<STR_LIT>' % ds . _current_E_ix <EOL> def _check_Ievs ( ds , t ) : <EOL> if ds . _current_I_ix == <NUM_LIT:0> : <EOL> ds . _current_I_ix = <NUM_LIT:1> <EOL> else : <EOL> ds . _current_I_ix = <NUM_LIT:0> <EOL> try : <EOL> next_t = ds . _Ispike_list . pop ( ) <EOL> except IndexError : <EOL> return None , None <EOL> else : <EOL> return next_t , '<STR_LIT>' % ds . _current_I_ix <EOL> leak_args = { '<STR_LIT>' : { '<STR_LIT:C>' : C , '<STR_LIT>' : vl , '<STR_LIT>' : gl , '<STR_LIT>' : vreset , <EOL> '<STR_LIT:I>' : I , '<STR_LIT>' : <NUM_LIT:3> , '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : <NUM_LIT:10> , '<STR_LIT>' : <NUM_LIT:5> , <EOL> '<STR_LIT>' : - <NUM_LIT> , '<STR_LIT>' : - <NUM_LIT> , <EOL> '<STR_LIT>' : - <NUM_LIT> , '<STR_LIT>' : - <NUM_LIT> } , <EOL> '<STR_LIT>' : { '<STR_LIT:v>' : [ - <NUM_LIT:200> , vthreshold ] } , <EOL> '<STR_LIT>' : { '<STR_LIT:v>' : leak_RHS } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : [ <NUM_LIT> , <NUM_LIT> ] , <EOL> '<STR_LIT>' : True } , <EOL> '<STR_LIT>' : [ leak_thresh_ev , spike_E_ev0 , spike_E_ev1 , <EOL> spike_I_ev0 , spike_I_ev1 ] , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { '<STR_LIT>' : ( [ '<STR_LIT:x>' ] , '<STR_LIT>' ) } , <EOL> } <EOL> gen = Generator . Vode_ODEsystem ( leak_args ) <EOL> DS = embed ( gen , tdata = [ <NUM_LIT:0> , <NUM_LIT:100> ] ) <EOL> epmapping_inputE = EvMapping ( defString = """<STR_LIT>""" , model = DS ) <EOL> epmapping_inputE . _ds = DS <EOL> epmapping_inputE . _check_Eevs = _check_Eevs <EOL> DS . _current_E_ix = <NUM_LIT:0> <EOL> DS . _Espike_list = E_spike_times [ : : - <NUM_LIT:1> ] <EOL> DS . set ( pars = { '<STR_LIT>' : DS . _Espike_list . pop ( ) } ) <EOL> epmapping_inputI = EvMapping ( defString = """<STR_LIT>""" , model = DS ) <EOL> epmapping_inputI . _ds = DS <EOL> epmapping_inputI . _check_Ievs = _check_Ievs <EOL> DS . _current_I_ix = <NUM_LIT:0> <EOL> DS . _Ispike_list = I_spike_times [ : : - <NUM_LIT:1> ] <EOL> DS . set ( pars = { '<STR_LIT>' : DS . _Ispike_list . pop ( ) } ) <EOL> epmapping_V = EvMapping ( { '<STR_LIT:v>' : '<STR_LIT>' } , model = DS ) <EOL> DS_info = makeModelInfoEntry ( intModelInterface ( DS ) , [ '<STR_LIT>' ] , <EOL> [ ( '<STR_LIT>' , ( '<STR_LIT>' , epmapping_V ) ) , <EOL> ( '<STR_LIT>' , ( '<STR_LIT>' , epmapping_inputE ) ) , <EOL> ( '<STR_LIT>' , ( '<STR_LIT>' , epmapping_inputE ) ) , <EOL> ( '<STR_LIT>' , ( '<STR_LIT>' , epmapping_inputI ) ) , <EOL> ( '<STR_LIT>' , ( '<STR_LIT>' , epmapping_inputI ) ) ] ) <EOL> modelInfoDict = makeModelInfo ( [ DS_info ] ) <EOL> return Model . HybridModel ( { '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { '<STR_LIT:v>' : vic } , <EOL> '<STR_LIT>' : modelInfoDict } ) <EOL> def check_input_times ( pts ) : <EOL> Es = array ( list ( pts . bylabel ( '<STR_LIT>' ) [ '<STR_LIT:t>' ] ) + list ( pts . bylabel ( '<STR_LIT>' ) [ '<STR_LIT:t>' ] ) ) <EOL> Es . sort ( ) <EOL> Is = array ( list ( pts . bylabel ( '<STR_LIT>' ) [ '<STR_LIT:t>' ] ) + list ( pts . bylabel ( '<STR_LIT>' ) [ '<STR_LIT:t>' ] ) ) <EOL> Is . sort ( ) <EOL> return Es , Is <EOL> def get_spike_times ( pts ) : <EOL> thresh_pts = pts . bylabel ( '<STR_LIT>' ) <EOL> return thresh_pts [ '<STR_LIT:t>' ] <EOL> def plot_IF ( pts ) : <EOL> thresh_pts = pts . bylabel ( '<STR_LIT>' ) <EOL> plt . plot ( pts [ '<STR_LIT:t>' ] , pts [ '<STR_LIT:v>' ] , '<STR_LIT:k>' , linewidth = <NUM_LIT:1> ) <EOL> plt . plot ( [ thresh_pts [ '<STR_LIT:t>' ] , thresh_pts [ '<STR_LIT:t>' ] ] , [ - <NUM_LIT> , <NUM_LIT:0> ] , '<STR_LIT>' , linewidth = <NUM_LIT> ) <EOL> plt . ylim ( [ - <NUM_LIT> , <NUM_LIT:5> ] ) <EOL> IF = make_single_IF ( <NUM_LIT:0.1> , - <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT:3> , <EOL> [ <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> ] ) <EOL> IF . set ( tdata = [ <NUM_LIT:0> , <NUM_LIT> ] , <EOL> algparams = { '<STR_LIT>' : <NUM_LIT> } ) <EOL> IF . compute ( '<STR_LIT:test>' ) <EOL> pts = IF . sample ( '<STR_LIT:test>' ) <EOL> plot_IF ( pts ) <EOL> plt . show ( ) </s>
