Serialización¶
vqubit puede guardar y recuperar circuitos como texto, y exportarlos a OpenQASM 2.0.
JSON¶
Cada valor serializable se convierte en un objeto JSON con un campo
cirq_type, y read_json lo reconstruye.
import vqubit as vq
q0, q1 = vq.LineQubit.range(2)
circuito = vq.Circuit(vq.H(q0), vq.CNOT(q0, q1), vq.Rz(0.3)(q1))
texto = vq.to_json(circuito)
recuperado = vq.read_json(texto)
print(recuperado == circuito) # True
También hay variantes comprimidas:
Puedes consultar el tipo de un valor y buscar la clase por su nombre:
print(vq.json_cirq_type(vq.X)) # 'XPowGate'
print(vq.cirq_type_from_json('LineQubit')) # <class 'vqubit._qubits.LineQubit'>
OpenQASM 2.0¶
import vqubit as vq
q0, q1 = vq.LineQubit.range(2)
circuito = vq.Circuit(vq.H(q0), vq.CNOT(q0, q1), vq.measure(q0, q1, key="m"))
print(vq.qasm(circuito))
Produce:
// Generated by vqubit
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg m_m[2];
h q[0];
cx q[0],q[1];
measure q[0] -> m_m[0];
measure q[1] -> m_m[1];
Las puertas sin instrucción nativa (como la de Fredkin) se expanden con su descomposición antes de escribirse.
Quirk¶
quirk_url convierte un circuito en un enlace al simulador
Quirk, para las puertas que Quirk entiende de
forma nativa:
q0, q1 = vq.LineQubit.range(2)
circuito = vq.Circuit(vq.H(q0), vq.CNOT(q0, q1))
print(vq.quirk_url(circuito)) # https://algassert.com/quirk#circuit=...
El objeto QasmArgs transporta el contexto (nombres de qubits, precisión y
argumentos libres) que recibe el escritor QASM de una puerta.
Siguientes pasos¶
- Ejecuta tus circuitos en dispositivos locales.