Qiskit 量子信息科学工具
项目描述
Qiskit Ignis (已弃用)
注意 从版本 0.7.0 开始,Qiskit Ignis 已弃用,并由 Qiskit Experiments 项目取代。项目开发已停止,只接受兼容性修复和其他关键错误修复,直到项目正式退役并归档。
Qiskit 是一个开源框架,用于在脉冲、电路和算法级别与有噪声的量子计算机协同工作。
Qiskit 由元素组成,每个元素都协同工作以实现量子计算。此元素是 Ignis,它提供量子硬件验证、噪声特征化和错误纠正的工具。
迁移指南
自0.7.0版本起,Qiskit Ignis已被弃用,其中一些功能已迁移到qiskit-experiments
包和qiskit-terra
中。
-
Ignis特征模块
- 此模块部分迁移到
qiskit-experiments
,并拆分为两个不同的模块:qiskit_experiments.library.calibration
和qiskit_experiments.library.characterization
AmpCal
现在已被FineAmplitude
取代。ZZFitter
尚未迁移。
- 此模块部分迁移到
-
Ignis判别模块
- 此模块正在迁移到
qiskit-experiments
- 此模块正在迁移到
-
Ignis缓解模块
- 读出缓解器将很快添加到
qiskit-terra
。 - 生成读出缓解器的实验将添加到
qiskit-experiments
。 - 对于使用
qiskit.algorithms
和QuantumInstance
类的缓解器,这已直接集成到qiskit-terra
的QuantumInstance
中。
- 读出缓解器将很快添加到
-
Ignis验证模块
- 随机基准测试、量子体积和状态和过程层析已迁移到
qiskit-experiments
。 - 门集层析的迁移正在进行中。
topological_codes
将在NCCR-SPIN下继续开发,同时功能重新集成到Qiskit中。您还可以在衍生项目qtcodes中找到一些额外的功能。- 目前认证和纠缠模块尚未迁移。
以下表格提供了一个更详细的分解,将Ignis中存在的功能与其迁移后的位置联系起来。
- 随机基准测试、量子体积和状态和过程层析已迁移到
旧版 | 新版 | 库 |
---|---|---|
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 |
安装
我们鼓励您通过pip工具(一个Python包管理器)安装Qiskit。以下命令安装了核心Qiskit组件,包括Ignis。
pip install qiskit
Pip将自动为我们处理所有依赖项,并且您将始终安装最新(并且经过良好测试)的版本。
要从源安装,请遵循贡献指南中的说明。
额外需求
某些功能有额外的可选要求。如果您要使用fitters的任何可视化函数,则需要安装matplotlib。您可以使用pip install matplotlib
或在与ignis一起安装时使用pip install qiskit-ignis[visualization]
来完成此操作。如果您要使用cvx fitter运行层析,则需要安装cvxpy。您可以使用pip install cvxpy
或在与ignis一起安装时使用pip install qiskit-ignis[cvx]
来完成此操作。在执行CTMP方法期望值测量误差缓解时,如果已安装Numbda,则可以使用即时编译来提高性能。您可以使用pip install numba
或在与ignis一起安装时使用pip install qiskit-ignis[jit]
来完成此操作。为了在qiskit.ignis.measurement
中使用判别类,需要安装scikit-learn。您可以使用pip install scikit-learn
或在与ignis一起安装时使用pip install qiskit-ignis[iq]
来完成此操作。如果您要在安装ignis时安装所有额外需求,则可以运行pip install qiskit-ignis[visualization,cvx,jit,iq]
。
使用Qiskit Ignis创建您的第一个量子实验
现在您已经安装了Qiskit Ignis,您就可以开始创建实验,以揭示设备质量的信息。以下是一个基本示例
$ 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}
贡献指南
如果您想为Qiskit Ignis做出贡献,请查看我们的贡献指南。本项目遵循Qiskit的行为准则。通过参与,您将期待遵守此准则。
我们使用GitHub issues来跟踪请求和错误。请使用我们的slack进行讨论和简单问题。要加入我们的Slack社区,请使用链接。对于更适合论坛的问题,我们使用Stack Exchange中的Qiskit标签。
下一步
现在您已经设置好并准备查看我们Qiskit教程存储库中的其他示例。
作者和引用
Qiskit Ignis是许多人的工作成果,他们以不同的水平为项目做出贡献。如果您使用Qiskit,请根据包含的BibTeX文件进行引用。
许可协议
项目详细信息
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。