Skip to main contentIBM Quantum Documentation
You are viewing the API reference for an old version of Qiskit SDK. Switch to latest version


class qiskit.transpiler.InstructionProperties(duration=None, error=None, calibration=None)

GitHub(opens in a new tab)

Bases: object(opens in a new tab)

A representation of the properties of a gate implementation.

This class provides the optional properties that a backend can provide about an instruction. These represent the set that the transpiler can currently work with if present. However, if your backend provides additional properties for instructions you should subclass this to add additional custom attributes for those custom/additional properties by the backend.

Create a new InstructionProperties object


  • duration (float(opens in a new tab) | None) – The duration, in seconds, of the instruction on the specified set of qubits
  • error (float(opens in a new tab) | None) – The average error rate for the instruction on the specified set of qubits.
  • calibration (Schedule |ScheduleBlock | CalibrationEntry | None) – The pulse representation of the instruction.





The pulse representation of the instruction.


This attribute always returns a Qiskit pulse program, but it is internally wrapped by the CalibrationEntry to manage unbound parameters and to uniformly handle different data representation, for example, un-parsed Pulse Qobj JSON that a backend provider may provide.

This value can be overridden through the property setter in following manner. When you set either Schedule or ScheduleBlock this is always treated as a user-defined (custom) calibration and the transpiler may automatically attach the calibration data to the output circuit. This calibration data may appear in the wire format as an inline calibration, which may further update the backend standard instruction set architecture.

If you are a backend provider who provides a default calibration data that is not needed to be attached to the transpiled quantum circuit, you can directly set CalibrationEntry instance to this attribute, in which you should set user_provided=False when you define calibration data for the entry. End users can still intentionally utilize the calibration data, for example, to run pulse-level simulation of the circuit. However, such entry doesn’t appear in the wire format, and backend must use own definition to compile the circuit down to the execution format.

Was this page helpful?
Report a bug or request content on GitHub.