hypertket

class quantinuum_schemas.models.hypertket_config.HyperTketConfig(
*,
rewrite_search_config: RewriteSearchConfig = RewriteSearchConfig(enable_rewrite_search=True),
qubit_reuse_config: QubitReuseConfig | None = None,
)

Configuration for HyperTKET compilation.

class quantinuum_schemas.models.hypertket_config.QubitReuseConfig(
*,
enable_qubit_reuse: bool = False,
ordering_config: BruteForceOrderConfig | ConstrainedOptOrderConfig | LocalGreedyOrderConfig | LocalGreedyFirstNodeSearchOrderConfig | CustomOrderConfig | DefaultOrderConfig = DefaultOrderConfig(ordering_method='DefaultOrder'),
min_qubits: Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])] | None = None,
dual_circuit_strategy: DualStrat | None = DualStrat.AUTO,
)

Configuration for qubit reuse compilation pass. The DefaultOrderingConfig and DualStart.Auto are specified by default.

class quantinuum_schemas.models.hypertket_config.DualStrat(
value,
)

Strategy for dual circuit compilation.

  • DUAL peforms qubit reuse compilation on

the dual of the circuit. * SINGLE disables use of the dual circuit during qubit reuse compilation. * AUTO performs qubit reuse compilation on both the circuit and its dual. The output circuit with the minimal number of qubits is returned.

class quantinuum_schemas.models.hypertket_config.BruteForceOrderConfig(
*,
ordering_method: Literal['BruteForceOrder'] = 'BruteForceOrder',
)

Performs all possible ordering and then estimates the ordering with the minimal number of qubits.

class quantinuum_schemas.models.hypertket_config.ConstrainedOptOrderConfig(
*,
ordering_method: Literal['ConstrainedOptOrder'] = 'ConstrainedOptOrder',
time_limit: Annotated[int, Ge(ge=0)] = 600,
n_threads: Annotated[int, Ge(ge=1)] = 1,
hint: list[int] | None = None,
)

Orders causal cones using a Constrained Programming Satisfiability (CP-SAT) model.

class quantinuum_schemas.models.hypertket_config.LocalGreedyOrderConfig(
*,
ordering_method: Literal['LocalGreedyOrder'] = 'LocalGreedyOrder',
)

Ordering config for LocalGreedyOrder.

class quantinuum_schemas.models.hypertket_config.LocalGreedyFirstNodeSearchOrderConfig(
*,
ordering_method: Literal['LocalGreedyFirstNodeSearchOrder'] = 'LocalGreedyFirstNodeSearchOrder',
)

Ordering config for LocalGreedyFirstNodeSearchOrder.

class quantinuum_schemas.models.hypertket_config.DefaultOrderConfig(
*,
ordering_method: Literal['DefaultOrder'] = 'DefaultOrder',
)

Switches the Ordering Method used depending on the number of Qubits in the Circuit. The following specifies the ordering method for a specific circuit width.

  • BruteForceOrder: n_qubits <= 9;

  • ConstrainedOptOrder: 9 < n_qubits <= 30;

  • LocalGreedyFirstNodeSearchOrder: 30 < n_qubits <= 1000;

  • LocalGreedyOrder: n_qubits > 1000.

class quantinuum_schemas.models.hypertket_config.CustomOrderConfig(
*,
ordering_method: Literal['CustomOrder'] = 'CustomOrder',
order: list[int],
)

Ordering config for CustomOrder.