Exemple #1
0
    def __init__(self, qubits, observable=Observable.Z()):
        """
        - qubit (int): The index of the qubit
        - observable=Observable.Z() (matrix, tuple, or QNN-Gen Observable object): The observable
        to meausre with respect to
            - If matrix it should be a list or numpy.ndarray
            - If tuple, it should be of the form ("name": matrix)
        """

        if isinstance(qubits, int):
            self.qubits = [qubits]
        else:
            self.qubits = qubits  # just single-qubit for now

        if isinstance(observable, (list, np.ndarray)):
            self.observable = Observable(observable)

        elif isinstance(observable, tuple):
            self.observable = Observable(matrix=observable[1],
                                         name=observable[0])

        elif isinstance(observable, Observable):
            self.observable = observable

        else:
            raise ValueError(
                "Observable argument is not a correct type. Check the __init__ docstring."
            )

        if self.observable.name == "Z":
            requires_rotation = False
        else:
            requires_rotation = True

        super().__init__(qubits=self.qubits, rotate=requires_rotation)
Exemple #2
0
    def default_measurement(self, observable=None, measurement_qubit=None):
        """
        Default measurement is the Z expectation of the measurement_qubit

        Inputs:
            - observable=None [Observable]: If None, defaults to Observable.Z()
            - measurement_qubit [int]: If None, defaults to self.measurement_quibt = n_qubits//2

        Returns:
            - Expectation() measurement object
        """
        from Observable import Observable
        from Measurement import Expectation

        if observable is None:
            observable = Observable.Z()

        if measurement_qubit is None:
            measurement_qubit = self.measurement_qubit

        expectation = Expectation(measurement_qubit, observable)

        return expectation