• This repository has been archived on 12/Jun/2023
  • Stars
    star
    167
  • Rank 225,381 (Top 5 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ignis (deprecated) provides tools for quantum hardware verification, noise characterization, and error correction.

Qiskit Ignis (DEPRECATED)

LicenseBuild Status

NOTE As of the version 0.7.0 Qiskit Ignis is deprecated and has been superseded by the Qiskit Experiments project. Active development on the project has stopped and only compatibility fixes and other critical bugfixes will be accepted until the project is officially retired and archived.

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.

Migration Guide

As of version 0.7.0, Qiskit Ignis has been deprecated and some of its functionality was migrated into the qiskit-experiments package and into qiskit-terra.

  • Ignis characterization module

    • This module was partly migrated to qiskit-experiments and split into two different modules: qiskit_experiments.library.calibration qiskit_experiments.library.characterization
    • AmpCal is now replaced by FineAmplitude.
    • ZZFitter was not migrated yet.
  • Ignis discriminator module

  • Ignis mitigation module

  • Ignis verification module

    • Randomized benchmarking, Quantum Volume and State and Process Tomography were migrated to qiskit-experiments.
    • Migration of Gate-set tomography to qiskit-experiments is in progress.
    • topological_codes will continue development under NCCR-SPIN, while the functionality is reintegrated into Qiskit. Some additional functionality can also be found in the offshoot project qtcodes.
    • Currently the Accredition and Entanglement modules have not been migrated.
      The following table gives a more detailed breakdown that relates the function, as it existed in Ignis, to where it now lives after this move.
Old New Library
qiskit.ignis.characterization.calibrations qiskit_experiments.library.calibration qiskit-experiments
qiskit.ignis.characterization.coherence qiskit_experiments.library.characterization qiskit-experiments
qiskit.ignis.mitigation qiskit_terra.mitigation qiskit-terra
qiskit.ignis.verification.quantum_volume qiskit_experiments.library.quantum_volume qiskit-experiments
qiskit.ignis.verification.randomized_benchmarking qiskit_experiments.library.randomized_benchmarking qiskit-experiments
qiskit.ignis.verification.tomography qiskit_experiments.library.tomography qiskit-experiments

Installation

We encourage installing Qiskit via the pip tool (a python package manager). The following command installs the core Qiskit components, including Ignis.

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.

Extra Requirements

Some functionality has extra optional requirements. If you're going to use any visualization functions for fitters you'll need to install matplotlib. You can do this with pip install matplotlib or when you install ignis with pip install qiskit-ignis[visualization]. If you're going to use a cvx fitter for running tomogography you'll need to install cvxpy. You can do this with pip install cvxpy or when you install ignis with pip install qiskit-ignis[cvx]. When performing expectation value measurement error mitigation using the CTMP method performance can be improved using just-in-time compiling if Numbda is installed. You can do this with pip install numba or when you install ignis with pip install qiskit-ignis[jit]. For using the discriminator classes in qiskit.ignis.measurement scikit-learn needs to be installed. You can do this with pip install scikit-learn or when you install ignis with pip install qiskit-ignis[iq]. If you want to install all extra requirements when you install ignis you can run pip install qiskit-ignis[visualization,cvx,jit,iq].

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

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

More Repositories

1

qiskit-community-tutorials

A collection of Jupyter notebooks developed by the community showing how to use Qiskit
Jupyter Notebook
676
star
2

qiskit-machine-learning

Quantum Machine Learning
Python
647
star
3

qiskit-aqua

Quantum Algorithms & Applications (**DEPRECATED** since April 2021 - see readme for more info)
Python
573
star
4

qiskit-nature

Qiskit Nature is an open-source, quantum computing, framework for solving quantum mechanical natural science problems.
Python
297
star
5

qiskit-metal

Quantum Hardware Design. Open-source project for engineers and scientists to design superconducting quantum devices with ease.
Python
279
star
6

IBMQuantumChallenge2020

Quantum Challenge problem sets
Jupyter Notebook
251
star
7

qiskit-finance

Quantum Finance
Python
228
star
8

qiskit-optimization

Quantum Optimization
Python
224
star
9

ibm-quantum-challenge-2021

For IBM Quantum Challenge 2021 (May 20 - 26)
Jupyter Notebook
154
star
10

ibm-quantum-challenge-2024

For IBM Quantum Challenge 2024 (5-14 June 2024)
Jupyter Notebook
148
star
11

ibm-quantum-challenge-spring-2023

For IBM Quantum Challenge Spring 2023
Jupyter Notebook
145
star
12

qiskit-translations

Home of Qiskit documentation translations
Shell
143
star
13

ibm-quantum-challenge-fall-2021

For IBM Quantum Challenge Fall 2021
Jupyter Notebook
139
star
14

ibm-quantum-challenge-fall-22

For IBM Quantum Fall Challenge 2022
Jupyter Notebook
120
star
15

may4_challenge_exercises

Original versions of the exercises
Jupyter Notebook
120
star
16

qiskit-js

⚛️ Qiskit (Quantum Information Science Kit) for JavaScript
JavaScript
114
star
17

qiskit-algorithms

A library of quantum algorithms for Qiskit.
Python
103
star
18

qiskit-dynamics

Tools for building and solving models of quantum systems in Qiskit
Python
102
star
19

ibm-quantum-spring-challenge-2022

Jupyter Notebook
99
star
20

qgss-2023

All things Qiskit Global Summer School 2023: Theory to Implementation - Lecture notes, Labs and Solutions
Jupyter Notebook
96
star
21

open-science-prize-2021

Jupyter Notebook
84
star
22

quantum-explorers

A self-paced, quantum computing learning journey for high school students and above.
Jupyter Notebook
81
star
23

qiskit-presentations

Awesome Qiskit presentations
Jupyter Notebook
79
star
24

qiskit-qec

Qiskit quantum error correction framework
Python
78
star
25

open-science-prize-2022

Jupyter Notebook
68
star
26

qiskit-research

Research using Qiskit.
Python
64
star
27

qiskit-braket-provider

Qiskit-Braket provider to execute Qiskit programs on quantum computing hardware devices through Amazon Braket.
Python
57
star
28

mapomatic

Automatic mapping of compiled circuits to low-noise sub-graphs
Python
55
star
29

qiskit-application-modules-demo-sessions

Demo notebooks for Qiskit application modules demo sessions (Oct 8 & 15):
Jupyter Notebook
49
star
30

ibm-quantum-challenge-africa-2021

For IBM Quantum Challenge Africa 2021, 9 September (07:00 UTC) - 20 September (23:00 UTC).
Jupyter Notebook
49
star
31

Quantum-Challenge-Grader

Grading client for the IBM Quantum Challenges
Python
43
star
32

ICPC-Quantum-Challenge-2021

Original version of the exercises for the 2021 ICPC Quantum Computing Challenge
Jupyter Notebook
42
star
33

open-science-prize

Jupyter Notebook
42
star
34

intro-to-quantum-computing-and-quantum-hardware

intro-to-quantum-computing-and-quantum-hardware
42
star
35

MicroQiskit

Jupyter Notebook
42
star
36

qiskit-ionq

Qiskit provider for IonQ backends
Python
41
star
37

quantum-prototype-template

A template repository for generating new quantum prototypes based on Qiskit
Python
40
star
38

qiskit-swift

Qiskit in swift
Swift
39
star
39

prototype-quantum-kernel-training

Toolkit for training quantum kernels in machine learning applications
Python
39
star
40

qiskit-hackathon-korea-22

Jupyter Notebook
35
star
41

lindbladmpo

A matrix-product-operators solver for the dynamics of interacting qubits modeled by a Lindblad master equation, written in C++ and wrapped with an easy-to-use Python interface.
Python
35
star
42

qiskit-hackathon-korea-21

A repository for Qiskit Hackathon Korea (February 16-19, 2021)
33
star
43

qiskit-hackathon-taiwan-20

32
star
44

qiskit-cold-atom

Tools to control cold-atom-based quantum simulators and quantum computers.
Python
29
star
45

prototype-entanglement-forging

A module for simulating chemical and physical systems using a Variational Quantum Eigensolver (VQE) enhanced by Entanglement Forging.
Python
29
star
46

prototype-zne

Zero Noise Extrapolation (ZNE) prototype for error mitigation on the Qiskit Estimator primitive
Python
29
star
47

QuantumBlur

Jupyter Notebook
28
star
48

povm-toolbox

A toolbox for the implementation of positive operator-valued measures (POVMs).
Python
28
star
49

qiskit-aqt-provider

Qiskit provider for AQT backends.
Python
27
star
50

prototype-qrao

Quantum random access optimization prototype
Python
27
star
51

qiskit-dell-runtime

Qiskit Dell Runtime is a Qiskit Runtime platform that can execute classical-quantum code on both local and on-premise environments. With this platform, hybrid classical-quantum code bundle can be developed and executed. Powered by Qiskit Runtime API, this execution model provides close-integration of classical and quantum execution.
Python
27
star
52

QuantumGraph

Jupyter Notebook
26
star
53

qiskit-app-benchmarks

Qiskit Application Benchmarks
Python
25
star
54

qiskit-qcgpu-provider

A provider which allows Qiskit to use the QCGPU simulator
Python
25
star
55

qopt-best-practices

A collection of guidelines to run quantum optimization algorithms on superconducting qubits with Qiskit, using as reference the Quantum Approximate Optimization Algorithm (QAOA) workflow.
Jupyter Notebook
25
star
56

qiskit-quantinuum-provider

Qiskit provider for Quantinuum backends.
Python
21
star
57

qiskit-pocket-guide

Code from the Qiskit Pocket Guide book
Jupyter Notebook
21
star
58

ffsim

Faster simulations of fermionic quantum circuits.
Python
19
star
59

qiskit-camp-europe-19

19
star
60

blackwater

Library for solving quantum computing problems using machine learning
Python
19
star
61

qiskit-jku-provider

A local provider which allows Qiskit to use a decision-diagrams quantum simulator from JKU
C++
19
star
62

awesome-qiskit

Awesome Qiskit is a list of projects, tools, utilities, libraries and tutorials from a broad community of developers and researchers.
Python
19
star
63

openshift-quantum-operators

Jupyter Notebook
18
star
64

qiskit-nature-pyscf

Documentation at https://qiskit-community.github.io/qiskit-nature-pyscf/
Python
18
star
65

subgraph-isomorphism

A quantum algorithm for the subgraph isomorphism problem
Python
16
star
66

qiskit_rng

Quantum random number generator with CQC extractor
Python
16
star
67

qiskit-aqua-interfaces

qiskit-aqua-interfaces provides command-line and graphical interfaces for executing experiments using Qiskit Aqua.
Python
16
star
68

qiskit-camp-africa-19

Qiskit Camp Africa - December 11-14, 2019
15
star
69

korean-community

Jupyter Notebook
15
star
70

qiskit-qubit-reuse

A Qiskit transpiler stage plugin to enable qubit reuse via mid-circuit measurement and reset.
Python
15
star
71

qiskit-alt

High-performance Qiskit features backed by Julia. A Python front end to algorithms using Pauli and Fermionic operators implemented in Julia.
Python
13
star
72

qiskit-summer-jam-20

13
star
73

quantum-algorithms-benchmarks

Jupyter Notebook
12
star
74

qiskit-hackathon-singapore-19

11
star
75

community.qiskit.org

Home of the Qiskit Community
HTML
11
star
76

qiskit-hackathon-bilbao-19

Main repository for the Quantum Hackathon in Bilbao
10
star
77

quantum-fridays

Jupyter Notebook
10
star
78

repo-monitor

Python
9
star
79

mzm-phase-boundary

This repository contains the code and data from the manuscript "Simulating spectroscopic detection of Majorana zero modes with a superconducting quantum computer."
Jupyter Notebook
9
star
80

qiskit-benchmarks

A performance comparinson of Qiskit contributions
Python
8
star
81

QCHack-2022

8
star
82

qiskit.camp

Qiskit.camp 19 - Bringing together the Qiskit community
CSS
8
star
83

may4_challenge

Happy birthday IQX
Python
7
star
84

dsm-swap

A doubly stochastic matrices-based approach to optimal qubit routing
Python
7
star
85

quantum-hackathon-korea-22

7
star
86

arraylias

A Python library for automatic aliasing of multiple array libraries
Python
7
star
87

qiskit-toqm

Qiskit Terra transpiler passes for the Time-Optimal Qubit Mapping (TOQM) algorithm.
Python
7
star
88

Qiskit-Hackathon-at-World-of-QUANTUM

Jupyter Notebook
6
star
89

Qiskit-runtime-primitives-with-MATLAB

Qiskit Runtime Primitives through Matlab
MATLAB
6
star
90

archiver4qiskit

Tools to help record data from Qiskit jobs
Python
5
star
91

qiskit-nature-psi4

Python
5
star
92

QiskitUnityAsset

Qiskit Unity Asset official repository
C#
5
star
93

qiskit-translations-staging

Home of Staging Site of Qiskit Documentation Translations
5
star
94

qiskit-vue

Qiskit components library for Vue.
HTML
5
star
95

Qiskit-Resources

A curated list of all the Qiskit Resources in a single place
5
star
96

qiskit-bip-mapper

Qiskit transpiler plugin for BIP Mapping routing pass
Python
5
star
97

technical-integration-guidance

Jupyter Notebook
5
star
98

interactive-formula

4
star
99

virtual-event-guide

4
star
100

quantum-hackathon-korea-21

4
star