API documentation¶
- class pytket.extensions.pennylane.PytketDevice(wires, shots=None, pytket_backend=<pytket.extensions.qiskit.backends.aer.AerStateBackend object>, optimisation_level=None, compilation_pass=None)[source]¶
PytketDevice allows pytket backends and compilation to be used as Pennylane devices.
- __init__(wires, shots=None, pytket_backend=<pytket.extensions.qiskit.backends.aer.AerStateBackend object>, optimisation_level=None, compilation_pass=None)[source]¶
Construct a device that use a Pytket Backend and compilation to execute circuits.
- Parameters:
wires (int) – Number of wires
shots (Optional[int], optional) – Number of shots to use (only relevant for sampling backends), defaults to None
pytket_backend (Backend, optional) – Pytket Backend class to use, defaults to AerStateBackend() to facilitate automated pennylane testing of this backend
optimisation_level (int, optional) – Backend default compilation optimisation level, ignored if compilation_pass is set, defaults to None
compilation_pass (Optional[BasePass], optional) – Pytket compiler pass with which to compile circuits, defaults to None
- Raises:
ValueError – If the Backend does not support shots or state results
- analytic_probability(wires=None)[source]¶
Return the (marginal) probability of each computational basis state from the last run of the device.
PennyLane uses the convention \(|q_0,q_1,\dots,q_{N-1}\rangle\) where \(q_0\) is the most significant bit.
If no wires are specified, then all the basis states representable by the device are considered and no marginalization takes place.
Note
marginal_prob()
may be used as a utility method to calculate the marginal probability distribution.
- apply(operations, rotations=None)[source]¶
Apply quantum operations, rotate the circuit into the measurement basis, and compile and execute the quantum circuit.
This method receives a list of quantum operations queued by the QNode, and should be responsible for:
Constructing the quantum program
(Optional) Rotating the quantum circuit using the rotation operations provided. This diagonalizes the circuit so that arbitrary observables can be measured in the computational basis.
Compile the circuit
Execute the quantum circuit
Both arguments are provided as lists of PennyLane
Operation
instances. Useful properties includename
,wires
, andparameters
:>>> op = qml.RX(0.2, wires=[0]) >>> op.name # returns the operation name "RX" >>> op.wires # returns a Wires object representing the wires that the operation acts on Wires([0]) >>> op.parameters # returns a list of parameters [0.2]
- Parameters:
operations (list[Operation]) – operations to apply to the device
- Keyword Arguments:
- Return type:
- capabilities()[source]¶
Get the capabilities of this device class.
Inheriting classes that change or add capabilities must override this method, for example via
@classmethod def capabilities(cls): capabilities = super().capabilities().copy() capabilities.update( supports_a_new_capability=True, ) return capabilities
- Returns:
results
- Return type:
dict[str->*]
- generate_samples()[source]¶
Returns the computational basis samples generated for all wires.
Note that PennyLane uses the convention \(|q_0,q_1,\dots,q_{N-1}\rangle\) where \(q_0\) is the most significant bit.
Warning
This method should be overwritten on devices that generate their own computational basis samples, with the resulting computational basis samples stored as
self._samples
.- Returns:
array of samples in the shape
(dev.shots, dev.num_wires)
- Return type:
array[complex]
- reset()[source]¶
Reset the backend state.
After the reset, the backend should be as if it was just constructed. Most importantly the quantum state is reset to its initial value.
- Return type:
- property state: ndarray¶
Returns the state vector of the circuit prior to measurement.
Note
Only state vector simulators support this property. Please see the plugin documentation for more details.
- pytket.extensions.pennylane.pennylane_to_tk(operations, wire_map, qreg, creg, measure=False)[source]¶
Convert a PennyLane circuit to a pytket circuit
- Parameters:
operations (
List
[Operation
]) – list of operationswire_map (
OrderedDict
) – mapping of qubitsqreg (
QubitRegister
) – target qubit registercreg (
BitRegister
) – target bit registermeasure (
bool
) – whether to add measurements
- Return type:
- Returns:
pytket circuit