Circuits
[1]:
import numpy as np
from qilisdk.backends import QutipBackend
from qilisdk.digital import CNOT, RX, Circuit, H, M
from qilisdk.functionals import Sampling
# Create a circuit with 2 qubits
circuit = Circuit(2)
circuit.add(H(0)) # Apply Hadamard on qubit 0
circuit.add(RX(0, theta=np.pi)) # Apply RX rotation on qubit 0con
circuit.add(CNOT(0, 1)) # Add a CNOT gate between qubit 0 and 1
# Retrieve the current gate parameters
print("Initial parameters:", circuit.get_parameter_values())
# Update circuit parameters (e.g., update RX rotation angle)
circuit.set_parameter_values([2 * np.pi])
# Execute the circuit simulation using QutipBackend
backend = QutipBackend()
results = backend.execute(Sampling(circuit))
# Display the simulation output and measurement probabilities
print("Simulation Results:")
print(results)
print("Probabilities:", results.probabilities)
Initial parameters: [3.141592653589793]
Simulation Results:
SamplingResult(
nshots=1000,
samples={'00': 489, '11': 511}
)
Probabilities: {'11': 0.511, '00': 0.489}
OpenQASM 2.0 Interoperability
[2]:
import numpy as np
from qilisdk.digital import CNOT, RX, Circuit, H
from qilisdk.utils.openqasm2 import from_qasm2, from_qasm2_file, to_qasm2, to_qasm2_file
# Create a sample circuit
circuit = Circuit(3)
circuit.add(H(0))
circuit.add(CNOT(0, 1))
circuit.add(RX(2, theta=np.pi))
circuit.add(M(0, 1, 2))
# Serialize to QASM string
qasm_code = to_qasm2(circuit)
print("Generated QASM:")
print(qasm_code)
# Deserialize back to a circuit
reconstructed_circuit = from_qasm2(qasm_code)
# Save to and load from a file
to_qasm2_file(circuit, "circuit.qasm")
reconstructed_circuit = from_qasm2_file("circuit.qasm")
Generated QASM:
OPENQASM 2.0;
include "qelib1.inc";
qreg q[3];
creg c[3];
h q[0];
cx q[0], q[1];
rx(3.141592653589793) q[2];
measure q -> c;