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
A intenção do objeto Target é informar o compilador do Qiskit sobre as restrições de um backend específico para que o compilador possa compilar um circuito de entrada em algo que funcione e seja otimizado para um dispositivo. Atualmente, ele contém uma descrição das instruções em um backend e suas propriedades, bem como algumas informações de tempo. No entanto, essa interface exata pode evoluir com o tempo à medida que as necessidades do compilador mudam. Essas alterações serão feitas de forma controlada e compatível com as versões anteriores quando forem feitas (por meio de controle de versão, subclasses ou mixins) para adicionar ao conjunto de informações expostas por um destino.
Como exemplo básico, vamos supor que um backend tenha dois qubits, suporte UGate em ambos os qubits e CXGate em ambas as direções. Para modelar isso, você criaria o alvo da seguinte forma:
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 instrução no site Target é indexada por um nome de cadeia de caracteres exclusivo que identifica exclusivamente essa instância de um Instruction objeto no Target. Há um mapeamento 1:1 entre um nome e uma instância no destino Instruction no destino e cada nome deve ser exclusivo. Por padrão, o nome é o atributo name da instrução, mas pode ser definido como qualquer coisa. Isso permite que um único alvo tenha várias instâncias da mesma classe de instrução com parâmetros diferentes. Por exemplo, se um destino de backend tiver duas instâncias de um RXGate uma é parametrizada em qualquer theta, enquanto a outra é ajustada para um theta de pi/6, você poderá adicioná-las fazendo 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')Em seguida, o objeto target acessado por rx_30 obterá o ângulo fixo RXGate enquanto rx obterá o ângulo parametrizado RXGate.
Você pode, opcionalmente, especificar um limite para valores válidos em um gate no destino usando o argumento angle_bounds de palavra-chave ao chamar o add_instruction() método. Os limites são definidos em operações, não em instruções individuais, portanto, quando você chama, add_instruction() os limites são aplicados a todos os qargs nos quais estão definidos. Os limites são especificados em uma lista de tuplas de dois elementos flutuantes, em que o primeiro elemento flutuante é o limite inferior e o segundo elemento flutuante é o limite superior. Por exemplo, se você especificou um limite de ângulo:
[(0.0, 3.14), (-3.14, 3.14), (0.0, 1.0)]isso indica os limites de ângulo para uma porta de 3 parâmetros em que o primeiro parâmetro aceita ângulos entre 0 e 3.14, o segundo entre -3.14 e 3.14 e o terceiro parâmetro entre 0 e 1. Todos os limites também são definidos de forma inclusiva. Um limite também pode ser especificado com None em vez de uma 2-tupla, o que indica que o parâmetro não tem restrições. Por exemplo:
[(0.0, 3.14), None, None]indica um limite de ângulo para uma porta de 3 parâmetros em que apenas o primeiro parâmetro é restrito a ângulos entre 0.0 e 3.14 e os outros parâmetros aceitam qualquer valor.
Você pode verificar se alguma operação no destino tem limites de ângulo definidos com, has_angle_bounds() e também se um nome específico no destino tem limites de ângulo definidos com gate_has_angle_bounds(). A conformidade de um determinado conjunto de valores de parâmetros com os limites de ângulo pode ser verificada com supported_angle_bound(). Nos gerenciadores de passagem predefinidos, a passagem WrapAngles é usada para impor os limites de ângulo; para que isso funcione, você precisa fornecer uma função para o WrapAngleRegistry usada pela passagem. Você pode ver mais detalhes sobre isso em: Limites de ângulo em Gates.
Essa classe pode ser consultada por meio do protocolo de mapeamento, usando o nome da instrução como uma chave. Você pode modificar qualquer propriedade de uma instrução por meio do método update_instruction_properties() método. A modificação por meio do protocolo de mapeamento ou a alteração dos atributos de um objeto InstructionProperties** não** é compatível, e isso invalidará o estado interno do objeto.
Essa classe pressupõe que os índices de qubit começam em 0 e são um conjunto contíguo; se você quiser um submapeamento, os bits precisarão ser reindexados em um novo objeto Target objeto.
Essa classe suporta apenas adições de gates, qargs e propriedades. Se você precisar remover um deles, a melhor opção é iterar sobre um objeto existente e criar um novo subconjunto (ou usar um dos métodos para fazer isso). O objeto armazena em cache internamente diferentes visualizações e essas visualizações poderiam ser invalidadas por remoções.
Subclassificação
Embora seja tecnicamente possível fazer uma subclasse de Targetesteja ciente de que a maioria das informações incorporadas está em Rust e é consultada a partir do Rust em passagens incorporadas do transpilador. Python -as substituições de espaço não são visíveis para o Rust, e você não deve confiar nelas para alterar o comportamento das passagens do transpilador integrado do Qiskit. Target deve ser, em grande parte, uma representação de um QPU que tenha construtores especializados, não subclasses especializadas; a API usual para construir um Target deve ser uma função que retorna uma base Targete não uma subclasse com um inicializador personalizado.
Você pode usar subclasses para adicionar propriedades adicionais do espaço Python ao seu Target, por exemplo, para interpretá-las posteriormente em etapas de transpilador específicas do backend personalizado; o Target é passado aos construtores do stage-plugin.
Você não deve fazer uma subclasse de Target para tentar modificar o comportamento dos passes incorporados do Qiskit; a subclasse Python -space não será vista pelos passes escritos em Rust.
Além disso, como o núcleo do Target é escrito em Rust, ele usa __new__() como seu inicializador, e você deve garantir que os argumentos corretos sejam passados para a implementação subjacente. Se você substituir a assinatura do método __init__() você também deverá incluir uma substituição do método __new__() com a mesma assinatura, que chama super().__new__() de maneira correta.
Crie um novo Target objeto.
param description
Uma cadeia de caracteres opcional para descrever o Target.
descrição do tipo
str
param num_qubits
Um int opcional para especificar o número de qubits que o alvo do backend tem. Esse não é um limite rígido para a construção; qualquer chamada para add_instruction() fará com que o conjunto num_qubits seja atualizado para acomodar qualquer qargs concreto nas propriedades fornecidas.
Isso pode ser explicitamente definido como None para indicar um Target que representa um simulador ou outra máquina abstrata que não impõe limites ao número de qubits. Nesse caso, todas as instruções adicionadas ao destino devem ser globais (com properties=None ou properties={None: None}).
type num_qubits
int
param dt
A resolução de tempo do sistema dos sinais de entrada em segundos
tipo dt
valor flutuante
param granularidade
Um valor inteiro que representa a resolução mínima da porta de pulso em unidades de dt. Uma porta de pulso definida pelo usuário deve ter duração de um múltiplo desse valor de granularidade.
granularidade do tipo
int
param min_length
Um valor inteiro que representa o comprimento mínimo da porta de pulso em unidades de dt. Uma porta de pulso definida pelo usuário deve ser maior que esse comprimento.
tipo min_length
int
param pulse_alignment
Um valor inteiro que representa uma resolução de tempo da hora de início da instrução de porta. A instrução de porta deve começar no tempo que é um múltiplo do valor de alinhamento.
tipo pulse_alignment
int
param acquire_alignment
Um valor inteiro que representa uma resolução de tempo da hora de início da instrução de medição. A instrução de medição deve começar no tempo que é um múltiplo do valor de alinhamento.
tipo acquire_alignment
int
param qubit_properties
Uma lista de QubitProperties objetos que definem as características de cada qubit no dispositivo de destino. Se especificado, o comprimento dessa lista deve corresponder ao número de qubits no destino, em que o índice na lista corresponde ao número do qubit para o qual as propriedades estão definidas. Se alguns qubits não tiverem propriedades disponíveis, você poderá definir essa entrada como None
tipo qubit_properties
lista
param concurrent_measurements
Uma lista de conjuntos de qubits que devem ser medidos juntos. Isso deve ser fornecido como uma lista aninhada, como [[0, 1], [2, 3, 4]].
tipo concurrent_measurements
lista
aumentos ValueError
Se num_qubits e qubit_properties estiverem definidos e o valor de num_qubits for diferente do comprimento de qubit_properties.
Atributos
acquire_alignment
concurrent_measurements
description
dt
Retorno dt.
granularity
instructions
Obtém a lista de tuplas (Instruction, (qargs)) para o destino
Para operações de largura variável definidas globalmente, a tupla terá o formato (class, None) , em que class é a classe de operação real definida globalmente.
min_length
num_qubits
operation_names
Obter os nomes das operações no destino.
operations
Obter os objetos de operação no destino.
physical_qubits
Retorna uma lista ordenada de qubits físicos.
pulse_alignment
qargs
O conjunto de qargs no destino.
qubit_properties
Métodos
add_instruction
add_instruction(instruction, properties=None, name=None, *, angle_bounds=None)
Adicione uma nova instrução ao Target
Como os objetos Target são estritamente aditivos, esse é o principal método para modificar um Target. Normalmente, você usará isso para preencher completamente um Target antes de usá-lo no BackendV2. Por exemplo:
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)Adicionará um CXGate ao alvo sem propriedades (duração, erro, etc.) com a lista de bordas de acoplamento: (0, 1), (1, 0), (0, 2), (2, 0), (0, 3), (2, 3), (3, 0), (3, 2). Se houver propriedades disponíveis para a instrução, você poderá substituir o valor None no dicionário de propriedades por um objeto InstructionProperties objeto. Esse padrão é repetido para cada Instruction que o alvo suporta.
Parâmetros
- instruction (Union[qiskit.circuit.Instruction, Type[qiskit.circuit.Instruction]]) – O objeto de operação a ser adicionado ao mapa. Se for parametrizado, é possível definir qualquer valor para o parâmetro. Opcionalmente, para instruções de largura variável (como operações de fluxo de controle, tais como
ForLoopouMCXGate), é possível especificar a classe. Se a classe for especificada, onameargumento deve ser especificado. Quando uma classe é utilizada, o gate é tratado como global e sem nenhuma propriedade definida. - properties (dict) – Um dicionário de entradas qarg para um objeto
InstructionPropertiespara essa implementação de instrução no backend. As propriedades são opcionais para qualquer implementação de instrução; se não houver nenhumaInstructionPropertiesdisponíveis para o backend, o valor pode ser Nenhum. Se não houver restrições na instrução (como em uma simulação sem ruído/ideal), isso poderá ser definido como{None, None}, o que indicará que ela é executada em todos os qubits (ou em todas as permutações disponíveis de qubits para portas de vários qubits). O primeiroNoneindica que ela se aplica a todos os qubits e o segundoNoneindica que não háInstructionPropertiespara a instrução. Por padrão, se as propriedades não forem definidas, será equivalente a passar{None: None}. - name (str) – Um nome opcional a ser usado para identificar a instrução. Se não for especificado, o atributo
namedegateserá usado. Todos os portões do siteTargetprecisam de nomes exclusivos. Os back-ends podem diferenciar entre diferentes parametrizações de uma única porta fornecendo um nome exclusivo para cada uma (por exemplo, “rx30”, “rx60”, `”rx90”`` semelhante ao exemplo na documentação da classeTargetclasse). - angle_bounds (list) – Os limites dos parâmetros de uma determinada porta. Isso é especificado por uma lista de tuplas (low, high) que representam os limites baixo e alto (inclusive) sobre quais valores de float são permitidos para o parâmetro nessa posição. Se um parâmetro não tiver um limite de ângulo, você poderá usar
Nonepara representar isso. Por exemplo, se uma porta de 3 parâmetros tivesse apenas um limite no segundo parâmetro, você representaria isso com:[None, [0, 3.14], None], o que significa que o primeiro e o terceiro parâmetros permitem qualquer valor, mas o segundo parâmetro aceita apenas valores entre 0 e 3.14.
Aumentos
- AttributeError - Se o portão já estiver no mapa
- TranspilerError - Se uma classe de operação for passada para
instructione nenhum nome for especificado oupropertiesfor definido.
build_coupling_map
build_coupling_map(two_q_gate=None, filter_idle_qubits=False)
Obter um CouplingMap desse alvo.
Se houver uma combinação de operações de dois qubits que tenham uma restrição de conectividade e outras que sejam definidas globalmente, isso também será devolvido, None pois a conectividade global significa que não há restrição sobre o alvo. Se você deseja ver as restrições das operações de dois qubits que possuem restrições, deve usar o two_q_gate argumento para limitar a saída às portas que possuem uma restrição.
Parâmetros
- two_q_gate (str) – Um nome de porta opcional para uma porta de dois qubits no site
Targetpara gerar o mapa de acoplamento. Se especificado, o mapa de acoplamento de saída só terá bordas entre os qubits em que essa porta estiver presente. - filter_idle_qubits (bool) – Se definido como
True, a saídaCouplingMapremoverá todos os qubits que não tenham nenhuma operação definida no destino. Observe que o uso desse argumento resultará em um objeto de saídaCouplingMapque tem buracos em seus índices que podem diferir das suposições da classe. O caso de uso típico desse argumento é ser emparelhado comCouplingMap.connected_components()que tratará os buracos como esperado.
Retorna
**O objeto CouplingMap **
para esse alvo. Se não houver restrições de conectividade no destino, isso retornará None.
Tipo de retorno
Aumentos
- ValueError - Se uma porta que não seja de dois qubits for passada para
two_q_gate. - IndexError - Se uma instrução que não esteja em
Targetfor passada paratwo_q_gate.
durations
durations()
Obter um objeto InstructionDurations do destino
Retorna
A duração da instrução representada no
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)
Criar um objeto de destino a partir da configuração global individual
Antes da criação da classe Target as restrições de um backend eram representadas por uma coleção de objetos diferentes que, combinados, representavam um subconjunto das informações contidas na classe Target. Essa função fornece uma interface simples para converter esses objetos separados em um objeto Target.
Esse construtor usará a entrada de basis_gates, num_qubits e coupling_map para criar um modelo básico do backend e as entradas instruction_durations, backend_properties e inst_map serão consultadas (nessa ordem) com base nesse modelo para procurar as propriedades de cada instrução e qubit. Se houver uma inconsistência entre as entradas, qualquer informação extra ou conflitante presente em instruction_durations, backend_properties ou inst_map será ignorada.
Parâmetros
- basis_gates (list[str]) – A lista de nomes de portas de base para o backend. Para que o destino seja criado, esses nomes devem estar na saída de
get_standard_gate_name_mapping()ou estar presentes no argumento especificado emcustom_name_mapping. - num_qubits (int | None) – O número de qubits suportados no backend.
- coupling_map (CouplingMap | None) – O mapa de acoplamento que representa as restrições de conectividade no backend. Se especificado, todas as portas do site
basis_gatesserão compatíveis com todos os qubits (ou pares de qubits). - instruction_durations (InstructionDurations | None) – Durações de instrução opcionais para instruções. Se especificado, ele terá prioridade para definir o campo
durationnos objetosInstructionPropertiespara as instruções no destino. - concurrent_measurements (list) – Uma lista de conjuntos de qubits que devem ser medidos juntos. Isso deve ser fornecido como uma lista aninhada, como
[[0, 1], [2, 3, 4]]. - dt (float | None) – A resolução de tempo do sistema dos sinais de entrada em segundos
- timing_constraints (TimingConstraints | None) – Restrições de tempo opcionais a serem incluídas no
Target - custom_name_mapping (dict[str, Any] | None) – Um dicionário opcional que mapeia nomes personalizados de portas/operações em
basis_gatespara umOperationobjeto que representa essa porta/operação. Por padrão, a maioria dos nomes de portas padrão são mapeados para o objeto de porta padrão a partirqiskit.circuit.librarydeste, isso só precisa ser especificado se a entradabasis_gatesdefinir portas em nomes fora desse conjunto.
Retorna
o alvo criado a partir da configuração de entrada
Tipo de retorno
Aumentos
- TranspilerError - Se as portas de base de entrada contiverem > 2 qubits e
coupling_mapfor - especificado. -
- KeyError - Se nenhum mapeamento estiver disponível para um
basis_gateespecificado.
gate_has_angle_bounds
gate_has_angle_bounds(name)
Verificar se um portão específico tem um ângulo definido
Parâmetros
name (str) – O nome da instrução para verificar se ela tem um conjunto de limites de ângulo
Retorna
Isso retornará True se o portão estiver no alvo e tiver limites de ângulo definidos. Ele retornará False se o portão não tiver limites de ângulo definidos ou não estiver no alvo.
Tipo de retorno
get
get(key, default=None)
Obtém um item do Target. Se não for encontrado, retorne um padrão fornecido ou None.
get_non_global_operation_names
get_non_global_operation_names(strict_direction=False)
Retorna os nomes de operações não globais para o destino
As operações não globais são aquelas no alvo que não se aplicam a todos os qubits (para operações de qubit único) ou a todos os qargs de vários qubits (para operações de vários qubits).
Parâmetros
strict_direction (bool) – Se definido como True , as operações multiqubit consideradas como não globais respeitam a direção estrita (ou a ordem dos qubits nos qargs é significativa). Por exemplo, se cx for definido em (0, 1) e ecr for definido em (1, 0) , por padrão, nenhum deles será considerado não global, mas se strict_direction for definido como True , tanto cx quanto ecr serão retornados.
Retorna
Uma lista de nomes de operações para operações que não são globais nesse destino
Tipo de retorno
Lista [str ]
has_angle_bounds
has_angle_bounds()
Verificar se há algum limite de ângulo definido no alvo
Retorna
Isso retornará True se houver limites de ângulo definidos em qualquer instrução do circuito
Tipo de retorno
instruction_properties
instruction_properties(index)
Obter as propriedades de instrução para uma tupla de instruções específica
Esse método deve ser usado em conjunto com o atributo instructions de um objeto Target objeto. Você pode usar esse método para obter rapidamente as propriedades de instrução de um elemento de instructions usando o índice dessa lista. No entanto, se você não estiver trabalhando com instructions é provavelmente mais eficiente acessar o alvo diretamente por meio do nome e dos qubits para obter as propriedades da instrução. Por exemplo, se instructions retornou:
[(XGate(), (0,)), (XGate(), (1,))]você poderia obter as propriedades do XGate no qubit 1 com:
props = target.instruction_properties(1)mas apenas acessá-lo diretamente pelo nome seria mais eficiente:
props = target['x'][(1,)](supondo que o nome canônico de XGateno destino seja 'x') Isso é especialmente verdadeiro para destinos maiores, pois será pior com o número de tuplas de instruções em um destino.
Parâmetros
index (int) – O índice da tupla de instruções do atributo instructions atributo. Por exemplo, se você quiser as propriedades do terceiro elemento em instructions você definiria isso como 2.
Retorna
As propriedades de instrução para a tupla de instruções especificada
Tipo de retorno
instruction_supported
instruction_supported(operation_name=None, qargs=Ellipsis, operation_class=None, parameters=None, check_angle_bounds=True)
Retorna se a instrução (operação + qubits) é compatível com o destino
Parâmetros
-
operation_name (str) – O nome da operação para a instrução. Este ou
operation_classdeve ser especificado; se ambos forem especificados,operation_classterá prioridade e esse argumento será ignorado. -
qargs (tuple) – A tupla de índices de qubit para a instrução. Se isso não for especificado, esse método retornará
Truese a operação especificada for compatível com qualquer qubits. O aplicativo típico sempre terá essa configuração (caso contrário, é o mesmo que verificar se o destino contém a operação). Normalmente, você não definiria esse argumento se quisesse verificar de forma mais geral se o destino suporta uma operação com oparametersem qualquer qubits. -
operation_class (Type[qiskit.circuit.Instruction]) – A classe de operação para verificar se o destino suporta uma determinada operação por classe, e não por nome. Essa pesquisa é mais cara, pois precisa iterar todas as operações no destino em vez de apenas uma única pesquisa. Se isso for especificado, ele substituirá o argumento
operation_name. O caso de uso típico dessa operação é verificar se uma variante específica de uma operação é compatível com o backend. Por exemplo, se você quisesse verificar se umRXGateé suportado em um qubit específico com um ângulo fixo. Essa variante de ângulo fixo normalmente terá um nome diferente do atributonamedo objeto ("rx") no destino. Isso pode ser usado para verificar se alguma instância da classe está disponível nesse caso. -
parameters (list) –
Uma lista de parâmetros para verificar se o destino os suporta nos qubits especificados. Se a instrução for compatível com os valores de parâmetro especificados na lista da operação e dos qargs especificados, ela retornará
True, mas se os parâmetros não forem compatíveis com a instrução especificada, ela retornaráFalse. Se esse argumento não for especificado, o método retornaráTruese a instrução for compatível, independentemente dos parâmetros da instrução. Se especificado com qualquer objetoParameterna lista, essa entrada será tratada como compatível com qualquer valor; no entanto, os nomes dos parâmetros não serão verificados (por exemplo, se uma operação no destino estiver listada como parametrizada com"theta"e"phi"for passada para essa função, que retornaráTrue). Por exemplo, se for chamado com:parameters = [Parameter("theta")] target.instruction_supported("rx", (0,), parameters=parameters)retornará
Truese umRXGatefor suportado no qubit 0 que aceitará qualquer parâmetro. Se você precisar verificar um parâmetro de valor numérico fixo, esse argumento normalmente é combinado com o argumentooperation_class. Por exemplo:target.instruction_supported("rx", (0,), RXGate, parameters=[pi / 4])retornará
Truese houver um RXGate( pi/4 ) no qubit 0. -
check_angle_bounds (bool) – Se definido como True (o padrão), o valor de
parametersserá validado em relação a qualquer limite de ângulo definido no alvo. Se algum dos valores emparametersestiver definido comoParameterExpressionesse sinalizador não terá efeito, pois os limites de ângulo afetam somente as operações não parametrizadas no circuito.
Retorna
Retorna True se a instrução for compatível e False se não for.
Tipo de retorno
items
items()
Retorna pares de nomes de porta e seu mapa de propriedades (str, dicttuple[, InstructionProperties] )
keys
operation_from_name
operation_from_name(instruction)
Obter o objeto de classe de operação para um determinado nome
Parâmetros
instruction (str) – O nome da instrução para obter a Instruction instância para
Retorna
A instância da instrução correspondente ao nome. Essa também pode ser a classe para variáveis definidas globalmente com operações.
Tipo de retorno
operation_names_for_qargs
operation_names_for_qargs(qargs, /)
Obter os nomes das operações para uma tupla de qargs especificada
Parâmetros
qargs (tuple) – Uma qargs tupla dos qubits para obter os portões que se aplicam a ela. Por exemplo, (0,) retornará o conjunto de todas as instruções que se aplicam ao qubit 0. Se definido como None , retornará os nomes de todas as operações definidas globalmente no destino.
Retorna
O conjunto de nomes de operações que se aplicam ao site qargs especificado.
Tipo de retorno
Aumentos
KeyError - Se qargs não estiver no destino
operations_for_qargs
operations_for_qargs(qargs, /)
Obter o objeto de classe de operação para uma tupla de qargs especificada
Parâmetros
qargs (tuple) – Uma tupla qargs dos qubits para obter os portões que se aplicam a ela. Por exemplo, (0,) retornará o conjunto de todas as instruções que se aplicam ao qubit 0. Se definido como None , retornará todas as operações definidas globalmente no destino.
Retorna
A lista de instâncias Instruction instâncias que se aplicam ao qarg especificado. Isso também pode ser uma classe se uma operação de largura variável for definida globalmente.
Tipo de retorno
Aumentos
KeyError - Se qargs não estiver no destino
qargs_for_operation_name
qargs_for_operation_name(operation)
Obter os qargs para um determinado nome de operação
Parâmetros
operation (str) – O nome da operação para obter qargs
Retorna
O conjunto de qargs ao qual a instância da porta se aplica.
Tipo de retorno
seconds_to_dt
seconds_to_dt(duration)
Converter uma determinada duração em segundos para unidades de dt
Parâmetros
duration (float) – A duração em segundos, como em um campo InstructionProperties para uma instrução no destino.
Tipo de retorno
Retorna
duração: A duração em unidades de dt
supported_angle_bound
supported_angle_bound(name, angles)
Verifique se os parâmetros em uma porta específica estão em conformidade com os limites de ângulo
Parâmetros
- name (str) – O nome da instrução para verificar os limites de ângulo de
- angles (list) – Uma lista de valores de parâmetros flutuantes para
namepara verificar se estão em conformidade com os limites de ângulo definidos.
Retorna
Retorna True se os valores de parâmetro especificados forem compatíveis com os limites de ângulo. False é retornado se qualquer um dos parâmetros estiver fora dos limites definidos.
Tipo de retorno
Aumentos
- TranspilerError - Se
namenão estiver no alvo ou não - têm limites de ângulo definidos. -
timing_constraints
timing_constraints()
Obter um objeto TimingConstraints do destino
Retorna
As restrições de tempo representadas no Target
Tipo de retorno
TimingConstraints
update_instruction_properties
update_instruction_properties(instruction, qargs, properties)
Atualiza o objeto de propriedade de um par de qarg de instruções já existente no Target.
Para facilitar o acesso, um usuário pode obter o mapeamento entre os qargs aplicáveis de uma instrução e suas propriedades de instrução por meio do protocolo de mapeamento (usando __getitem__), com o nome da instrução como chave. Esse método é a única maneira de modificar/atualizar as propriedades de uma instrução no site Target. Não há suporte para o uso do protocolo de mapeamento para modificações.
Parâmetros
- instruction (str) – O nome da instrução a ser atualizada
- qargs (tuple) – Os qargs para atualizar as propriedades de
- properties (InstructionProperties) – As propriedades a serem definidas para essa instrução
Aumentos
KeyError - Se instruction ou qarg não estiverem no destino
values
values()
Retorna o mapa de propriedades (qargs -> InstructionProperties ) de cada instrução no destino
Parâmetros