CircuitInstruction
class qiskit.circuit.CircuitInstruction(operation, qubits=None, clbits=None)
Bases: object
Una única instrucción en un QuantumCircuitcompuesta por el operation y varios operandos.
Existe una posible confusión en los nombres de esta clase, Instructiony Operationy el atributo de esta clase operation. Nuestra terminología preferida es por analogía con los lenguajes ensambladores, donde una "instrucción" se compone de una "operación" y sus "operandos".
Históricamente, Instruction venía primero, y originalmente contenía los qubits sobre los que operaba y cualquier parámetro, por lo que era una verdadera "instrucción". Con el tiempo, QuantumCircuit se convirtió en responsable del seguimiento de qubits y clbits, y la clase se describió mejor como una "operación". Cambiar el nombre de un objeto tan básico supondría una interrupción de la API muy desagradable para los usuarios, por lo que nos hemos quedado con él.
Esta clase se creó para proporcionar un objeto de contexto de «instrucción» formal en QuantumCircuit.data, que hasta entonces se había definido mediante tuplas improvisadas. Con esto, y gracias a la incorporación de la Operation interfaz para añadir objetos más complejos a los circuitos, hemos aprovechado la ocasión para corregir la nomenclatura histórica. Por el momento, esto da lugar a una situación un tanto confusa en la que CircuitInstruction.operation suele ser una Instruction instancia de (Instruction implementa la Operation interfaz ), pero a medida que la Operation interfaz se vaya generalizando, es de esperar que esta confusión vaya desapareciendo.
Se trata de una clase interna ligera y la comprobación de errores es mínima; debe respetar las sugerencias de tipo cuando la utilice. Es responsabilidad del usuario asegurarse de que las mutaciones directas del objeto no invaliden los tipos, ni las restricciones impuestas por su contexto. Esto significa, por ejemplo, que qubits debe ser una secuencia de elementos distintos, sin duplicados.
Atributos
clbits
Una secuencia de los bits clásicos de los que esta operación lee o escribe.
label
matrix
name
Devuelve el nombre de la instrucción correspondiente a la operación de este nodo
operation
Operación lógica cuya ejecución representa esta instrucción.
params
qubits
Una secuencia de los qubits a los que se aplica la operación.
Métodos
copy
from_standard
static from_standard(standard, qubits, params, label=None)
is_control_flow
is_control_flow()
¿Es la Operation contenida en esta instrucción es una operación de flujo de control (es decir, una instancia de ControlFlowOp)?
is_controlled_gate
is_controlled_gate()
¿Es la Operation contenido en esta instrucción una subclase de ControlledGate?
is_directive
is_directive()
¿Es el Operation contenido en este nodo es una directiva?
is_parameterized
is_parameterized()
¿Contiene esta instrucción algún ParameterExpression parámetros?
is_standard_gate
is_standard_gate()
¿Es la Operation contenida en esta instrucción una puerta estándar Qiskit?
replace
replace(operation=None, qubits=None, clbits=None, params=None)
Crea una copia superficial con los campos dados reemplazados.
Devuelve
Una nueva instancia con los campos dados reemplazados.
Tipo de retorno