# Backend properties¶

## Overview¶

In contrast to a backend configuration that remains
static on the timescale of typical experiments, the **properties** of a backend are
dynamical quantities that update at device calibration. Devices are nominally calibrated
once over a 24-hour period, and the backend properties update once this calibration
sequence is complete. The properties play a critical role in quantum circuit
execution, as the parameters within the properties are utilized for noise-aware circuit mapping
and optimization (transpilation). Additionally, backend properties are used for constructing
noise models of a device for use in classical simulation techniques.

## Backend properties¶

You can most easily obtain a quantum system’s properties with Qiskit, but you can also obtain them by downloading the “calibrations” CSV file for a given system on IBM Quantum Experience.

**backend name**-`backend.properties().backend_name`

gives the name of the system.**backend version**-`backend.properties().backend_version`

specifies the version of the system, as described in the Backend versioning section.**last update date**-`backend.properties().last_update_date`

gives the UTC time at which the properties information was last updated. This is the time at which the full properties file was returned from the device. Individual elements in the properties give the times at which they were computed. Depending on the device calibration schedule, these times can be markedly different than the last update date.**qubits**-`backend.properties().qubits`

contains information on the physical attributes of the qubits. This includes the qubit frequency in GHz, T_{1}and T_{2}times in µs, and readout error. As shown below, the readout_error is further partitioned into`prob_meas0_prep1`

and`prob_meas1_prep0`

, indicating the probability of preparing a given computational basis state, but measuring the orthogonal state. The readout error is taken to be the average of these two values. Note that`prob_meas0_prep1`

is usually the dominant factor in the readout error due to relaxation during the measurement process. The qubits field is a list indexed by the qubit number.[Nduv('2020-06-05T08:59:55Z', T1, µs, 72.75657779304275), Nduv('2020-06-05T09:01:05Z', T2, µs, 131.16634823903556), Nduv('2020-06-05T10:16:38Z', frequency, GHz, 4.968918179746842), Nduv('2020-06-05T08:55:52Z', readout_error, , 0.016666666666666607), Nduv('2020-06-05T08:55:52Z', prob_meas0_prep1, , 0.030000000000000027), Nduv('2020-06-05T08:55:52Z', prob_meas1_prep0, , 0.0033333333333333335)]

We see that each qubit parameter is expressed as an

`Nduv`

(name, date, unit value) object containing the UTC time at which the parameter was updated, the parameter name, parameter units, and the actual numerical parameter value.**gates**-`backend.properties().gates`

gives detailed information on each gate that the system supports executing. For every single-qubit gate listed in the system basis gates, there exists an entry in the properties that gives the details of that gate, for each qubit on which the gate can be applied. Each entry is in the form of a`Gate`

object:Gate(gate='u2', name='u2_0', parameters=[Nduv('2020-06-06T09:06:46Z', gate_error, , 0.00022436814887248838), Nduv('2020-06-06T10:03:18Z', gate_length, ns, 35.55555555555556)], qubits=[0])

and lists the kind of gate (

`u2`

in the example), its name, a list specifying the qubits on which the gate acts, and a`parameters`

attribute,`gates.parameters`

:[Nduv('2020-06-06T09:06:46Z', gate_error, , 0.00022436814887248838), Nduv('2020-06-06T10:03:18Z', gate_length, ns, 35.55555555555556)]

containing

`Nduv`

objects specifying the gate error and gate length.The same holds for multi-qubit gates, where there is an entry for each directed edge in the system coupling map. For symmetric coupling maps, the directionality of the underlying gate is still important. For example,

Gate(gate='cx', name='cx3_4', parameters=[Nduv('2020-06-06T10:03:18Z', gate_error, , 0.009793933588297388), Nduv('2020-06-06T10:03:18Z', gate_length, ns, 327.1111111111111)], qubits=[3, 4])

versus

Gate(gate='cx', name='cx4_3', parameters=[Nduv('2020-06-06T10:03:18Z', gate_error, , 0.009793933588297388), Nduv('2020-06-06T10:03:18Z', gate_length, ns, 362.66666666666663)], qubits=[4, 3])