Source code for qmla.exploration_strategies.nv_centre_spin_characterisation.nature_physics_2021.experimental_data_nv
import random
import sys
import os
import pickle
from qmla.exploration_strategies.nv_centre_spin_characterisation.nature_physics_2021 import (
SimulatedExperimentNVCentre,
TieredGreedySearchNVCentre,
)
import qmla.shared_functionality.qinfer_model_interface
import qmla.shared_functionality.probe_set_generation
import qmla.shared_functionality.experiment_design_heuristics
import qmla.shared_functionality.expectation_value_functions
from qmla import model_building_utilities
__all__ = ["NVCentreExperimentalData"]
[docs]class NVCentreExperimentalData(
# TieredGreedySearchNVCentre, #
SimulatedExperimentNVCentre
):
r"""
Study experimental data.
Uses the same model generation/comparison strategies as
:class:`~qmla.exploration_strategies.nv_centre_spin_characterisation.SimulatedExperimentNVCentre`,
but targets data measured from a real system.
This is done by using an alternative qinfer_model_subroutine,
which searches in the dataset for the system's likelihood,
rather than computing it.
"""
def __init__(self, exploration_rules, **kwargs):
super().__init__(exploration_rules=exploration_rules, **kwargs)
self.true_model = "xTi+yTi+zTi+zTz"
self.true_model = qmla.model_building_utilities.alph(self.true_model)
# self.expectation_value_subroutine = qmla.shared_functionality.expectation_value_functions.n_qubit_hahn_evolution_double_time_reverse
self.expectation_value_subroutine = (
qmla.shared_functionality.expectation_value_functions.hahn_via_z_pi_gate
)
self.qinfer_model_subroutine = (
qmla.shared_functionality.qinfer_model_interface.QInferNVCentreExperiment
)
self.system_probes_generation_subroutine = (
qmla.shared_functionality.probe_set_generation.plus_plus_with_phase_difference
)
self.simulator_probes_generation_subroutine = (
self.system_probes_generation_subroutine
)
self.shared_probes = False
self.probe_noise_level = 1e-3
self.max_time_to_consider = 4.24
[docs] def get_measurements_by_time(self):
r"""
Uses the experimental data as target system data.
"""
data_path = os.path.abspath(
os.path.join(
os.path.dirname(os.path.realpath(__file__)),
"..",
"data/NVB_rescale_dataset.p",
)
)
self.log_print(["Getting experimental data from {}".format(data_path)])
self.measurements = pickle.load(open(data_path, "rb"))
return self.measurements