TranslateParameterizedGates
class qiskit.transpiler.passes.TranslateParameterizedGates(*args, **kwargs)
Bases: TransformationPass
Traduzir portas parametrizadas para um conjunto de bases suportado.
Quando é encontrada uma instrução parametrizada que não está na lista supported_gates , a instrução é decomposta em um nível e os sub-blocos parametrizados são decompostos recursivamente. A recursão é interrompida quando todas as portas parametrizadas estiverem em supported_gates, ou se uma porta não tiver definição e uma tradução para a base for tentada (isso pode acontecer, por exemplo, para o UGate se ele não estiver na lista de portas especificada).
Exemplo
O circuito seguinte, aninhado de forma múltipla:
from qiskit.circuit import QuantumCircuit, ParameterVector
from qiskit.transpiler.passes import TranslateParameterizedGates
x = ParameterVector("x", 4)
block1 = QuantumCircuit(1)
block1.rx(x[0], 0)
sub_block = QuantumCircuit(2)
sub_block.cx(0, 1)
sub_block.rz(x[2], 0)
block2 = QuantumCircuit(2)
block2.ry(x[1], 0)
block2.append(sub_block.to_gate(), [0, 1])
block3 = QuantumCircuit(3)
block3.ccx(0, 1, 2)
circuit = QuantumCircuit(3)
circuit.append(block1.to_gate(), [1])
circuit.append(block2.to_gate(), [0, 1])
circuit.append(block3.to_gate(), [0, 1, 2])
circuit.cry(x[3], 0, 2)
supported_gates = ["rx", "ry", "rz", "cp", "crx", "cry", "crz"]
unrolled = TranslateParameterizedGates(supported_gates)(circuit)é decomposto em:
┌──────────┐ ┌──────────┐┌─────────────┐
q_0: ┤ Ry(x[1]) ├──■──┤ Rz(x[2]) ├┤0 ├─────■──────
├──────────┤┌─┴─┐└──────────┘│ │ │
q_1: ┤ Rx(x[0]) ├┤ X ├────────────┤1 circuit-92 ├─────┼──────
└──────────┘└───┘ │ │┌────┴─────┐
q_2: ─────────────────────────────┤2 ├┤ Ry(x[3]) ├
└─────────────┘└──────────┘Parâmetros
- supported_gates – Uma lista de portas de base compatíveis, especificadas como string. Se
None, é necessário fornecertargetum. - equivalence_library - A biblioteca de equivalência para traduzir as portas. O padrão é a biblioteca de equivalência de todas as portas padrão do Qiskit.
- alvo - Um
Targetcontendo as operações suportadas. SeNone,supported_gatesdeve ser definido. Observe que esse argumento tem precedência sobresupported_gates, se ambos estiverem definidos.
Aumentos
ValueError - Se nenhum dos endereços supported_gates e target for aprovado.
Atributos
is_analysis_pass
Verificar se o passe é um passe de análise.
Se a passagem for um AnalysisPass,, isso significa que a passagem pode analisar o DAG e escrever os resultados dessa análise no conjunto de propriedades. As modificações no DAG não são permitidas por esse tipo de passe.
is_transformation_pass
Verificar se o passe é um passe de transformação.
Se a passagem for um TransformationPass,, isso significa que a passagem pode manipular o DAG, mas não pode modificar o conjunto de propriedades (mas pode ser lido).
Métodos
execute
execute(passmanager_ir, state, callback=None)
Executar a tarefa de otimização para a entrada Qiskit IR.
Parâmetros
- passmanager_ir (Any) – Qiskit IR para otimizar.
- state (PassManagerState) – Estado associado à execução do fluxo de trabalho pelo próprio gerenciador de passes.
- callback (Callable | None) – Uma função de retorno de chamada que é chamada a cada execução da tarefa de otimização.
Retorna
Qiskit IR otimizado e estado do fluxo de trabalho.
Tipo de retorno
tupla [ Any, PassManagerState ]
name
run
run(dag)
Execute a passagem do transpilador.
Parâmetros
dag (DAGCircuit) – O circuito DAG no qual as portas parametrizadas devem ser desenroladas.
Retorna
Um DAG em que as portas parametrizadas foram desenroladas.
Aumentos
QiskitError - Se o circuito não puder ser desenrolado.
Tipo de retorno
update_status
update_status(state, run_state)
Atualizar o status do fluxo de trabalho.
Parâmetros
- state (PassManagerState) – Passar o estado do gerenciador para atualizar.
- run_state (RunState) – Status de conclusão da tarefa atual.
Retorna
Estado do gerenciador de passes atualizado.
Tipo de retorno