PauliProductRotationGate
class qiskit.circuit.library.PauliProductRotationGate(pauli, angle, label=None)
Bases: Gate
Una rotación de Pauli genérica.
Esto implementa la operación unitaria
para un valor de Pauli y un ángulo de rotación , que podrían representarse mediante un parámetro no vinculado.
Ejemplo:
from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliProductRotationGate
from qiskit.quantum_info import Pauli
pauli = Pauli("XYZ")
ppr = PauliProductRotationGate(pauli, angle=0.2)
circuit = QuantumCircuit(10)
circuit.append(ppr, [1, 2, 6])Parámetros
- pauli (qiskit.quantum_info.Pauli) – El Pauli que define el eje de rotación. Puede incluir una fase de , pero no ni .
- angle (ParameterValueType) – El ángulo de rotación.
- label (str | None) – Una etiqueta opcional para la puerta que se mostrará en las visualizaciones de circuitos.
Atributos
base_class
Obtén la clase base de esta instrucción. Esto forma parte, sin duda, del árbol genealógico de self.
La «clase base» de una instrucción es la clase más baja de su árbol de herencia con la que el objeto debe considerarse totalmente compatible para todas las aplicaciones de circuitos. Esto suele significar que la subclase se define únicamente para facilitar el trabajo del programador con respecto a la clase base, y que la clase base es la «verdadera» clase desde el punto de vista del comportamiento. En particular, no debes anularla base_class si estás definiendo una versión personalizada de una instrucción que el hardware implementará de forma diferente, como una estrategia de medición alternativa, o una versión de una puerta parametrizada con un conjunto concreto de parámetros con el fin de distinguirla en un Target de la puerta parametrizada completa.
Esto suele ser exactamente equivalente a type(obj), salvo en el caso de las instancias únicas de las instrucciones de la biblioteca estándar. Estas instancias singleton son subclases especiales de su clase base, y esta propiedad devolverá dicha clase base. Por ejemplo:
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
TrueEn general, no se debe confiar en la clase exacta de una instrucción; dentro de un circuito determinado, se espera que Instruction.name sea un discriminador más adecuado en la mayoría de los casos.
decompositions
Consulte las descomposiciones de la instrucción en SessionEquivalenceLibrary.
definition
Define la función de retorno en términos de otras puertas básicas.
label
Etiqueta con instrucciones de devolución
mutable
¿Es esta instancia una instancia única mutable o no?
Si este atributo está activado, la False instancia de la puerta es un singleton compartido y no es mutable.
name
Devuelve el nombre.
num_clbits
Devuelve el número de clbits.
num_qubits
Devuelve el número de qubits.
params
Los parámetros de este Instruction... Lo ideal sería que se tratara de ángulos de compuerta.
Métodos
add_decomposition
add_decomposition(decomposition)
Añade un desglose de la instrucción a la página SessionEquivalenceLibrary.
broadcast_arguments
broadcast_arguments(qargs, cargs)
Validación y gestión de los argumentos y su relación.
Por ejemplo, cx([q[0],q[1]], q[2]) significa cx(q[0], q[2]); cx(q[1], q[2]). Este método coloca los argumentos en el orden correcto. En el ejemplo dado:
in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
[q[1], q[2]], []Las normas generales de radiodifusión son las siguientes:
Si len(qargs) == 1:
[q[0], q[1]] -> [q[0]],[q[1]]Si len(qargs) == 2:
[[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]] [[q[0]], [r[0], r[1]]] -> [q[0], r[0]], [q[0], r[1]] [[q[0], q[1]], [r[0]]] -> [q[0], r[0]], [q[1], r[0]]Si len(qargs) es mayor o igual a 3:
[q[0], q[1]], [r[0], r[1]], ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
Parámetros
- qargs (list) – Lista de argumentos sobre el bit cuántico.
- cargs (list) – Lista de argumentos de bits clásicos.
Devuelve
Una tupla con un solo argumento.
Subidas
CircuitError – Si la entrada no es válida. Por ejemplo, el número de argumentos no coincide con lo esperado por la puerta.
Tipo de retorno
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
Devuelve la versión controlada de sí mismo.
La puerta devuelta representa , donde es el operador de Pauli original , tensorado con los proyectores y (dependiendo del estado de control).
Parámetros
- num_ctrl_qubits (int) – Número de controles que se van a añadir. El valor predeterminado es
1. - label (str | None) – Etiqueta opcional para la puerta. El valor predeterminado es
None. Se ignora si la puerta controlada se implementa como una operación anotada. - ctrl_state (int |str | None) – El estado de control de la puerta, especificado como un número entero o una cadena de bits (p. ej.,
"110"). SiNone, se establece por defecto en el estado en el que todos2**num_ctrl_qubits - 1los bits son uno. - annotated (bool | None) – Indica si la puerta controlada debe implementarse como una puerta controlada o como una operación anotada. Si
None, se considera comoFalse.
Devuelve
Una versión controlada de esta puerta.
Subidas
QiskitError – no válido num_ctrl_qubits o ctrl_state.
copy
copy(name=None)
Copia de las instrucciones.
Parámetros
name (str) – nombre que se le dará al circuito copiado; si None es así, el nombre se mantiene igual.
Devuelve
una copia de la instrucción actual, con el nombre actualizado si se ha facilitado
Tipo de retorno
inverse
is_parameterized
pauli
pauli()
Devuelve el eje de rotación de Pauli.
Ten en cuenta que esto no incluye ningún posible signo en el Pauli objeto utilizado para construir esta puerta, ya que el signo se absorbe en el ángulo de rotación, al que se puede acceder a través del params atributo.
Devuelve
El eje de rotación de Pauli.
Tipo de retorno
power
power(exponent, annotated=False)
Eleva esta puerta a la potencia de exponent.
Se implementa como una puerta unitaria (véase UnitaryGate) o como una operación comentada (véase AnnotatedOperation). En el caso de varias puertas estándar, como RXGate, cuando la potencia de una puerta puede expresarse en términos de otra puerta estándar que se devuelve directamente.
Parámetros
- exponent (float) – la capacidad de levantar la compuerta para
- annotated (bool) – indica si la puerta de potencia se puede implementar como una operación anotada. En el caso de varias puertas lógicas estándar, como
RXGate, este argumento se ignora cuando la potencia de una puerta se puede expresar en términos de otra puerta lógica estándar.
Devuelve
Una operación que implementa gate^exponent
Subidas
CircuitError – Si la puerta no es unitaria
repeat
repeat(n)
Crea una instrucción que self se repite veces.
Parámetros
n (int) – Número de veces que hay que repetir la instrucción
Devuelve
Que contiene la definición.
Tipo de retorno
Subidas
CircuitError – Si n < 1.
reverse_ops
reverse_ops()
En el caso de una instrucción compuesta, invierte el orden de las subinstrucciones.
Esto se consigue invirtiendo de forma recursiva todas las subinstrucciones. No invierte ninguna puerta lógica.
Devuelve
una nueva instrucción con
subinstrucciones invertidas.
Tipo de retorno
soft_compare
soft_compare(other)
Comparación suave entre puertas. Sus nombres, el número de qubits y el número de bits clásicos deben coincidir. El número de parámetros debe coincidir. Se comparan todos los parámetros. Si se trata de un « ParameterExpression », no se tiene en cuenta.
Parámetros
other (instruction) – otras instrucciones.
Devuelve
«self» y «other» son iguales en las expresiones de parámetros.
Tipo de retorno
to_matrix
to_matrix()
Devuelve una matriz de tipo « Numpy.array » que representa la matriz unitaria de la puerta.
Devuelve
si la subclase Gate tiene una definición de matriz.
Tipo de retorno
np.ndarray
Subidas
CircuitError – Si una subclase de Gate no implementa este método, se generará una excepción cuando se llame a este método de la clase base.
to_mutable
to_mutable()
Devuelve una copia modificable de esta puerta.
Este método devolverá una nueva copia modificable de esta instancia de puerta. Si se utiliza una instancia singleton, se creará una nueva instancia única que se podrá modificar. Si la instancia ya es mutable, se creará una copia profunda de dicha instancia.
validate_parameter
validate_parameter(parameter)
Los parámetros de la puerta deben ser de tipo int, float o ParameterExpression