Skip to content

Commit

Permalink
adding test ES for varying fscore
Browse files Browse the repository at this point in the history
  • Loading branch information
brian-phasecraft committed Aug 30, 2021
1 parent 9a4f1cb commit af30147
Show file tree
Hide file tree
Showing 8 changed files with 143 additions and 29 deletions.
8 changes: 4 additions & 4 deletions launch/local_launch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
num_instances=1 # number of instances in run
run_qhl=1 # perform QHL on known (true) model
run_qhl_multi_model=0 # perform QHL for defined list of models
experiments=25
particles=75
plot_level=6
experiments=500
particles=2000
plot_level=1


##### -------------------------------------------------- #####
# Choose an exploration strategy
# This will determine how QMLA proceeds.
##### -------------------------------------------------- #####
exploration_strategy="HeisenbergGeneticTest"
exploration_strategy="HeisenbergTestDynamicsReproduction"


##### -------------------------------------------------- #####
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,7 @@ def rand_model_f(self):
def random_models_sorted_by_f_score(
self,
num_models=14,
return_dict=False,
):
r"""
Generate a set of random models and sort them by F score.
Expand All @@ -333,7 +334,8 @@ def random_models_sorted_by_f_score(
sorted_models = list(sorted_models)
just_f = np.array(models_w_f)[:, 1]
just_f = [float(a) for a in just_f]

if return_dict:
return models_w_f
return sorted_models

######################
Expand Down
109 changes: 103 additions & 6 deletions qmla/exploration_strategies/genetic_algorithms/heisenberg_genetic.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def __init__(self, exploration_rules, true_model=None, **kwargs):
self.num_sites = qmla.model_building_utilities.get_num_qubits(self.true_model)

self.num_probes = 50
self.max_num_qubits = 7
self.max_num_qubits = self.num_sites
self.num_possible_models = 2 ** len(self.true_chromosome)
self.max_num_probe_qubits = self.num_sites

Expand Down Expand Up @@ -94,11 +94,10 @@ def __init__(self, exploration_rules, true_model=None, **kwargs):
self.fraction_opponents_experiments_for_bf = 0.4

# Parameter learning
self.max_time_to_consider = 15
self.max_time_to_consider = 25
self.min_param = 0.25
self.max_param = 0.75
self.force_evaluation = False
self.max_time_to_consider = 60
self.iqle_mode = True

# Timing info for cluster
Expand Down Expand Up @@ -126,6 +125,7 @@ def __init__(self, exploration_rules, true_model=None, **kwargs):
num_models=self.initial_num_models
)


class HeisenbergGeneticSingleLayer(HeisenbergGeneticXYZ):
def __init__(
self, exploration_rules, true_model=None, **kwargs # using that set by parent
Expand All @@ -137,7 +137,6 @@ def __init__(

test_fitness_models = [
# TODO these models F1-score is with respect to Ising model - find equivalent for Heis

# F=0
"pauliSet_3J4_zJz_d5+pauliSet_4J5_zJz_d5",
# 'pauliSet_2J4_zJz_d5+pauliSet_3J4_zJz_d5+pauliSet_4J5_zJz_d5',
Expand Down Expand Up @@ -171,14 +170,16 @@ def __init__(

self.initial_models = list(
np.random.choice(
test_fitness_models, len(test_fitness_models), replace=False
test_fitness_models,
4, # len(test_fitness_models), # TODO restore full list
replace=False,
)
)
if self.true_model not in self.initial_models:
rand_idx = self.initial_models.index(np.random.choice(self.initial_models))
self.initial_models[rand_idx] = self.true_model

self.branch_comparison_strategy = "optimal_graph" # 'all'
self.branch_comparison_strategy = "all"
self.tree_completed_initially = True
if self.tree_completed_initially:
self.max_spawn_depth = 1
Expand All @@ -191,6 +192,7 @@ def __init__(
self.num_processes_to_parallelise_over = 16
self.timing_insurance_factor = 0.75


class HeisenbergGeneticTest(HeisenbergGeneticXYZ):
def __init__(
self, exploration_rules, true_model=None, **kwargs # using that set by parent
Expand All @@ -201,3 +203,98 @@ def __init__(
)
self.iqle_mode = True


class HeisenbergTestDynamicsReproduction(HeisenbergGeneticXYZ):
def __init__(
self, exploration_rules, true_model=None, **kwargs # using that set by parent
):
true_model = "pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4"
super().__init__(
exploration_rules=exploration_rules, true_model=true_model, **kwargs
)

test_fitness_models = [
"pauliSet_1J2_xJx_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J3_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J4_zJz_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_xJx_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4",
"pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_xJx_d4+pauliSet_2J4_xJx_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_xJx_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J3_xJx_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J4_xJx_d4+pauliSet_2J3_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4",
"pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_zJz_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J3_zJz_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J3_xJx_d4+pauliSet_2J3_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J3_xJx_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_yJy_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_yJy_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_yJy_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_yJy_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_3J4_xJx_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J3_yJy_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_3J4_xJx_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_1J4_zJz_d4+pauliSet_2J3_xJx_d4+pauliSet_2J4_xJx_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_yJy_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_zJz_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_xJx_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_2J4_zJz_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_xJx_d4+pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_xJx_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
"pauliSet_1J2_yJy_d4+pauliSet_1J2_zJz_d4+pauliSet_1J3_zJz_d4+pauliSet_1J4_yJy_d4+pauliSet_2J3_xJx_d4+pauliSet_2J3_yJy_d4+pauliSet_2J4_xJx_d4+pauliSet_3J4_xJx_d4+pauliSet_3J4_zJz_d4",
]

# self.initial_models = list(
# np.random.choice(
# test_fitness_models,
# len(test_fitness_models), # TODO restore full list
# replace=False,
# )
# )
self.initial_models = [
qmla.model_building_utilities.alph(m) for m in self.initial_models
]
if self.true_model not in self.initial_models:
rand_idx = self.initial_models.index(np.random.choice(self.initial_models))
self.initial_models[rand_idx] = self.true_model
self.qhl_models = self.initial_models

self.branch_comparison_strategy = "optimal_graph" # "all"
self.fraction_particles_for_bf = 0.01 # don't care about comparisons
self.fraction_own_experiments_for_bf = 0.01
self.fraction_opponents_experiments_for_bf = 0.01
self.tree_completed_initially = True
if self.tree_completed_initially:
self.max_spawn_depth = 1
self.initial_num_models = len(self.initial_models)
self.max_num_models_by_shape = {
self.num_sites: (len(self.initial_models) * self.max_spawn_depth) / 8,
"other": 0,
}

self.num_processes_to_parallelise_over = 16
self.timing_insurance_factor = 0.75
6 changes: 3 additions & 3 deletions qmla/model_for_comparison.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,17 +165,17 @@ def __init__(
else:
self.is_true_model = False

self.model_terms_matrices = self.model_constructor.terms_matrices
self.model_terms_parameters_final = np.array(self.final_learned_params)
self.exploration_class = qmla.get_exploration_strategy.get_exploration_class(
exploration_rules=self.exploration_strategy_of_this_model,
log_file=self.log_file,
qmla_id=self.qmla_id,
)
self.model_constructor = self.exploration_class.model_constructor(
name=model_name
name=self.model_name
)
self.model_name_latex = self.model_constructor.name_latex
self.model_terms_matrices = self.model_constructor.terms_matrices
self.model_terms_parameters_final = np.array(self.final_learned_params)
# self.model_name_latex = self.exploration_class.latex_name(self.model_name)

# New instances of model and updater used by QInfer
Expand Down
20 changes: 16 additions & 4 deletions qmla/quantum_model_learning_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -1753,9 +1753,22 @@ def get_results_dict(self, model_id=None):
"""

if model_id is None:
model_id = self.champion_model_id
if self.champion_model_id != -1:
model_id = self.champion_model_id
elif self.true_model_id != -1:
model_id = self.true_model_id
else:
model_id = 1
self.log_print(
["No model id passed to get_results_dict; defaulting to 1"]
)

mod = self.get_model_storage_instance_by_id(model_id)
try:
mod = self.get_model_storage_instance_by_id(model_id)
except:
self.log_print(
["Could not get model storage instance for model {}".format(model_id)]
)
model_name = mod.model_name

# Get expectation values of this model
Expand Down Expand Up @@ -2245,7 +2258,7 @@ def run_quantum_hamiltonian_learning_multiple_models(self, model_names=None):
model_list=model_names,
)
self.qhl_mode_multiple_models = True
self.champion_model_id = (-1,) # TODO just so not to crash during dynamics plot
self.champion_model_id = -1 # TODO just so not to crash during dynamics plot
self.qhl_mode_multiple_models_model_ids = [
self._get_model_id_from_name(model_name=mod_name)
for mod_name in model_names
Expand Down Expand Up @@ -2553,7 +2566,6 @@ def _analyse_multiple_model_qhl(self):
name = mod.model_name
results_file = str(
self.qmla_controls.results_directory
+ output_prefix
+ "results_"
+ str("m{}_q{}.p".format(int(mid), self.qmla_controls.long_id))
)
Expand Down
21 changes: 12 additions & 9 deletions qmla/remote_bayes_factor.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,15 +261,18 @@ def log_print(to_print_list):

# Plot dynamics on which models were compared
if plot_level >= 4:
log_print(["Plotting dynamics of models involved."])
plot_dynamics_from_models(
models=[model_a, model_b],
exp_msmts=qmla_core_info_dict["experimental_measurements"],
bayes_factor=bayes_factor,
bf_times=model_a.bf_times, # same as model_b.bf_times
save_directory=bf_data_folder,
figure_format=figure_format,
)
try:
log_print(["Plotting dynamics of models involved."])
plot_dynamics_from_models(
models=[model_a, model_b],
exp_msmts=qmla_core_info_dict["experimental_measurements"],
bayes_factor=bayes_factor,
bf_times=model_a.bf_times, # same as model_b.bf_times
save_directory=bf_data_folder,
figure_format=figure_format,
)
except:
log_print(["plot failure: plot_dynamics_from_models"])
else:
log_print(["NOT Plotting dynamics of models involved."])

Expand Down
1 change: 0 additions & 1 deletion qmla/string_processing_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,6 @@ def process_multipauli_term(term):
# b is operator on site k
# N is total number of sites
# e.g. pauliSet_xJy_1J3_d4
print("PROCESSING MULTIPAULI")

components = term.split("_")
components.remove("pauliSet")
Expand Down
3 changes: 2 additions & 1 deletion requirements_further.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
expm==0.1.5
git+git://github.com/ProjectQ-Framework/ProjectQ.git@master
git+git://github.com/qutip/qutip.git@master #There has been difficulty installing and this can alternatively be done with pip install qutip==4.6.2
qutip==4.6.2
# git+git://github.com/qutip/qutip.git@master #There has been difficulty installing and this can alternatively be done with pip install

0 comments on commit af30147

Please sign in to comment.