コード例 #1
0
    def optimize_job(self, model_type, score_type=ZScore):
        find_sweep_with_n_spikes = 8
        model = GenericModel()
        model.backend = model_type
        model.params = BPO_PARAMS[model_type]
        fixed_current = 122 * qt.pA
        if model_type == "ADEXP":
            NGEN = 55
            MU = 16
        else:
            NGEN = 45
            MU = 100

        mapping_funct = dask_map_function
        cell_evaluator, simple_cell, suite, target_current, spk_count = wrap_setups(
            self.specimen_id,
            model_type,
            find_sweep_with_n_spikes,
            template_model=model,
            fixed_current=False,
            cached=False,
            score_type=score_type,
        )
        final_pop, hall_of_fame, logs, hist = opt_exec(MU, NGEN, mapping_funct,
                                                       cell_evaluator)
        opt, target, scores, obs_preds, df = opt_to_model(
            hall_of_fame, cell_evaluator, suite, target_current, spk_count)
        best_ind = hall_of_fame[0]
        fitnesses = cell_evaluator.evaluate_with_lists(best_ind)
        target.vm_soma = suite.traces["vm_soma"]
        return np.sum(fitnesses)
コード例 #2
0
    def test_opt_1(self):
        cellmodel = "ADEXP"

        if cellmodel == "IZHI":
            model = model_classes.IzhiModel()
        if cellmodel == "MAT":
            model = model_classes.MATModel()
        if cellmodel == "ADEXP":
            model = model_classes.ADEXPModel()

        dtc = DataTC()
        dtc.backend = cellmodel
        dtc._backend = model._backend
        dtc.attrs = model.attrs
        dtc.params = {
            k: np.mean(v)
            for k, v in MODEL_PARAMS[cellmodel].items()
        }
        other_params = BPO_PARAMS[cellmodel]
        dtc = dtc_to_rheo(dtc)
        assert dtc.rheobase is not None
        self.assertIsNotNone(dtc.rheobase)
        vm, plt, dtc = inject_and_plot_model(dtc, plotly=False)
        self.assertIsNotNone(vm)
        model = dtc.dtc_to_model()
        self.assertIsNotNone(model)
コード例 #3
0
    def test_opt_1(self):
        specimen_id = self.ids[1]
        cellmodel = "ADEXP"

        if cellmodel == "IZHI":
            model = model_classes.IzhiModel()
        if cellmodel == "MAT":
            model = model_classes.MATModel()
        if cellmodel == "ADEXP":
            model = model_classes.ADEXPModel()

        target_num_spikes = 8
        dtc = DataTC()
        dtc.backend = cellmodel
        dtc._backend = model._backend
        dtc.attrs = model.attrs
        dtc.params = {
            k: np.mean(v)
            for k, v in MODEL_PARAMS[cellmodel].items()
        }

        dtc = dtc_to_rheo(dtc)
        assert dtc.rheobase is not None
        self.assertIsNotNone(dtc.rheobase)
        vm, plt, dtc = inject_and_plot_model(dtc, plotly=False)
        fixed_current = 122 * qt.pA
        model, suite, nu_tests, target_current, spk_count = opt_setup(
            specimen_id,
            cellmodel,
            target_num_spikes,
            provided_model=model,
            fixed_current=False,
            cached=True)
        model = dtc.dtc_to_model()
        model.seeded_current = target_current['value']
        model.allen = True
        model.seeded_current
        model.NU = True
        cell_evaluator, simple_cell = opt_setup_two(model,
                                                    cellmodel,
                                                    suite,
                                                    nu_tests,
                                                    target_current,
                                                    spk_count,
                                                    provided_model=model)
        NGEN = 15
        MU = 12

        mapping_funct = dask_map_function
        final_pop, hall_of_fame, logs, hist = opt_exec(MU, NGEN, mapping_funct,
                                                       cell_evaluator)
        opt, target = opt_to_model(hall_of_fame, cell_evaluator, suite,
                                   target_current, spk_count)
        best_ind = hall_of_fame[0]
        fitnesses = cell_evaluator.evaluate_with_lists(best_ind)
        assert np.sum(fitnesses) < 0.7
        self.assertGreater(0.7, np.sum(fitnesses))

        #obnames = [obj.name for obj in cell_evaluator.objectives]

        gen_numbers = logs.select('gen')
        min_fitness = logs.select('min')
        max_fitness = logs.select('max')
        avg_fitness = logs.select('avg')
        plt.plot(gen_numbers, max_fitness, label='max fitness')
        plt.plot(gen_numbers, avg_fitness, label='avg fitness')
        plt.plot(gen_numbers, min_fitness, label='min fitness')
        plt.plot(gen_numbers, min_fitness, label='min fitness')
        plt.semilogy()
        plt.xlabel('generation #')
        plt.ylabel('score (# std)')
        plt.legend()
        plt.xlim(min(gen_numbers) - 1, max(gen_numbers) + 1)
        #model = opt.dtc_to_model()
        plt.plot(opt.vm15.times, opt.vm15)
        plt.plot(opt.vm15.times, opt.vm15)
        target.vm15 = suite.traces['vm15']
        plt.plot(target.vm15.times, target.vm15)
        target.vm15 = suite.traces['vm15']
        check_bin_vm15(target, opt)
コード例 #4
0
if cellmodel == "ADEXP":
    model = model_classes.ADEXPModel()

specific_filter_list = [
    'ISI_log_slope_1.5x', 'mean_frequency_1.5x', 'adaptation_index2_1.5x',
    'first_isi_1.5x', 'ISI_CV_1.5x', 'median_isi_1.5x', 'Spikecount_1.5x',
    'all_ISI_values', 'ISI_values', 'time_to_first_spike',
    'time_to_last_spike', 'time_to_second_spike', 'spike_times'
]
simple_yes_list = specific_filter_list
target_num_spikes = 8
dtc = DataTC()
dtc.backend = cellmodel
dtc._backend = model._backend
dtc.attrs = model.attrs
dtc.params = {k: np.mean(v) for k, v in MODEL_PARAMS[cellmodel].items()}
dtc = dtc_to_rheo(dtc)
vm, plt, dtc = inject_and_plot_model(dtc, plotly=False)
fixed_current = 122 * qt.pA
model, suite, nu_tests, target_current, spk_count = opt_setup(
    specimen_id,
    cellmodel,
    target_num_spikes,
    provided_model=model,
    fixed_current=False)
model = dtc.dtc_to_model()
model.seeded_current = target_current['value']
model.allen = True
model.seeded_current
model.NU = True
cell_evaluator, simple_cell = opt_setup_two(model,
コード例 #5
0
    def test_opt(self):
        ids = [
            324257146, 325479788, 476053392, 623893177, 623960880, 482493761,
            471819401
        ]

        specimen_id = ids[1]
        cellmodel = "MAT"

        if cellmodel == "IZHI":
            model = model_classes.IzhiModel()
        if cellmodel == "MAT":
            model = model_classes.MATModel()
        if cellmodel == "ADEXP":
            model = model_classes.ADEXPModel()

        specific_filter_list = [
            'ISI_log_slope_1.5x', 'mean_frequency_1.5x',
            'adaptation_index2_1.5x', 'first_isi_1.5x', 'ISI_CV_1.5x',
            'median_isi_1.5x', 'Spikecount_1.5x', 'all_ISI_values',
            'ISI_values', 'time_to_first_spike', 'time_to_last_spike',
            'time_to_second_spike', 'spike_times'
        ]
        simple_yes_list = specific_filter_list
        target_num_spikes = 8
        dtc = DataTC()
        dtc.backend = cellmodel
        dtc._backend = model._backend
        dtc.attrs = model.attrs
        dtc.params = {
            k: np.mean(v)
            for k, v in MODEL_PARAMS[cellmodel].items()
        }
        dtc = dtc_to_rheo(dtc)
        vm, plt, dtc = inject_and_plot_model(dtc, plotly=False)
        fixed_current = 122 * qt.pA
        model, suite, nu_tests, target_current, spk_count = opt_setup(
            specimen_id,
            cellmodel,
            target_num_spikes,
            provided_model=model,
            fixed_current=False)
        model = dtc.dtc_to_model()
        model.seeded_current = target_current['value']
        model.allen = True
        model.seeded_current
        model.NU = True
        cell_evaluator, simple_cell = opt_setup_two(model,
                                                    cellmodel,
                                                    suite,
                                                    nu_tests,
                                                    target_current,
                                                    spk_count,
                                                    provided_model=model)
        NGEN = 15
        MU = 12

        mapping_funct = dask_map_function
        final_pop, hall_of_fame, logs, hist = opt_exec(MU, NGEN, mapping_funct,
                                                       cell_evaluator)
        opt, target = opt_to_model(hall_of_fame, cell_evaluator, suite,
                                   target_current, spk_count)
        best_ind = hall_of_fame[0]
        fitnesses = cell_evaluator.evaluate_with_lists(best_ind)
        assert np.sum(fitnesses) < 0.7
        self.assertGreater(0.7, np.sum(fitnesses))

        #obnames = [obj.name for obj in cell_evaluator.objectives]

        gen_numbers = logs.select('gen')
        min_fitness = logs.select('min')
        max_fitness = logs.select('max')
        avg_fitness = logs.select('avg')
        plt.plot(gen_numbers, max_fitness, label='max fitness')
        plt.plot(gen_numbers, avg_fitness, label='avg fitness')
        plt.plot(gen_numbers, min_fitness, label='min fitness')
        plt.plot(gen_numbers, min_fitness, label='min fitness')
        plt.semilogy()
        plt.xlabel('generation #')
        plt.ylabel('score (# std)')
        plt.legend()
        plt.xlim(min(gen_numbers) - 1, max(gen_numbers) + 1)
        #model = opt.dtc_to_model()
        plt.plot(opt.vm15.times, opt.vm15)
        plt.plot(opt.vm15.times, opt.vm15)
        target.vm15 = suite.traces['vm15']
        plt.plot(target.vm15.times, target.vm15)
        target.vm15 = suite.traces['vm15']
        check_bin_vm15(target, opt)