# Qiskit

Developer(s) | IBM Research, Qiskit community |
---|---|

Initial release | March 7, 2017^{[1]} | .

Stable release | 0.8.2
/ 14 June 2019 ^{[2]} |

Written in | Python, Swift, JavaScript |

Operating system | Cross-platform |

Type | Quantum Computing |

License | Apache license |

Website | qiskit |

**Qiskit** is an open-source framework for quantum computing. It provides tools for creating and manipulating quantum programs and running them on prototype quantum devices and simulators. It follows the circuit model for universal quantum computation, and can be used for any quantum hardware that follows this model.

Qiskit was founded by IBM Research to allow software development for their cloud quantum computing service.^{[3]}^{[4]} Contributions are also made by external supporters, typically from academic institutions.^{[5]}

The primary version of Qiskit uses the Python programming language. Versions for Swift ^{[6]} and JavaScript ^{[7]} are also available. These are used to create quantum programs based on the OpenQASM representation of quantum circuits.

A range of Jupyter notebooks are provided with examples of quantum computing being used.^{[8]} Examples include the source code behind scientific studies that use Qiskit,^{[9]} as well as a set of exercises to help people to learn the basics of quantum programming.^{[10]}

## Components[edit]

Qiskit provides the ability to develop quantum software both at the machine code level of OpenQASM, and at abstract levels suitable for end-users without quantum computing expertise. This functionality is provided by the following distinct components.^{[11]}

### Terra[edit]

Qiskit Terra provides tools to create quantum circuits at or close to the level of quantum machine code.^{[12]} It allows the processes that run on quantum hardware to be explicitly constructed in terms of quantum gates. It also provides tools to allow quantum circuits to be optimized for a particular device, as well as managing batches of jobs and running them on remote-access quantum devices and simulators.

The following shows a simple example of Qiskit Terra. In this, a quantum circuit is created for two qubits, which consists of the quantum gates required to create a Bell state. The quantum circuit then ends with quantum measurements, which extract a bit from each qubit.

```
from qiskit import QuantumRegister, ClassicalRegister
from qiskit import QuantumCircuit, Aer, execute
q = QuantumRegister(2)
c = ClassicalRegister(2)
qc = QuantumCircuit(q, c)
qc.h(q[0])
qc.cx(q[0], q[1])
qc.measure(q, c)
```

Once the quantum circuit has been created, it can be run on a backend (either quantum hardware or a simulator). In the following example, a local simulator is used.

```
backend = Aer.get_backend('qasm_simulator')
job_sim = execute(qc, backend)
sim_result = job_sim.result()
print(sim_result.get_counts(qc))
```

The final print statement here will show the results returned by the backend. This is a Python dictionary that describes the bit strings obtained from multiple runs of the quantum circuit. In the quantum circuit used in this example, the bit strings `'00'`

and `'11'`

should be the only possible results, and should occur with equal probability. The full results will therefore typically have the samples split approximately equally between the two, such as ` {'00':519, '11':505} `

.

Experiments done on quantum hardware using Qiskit Terra have been used in many research papers,^{[13]} such as in tests of quantum error correction^{[14]}
,^{[15]} generation of entanglement^{[16]} and simulation of far-from-equilibrium dynamics^{[17]}
.

### Aqua[edit]

Qiskit Aqua provides tools that can be used without any explicit quantum programming required by the user themselves.^{[18]} It currently supports applications in chemistry, AI, optimization and finance. Users can provide problems and receive results defined using standard tools in these domains, such as PySCF for chemistry. Qiskit Aqua then implements a corresponding quantum algorithm.

### Aer[edit]

In the near-term, development of quantum software will depend largely on simulation of small quantum devices. For Qiskit, this is provided by the Aer component. This provides simulators hosted locally on the user's device, as well as HPC resources available through the cloud.^{[19]} The simulators can also simulate the effects of noise for simple and sophisticated noise models^{[20]}

### Ignis[edit]

Ignis is a component that contains tools for characterizing noise in near-term devices, as well as allowing computations to be performed in the presence of noise. This is includes tools for benchmarking near-term devices, error mitigation and error correction.^{[21]}

## References[edit]

**^**"Looking back on a year of Qiskit".**^**"Releases – Qiskit Terra".**^**"What is Qiskit, IBM's open source quantum computing framework".*Computerworld UK*. Retrieved 11 December 2018.**^**"QISKit Developments Key to IBM Quantum Engagement".*The Next Platform*. Retrieved 11 December 2018.**^**"Qiskit website".**^**"Qiskit-Swift repository on Github".**^**"Qiskit-Js repository on Github".**^**"Qiskit Tutorial".**^**"Celebrating the IBM Q Experience community, and their research".**^**"Hello Qiskit".**^**"Qiskit and its Fundamental Elements". Retrieved 10 January 2019.**^**"Qiskit Terra website".**^**"Community papers".*IBM Q Experience*.**^**Wootton, James R.; Loss, Daniel (2018). "Repetition code of 15 qubits".*Physical Review A*.**97**(5). arXiv:1709.00990. doi:10.1103/PhysRevA.97.052313. ISSN 2469-9926.**^**Roffe, Joschka; Headley, David; Chancellor, Nicholas; Horsman, Dominic; Kendon, Viv (2018). "Protecting quantum memories using coherent parity check codes".*Quantum Science and Technology*.**3**(3): 035010. arXiv:1709.01866. doi:10.1088/2058-9565/aac64e. ISSN 2058-9565.**^**Wang, Yuanhao; Li, Ying; Yin, Zhang-qi; Zeng, Bei (2018). "16-qubit IBM universal quantum computer can be fully entangled".*npj Quantum Information*.**4**(1). doi:10.1038/s41534-018-0095-x. ISSN 2056-6387.**^**Zhukov, A. A.; Remizov, S. V.; Pogosov, W. V.; Lozovik, Yu. E. (2018). "Algorithmic simulation of far-from-equilibrium dynamics using quantum computer".*Quantum Information Processing*.**17**(9). doi:10.1007/s11128-018-2002-y. ISSN 1570-0755.**^**"Qiskit Aqua website".**^**"An Open High-Performance Simulator for Quantum Circuits".**^**"Introducing Qiskit Aer: A high performance simulator framework for quantum circuits".**^**"Qiskit Ignis repository on Github".