def get_high_low_beta_firing_rates(session,area,unit,epoch,fa,fb): Fs=1000 ''' Computes the unit firing rates during high and low beta events for the given task epoch. Good trials only. Defaults to Fs = 1000 returns threshold, event_rate, nonevent_rate ''' threshold,events = get_high_beta_events(session,area,get_unit_channel(session,area,unit),epoch,lowf=fa,highf=fb) spikes = get_spikes_session_filtered_by_epoch(session,area,unit,epoch) n_total_spikes = len(spikes) n_total_times = len(get_good_trials(session))*(epoch[-1]-epoch[-2]) events = array(events) if shape(events)[0]==0: print 'NO EVENTS!!!!!!!' return threshold, NaN, Fs*float(n_total_spikes)/n_total_times # linear time solution exists but quadratic time solution is quicker to code. n_event_spikes = sum((events[:,1][:,None]>=spikes[None,:]) &(events[:,0][:,None]<=spikes[None,:])) n_nonevent_spikes = n_total_spikes-n_event_spikes n_event_times = sum(events[:,1]-events[:,0]) n_nonevent_times = n_total_times - n_event_times event_rate = Fs*float(n_event_spikes)/n_event_times nonevent_rate = Fs*float(n_nonevent_spikes)/n_nonevent_times print session,area,unit,epoch,event_rate,nonevent_rate, threshold return threshold, event_rate, nonevent_rate
def get_high_and_low_beta_spikes(session,area,unit,epoch,fa,fb): ''' threshold, event_spikes, nonevent_spikes = get_high_and_low_beta_spikes(session,area,unit,epoch,ishighbeta) ''' threshold,events = get_high_beta_events(session,area,get_unit_channel(session,area,unit),epoch,lowf=fa,highf=fb) spikes = get_spikes_session_filtered_by_epoch(session,area,unit,epoch) n_total_spikes = len(spikes) n_total_times = len(get_good_trials(session))*(epoch[-1]-epoch[-2]) events = array(events) if shape(events)[0]==0: print 'NO EVENTS!!!!!!!' return threshold, NaN, Fs*float(n_total_spikes)/n_total_times event_spikes = (events[:,1][:,None]>=spikes[None,:])\ &(events[:,0][:,None]<=spikes[None,:]) is_in_event = sum(event_spikes,0) return threshold, spikes[is_in_event==1], spikes[is_in_event==0]