B2QSynthesis¶
- class B2QSynthesis(config=None)¶
Bases:
GenericPass[DAGCircuit,DAGCircuit]A transpilation pass to map boson-based circuit instructions to qubit-based ones.
This transpilation pass works similarly to Qiskit’s
HighLevelSynthesispass; given an inputBosonicDAGCircuit, it iterates the contained instructions and delegates the translation to qubit-based instructions to matchingmethods. The insertion of the qubit-based circuit instructions into the outputDAGCircuitis also left to the plugin method. This pass will merely have prepared theQuantumRegisteraccording to the global transpilationB2QLayoutsetting.Usage
There are two ways to configure the plugins used by this transpiler pass. The examples below show the equivalent configuration to the
generate_preset_occupation_pass_manager().Providing a
configduring initialization:>>> from qiskit_bosons.mappers import LevelSpec >>> from qiskit_bosons.mappers.library import occupation_encoding >>> from qiskit_bosons.transpiler import passes >>> >>> # The encoding and the truncation are bound here, at transpile time -- the bosonic >>> # circuit upstream of this pass is independent of both. >>> spec = LevelSpec(2, "unary_projected") >>> def mapper_fn(operator, num_qubits): ... return occupation_encoding(operator, spec, num_qubits) >>> config = { ... "Evolution": ("MapperFn", (mapper_fn,)), ... "InitializeModes": ("Occupation", (spec,)), ... } >>> synth = passes.B2QSynthesis(config)
Manually populating the
methodsattribute:>>> from qiskit_bosons.transpiler import passes >>> >>> synth = passes.B2QSynthesis() >>> synth.methods["Evolution"] = passes.MapperFnEvolutionSynthesis(mapper_fn) >>> synth.methods["InitializeModes"] = ( ... passes.OccupationInitializeModesSynthesis(spec) ... )
Through this manual approach it is also possible to inject custom
B2QSynthesisPluginimplementations without requiring them to be registered through an entry-point.
Initializing this transpiler pass can be done with the arguments listed below.
- Parameters:
config (B2QSynthesisConfig | None) – an optional dictionary to pre-populate the
methodswith plugins provided by theB2QSynthesisPluginManager, or with plugin instances. SeeB2QSynthesisConfig.- Raises:
Attributes
- methods: dict[str, B2QSynthesisPlugin]¶
A dictionary of boson-to-qubit circuit instruction transpilation methods.
For this transpilation pass to have any effect, this dictionary must be populated with instances of the
B2QSynthesisPluginprotocol. The keys of this dictionary correspond to the__name__of a circuit instruction.All available transpilation plugins are managed by the
B2QSynthesisPluginManager.Note
This dictionary is empty by default! You can pre-populate it with plugins provided by the
B2QSynthesisPluginManagerby providing aconfigargument during initialization of this transpiler pass instance.
Methods
- run(dag)¶
Runs this transpilation pass.
- Parameters:
dag (DAGCircuit) – the input circuit with boson-based instructions. Only
DAGOpNodewithBosonicGateinstances as theiropare supported, plusBarrier, which is mapped onto every qubit of each register it touched.- Returns:
The output circuit with qubit-based instructions.
- Raises:
ValueError – when a
DAGOpNodeis encountered whoseopis neither of typeBosonicGatenor aBarrier.TypeError – when a
BosonicGatetype is encountered for which no translation plugin is present inmethods.
- Return type:
Inherited Methods
- execute(passmanager_ir, state, callback=None)¶
Execute optimization task for input Qiskit IR.
- Parameters:
passmanager_ir (IR) – Qiskit IR to optimize.
state (PassManagerState) – State associated with workflow execution by the pass manager itself.
callback (Callable[[Task, IR_OUT, PropertySet, float, int], None] | None) – A callback function which is called per execution of optimization task.
- Returns:
Optimized Qiskit IR and state of the workflow.
- Return type:
tuple[IR_OUT, PassManagerState]
- update_status(state, run_state)¶
Update workflow status.
- Parameters:
state (PassManagerState) – Pass manager state to update.
run_state (RunState) – Completion status of current task.
- Returns:
Updated pass manager state.
- Return type: