from genQC.platform.tokenizer.circuits_tokenizer import CircuitTokenizer
Pennylane circuits backend
PennyLane based quantum circuit backend.
Utils
instruction_name_to_pennylane_name
instruction_name_to_pennylane_name (name:str)
Maps instruction names to PennyLane names.
ParametrizedPennylaneCircuit
ParametrizedPennylaneCircuit (circuit:pennylane.workflow.qnode.QNode, params:torch.Tensor)
Backend
CircuitsPennylaneBackend
CircuitsPennylaneBackend ()
A backend for PennyLane.
Test
genqc <-> backend
= torch.tensor([
tensor 3, 0, -2, 0, 1],
[0, 0, 2, 0, 1],
[0, 3, -2, 3, 0],
[=torch.int32)
], dtype
= torch.tensor([ # ... [max_params, time]
params_tensor 1, 1, 1, 1, 0.9],
[
])
= {"cp":1, "ccx":2, "rx":3}
vocabulary = CircuitTokenizer(vocabulary)
tokenizer = tokenizer.decode(tensor, params_tensor)
instructions
print() instructions.
CircuitInstruction(name='rx', control_nodes=[], target_nodes=[0], params=[12.566370964050293])
CircuitInstruction(name='rx', control_nodes=[], target_nodes=[2], params=[12.566370964050293])
CircuitInstruction(name='ccx', control_nodes=[0, 2], target_nodes=[1], params=[12.566370964050293])
CircuitInstruction(name='rx', control_nodes=[], target_nodes=[2], params=[12.566370964050293])
CircuitInstruction(name='cp', control_nodes=[], target_nodes=[0, 1], params=[11.9380521774292])
= CircuitsPennylaneBackend()
backend
= backend.genqc_to_backend(instructions, flip_qubit_order=False)
qc ; backend.draw(qc)