Skip to main content
IBM Quantum Platform

FermionicGate

class FermionicGate(name, num_modes, /, params=None, *, label=None)

Bases: Gate

A classe base para todas as portas fermiónicas.

Para garantir a consistência, apenas subclasses desta classe de porta podem ser adicionadas às instâncias de FermionicCircuit. Dessa forma, essa classe (em grande parte) funciona como um tipo (por enquanto).

Cuidado

Como esta é uma subclasse de, a Gate documentação de seus métodos pode fazer referência a qubits. Essas referências devem ser interpretadas como se referindo a férmions no contexto das instâncias desta subclasse.

Também pode acontecer que alguns dos métodos herdados nem sempre façam sentido devido a essa reinterpretação. Você já foi avisado.

Parâmetros

  • name (str) – O nome do portão.
  • num_qubits – O número de qubits sobre os quais a porta atua.
  • params (list | None) – Uma lista de parâmetros.
  • label (str | None) – Uma etiqueta opcional para o portão.
  • num_modes (int)

Atributos

num_modes

O número de modos fermiónicos sobre os quais essa porta atua.

Atributos herdados

base_class

Obtenha a classe base desta instrução. Isso certamente estará na árvore de herança de self.

A “classe base” de uma instrução é a classe mais baixa em sua árvore de herança com a qual o objeto deve ser considerado totalmente compatível para _todas_ as aplicações em circuitos. Isso geralmente significa que a subclasse é definida exclusivamente para oferecer algum tipo de conveniência ao programador em relação à classe base, e que a classe base é a “verdadeira” classe do ponto de vista comportamental. Em particular, você não deve sobrescrever base_class se estiver definindo uma versão personalizada de uma instrução que será implementada de maneira diferente pelo hardware, como uma estratégia alternativa de medição ou uma versão de uma porta parametrizada com um conjunto específico de parâmetros, com o objetivo de diferenciá-la em um Target da porta parametrizada completa.

Isso costuma ser exatamente equivalente a type(obj), exceto no caso de instâncias únicas de instruções da biblioteca padrão. Essas instâncias singleton são subclasses especiais de sua classe base, e essa propriedade retornará essa classe base. Por exemplo:

>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
True

Em geral, não se deve confiar na classe exata de uma instrução; dentro de um determinado circuito, espera-se que Instruction.name seja um discriminador mais adequado na maioria das situações.

decompositions

Obtenha as decomposições da instrução no site SessionEquivalenceLibrary.

definition

Defina a função de retorno em termos de outras portas lógicas básicas.

label

Etiqueta com instruções de devolução

mutable

Esta instância é uma instância única mutável ou não?

Se esse atributo estiver definido, a False instância da porta é um singleton compartilhado e não é mutável.

name

Retorne o nome.

num_clbits

Retorna o número de clbits.

num_qubits

Retorna o número de qubits.

params

Os parâmetros deste Instruction. O ideal é que sejam ângulos de porta.

Métodos do protocolo

_apply_unitary_

_apply_unitary_(vec, norb, nelec, copy)

Aplica essa porta a um vetor de estado do ffsim, implementando o protocolo do ffsim.

Este é o ponto de entrada para a colocação de identidade do protocolo ffsim.SupportsApplyUnitary do ffsim (espelhado localmente como SupportsApplyUnitary): ele pressupõe que o portão atua sobre os modos 0..num_modes do vetor de estado e delega ao mecanismo sensível à colocação ( _apply_unitary_placed_() ver SupportsApplyUnitaryPlaced), que todo portão fermiónico concreto implementa. Consulte esse método para obter informações sobre a semântica de ( vec incluindo se um vetor None é aceito), norb, nelec, e copy.

Aumentos

NotImplementedError – se essa porta não implementar _apply_unitary_placed_ (um simples FermionicGate usado apenas como marcador de tipo) e, portanto, não puder ser aplicada a um vetor de estado.

Parâmetros

Tipo de retorno

np.ndarray

Métodos herdados

add_decomposition

add_decomposition(decomposition)

Adicione uma decomposição da instrução à página “ SessionEquivalenceLibrary ”.

broadcast_arguments

broadcast_arguments(qargs, cargs)

Validação e tratamento dos argumentos e sua relação.

Por exemplo, significa cx([q[0],q[1]], q[2]) cx(q[0], q[2]); cx(q[1], q[2]). Esse método apresenta os argumentos no agrupamento correto. No exemplo apresentado:

in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
      [q[1], q[2]], []

As regras gerais de transmissão são:

  • Se len(qargs) == 1:

    [q[0], q[1]] -> [q[0]],[q[1]]
  • Se 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]]
  • Se len(qargs) >= 3:

    [q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]

Parâmetros

  • qargs (list) – Lista de argumentos relacionados a bits quânticos.
  • cargs (list) – Lista de argumentos clássicos de bits.

Retorna

Uma tupla com um único argumento.

Aumentos

CircuitError – Se a entrada não for válida. Por exemplo, o número de argumentos não corresponde ao esperado pela porta lógica.

Tipo de retorno

Iterável [ tupla [ lista, lista ]]

control

control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)

Retorna a versão controlada de si mesmo.

A porta controlada é implementada como ControlledGate quando annotated é False, e como AnnotatedOperation quando annotated é True.

Obsoleto desde a versão 2.3

qiskit.circuit.gate.Gate.control()O argumento annotated foi descontinuado a partir do Qiskit 2.3. Ele será removido no Qiskit 3.0. O método Gate.control () não aceita mais annotated=None. O novo valor padrão é annotated=True, o que representa o portão controlado como um AnnotatedOperation (a menos que já exista uma classe específica para portões controlados). Você pode definir explicitamente annotated=False para manter o comportamento anterior. No entanto, recomenda-se o uso de annotated=True, pois isso adia a construção do circuito controlado para o transpiler e, além disso, permite otimizações adicionais de portas controladas (o que normalmente resulta em circuitos de melhor qualidade).

Parâmetros

  • num_ctrl_qubits (int) – Número de controles a serem adicionados. Padroniza para 1.
  • label (str | None) – Etiqueta opcional para o portão. Padroniza para None. É ignorado se o portão controlado for implementado como uma operação anotada.
  • ctrl_state (int |str | None) – O estado de controle da porta, especificado como um número inteiro ou uma sequência de bits (por exemplo, "110"). Se None, o valor padrão é o estado em que todos os bits são 1 2**num_ctrl_qubits - 1.
  • annotated (bool | None) – Indica se a porta controlada deve ser implementada como uma porta controlada ou como uma operação anotada. Se None, considerado como False.

Retorna

Uma versão controlada dessa porta.

Aumentos

QiskitError – inválido ou num_ctrl_qubits ctrl_state.

copy

copy(name=None)

Cópia da instrução.

Parâmetros

name (str) – nome a ser atribuído ao circuito copiado; caso contrário None , o nome permanece o mesmo.

Retorna

uma cópia da instrução atual, com o nome atualizado, caso tenha sido fornecido

Tipo de retorno

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

Inverta esta instrução.

Se annotated for False, a instrução inversa é implementada como uma nova instrução com a definição invertida recursivamente.

Se annotated for True, a instrução inversa é implementada como AnnotatedOperation, e corresponde à instrução fornecida, anotada com o “modificador inverso”.

Instruções especiais que herdam da classe Instrução podem implementar sua própria inversa (por exemplo, T e Tdg, Barreira, etc.) Em particular, eles podem escolher como lidar com o argumento, o que annotated pode incluir ignorá-lo e sempre retornar uma classe de porta concreta caso a inversa seja definida como uma porta padrão.

Parâmetros

annotated (bool) – Se definido como True, a porta inversa de saída será retornada como AnnotatedOperation.

Retorna

A operação inversa.

Aumentos

CircuitError – se a instrução não for composta e ainda não tiver sido implementada uma inversa para ela.

is_parameterized

is_parameterized()

Retorna se o Instruction contém parâmetros de tempo de compilação.

power

power(exponent, annotated=False)

Eleve esse portão à potência de exponent.

Implementado como um portão unitário (ref. UnitaryGate) ou como uma operação anotada (ref. AnnotatedOperation). No caso de várias portas padrão, como, por exemplo RXGate, quando a potência de uma porta pode ser expressa em termos de outra porta padrão que é retornada diretamente.

Parâmetros

  • exponent (float) – o poder de levantar o portão para
  • annotated (bool) – indica se o power gate pode ser implementado como uma operação anotada. No caso de várias portas padrão, como, por exemplo RXGate, esse argumento é ignorado quando a potência de uma porta pode ser expressa em termos de outra porta padrão.

Retorna

Uma operação que implementa gate^exponent

Aumentos

CircuitError – Se a porta não for unitária

repeat

repeat(n)

Cria uma instrução repetida nnself vezes.

Parâmetros

n (int) – Número de vezes que a instrução deve ser repetida

Retorna

Contendo a definição.

Tipo de retorno

qiskit.circuit.Instruction

Aumentos

CircuitError – Se n < 1.

reverse_ops

reverse_ops()

Para uma instrução composta, inverta a ordem das subinstruções.

Isso é feito invertendo recursivamente todas as subinstruções. Ele não inverte nenhuma porta lógica.

Retorna

uma nova instrução com

subinstruções invertidas.

Tipo de retorno

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

Comparação suave entre portas. Seus nomes, o número de qubits e o número de bits clássicos devem coincidir. O número de parâmetros deve ser o mesmo. Cada parâmetro é comparado. Se a pessoa for um “ ParameterExpression ”, isso não é levado em consideração.

Parâmetros

other (instruction) – outra orientação.

Retorna

“self” e “other” são iguais nas expressões de parâmetros.

Tipo de retorno

bool

to_matrix

to_matrix()

Retorna um objeto Numpy.array correspondente à matriz unitária do gate.

Retorna

se a subclasse Gate tiver uma definição de matriz.

Tipo de retorno

np.ndarray

Aumentos

CircuitError – Se uma subclasse de Gate não implementar esse método, será lançada uma exceção quando esse método da classe base for chamado.

to_mutable

to_mutable()

Retorna uma cópia mutável deste gate.

Este método retornará uma nova cópia mutável desta instância de porta. Se estiver sendo utilizada uma instância singleton, esta será uma nova instância única que poderá ser alterada. Se a instância já for mutável, será criada uma cópia profunda dessa instância.

validate_parameter

validate_parameter(parameter)

Os parâmetros do gate devem ser do tipo int, float ou ParameterExpression

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.