Пример #1
0
def test_models():
    '''
    Simulate one neurons with each defaults model
    '''
    models      = ds.get_models()
    observables = ds.get_default_properties('neuron', 'observables', settables_only=False)

    for m in models:
        print(m)
        ds.reset_kernel()
        kernel = {"environment_required": False}

        params = {
            "growth_cone_model": m,
            "position" : [0.,0.]*um
        }

        ds.set_kernel_status(kernel)

        gids = ds.create_neurons(n=1, num_neurites=3, params=params)

        rec = [ds.create_recorders(gids, obs, levels="neuron") for obs in observables]

        ds.simulate(10*hour)

        for r in rec:
            ds.get_recording(r)
Пример #2
0
        for i, s in enumerate(step_size):
            for j, points in enumerate(axons):
                tort_evol[j][i] = tortuosity(points, step_size=s)
        up, median, low = np.percentile(tort_evol, [90, 50, 10], axis=0)

        ax.plot(step_size,
                median,
                color=cmap(colors[k]),
                alpha=1,
                label="resol: {}".format(resol))
        ax.plot(step_size, low, ls="--", color=cmap(colors[k]), alpha=0.5)
        ax.plot(step_size, up, ls="--", color=cmap(colors[k]), alpha=0.5)

    # get observable status
    if recording:
        data = ds.get_recording(rec, "compact")

        data_times[resol] = next(iter(data[observable]["times"].values()))

        statuses[resol] = []

        if observable == "num_tumbles":
            for v in data[observable]["data"].values():
                statuses[resol].append(v[-1])
            hist, _ = np.histogram(statuses[resol], tbins)
            statuses[resol] = hist
        else:
            for v in data[observable]["data"].values():
                statuses[resol].append(v)

    if do_angles:
Пример #3
0
# create neurons

n = ds.create_neurons(n=num_neurons, params=neuron_params,
                      axon_params=axon_params, dendrites_params=dend_params,
                      num_neurites=3)

rec = ds.create_recorders(n, "num_growth_cones")

# first development phase : initial pure elongation (no branching)  during 7 days

ds.simulate(10*day)

print(ds.get_kernel_status('time'))

recording = ds.get_recording(rec, record_format="compact")
print(recording)

ds.plot.plot_neurons(mode="mixed", show=True)

# second development phase : with lateral branching

# updated parameters

lb_axon = {
    # extension parameters
    "speed_growth_cone": 0.02*um/minute,

    # branching choice and parameters
    "use_van_pelt": False,
    "use_flpl_branching": True,
Пример #4
0
def test_branching():
    do_plot = int(os.environ.get("DO_PLOT", True))
    num_omp = 4
    res = 10.

    # seed
    initial_state = np.random.get_state()
    seeds = np.random.choice(np.arange(0, 1000), size=num_omp,
                             replace=False)
    num_neurons = 10

    gc_model = 'gf_po_nm'
    btype = 'flpl'
    branching_rate = btype + '_branching_rate'
    branching_type = 'use_' + btype + '_branching'

    neuron_params = {
        "position" : np.random.uniform(
            -1000, 1000, (num_neurons, 2)) * um,

        "growth_cone_model": gc_model,
        "sensing_angle": 45.*deg,
        "speed_growth_cone": .1 * um / minute,
        "persistence_length": 100. * um,

        "filopodia_finger_length": 10. * um,
        "filopodia_min_number": 30,

        "lateral_branching_angle_mean": 25.*deg,
        "lateral_branching_angle_std": 0.*deg,
        "min_branching_distance": 5.*um,
        "taper_rate": 0.,
        "diameter_fraction_lb": 1.,

        branching_type: True,
        "use_van_pelt": False,
    }

    expected_branching = 500.
    test_nb = 6

    rates = np.linspace(0.001, 0.005, test_nb)
    mean = []
    er = []
    Nb = []
    scipy_exp = []

    for rate in rates:
        ds.reset_kernel()

        kernel = {
        "resolution": res*minute,
        "seeds": seeds,
        "environment_required": False,
        "interactions": False,
        "num_local_threads": num_omp,
        }

        ds.set_kernel_status(kernel)

        sim_time = expected_branching/rate * minute
        sim_time.ito(day)
        
        neuron_params[branching_rate] = rate * cpm

        pop = ds.create_neurons(n=num_neurons, params=neuron_params,
                                num_neurites=1)
        
        rec = ds.create_recorders(pop, 'num_growth_cones',
                                  levels='neuron')

        ds.simulate(sim_time)

        branch_times = ds.get_recording(rec)['num_growth_cones']['times']
        Dt = []
        for bn in branch_times.values():
            if len(bn) > 1:
                Dt.extend(np.diff(bn))

        mean.append(np.mean(Dt))

        # 99% confidence interval for a Poisson distribution gives 2.576
        er.append(2.576/rate/np.sqrt(len(Dt)))
        Nb.append(len(Dt))

    mean_merr = np.subtract(mean, er)
    mean_perr = np.add(mean, er)
    test1 = (1/rates > mean_merr)
    test2 = (1/rates < mean_perr)

    if do_plot:
        import matplotlib.pyplot as plt
        plt.plot(rates, mean)
        plt.plot(rates, 1/rates, ls=":")
        plt.fill_between(rates, mean_merr, mean_perr, alpha=0.5)
        plt.show()
    
    assert test1.all() and test2.all(), \
        "Failed test with state " + str(initial_state)