Skip to content
Ignis provides tools for quantum hardware verification, noise characterization, and error correction.
Python
Branch: master
Clone or download
mtreinish Add python 3.8 support and deprecate python 3.5 (#298)
* Add python 3.8 support and deprecate python 3.5

This commit adds support for running ignis under python 3.8. It does
this by adding the trove classifiers to the package metadata and adding
a test job for python 3.8  At the same time this commit starts the
deprecation window for python 3.5. Python 3.5 goes end of life by
upstream python in Sept. 2020. We should give our users running with
python 3.5 (which is about 10% of qiskit users this year based on pypi
data) fair notice that when upstream python stops supporting it we do as
well. Corresponding to this change, terra is going to start raising a
warning when anything from qiskit.* is imported, see:
Qiskit/qiskit-terra#3268
Latest commit 004def1 Feb 19, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Move CODE_OF_CONDUCT to top level (#217) Jun 7, 2019
docs New style docs format (#350) Feb 14, 2020
examples removed Non-Clifford CNOT-Dihedral RB tutorial (#327) Feb 5, 2020
qiskit/ignis New style docs format (#350) Feb 14, 2020
test Update ignis to be compatible with terra master (#352) Feb 13, 2020
tools Add missing pip cli args Apr 30, 2019
.gitignore Change default solver to CVXPY default for CVX tomography (#300) Nov 13, 2019
.mailmap Update the mailmap (#226) Jun 26, 2019
.pylintrc Update pylintrc (#336) Feb 5, 2020
.stestr.conf Execute tests in parallel for CI (#265) Sep 7, 2019
.travis.yml Add python 3.8 support and deprecate python 3.5 (#298) Feb 19, 2020
CHANGELOG.md Add python 3.8 support and deprecate python 3.5 (#298) Feb 19, 2020
CODE_OF_CONDUCT.md Move CODE_OF_CONDUCT to top level (#217) Jun 7, 2019
CONTRIBUTING.md Add overview of doc structure and process to contributing guide (#291) Nov 7, 2019
LICENSE.txt Add some boilerplate to the repo Feb 19, 2019
MANIFEST.in Add version string to ignis (#219) Jun 12, 2019
README.md Update README.md (#261) Aug 29, 2019
azure-pipelines.yml Add python 3.8 support and deprecate python 3.5 (#298) Feb 19, 2020
constraints.txt Bump pin to unify lint job versions across elements (#321) Jan 7, 2020
requirements-dev.txt New style docs format (#350) Feb 14, 2020
setup.py Add python 3.8 support and deprecate python 3.5 (#298) Feb 19, 2020
tox.ini Add python 3.8 support and deprecate python 3.5 (#298) Feb 19, 2020

README.md

Qiskit Ignis

LicenseBuild Status

Qiskit is an open-source framework for working with noisy quantum computers at the level of pulses, circuits, and algorithms.

Qiskit is made up of elements that each work together to enable quantum computing. This element is Ignis, which provides tools for quantum hardware verification, noise characterization, and error correction.

Installation

We encourage installing Qiskit via the PIP tool (a python package manager), which installs all Qiskit elements, including this one.

pip install qiskit

PIP will handle all dependencies automatically for us and you will always install the latest (and well-tested) version.

To install from source, follow the instructions in the contribution guidelines.

Creating your first quantum experiment with Qiskit Ignis

Now that you have Qiskit Ignis installed, you can start creating experiments, to reveal information about the device quality. Here is a basic example:

$ python
# Import Qiskit classes
import qiskit
from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister
from qiskit.providers.aer import noise # import AER noise model

# Measurement error mitigation functions
from qiskit.ignis.mitigation.measurement import (complete_meas_cal,
                                                 CompleteMeasFitter, 
                                                 MeasurementFilter)

# Generate a noise model for the qubits
noise_model = noise.NoiseModel()
for qi in range(5):
    read_err = noise.errors.readout_error.ReadoutError([[0.75, 0.25],[0.1, 0.9]])
    noise_model.add_readout_error(read_err, [qi])

# Generate the measurement calibration circuits
# for running measurement error mitigation
qr = QuantumRegister(5)
meas_cals, state_labels = complete_meas_cal(qubit_list=[2,3,4], qr=qr)

# Execute the calibration circuits
backend = qiskit.Aer.get_backend('qasm_simulator')
job = qiskit.execute(meas_cals, backend=backend, shots=1000, noise_model=noise_model)
cal_results = job.result()

# Make a calibration matrix
meas_fitter = CompleteMeasFitter(cal_results, state_labels)

# Make a 3Q GHZ state
cr = ClassicalRegister(3)
ghz = QuantumCircuit(qr, cr)
ghz.h(qr[2])
ghz.cx(qr[2], qr[3])
ghz.cx(qr[3], qr[4])
ghz.measure(qr[2],cr[0])
ghz.measure(qr[3],cr[1])
ghz.measure(qr[4],cr[2])

# Execute the GHZ circuit (with the same noise model)
job = qiskit.execute(ghz, backend=backend, shots=1000, noise_model=noise_model)
results = job.result()

# Results without mitigation
raw_counts = results.get_counts()
print("Results without mitigation:", raw_counts)

# Create a measurement filter from the calibration matrix
meas_filter = meas_fitter.filter
# Apply the filter to the raw counts to mitigate 
# the measurement errors
mitigated_counts = meas_filter.apply(raw_counts)
print("Results with mitigation:", {l:int(mitigated_counts[l]) for l in mitigated_counts})
Results without mitigation: {'000': 181, '001': 83, '010': 59, '011': 65, '100': 101, '101': 48, '110': 72, '111': 391}

Results with mitigation: {'000': 421, '001': 2, '011': 1, '100': 53, '110': 13, '111': 510}

Contribution guidelines

Contribution Guidelines

If you'd like to contribute to Qiskit Ignis, please take a look at our contribution guidelines. This project adheres to Qiskit's code of conduct. By participating, you are expect to uphold to this code.

We use GitHub issues for tracking requests and bugs. Please use our slack for discussion and simple questions. To join our Slack community use the link. For questions that are more suited for a forum we use the Qiskit tag in the Stack Exchange.

Next Steps

Now you're set up and ready to check out some of the other examples from our Qiskit Tutorials repository.

Authors and Citation

Qiskit Ignis is the work of many people who contribute to the project at different levels. If you use Qiskit, please cite as per the included BibTeX file.

License

Apache License 2.0

You can’t perform that action at this time.