---
title: Transpiler Pass Plugins (latest version)
description: API reference for Transpiler Pass Plugins in the latest version of qiskit-fermions
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit-fermions/transpiler-passes-plugins
---

# Transpiler Pass Plugins

The [`F2QSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-f-2-q-synthesis#qiskit_fermions.transpiler.passes.F2QSynthesis "qiskit_fermions.transpiler.passes.F2QSynthesis") transpiler pass exposes a plugin interface (see [`F2QSynthesisPlugin`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin")) through which implementations for mapping fermion-based instructions to qubit-based ones can be registered.

The available plugins are managed by the [`F2QSynthesisPluginManager`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin-manager#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPluginManager "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPluginManager"). Choosing the right combination of synthesis plugins is crucial and the [`F2QSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-f-2-q-synthesis#qiskit_fermions.transpiler.passes.F2QSynthesis "qiskit_fermions.transpiler.passes.F2QSynthesis") transpilation pass does **not** have any default plugins defined! For this, refer to the transpiler [`presets`](/docs/api/qiskit-fermions/transpiler-presets#module-qiskit_fermions.transpiler.presets "qiskit_fermions.transpiler.presets").

|                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [`F2QSynthesisPlugin`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin")(\*args, \*\*kwargs)            | The protocol for plugins to the [`F2QSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-f-2-q-synthesis#qiskit_fermions.transpiler.passes.F2QSynthesis "qiskit_fermions.transpiler.passes.F2QSynthesis") transpiler pass. |
| [`F2QSynthesisPluginManager`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin-manager#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPluginManager "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPluginManager")() | A simple manager of the installed fermion-to-qubit synthesis plugins.                                                                                                                                                          |

The plugins to use at runtime have to be registered in the [`F2QSynthesis.methods`](/docs/api/qiskit-fermions/transpiler-passes-f-2-q-synthesis#qiskit_fermions.transpiler.passes.F2QSynthesis.methods "qiskit_fermions.transpiler.passes.F2QSynthesis.methods") attribute. This can be done easily through the `config` argument of [`F2QSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-f-2-q-synthesis#qiskit_fermions.transpiler.passes.F2QSynthesis "qiskit_fermions.transpiler.passes.F2QSynthesis") which specifies the plugins to use from the [`F2QSynthesisPluginManager`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin-manager#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPluginManager "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPluginManager") or it can be done manually by writing into [`F2QSynthesis.methods`](/docs/api/qiskit-fermions/transpiler-passes-f-2-q-synthesis#qiskit_fermions.transpiler.passes.F2QSynthesis.methods "qiskit_fermions.transpiler.passes.F2QSynthesis.methods") directly.

The table below lists the builtin synthesis plugins, organized by the [`FermionicGate`](/docs/api/qiskit-fermions/circuit-fermionic-gate#qiskit_fermions.circuit.FermionicGate "qiskit_fermions.circuit.FermionicGate") that they act upon:

| Circuit instruction name                                                                                                                                                                                               | Plugin method name          | Reference                                                                                                                                                                                                                                                                                                                                        |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [`Evolution`](/docs/api/qiskit-fermions/circuit-library-evolution#qiskit_fermions.circuit.library.Evolution "qiskit_fermions.circuit.library.Evolution")                                                               | `MapperFn`                  | [`MapperFnEvolutionSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-mapper-fn-evolution-synthesis#qiskit_fermions.transpiler.passes.synthesis.MapperFnEvolutionSynthesis "qiskit_fermions.transpiler.passes.synthesis.MapperFnEvolutionSynthesis")                                                                              |
| [`InitializeModes`](/docs/api/qiskit-fermions/circuit-library-initialize-modes#qiskit_fermions.circuit.library.InitializeModes "qiskit_fermions.circuit.library.InitializeModes")                                      | `TrivialOccupation`         | [`TrivialOccupationInitializeModesSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-trivial-occupation-initialize-modes-synthesis#qiskit_fermions.transpiler.passes.synthesis.TrivialOccupationInitializeModesSynthesis "qiskit_fermions.transpiler.passes.synthesis.TrivialOccupationInitializeModesSynthesis")                 |
| [`OrbitalRotation`](/docs/api/qiskit-fermions/circuit-library-orbital-rotation#qiskit_fermions.circuit.library.OrbitalRotation "qiskit_fermions.circuit.library.OrbitalRotation")                                      | `GivensDecomposition`       | [`GivensDecompositionOrbitalRotationSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-givens-decomposition-orbital-rotation-synthesis#qiskit_fermions.transpiler.passes.synthesis.GivensDecompositionOrbitalRotationSynthesis "qiskit_fermions.transpiler.passes.synthesis.GivensDecompositionOrbitalRotationSynthesis")         |
| [`PrepareSlaterDeterminant`](/docs/api/qiskit-fermions/circuit-library-prepare-slater-determinant#qiskit_fermions.circuit.library.PrepareSlaterDeterminant "qiskit_fermions.circuit.library.PrepareSlaterDeterminant") | `GivensDecompositionSlater` | [`GivensDecompositionSlaterDeterminantSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-givens-decomposition-slater-determinant-synthesis#qiskit_fermions.transpiler.passes.synthesis.GivensDecompositionSlaterDeterminantSynthesis "qiskit_fermions.transpiler.passes.synthesis.GivensDecompositionSlaterDeterminantSynthesis") |

|                                                                                                                                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [`GivensDecompositionOrbitalRotationSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-givens-decomposition-orbital-rotation-synthesis#qiskit_fermions.transpiler.passes.synthesis.GivensDecompositionOrbitalRotationSynthesis "qiskit_fermions.transpiler.passes.synthesis.GivensDecompositionOrbitalRotationSynthesis")()           | A [`F2QSynthesisPlugin`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin") for transpiling [`OrbitalRotation`](/docs/api/qiskit-fermions/circuit-library-orbital-rotation#qiskit_fermions.circuit.library.OrbitalRotation "qiskit_fermions.circuit.library.OrbitalRotation") into Givens rotations.                |
| [`GivensDecompositionSlaterDeterminantSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-givens-decomposition-slater-determinant-synthesis#qiskit_fermions.transpiler.passes.synthesis.GivensDecompositionSlaterDeterminantSynthesis "qiskit_fermions.transpiler.passes.synthesis.GivensDecompositionSlaterDeterminantSynthesis")(\*) | A [`F2QSynthesisPlugin`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin") for transpiling [`PrepareSlaterDeterminant`](/docs/api/qiskit-fermions/circuit-library-prepare-slater-determinant#qiskit_fermions.circuit.library.PrepareSlaterDeterminant "qiskit_fermions.circuit.library.PrepareSlaterDeterminant"). |
| [`MapperFnEvolutionSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-mapper-fn-evolution-synthesis#qiskit_fermions.transpiler.passes.synthesis.MapperFnEvolutionSynthesis "qiskit_fermions.transpiler.passes.synthesis.MapperFnEvolutionSynthesis")(mapper\_fn\[, ...])                                                              | A [`F2QSynthesisPlugin`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin") for transpiling [`Evolution`](/docs/api/qiskit-fermions/circuit-library-evolution#qiskit_fermions.circuit.library.Evolution "qiskit_fermions.circuit.library.Evolution") under a custom mapping.                                        |
| [`TrivialOccupationInitializeModesSynthesis`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-trivial-occupation-initialize-modes-synthesis#qiskit_fermions.transpiler.passes.synthesis.TrivialOccupationInitializeModesSynthesis "qiskit_fermions.transpiler.passes.synthesis.TrivialOccupationInitializeModesSynthesis")()                   | A [`F2QSynthesisPlugin`](/docs/api/qiskit-fermions/transpiler-passes-synthesis-f-2-q-synthesis-plugin#qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin "qiskit_fermions.transpiler.passes.synthesis.F2QSynthesisPlugin") for transpiling [`InitializeModes`](/docs/api/qiskit-fermions/circuit-library-initialize-modes#qiskit_fermions.circuit.library.InitializeModes "qiskit_fermions.circuit.library.InitializeModes") with trivial occupation.              |
