Exemplo n.º 1
0
def step_waves(I, f, duty, t, dt):
    times = fsutil.create_times(t, dt)

    wave = I * square(2 * np.pi * f * times - np.pi, duty=duty)
    wave[wave < 0] = 0.0

    return wave
Exemplo n.º 2
0
def load_smith_lfps(name, channel_num):
    """Load Smith LFP data.
    
    NOTE: .ns2 files must first be converted to .mat
    """

    # Load data
    fi = h5py.File(name)

    # Parse time
    fs = float(fi['Fs'].value)
    n_samples = float(fi['nSamples'].value)
    T = n_samples / fs

    times = create_times(T, 1 / fs)

    # Load data
    data = fi['data'].value

    return fs, times, data[:, channel_num]
Exemplo n.º 3
0
def poisson_oscillation(t=1,
                        t_onset=0.2,
                        n_cycles=10,
                        rate=6,
                        f=8,
                        phi=0,
                        n=10,
                        dt=1e-3,
                        min_rate=0.0,
                        name=None,
                        seed=None):
    """Simulate a Poisson population, oscillating"""

    # Define time
    times = fsutil.create_times(t, dt=dt)

    # Create rate wave, over times
    osc = (rate / 2 * (1 + np.sin((times * f * 2 * np.pi) + phi))) + min_rate

    # Truncate it to a n_cycle burst, starting at t_onset
    if np.isclose(f, 0.0):
        osc[:] = min_rate
    else:
        burst_l = (1 / float(f)) * n_cycles

        m = np.logical_not(
            np.logical_and(times >= t_onset, times <= (t_onset + burst_l)))
        osc[m] = min_rate

    # Sample osc with N poisson 'cells'
    nrns = neurons.Spikes(n, t, dt=dt, seed=seed)
    ns, ts = fsutil.to_spiketimes(times, nrns.poisson(osc))

    if name is not None:
        write_spikes(name, ns, ts)
        return None
    else:
        return ns, ts
Exemplo n.º 4
0
# -------------------------------------------------------------------
if __name__ == "__main__":
    args = docopt(__doc__, version='alpha')
                                                  
    name = args['NAME']

    base_par1 = args['STIM']
    par1_path = os.path.dirname(base_par1)
    par1_name = os.path.splitext(os.path.basename(base_par1))[0]

    threshold = float(args['-t'])

    # -------------------------------------------------------------------
    t = 0.8
    dt = 1e-3
    times = create_times(t, dt)

    n_stim = 36 * 10 # 36 trials 10 per block in Mathewson 
    rates = np.linspace(1, 100, 10) 

    sigma = 10  
    loc = ['r_E', ]

    hits = np.zeros((n_stim, len(rates)))
    false_alarms = np.zeros((n_stim, len(rates)))
    d_primes = np.zeros((n_stim, len(rates)))
    for i, r in enumerate(rates):
        
        # Load params
        n_pop, pops, names, inputs, backs, conns = parse(base_par1)