Destino
class qiskit.transpiler.Target(description=None, num_qubits=0, dt=None, granularity=1, min_length=1, pulse_alignment=1, acquire_alignment=1, qubit_properties=None, concurrent_measurements=None, **_subclass_kwargs)
Bases: BaseTarget
La intención del objeto Target es informar al compilador de Qiskit sobre las restricciones de un backend en particular para que el compilador pueda compilar un circuito de entrada a algo que funcione y esté optimizado para un dispositivo. Actualmente contiene una descripción de las instrucciones de un backend y sus propiedades, así como cierta información sobre los tiempos. Sin embargo, esta interfaz exacta puede evolucionar con el tiempo a medida que cambien las necesidades del compilador. Estos cambios se harán de forma controlada y compatible con versiones anteriores cuando se realicen (ya sea a través de versiones, subclases o mixins) para añadirse al conjunto de información expuesta por un objetivo.
A modo de ejemplo básico, supongamos que un backend tiene dos qubits, admite UGate en ambos qubits y CXGate en ambas direcciones. Para modelar esto, se crearía el objetivo de la siguiente manera:
from qiskit.transpiler import Target, InstructionProperties
from qiskit.circuit.library import UGate, CXGate
from qiskit.circuit import Parameter
gmap = Target()
theta = Parameter('theta')
phi = Parameter('phi')
lam = Parameter('lambda')
u_props = {
(0,): InstructionProperties(duration=5.23e-8, error=0.00038115),
(1,): InstructionProperties(duration=4.52e-8, error=0.00032115),
}
gmap.add_instruction(UGate(theta, phi, lam), u_props)
cx_props = {
(0,1): InstructionProperties(duration=5.23e-7, error=0.00098115),
(1,0): InstructionProperties(duration=4.52e-7, error=0.00132115),
}
gmap.add_instruction(CXGate(), cx_props)Cada instrucción de Target está indexada por un nombre de cadena único que identifica de forma unívoca esa instancia de un Instruction objeto en el Target. Existe una correspondencia 1:1 entre un nombre y una Instruction instancia en el destino y cada nombre debe ser único. Por defecto, el nombre es el atributo name de la instrucción, pero puede ser cualquier cosa. Esto permite que un mismo objetivo tenga varias instancias de la misma clase de instrucción con diferentes parámetros. Por ejemplo, si un objetivo backend tiene dos instancias de un RXGate una está parametrizada sobre cualquier theta mientras que la otra está afinada para un theta de pi/6 puedes añadirlas haciendo algo como
import math
from qiskit.transpiler import Target, InstructionProperties
from qiskit.circuit.library import RXGate
from qiskit.circuit import Parameter
target = Target()
theta = Parameter('theta')
rx_props = {
(0,): InstructionProperties(duration=5.23e-8, error=0.00038115),
}
target.add_instruction(RXGate(theta), rx_props)
rx_30_props = {
(0,): InstructionProperties(duration=1.74e-6, error=.00012)
}
target.add_instruction(RXGate(math.pi / 6), rx_30_props, name='rx_30')Entonces en el objeto target accediendo por rx_30 obtendrá el ángulo fijo RXGate mientras que rx obtendrá el parametrizado RXGate.
Opcionalmente, puede especificar un límite para los valores válidos en una puerta del objetivo utilizando el argumento angle_bounds clave al llamar al add_instruction() método. Los límites se establecen en las operaciones, no en las instrucciones individuales, por lo que cuando se llama a add_instruction() los límites se aplican a todos los qargs en los que está definido. Los límites se especifican en una lista de pares de flotantes, donde el primer flotante es el límite inferior y el segundo flotante es el límite superior. Por ejemplo, si especificó un límite de ángulo:
[(0.0, 3.14), (-3.14, 3.14), (0.0, 1.0)]esto indica los límites de ángulo para una puerta de 3 parámetros donde el primer parámetro acepta ángulos entre 0 y 3.14, el segundo entre -3.14 y 3.14, y el tercer parámetro entre 0 y 1. Todos los límites se fijan también de forma inclusiva. También se puede especificar un límite con None en lugar de una 2-tupla, lo que indica que el parámetro no tiene restricciones. Por ejemplo:
[(0.0, 3.14), None, None]indica un ángulo límite para una puerta de 3 parámetros donde sólo el primer parámetro está restringido a ángulos entre 0.0 y 3.14 y los otros parámetros aceptan cualquier valor.
Puede comprobar si alguna operación del objetivo tiene límites angulares establecidos con, has_angle_bounds() y también si un nombre específico del objetivo tiene límites angulares establecidos con gate_has_angle_bounds(). Se puede comprobar si un conjunto concreto de valores de parámetros se ajusta a los límites angulares con supported_angle_bound(). En los gestores de pases predefinidos se utiliza el WrapAngles pass se utiliza para hacer cumplir los límites de ángulo, para que esto funcione es necesario proporcionar una función a la función WrapAngleRegistry utilizada por el pase. Puede ver más detalles al respecto en: Límites angulares en Gates.
Esta clase puede consultarse a través del protocolo de asignación, utilizando el nombre de la instrucción como clave. Puede modificar cualquier propiedad de una instrucción mediante el método update_instruction_properties() método. No se admite la modificación a través del protocolo de asignación ni la mutación de los atributos de un objeto InstructionProperties** no** se admite y al hacerlo se invalidará el estado interno del objeto.
Esta clase asume que los índices de los qubits comienzan en 0 y son un conjunto contiguo si se desea un submapping los bits deberán ser reindexados en un nuevo Target objeto.
Esta clase sólo admite adiciones de puertas, qargs y propiedades. Si necesita eliminar uno de ellos, la mejor opción es iterar sobre un objeto existente y crear un nuevo subconjunto (o utilizar uno de los métodos para hacerlo). El objeto almacena internamente en caché diferentes vistas y éstas quedarían potencialmente invalidadas por las eliminaciones.
Subclasificación
Aunque técnicamente es posible subclasificar Targettenga en cuenta que la mayor parte de la información incorporada está en Rust y se consulta desde Rust en pases de transpilador incorporados. Python -no son visibles para Rust, y no deberías confiar en ellos para cambiar el comportamiento de los pases de transpilador incorporados en Qiskit. Target se supone en gran medida que es una representación de una QPU que tiene constructores especializados, no subclases especializadas; la API habitual para construir una QPU Target debería ser una función que devuelva una base Targety no una subclase con un inicializador personalizado.
Puedes utilizar la subclasificación para añadir propiedades adicionales del espacio de nombres Python a tu Target, por ejemplo, para interpretarlas posteriormente en etapas de transpilador específicas del backend personalizado; el Target se pasa a los constructores de stage-plugin.
No deberías subclasificar Target para intentar modificar el comportamiento de los pases incorporados de Qiskit; la subclase Python -space no será vista por los pases escritos en Rust.
Además, como el núcleo de Target está escrito en Rust, utiliza __new__() como su inicializador, y debes asegurarte de que se pasan los argumentos correctos a la implementación subyacente. Si anula la firma del método __init__() debe incluir también una modificación de __new__() con la misma firma, que llame a super().__new__() de forma correcta.
Crea un nuevo Target objeto.
param descripción
Cadena opcional para describir el objetivo.
descripción del tipo
str
param num_qubits
Un int opcional para especificar el número de qubits que tiene el objetivo backend. Esto no es un límite duro en la construcción; cualquier llamada a add_instruction() hará que el conjunto num_qubits se actualice para acomodar cualquier qargs concreto en las propiedades dadas.
Se puede establecer explícitamente en None para indicar un Target que representa un simulador u otra máquina abstracta que no impone límites al número de qubits. En este caso, todas las instrucciones añadidas al objetivo deben ser globales (con properties=None o properties={None: None}).
tipo num_qubits
int
param dt
La resolución temporal del sistema de las señales de entrada en segundos
tipo dt
flotante
param granularidad
Un valor entero que representa la resolución mínima de la puerta de impulsos en unidades de dt. Una puerta de impulsos definida por el usuario debe tener una duración de un múltiplo de este valor de granularidad.
granularidad de tipo
int
param longitud_mínima
Un valor entero que representa la longitud mínima de la puerta de impulsos en unidades de dt. Una puerta de impulsos definida por el usuario debe ser más larga que esta longitud.
tipo longitud_mínima
int
param pulso_alineación
Valor entero que representa una resolución temporal del tiempo de inicio de la instrucción de puerta. La instrucción de puerta debe comenzar en un tiempo que sea múltiplo del valor de alineación.
tipo pulso_alineación
int
param adquirir_alineación
Valor entero que representa una resolución temporal de la hora de inicio de la instrucción de medida. La instrucción de medición debe comenzar a una hora que sea múltiplo del valor de alineación.
tipo adquiere_alineación
int
param qubit_propiedades
Una lista de QubitProperties objetos que definen las características de cada qubit en el dispositivo de destino. Si se especifica, la longitud de esta lista debe coincidir con el número de qubits del objetivo, donde el índice de la lista coincide con el número de qubit para el que se definen las propiedades. Si algunos qubits no tienen propiedades disponibles puedes poner esa entrada a None
tipo qubit_propiedades
list de
param medidas_concurrentes
Una lista de conjuntos de qubits que deben medirse juntos. Debe proporcionarse como una lista anidada como [[0, 1], [2, 3, 4]].
tipo medidas_concurrentes
list de
sube ValueError
Si num_qubits y qubit_properties están ambos definidos y el valor de num_qubits difiere de la longitud de qubit_properties.
Atributos
acquire_alignment
concurrent_measurements
description
dt
Devolución dt.
granularity
instructions
Obtener la lista de tuplas (Instruction(qargs)) para el objetivo
Para las operaciones de anchura variable definidas globalmente, la tupla tendrá la forma (class, None) , donde clase es la clase de operación real definida globalmente.
min_length
num_qubits
operation_names
Obtiene los nombres de las operaciones en el objetivo.
operations
Obtener los objetos de operación en el objetivo.
physical_qubits
Devuelve una lista ordenada de qubits físicos.
pulse_alignment
qargs
El conjunto de qargs en el objetivo.
qubit_properties
Métodos
add_instruction
add_instruction(instruction, properties=None, name=None, *, angle_bounds=None)
Añade una nueva instrucción al Target
Dado que los objetos de Target son estrictamente aditivos, éste es el principal método para modificar un Target. Por lo general, se utiliza para rellenar completamente un Target antes de utilizarlo en la aplicación BackendV2. Por ejemplo:
from qiskit.circuit.library import CXGate
from qiskit.transpiler import Target, InstructionProperties
target = Target()
cx_properties = {
(0, 1): None,
(1, 0): None,
(0, 2): None,
(2, 0): None,
(0, 3): None,
(2, 3): None,
(3, 0): None,
(3, 2): None
}
target.add_instruction(CXGate(), cx_properties)Añadirá un CXGate al objetivo sin propiedades (duración, error, etc) con la lista de bordes de acoplamiento: (0, 1), (1, 0), (0, 2), (2, 0), (0, 3), (2, 3), (3, 0), (3, 2). Si hay propiedades disponibles para la instrucción puede sustituir el valor None en el diccionario de propiedades por un InstructionProperties objeto. Este patrón se repite para cada Instruction los soportes de destino.
Parámetros
- instruction (Union[qiskit.circuit.Instruction, Type[qiskit.circuit.Instruction]]) – El objeto de operación que se va a añadir al mapa. Si está parametrizado, se puede establecer cualquier valor para el parámetro. Opcionalmente, para las instrucciones de ancho variable (como las operaciones de flujo de control, por ejemplo,
ForLoopoMCXGate), puedes especificar la clase. Si se especifica la clase, también debe especificarse elnameargumento. Cuando se utiliza una clase, la puerta se considera global y no tiene ninguna propiedad definida. - properties (dict) – Un diccionario de entradas qarg a un
InstructionPropertiespara esa implementación de instrucción en el backend. Las propiedades son opcionales para cualquier implementación de instrucciones, si no hayInstructionPropertiesdisponibles para el backend el valor puede ser Ninguno. Si no hay restricciones en la instrucción (como en una simulación sin ruido/ideal) se puede establecer en{None, None}, lo que indicará que se ejecuta en todos los qubits (o en todas las permutaciones disponibles de qubits para puertas multi-qubit). El primerNoneindica que se aplica a todos los qubits y el segundoNoneindica que no hayInstructionPropertiespara la instrucción. Por defecto, si no se establece properties equivale a pasar{None: None}. - name (str) – Un nombre opcional para identificar la instrucción. Si no se especifica, se utilizará el atributo
namedegate. Todas las puertas deTargetnecesitan nombres únicos. Los backends pueden diferenciar entre distintas parametrizaciones de una misma puerta proporcionando un nombre único para cada una (por ejemplo, “rx30”, “rx60”, `”rx90”`` similar al ejemplo de la documentación de la claseTarget). - angle_bounds (list) – Los límites de los parámetros para una puerta determinada. Se especifica mediante una lista de tuplas (low, high) que representan el límite inferior y superior (inclusive) de los valores de flotación permitidos para el parámetro en esa posición. Si un parámetro no tiene un ángulo límite, puedes utilizar
Nonepara representarlo. Por ejemplo, si una puerta de 3 parámetros sólo tuviera un límite en el segundo parámetro, se representaría con:[None, [0, 3.14], None], lo que significa que el primer y el tercer parámetro admiten cualquier valor, pero el segundo parámetro sólo acepta valores entre 0 y 3.14.
Eleva
- AttributeError - Si la puerta ya está en el mapa
- TranspilerError - Si se pasa una clase de operación para
instructiony no se especifica un nombre o se estableceproperties.
build_coupling_map
build_coupling_map(two_q_gate=None, filter_idle_qubits=False)
Obtener un CouplingMap de este objetivo.
Si hay una combinación de operaciones de dos qubits que tienen una restricción de conectividad y otras que están definidas globalmente, esto también dará como resultado, None ya que la conectividad global implica que no hay ninguna restricción sobre el objetivo. Si deseas ver las restricciones de las operaciones de dos qubits que tienen restricciones, debes utilizar el two_q_gate argumento para limitar la salida a las puertas que tienen una restricción.
Parámetros
- two_q_gate (str) – Nombre opcional de una puerta de dos qubits en
Targetpara generar el mapa de acoplamiento. Si se especifica, el mapa de acoplamiento de salida sólo tendrá bordes entre qubits en los que esté presente esta puerta. - filter_idle_qubits (bool) – Si se establece en
Truela salidaCouplingMapeliminará los qubits que no tengan ninguna operación definida en el objetivo. Tenga en cuenta que el uso de este argumento dará lugar a un objeto de salidaCouplingMapque tiene agujeros en sus índices que pueden diferir de los supuestos de la clase. El caso típico de uso de este argumento es emparejarlo conCouplingMap.connected_components()que se encargará de los agujeros como se espera.
Devuelve
**El objeto CouplingMap **
para este objetivo. Si no hay restricciones de conectividad en el objetivo, devolverá None.
Tipo de retorno
Eleva
- ValueError - Si se pasa una puerta que no sea de dos qubits para
two_q_gate. - IndexError - Si se pasa una instrucción que no está en
Targetparatwo_q_gate.
durations
durations()
Obtener un objeto InstructionDurations del destino
Devuelve
La duración de la instrucción representada en el
destino
Tipo de retorno
from_configuration
classmethod from_configuration(basis_gates, num_qubits=None, coupling_map=None, instruction_durations=None, concurrent_measurements=None, dt=None, timing_constraints=None, custom_name_mapping=None)
Crear un objeto de destino a partir de la configuración global individual
Antes de la creación de la clase Target las restricciones de un backend se representaban mediante una colección de objetos diferentes que, combinados, representaban un subconjunto de la información contenida en la clase Target. Esta función proporciona una interfaz sencilla para convertir esos objetos separados en un objeto Target.
Este constructor utilizará las entradas de basis_gates, num_qubits, y coupling_map para construir un modelo base del backend y las entradas instruction_durations, backend_properties, y inst_map son entonces consultadas (en ese orden) basadas en ese modelo para buscar las propiedades de cada instrucción y qubit. Si existe una incoherencia entre las entradas, se ignorará cualquier información adicional o contradictoria presente en instruction_durations, backend_properties, o inst_map .
Parámetros
- basis_gates (list[str]) – La lista de nombres de puertas base para el backend. Para que se cree el objetivo, estos nombres deben estar en la salida de
get_standard_gate_name_mapping()o estar presentes en el argumentocustom_name_mappingespecificado. - num_qubits (int | None) – El número de qubits soportados en el backend.
- coupling_map (CouplingMap | None) – El mapa de acoplamiento que representa las restricciones de conectividad en el backend. Si se especifica, todas las puertas de
basis_gatesserán compatibles con todos los qubits (o pares de qubits). - instruction_durations (InstructionDurations | None) – Duraciones opcionales de las instrucciones. Si se especifica tendrá prioridad para establecer el campo
durationen losInstructionPropertiespara las instrucciones del objetivo. - concurrent_measurements (list) – Una lista de conjuntos de qubits que deben medirse juntos. Debe proporcionarse como una lista anidada como
[[0, 1], [2, 3, 4]]. - dt (float | None) – La resolución temporal del sistema de las señales de entrada en segundos
- timing_constraints (TimingConstraints | None) – Restricciones temporales opcionales que se pueden incluir en el
Target - custom_name_mapping (dict[str, Any] | None) – Un diccionario opcional que asigna nombres personalizados de puertas/operaciones en
basis_gatesa unOperationobjeto que representa esa puerta/operación. Por defecto, la mayoría de los nombres de puertas estándar se asignan al objeto de puerta estándar deqiskit.circuit.libraryesto solo es necesario especificarlo si la entradabasis_gatesdefine puertas con nombres fuera de ese conjunto.
Devuelve
el objetivo construido a partir de la configuración de entrada
Tipo de retorno
Eleva
- TranspilerError - Si las puertas base de entrada contienen > 2 qubits y
coupling_mapes - especificado. -
- KeyError - Si no hay ninguna asignación disponible para una dirección
basis_gate.
gate_has_angle_bounds
gate_has_angle_bounds(name)
Comprobar si una puerta específica tiene un ángulo límite establecido
Parámetros
name (str) – El nombre de la instrucción para comprobar si tiene un ángulo definido
Devuelve
Esto devolverá True si la puerta está en el objetivo y tiene límites de ángulo definidos. Devolverá False si la puerta no tiene límites de ángulo definidos o no está en el objetivo.
Tipo de retorno
get
get(key, default=None)
Obtiene un ítem del Target. Si no se encuentra, devuelve un valor predeterminado o Ninguno.
get_non_global_operation_names
get_non_global_operation_names(strict_direction=False)
Devuelve los nombres de operaciones no globales del objetivo
Las operaciones no globales son aquellas del objetivo que no se aplican en todos los qubits (para operaciones de un solo qubit) o en todos los qargs de varios qubits (para operaciones de varios qubits).
Parámetros
strict_direction (bool) – Si se establece en True las operaciones multiqubit consideradas como no globales respetan la dirección estricta (o el orden de los qubits en los qargs es significativo). Por ejemplo, si cx se define sobre (0, 1) y ecr se define sobre (1, 0) por defecto ninguno de los dos se consideraría no global, pero si strict_direction se define True se devolverían tanto cx como ecr .
Devuelve
Una lista de nombres de operaciones para operaciones que no son globales en este objetivo
Tipo de retorno
Lista [str ]
has_angle_bounds
has_angle_bounds()
Comprueba si hay algún límite de ángulo establecido en el objetivo
Devuelve
Esto devolverá True si hay límites angulares establecidos en alguna instrucción del circuito
Tipo de retorno
instruction_properties
instruction_properties(index)
Obtener las propiedades de instrucción de una tupla de instrucciones específica
Este método debe utilizarse junto con el atributo instructions de un objeto Target objeto. Puede utilizar este método para obtener rápidamente las propiedades de instrucción de un elemento de instructions utilizando el índice de esa lista. Sin embargo, si no está trabajando con instructions es probablemente más eficiente acceder al objetivo directamente a través del nombre y los qubits para obtener las propiedades de la instrucción. Por ejemplo, si instructions se devuelve:
[(XGate(), (0,)), (XGate(), (1,))]podrías obtener las propiedades del XGate en el qubit 1 con:
props = target.instruction_properties(1)pero acceder directamente a través del nombre sería más eficiente:
props = target['x'][(1,)](asumiendo que el nombre canónico de XGateen el objetivo es 'x') Esto es especialmente cierto para objetivos más grandes, ya que esto empeorará con el número de tuplas de instrucciones en un objetivo.
Parámetros
index (int) – El índice de la tupla de instrucciones del atributo instructions atributo. Por ejemplo, si desea las propiedades del tercer elemento de instructions sería 2.
Devuelve
Las propiedades de la instrucción para la tupla de instrucciones especificada
Tipo de retorno
instruction_supported
instruction_supported(operation_name=None, qargs=Ellipsis, operation_class=None, parameters=None, check_angle_bounds=True)
Devuelve si la instrucción (operación + qubits) es compatible con el objetivo
Parámetros
-
operation_name (str) – El nombre de la operación para la instrucción. Debe especificarse éste o
operation_class, si se especifican ambosoperation_classtendrá prioridad y este argumento será ignorado. -
qargs (tuple) – La tupla de índices de qubits para la instrucción. Si no se especifica, este método devolverá
Truesi la operación especificada es compatible con cualquier qubits. La aplicación típica siempre tendrá esto configurado (de lo contrario es lo mismo que simplemente comprobar si el objetivo contiene la operación). Normalmente no se establecería este argumento si se quisiera comprobar de forma más general que el objetivo admite una operación con elparametersen cualquiera de los qubits. -
operation_class (Type[qiskit.circuit.Instruction]) – La clase de operación para comprobar si el objetivo admite una operación determinada por clase en lugar de por nombre. Esta búsqueda es más costosa ya que necesita iterar sobre todas las operaciones en el objetivo en lugar de una sola búsqueda. Si se especifica, sustituirá al argumento
operation_name. El caso de uso típico de esta operación es comprobar si una variante específica de una operación está soportada en el backend. Por ejemplo, si se quisiera comprobar si unRXGateen un qubit específico con un ángulo fijo. Esa variante de ángulo fijo tendrá normalmente un nombre diferente del atributonamedel objeto ("rx") en el destino. Se puede utilizar para comprobar si hay alguna instancia de la clase disponible en ese caso. -
parameters (list) –
Una lista de parámetros para comprobar si el objetivo los admite en los qubits especificados. Si la instrucción admite los valores de los parámetros especificados en la lista en la operación y qargs especificados devolverá
Truepero si los parámetros no son compatibles con la instrucción especificada devolveráFalse. Si no se especifica este argumento, este método devolveráTruesi la instrucción es compatible independientemente de los parámetros de la instrucción. Si se especifica con cualquier objetoParameterde la lista, esa entrada se tratará como si admitiera cualquier valor, sin embargo no se comprobarán los nombres de los parámetros (por ejemplo, si una operación del objetivo aparece como parametrizada con"theta"y se pasa"phi"a esta función, que devolveráTrue). Por ejemplo, si se llama con:parameters = [Parameter("theta")] target.instruction_supported("rx", (0,), parameters=parameters)devolverá
Truesi se admite unRXGateen el qubit 0 que aceptará cualquier parámetro. Si necesita comprobar un parámetro de valor numérico fijo, este argumento suele ir emparejado con el argumentooperation_class. Por ejemplo:target.instruction_supported("rx", (0,), RXGate, parameters=[pi / 4])devolverá
Truesi existe una RXGate( pi/4 ) en el qubit 0. -
check_angle_bounds (bool) – Si se establece en True (por defecto) el valor de
parametersserá validado contra cualquier límite de ángulo establecido en el objetivo. Si alguno de los valores enparametersse establece comoParameterExpressioneste indicador no tendrá ningún efecto, ya que los límites angulares sólo afectan a las operaciones no parametrizadas del circuito.
Devuelve
Devuelve True si la instrucción es compatible y False si no lo es.
Tipo de retorno
items
items()
Devuelve pares de nombres de Puerta y su mapa de propiedades (str, dicttuple[, InstructionProperties] )
keys
operation_from_name
operation_from_name(instruction)
Obtener el objeto de clase de operación para un nombre dado
Parámetros
instruction (str) – El nombre de la instrucción para obtener la Instruction instancia para
Devuelve
La instancia de Instrucción correspondiente al nombre. También puede ser la clase para variables definidas globalmente con operaciones.
Tipo de retorno
operation_names_for_qargs
operation_names_for_qargs(qargs, /)
Obtiene los nombres de las operaciones de una tupla qargs especificada
Parámetros
qargs (tuple) – Una tupla qargs de los qubits para obtener las puertas que se le aplican. Por ejemplo, (0,) devolverá el conjunto de todas las instrucciones que se aplican al qubit 0. Si se establece en None devolverá los nombres de cualquier operación definida globalmente en el objetivo.
Devuelve
El conjunto de nombres de operaciones que se aplican a la dirección qargs especificada.
Tipo de retorno
Eleva
KeyError - Si qargs no está en el objetivo
operations_for_qargs
operations_for_qargs(qargs, /)
Obtener el objeto de clase de operación para una tupla qargs especificada
Parámetros
qargs (tuple) – Una tupla qargs de los qubits para obtener las puertas que se le aplican. Por ejemplo, (0,) devolverá el conjunto de todas las instrucciones que se aplican al qubit 0. Si se establece en None devolverá cualquier operación definida globalmente en el objetivo.
Devuelve
La lista de Instruction instancias que se aplican al qarg especificado. También puede ser una clase si se define globalmente una operación de anchura variable.
Tipo de retorno
Eleva
KeyError - Si qargs no está en target
qargs_for_operation_name
qargs_for_operation_name(operation)
Obtener los qargs para un nombre de operación dado
Parámetros
operation (str) – El nombre de la operación de la que se obtendrán los qargs
Devuelve
Conjunto de qargs a los que se aplica la instancia de puerta.
Tipo de retorno
seconds_to_dt
seconds_to_dt(duration)
Convierte una duración dada en segundos a unidades de dt
Parámetros
duration (float) – La duración en segundos, como en un InstructionProperties campo para una instrucción en el objetivo.
Tipo de retorno
Devuelve
duración: La duración en unidades de dt
supported_angle_bound
supported_angle_bound(name, angles)
Comprobar que los parámetros de una puerta específica se ajustan a los límites angulares
Parámetros
- name (str) – El nombre de la instrucción para comprobar los límites angulares de
- angles (list) – Una lista de valores de parámetros float para
namepara ver si se ajustan a los límites de ángulo definidos.
Devuelve
Devuelve True si los valores de los parámetros especificados son compatibles con los límites angulares. False si alguno de los parámetros está fuera de los límites definidos.
Tipo de retorno
Eleva
- TranspilerError - Si
nameno se encuentra en el objetivo o no - tienen límites angulares definidos. -
timing_constraints
timing_constraints()
Obtener un objeto TimingConstraints del destino
Devuelve
Las restricciones temporales representadas en el Target
Tipo de retorno
TimingConstraints
update_instruction_properties
update_instruction_properties(instruction, qargs, properties)
Actualiza el objeto de propiedad para un par de instrucciones qarg que ya está en el Target.
Para facilitar el acceso, un usuario puede obtener la correspondencia entre los qargs aplicables de una instrucción y sus propiedades de instrucción a través del protocolo de correspondencia (utilizando __getitem__), con el nombre de la instrucción como clave. Este método es la única forma de modificar/actualizar las propiedades de una instrucción en Target. No se admite el uso del protocolo de asignación para modificaciones.
Parámetros
- instruction (str) – El nombre de la instrucción a actualizar
- qargs (tuple) – Los qargs para actualizar las propiedades de
- properties (InstructionProperties) – Las propiedades a establecer para esta instrucción
Eleva
KeyError - Si instruction o qarg no están en el destino
values
values()
Devuelve el mapa de propiedades (qargs -> InstructionProperties ) de cada instrucción del objetivo
Parámetros