Skip to main content
IBM Quantum Platform

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)

GitHub

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.

Nota

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.

Nota

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)

GitHub

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 ForLoop ou MCXGate), é possível especificar a classe. Se a classe for especificada, o name argumento 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 InstructionProperties para essa implementação de instrução no backend. As propriedades são opcionais para qualquer implementação de instrução; se não houver nenhuma InstructionProperties disponí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 primeiro None indica que ela se aplica a todos os qubits e o segundo None indica que não há InstructionProperties para 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 name de gate será usado. Todos os portões do site Target precisam 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 classe Target classe).
  • 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 None para 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 instruction e nenhum nome for especificado ou properties for definido.

build_coupling_map

build_coupling_map(two_q_gate=None, filter_idle_qubits=False)

GitHub

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 Target para 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ída CouplingMap removerá 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ída CouplingMap que tem buracos em seus índices que podem diferir das suposições da classe. O caso de uso típico desse argumento é ser emparelhado com CouplingMap.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

CouplingMap

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 Target for passada para two_q_gate.

durations

durations()

GitHub

Obter um objeto InstructionDurations do destino

Retorna

A duração da instrução representada no

destino

Tipo de retorno

InstructionDurations

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)

GitHub

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 em custom_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_gates serã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 duration nos objetos InstructionProperties para 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_gates para um Operation objeto 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 partir qiskit.circuit.library deste, isso só precisa ser especificado se a entrada basis_gates definir portas em nomes fora desse conjunto.

Retorna

o alvo criado a partir da configuração de entrada

Tipo de retorno

Destino

Aumentos

  • TranspilerError - Se as portas de base de entrada contiverem > 2 qubits e coupling_map for
  • especificado. -
  • KeyError - Se nenhum mapeamento estiver disponível para um basis_gate especificado.

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

bool

get

get(key, default=None)

GitHub

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)

GitHub

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

bool

instruction_properties

instruction_properties(index)

GitHub

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

InstructionProperties

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_class deve ser especificado; se ambos forem especificados, operation_class terá 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á True se 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 o parameters em 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 um RXGate é suportado em um qubit específico com um ângulo fixo. Essa variante de ângulo fixo normalmente terá um nome diferente do atributo name do 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á True se a instrução for compatível, independentemente dos parâmetros da instrução. Se especificado com qualquer objeto Parameter na 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á True se um RXGate for 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 argumento operation_class . Por exemplo:

    target.instruction_supported("rx", (0,), RXGate, parameters=[pi / 4])

    retornará True se houver um RXGate( pi/4 ) no qubit 0.

  • check_angle_bounds (bool) – Se definido como True (o padrão), o valor de parameters será validado em relação a qualquer limite de ângulo definido no alvo. Se algum dos valores em parameters estiver definido como ParameterExpression esse 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

bool

items

items()

GitHub

Retorna pares de nomes de porta e seu mapa de propriedades (str, dicttuple[, InstructionProperties] )

keys

keys()

GitHub

Retornar as chaves (operation_names) do Target

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

qiskit.circuit.Instruction

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

set

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

Lista

Aumentos

KeyError - Se qargs não estiver no destino

qargs_for_operation_name

qargs_for_operation_name(operation)

GitHub

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

set

seconds_to_dt

seconds_to_dt(duration)

GitHub

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

int

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 name para 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

bool

Aumentos

  • TranspilerError - Se name não estiver no alvo ou não
  • têm limites de ângulo definidos. -

timing_constraints

timing_constraints()

GitHub

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)

GitHub

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()

GitHub

Retorna o mapa de propriedades (qargs -> InstructionProperties ) de cada instrução no destino

Parâmetros

  • description (str | None)
  • num_qubits (int | None)
  • dt (float | None)
  • granularity (int)
  • min_length (int)
  • pulse_alignment (int)
  • acquire_alignment (int)
  • qubit_properties (list | None)
  • concurrent_measurements (list | None)
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.