Exemple #1
0
    def test_construct_optimal_protocol_returns_successfully_fixed_steps(self):
        vc_ga_config = ga_configs.VoltageOptimizationConfig(
            window=100,
            step_size=1,
            steps_in_protocol=-1,  # Will be set later
            step_duration_bounds=(0.05, 0.6),
            step_voltage_bounds=(-.12, .06),
            target_currents=None,  # Will be set later
            population_size=2,
            max_generations=2,
            mate_probability=0.9,
            mutate_probability=0.9,
            gene_swap_probability=0.2,
            gene_mutation_probability=0.2,
            tournament_size=2)
        vc_optimization_config = ga_configs.CombinedVCConfig(
            currents=['i_na', 'i_k1', 'i_kr'],
            step_range=range(5, 6, 1),
            adequate_fitness_threshold=0.4,
            ga_config=vc_ga_config)

        random.seed(2)
        optimized_vc_protocol = voltage_clamp_optimization_experiments.\
            construct_optimal_protocol(
                vc_protocol_optimization_config=vc_optimization_config)
        self.assertEqual(len(optimized_vc_protocol.steps), 18)
        self.assertEqual(optimized_vc_protocol.steps[0],
                         protocols.VoltageClampProtocol.HOLDING_STEP)
        self.assertEqual(optimized_vc_protocol.steps[6],
                         protocols.VoltageClampProtocol.HOLDING_STEP)
        self.assertEqual(optimized_vc_protocol.steps[12],
                         protocols.VoltageClampProtocol.HOLDING_STEP)
Exemple #2
0
    def test_find_single_current_optimal_protocol_exceeds_threshold(self):
        vc_ga_config = ga_configs.VoltageOptimizationConfig(
            window=100,
            step_size=1,
            steps_in_protocol=-1,  # Will be set later
            step_duration_bounds=(0.05, 0.6),
            step_voltage_bounds=(-.12, .06),
            target_currents=None,  # Will be set later
            population_size=2,
            max_generations=2,
            mate_probability=0.9,
            mutate_probability=0.9,
            gene_swap_probability=0.2,
            gene_mutation_probability=0.2,
            tournament_size=2)
        vc_optimization_config = ga_configs.CombinedVCConfig(
            currents=['i_na'],
            step_range=range(5, 6, 1),
            adequate_fitness_threshold=0.4,
            ga_config=vc_ga_config)

        random.seed(2)
        optimized_vc_protocol = voltage_clamp_optimization_experiments.\
            find_single_current_optimal_protocol(
                current=vc_optimization_config.currents[0],
                vc_opt_config=vc_optimization_config)

        self.assertEqual(len(optimized_vc_protocol.steps), 6)
Exemple #3
0
 def setUp(self):
     vc_ga_config = ga_configs.VoltageOptimizationConfig(
         window=100,
         step_size=1,
         steps_in_protocol=6,
         step_duration_bounds=(0.1, 2.0),
         step_voltage_bounds=(-1.2, 0.6),
         population_size=2,
         max_generations=2,
         mate_probability=0.9,
         mutate_probability=1.0,
         gene_swap_probability=0.5,
         gene_mutation_probability=0.1,
         tournament_size=3)
     self.vc_ga = voltage_clamp_optimization.VCOGeneticAlgorithm(
         config=vc_ga_config)
Exemple #4
0
    def setUp(self):
        vc_ga_config = ga_configs.VoltageOptimizationConfig(
            window=100,
            step_size=1,
            steps_in_protocol=6,
            step_duration_bounds=(0.1, 2.0),
            step_voltage_bounds=(-1.2, 0.6),
            population_size=2,
            max_generations=2,
            mate_probability=0.9,
            mutate_probability=1.0,
            gene_swap_probability=0.5,
            gene_mutation_probability=0.1,
            tournament_size=3)
        self.ga_result = genetic_algorithm_results. \
            GAResultVoltageClampOptimization(config=vc_ga_config)

        sample_vc_protocol = protocols.VoltageClampProtocol(steps=[
            protocols.VoltageClampStep(duration=0.1, voltage=-0.08),
            protocols.VoltageClampStep(duration=0.1, voltage=-0.12),
            protocols.VoltageClampStep(duration=0.5, voltage=-0.06),
            protocols.VoltageClampStep(duration=0.05, voltage=-0.04),
            protocols.VoltageClampStep(duration=0.15, voltage=0.02),
            protocols.VoltageClampStep(duration=0.025, voltage=-0.08),
            protocols.VoltageClampStep(duration=0.3, voltage=0.04),
        ])
        generation_one = [
            genetic_algorithm_results.VCOptimizationIndividual(
                protocol=sample_vc_protocol, fitness=0),
            genetic_algorithm_results.VCOptimizationIndividual(
                protocol=sample_vc_protocol, fitness=2),
        ]
        generation_two = [
            genetic_algorithm_results.VCOptimizationIndividual(
                protocol=sample_vc_protocol, fitness=5),
            genetic_algorithm_results.VCOptimizationIndividual(
                protocol=sample_vc_protocol, fitness=9),
        ]
        self.ga_result.generations.append(generation_one)
        self.ga_result.generations.append(generation_two)
                                             tunable_parameters=PARAMETERS,
                                             params_lower_bound=0.1,
                                             params_upper_bound=3,
                                             mate_probability=0.9,
                                             mutate_probability=0.9,
                                             gene_swap_probability=0.2,
                                             gene_mutation_probability=0.2,
                                             tournament_size=4)

VCO_CONFIG_KERNIK = ga_configs.VoltageOptimizationConfig(
    window=100,
    step_size=50,
    steps_in_protocol=8,
    step_duration_bounds=(25, 800),
    step_voltage_bounds=(-120, 60),
    target_currents=['I_Na', 'I_K1', 'I_To', 'I_CaL', 'I_Kr', 'I_Ks'],
    population_size=10,
    max_generations=2,
    mate_probability=0.9,
    mutate_probability=0.9,
    gene_swap_probability=0.2,
    gene_mutation_probability=0.2,
    tournament_size=2)

COMBINED_VC_CONFIG = ga_configs.CombinedVCConfig(
    currents=[
        'I_Na',
        'I_K1',
        'I_To',
        'I_CaL',
        'I_Kr',
        'I_Ks',