'SCRIPT to do up ANALYSIS of SPIKE TRAINS during application of RAMP FORCE ' script RAMP1 must be run FIRST to set up derivative channel 'USER MUST HAVE CREATED AND SAVED at least 2 (identical) channels 'holding the discriminated spikes; program will prompt for channel numbers 'One channel must be a view of the spikes as events (lines) 'The second channel should be a rate view of the spike data, mean freq, histogram or such 'Last modified on 9/5/97 by RAD var v5%; 'time view handle var fname$,fend$; 'name of current data file in trime view var dt,thist; 'sample time step value var i%; 'index variable var time; var ramp[2000]; 'array of ramp time points var nramp%; 'number of ramp timing points var dfdt; 'derivative value var rateUpEnd; 'rate at end of up phase var mrateUp,mrateDown; 'mean spike rate at start and end of trapezoid var minRateS,maxRateS; 'spike rate min-max values during ramp Static (hold) phase var minrateD,maxrateD; 'spike rate min-max values during (rising) ramp Dynamic phase var minDown,maxDown; 'min-max spike rate values during ramp down phase var dummy[20000]; 'dummy array to hold spike times during each ramp var nspk%; 'number of spikes in a time interval var nspk1%; 'number of spikes in a time interval var nspk2%; 'number of spikes in a time interval var nspk3%; 'number of spikes in a time interval var nspk4%; 'number of spikes in a time interval var nspk5%; 'number of spikes in a time interval var nspk6%; 'number of spikes in a time interval var nspk7%; 'number of spikes in a time interval var nspk8%; 'number of spikes in a time interval var nspk9%; 'number of spikes in a time interval var nspk10%; 'number of spikes in a time interval var nspk11%; 'number of spikes in a time interval var nspk12%; 'number of spikes in a time interval var nspk13%; 'number of spikes in a time interval var nspk14%; 'number of spikes in a time interval var nspk15%; 'number of spikes in a time interval var nspk16%; 'number of spikes in a time interval var nspk17%; 'number of spikes in a time interval var nspk18%; 'number of spikes in a time interval var nspk19%; 'number of spikes in a time interval var nspk20%; 'number of spikes in a time interval var nspk21%; 'number of spikes in a time interval var nspk22%; 'number of spikes in a time interval var nspk23%; 'number of spikes in a time interval var nspk24%; 'number of spikes in a time interval var nspk25%; 'number of spikes in a time interval var nspk26%; 'number of spikes in a time interval var nspk27%; 'number of spikes in a time interval var nspk28%; 'number of spikes in a time interval var nspk29%; 'number of spikes in a time interval var nspk30%; 'number of spikes in a time interval var nspk31%; 'number of spikes in a time interval var nspk32%; 'number of spikes in a time interval var nspk33%; 'number of spikes in a time interval var nspk34%; 'number of spikes in a time interval var nspk35%; 'number of spikes in a time interval var nspk36%; 'number of spikes in a time interval var nspk37%; 'number of spikes in a time interval var nspk38%; 'number of spikes in a time interval var nspk39%; 'number of spikes in a time interval var nspk40%; 'number of spikes in a time interval var ampls%; 'sg value before ramp var amplt%; 'sg value during ramp var rateramp; 'firing freq during ramp var e%; var f%; var g%; var ok%,spkchan%,ratechan%; DlgCreate ("Choose Channels"); 'start dialog, channel selection DlgInteger (1,"upsdowns",0,50); DlgInteger (2,"samplechannel",0,500); DlgInteger (3,"numberofchannels",1,500); 'DlgInteger (3,"start at",0,50); ok% := DlgShow(e%,f%,g%); var z%; for z% :=f% to f%+g%-1 do time := Cursor(2)-Cursor(1); 'get time between cursors 'get number of time points between 'cursors and fill array of time values nramp% := ChanData(e%,ramp[],Cursor(1),Cursor(2)); 'write header for log file 'PrintLog("\n",FileName$(7)); 'PrintLog(FileName$(3)); 'PrintLog(";"); i% :=0; 'initialize index while i% < nramp% do 'loop gets data for each ramp for all ramps between cursors var bintime; 'bintime :=((ramp[i%+2]-ramp[i%])/40); var bintime2; bintime2 :=(ramp[i%]+0.40); var bintime3; 'bintime3 :=(ramp[i%+1]-ramp[i%); nspk1% :=chandata(z%,dummy[],ramp[i%],ramp[i%+1]); nspk2% :=chandata(z%,dummy[],ramp[i%+4],ramp[i%+5])/0.5; nspk3% :=chandata(z%,dummy[],ramp[i%+8],ramp[i%+9])/0.25; nspk4% :=chandata(z%,dummy[],ramp[i%+12],ramp[i%+13])/0.125; nspk5% :=chandata(z%,dummy[],ramp[i%+16],ramp[i%+17])/0.1; nspk6% :=chandata(z%,dummy[],ramp[i%+20],ramp[i%+21])/0.075; nspk7% :=chandata(z%,dummy[],ramp[i%+24],ramp[i%+25])/0.05; nspk8% :=chanvalue(4,ramp[i%+1])-chanvalue(4,ramp[i%]); 'PrintLog(nspk1%/.75," ",ramp[i%]); 'PrintLog(bintime," ",ramp[i%+1]-ramp[i%]," ",ramp[i%+2]-ramp[i%]," ",FileName$(7)," ",ramp[i%]); 'PrintLog(nspk1%," ",nspk2%," ",nspk3%," ",nspk4%," ",nspk5%," ",nspk6%," ",nspk7%," ",," ",nspk9%," ",nspk10%); PrintLog(nspk1%," ",nspk2%," ",nspk3%," ",nspk4%," ",nspk5%," ",nspk6%," ",nspk7%," ",nspk8%," ",ramp[i%]); 'PrintLog(nspk21%," ",nspk22%," ",nspk23%," ",nspk24%," ",nspk25%," ",nspk26%," ",nspk27%," ",nspk28%," ",nspk29%," ",nspk30%); 'PrintLog(nspk31%," ",nspk32%," ",nspk33%," ",nspk34%," ",nspk35%," ",nspk36%," ",nspk37%," ",nspk38%," ",nspk39%," ",nspk40%); 'PrintLog(";"," ",ramp[i%]," ",ramp[i%+1]); i% := i%+28; wend; next