Skip to main content
IBM Quantum Platform

Qiskitの v1.0 機能の変更点

このガイドでは、Qiskit v1.0 における主要な機能変更について、モジュールごとに分類して移行手順を説明します。 右側の目次から、ご興味のあるモジュールへ移動してください。


Qiskitの v1.0 移行ツール

移行プロセスを簡単にするために flake8-qiskit-migration ツールを使って、あなたのコードから削除されたインポートパスを検出し、代替案を提案することができます。

もし pipx がインストールされていれば を実行するだけである。

pipx run flake8-qiskit-migration <path-to-source-directory>

これにより、パッケージが一時的な仮想環境にインストールされ、あなたのコード上で実行される。 実行する。

制限

このツールは、削除されたインポートパスのみを検出します。 削除された メソッド( QuantumCircuit.qasm など)や引数の使用は検出しません。 また、 のような のようなエイリアスは扱えますが、 qk = qiskit のような代入を追跡することもできません。 import qiskit as qk.

詳細はプロジェクトの リポジトリをご覧ください。


グローバルインスタンスと関数

エア

この qiskit.Aer オブジェクトは、Qiskitの v1.0 では利用できません。 その代わりに、 名前 qiskit_aer 空間にある同じオブジェクトを使用してください。これはそのまま置き換え可能です。 qiskit_aerインストールするには、次のコマンドを実行してください:

pip install qiskit-aer

BasicAer

この qiskit.BasicAer オブジェクトは、Qiskitの v1.0 では利用できません。 移行オプションについては、 こちら basicaer 移行に関するセクションをご覧ください。

実行

この qiskit.execute 関数は、Qiskitの v1.0 では利用できません。 この 関数は、Qiskit の 関数 transpilerun関数をラップする高レベルなラッパーとして機能していました。 qiskit.executeの代わりに、関数の後に を transpile続けてくださいbackend.run()

# Legacy path
from qiskit import execute

job = execute(circuit, backend)

# New path
from qiskit import transpile

new_circuit = transpile(circuit, backend)
job = backend.run(new_circuit)

あるいは、 Sampler プリミティブは削除された qiskit.execute 関数と意味的に等価である。 クラス BackendSampler は プリミティブをサポートしないバックエンド用の汎用ラッパーです:

from qiskit.primitives import BackendSampler

sampler = BackendSampler(backend)
job = sampler.run(circuit)

qiskit.circuit

QuantumCircuit.qasm

QuantumCircuit.qasm メソッドが削除されました。 代わりに qasm2.dump または qasm2.dumps.

Pygments形式の出力については、スタンドアロンの openqasm-pygments パッケージを見てください、 qasm2.dumpqasm2.dumps は Pygments 色の出力を提供しません。

from qiskit import QuantumCircuit

qc = QuantumCircuit(1)

# Old
qasm_str = qc.qasm()

# Alternative
from qiskit.qasm2 import dumps

qasm_str = dumps(qc)

# Alternative: Write to file
from qiskit.qasm2 import dump

with open("my_file.qasm", "w") as f:
    dump(qc, f)

QuantumCircuit ゲート

以下のゲート・メソッドが削除された。 メソッドが削除された:

削除済み
代替
QuantumCircuit.cnotQuantumCircuit.cx
QuantumCircuit.toffoliQuantumCircuit.ccx
QuantumCircuit.fredkinQuantumCircuit.cswap
QuantumCircuit.mctQuantumCircuit.mcx
QuantumCircuit.iQuantumCircuit.id
QuantumCircuit.squQuantumCircuit.unitary

以下の回路方式は削除された。 代わりに、これらのゲートを QuantumCircuit.append の回路に適用することができる。

削除済み
代替(追加)
QuantumCircuit.diagonalDiagonalGate
QuantumCircuit.hamiltonianHamiltonianGate
QuantumCircuit.isometryIsometry
QuantumCircuit.isoIsometry
QuantumCircuit.ucUCGate
QuantumCircuit.ucrxUCRXGate
QuantumCircuit.ucryUCRYGate
QuantumCircuit.ucrzUCRZGate

例えば DiagonalGate:

from qiskit.circuit import QuantumCircuit
# new location in the circuit library:
from qiskit.circuit.library import DiagonalGate  

circuit = QuantumCircuit(2)
circuit.h([0, 1])  # some initial state

gate = DiagonalGate([1, -1, -1, 1])
qubits = [0, 1]  # qubit indices on which to apply the gate
circuit.append(gate, qubits)  # apply the gate

以下の QuantumCircuit メソッドも削除された:

削除済み
代替
QuantumCircuit.bind_parametersQuantumCircuit.assign_parameters
QuantumCircuit.snapshotqiskit-aer保存方法

qiskit.converters

qiskit.converters.ast_to_dag 機能は Qiskit から削除されました。 これは レガシー OpenQASM 2パーサーによって生成された抽象構文木を DAGCircuit. レガシー OpenQASM 2パーサーは削除されたので( qiskit.qasm を参照)、この 関数はもはや目的を果たさない。 代わりに、 OpenQASM 2 ファイルをパースして QuantumCircuitQuantumCircuit.from_qasm_file または QuantumCircuit.from_qasm_str コンストラクタのメソッド(または qiskit.qasm2 モジュール)、そして QuantumCircuitDAGCircuit に変換します。 circuit_to_dag.

# Previous
from qiskit.converters import ast_to_dag
from qiskit.qasm import Qasm

dag = ast_to_dag(Qasm(filename="myfile.qasm").parse())

# Current alternative
import qiskit.qasm2
from qiskit.converters import circuit_to_dag

dag = circuit_to_dag(qiskit.qasm2.load("myfile.qasm"))

qiskit.extensions

qiskit.extensions モジュールは販売終了。 そのオブジェクトのほとんどは 回路ライブラリに統合された (qiskit.circuit.library).に統合されました。 に移行するには、 qiskit.extensionsqiskit.circuit.library に置き換えるだけです。 これはドロップイン交換用だ。

# Previous
from qiskit.extensions import DiagonalGate

# Current alternative
from qiskit.circuit.library import DiagonalGate

に移動したクラスは以下の通り。 qiskit.circuit.library である:

以下のクラスはコードベースから削除された。 関数は冗長であるか、 extensions モジュールにリンクされているからです:

削除済み
代替
SingleQubitUnitaryqiskit.circuit.library.UnitaryGate
Snapshotqiskit-aer保存方法を使用する
ExtensionError関連するエラークラス

qiskit.primitives

モジュールで最も注目すべき変更は qiskit.primitives モジュールの最も注目すべき変更点は 新しいプリミティブ V2 インターフェイスの導入である。 このセクションでは プリミティブ V1 からプリミティブ V2 へワークフローを移行する方法と、 インターフェースが受け入れる入力におけるいくつかの変更点を示します。 V1 インターフェースで受け付けられる入力で行われたいくつかの変更を示します。

Note

v1.0 のリリース以降、 pre-1.0 のプリミティブインターフェースを「primitives V1 」と呼ぶことにします。

V1 から V2 への移行

プリミティブ V1 と V2 API の正式な違いは、プリミティブの実装が継承する基本クラスです。 プリミティブの実装が継承する基本クラスです。 新しい基本クラスに移行するには、次のようにすればよい。 qiskit.primitivesから元のインポートパスを維持することができます:

からの移行
以下で置換
BaseEstimatorBaseEstimatorV2
BaseSamplerBaseSamplerV2

V2 プリミティブの qiskit コア実装の名前 ( qiskit.primitives からインポート可能なもの)、 プリミティブのqiskitコア実装 ( からインポートされるもの) の名前は、ステートベクタシミュレータバックエンドでローカルに実行できる実装としての目的を明確にするために変更されました プリミティブのqiskitコア実装(importされるもの)の名前を変更しました。 新しい名称には、 -V2 という接尾辞は含まれていない

からの移行
以下で置換
qiskit.primitives.Estimatorqiskit.primitives.StatevectorEstimator
qiskit.primitives.Samplerqiskit.primitives.StatevectorSampler

V1 から V2 に移行する際には、いくつか考えなければならない概念の違いがある。 これらの違いはベースクラスによって決まりますが、以下の例ではstatevectorを使用しています。 qiskit.primitivesの実装を例に示します:

Note

以下の例では、インポートとプリミティブ初期化を以下のように仮定する:

from qiskit.primitives import (
    Sampler,
    StatevectorSampler,
    Estimator,
    StatevectorEstimator,
)

estimator_v1 = Estimator()
sampler_v1 = Sampler()
estimator_v2 = StatevectorEstimator()
sampler_v2 = StatevectorSampler()

# define circuits, observables and parameter values
  1. Sampler and Estimator: 新しい V2 プリミティブは、 ベクトル化された入力を受け入れるように設計されており、単一の回路を配列型の仕様と組み合わせて使用することができます。 つまり、1回の反復処理で、 パラメータセット n の配列、 n 観測値の配列、あるいはその両方(Estimatorの場合)に対して実行することができます。 各グループは「 プリミティブ統一ブロック(PUB) 」と呼ばれ、タプルとして表すことができる: (1 x circuit, [n x observables], [n x parameters])。 V1 インターフェースでは、これほどの柔軟性が得られませんでした。 その代わりに、入力回路の数は、以下の例に示すように、観測変数と パラメータセットの数と一致させる必要がありました(各例を見るにはタブを選択してください):
# executing 1 circuit with 4 observables using Estimator V1
job = estimator_v1.run([circuit] * 4, [obs1, obs2, obs3, obs4])
evs = job.result().values

# executing 1 circuit with 4 observables using Estimator V2
job = estimator_v2.run([(circuit, [obs1, obs2, obs3, obs4])])
evs = job.result()[0].data.evs

V2 プリミティブは複数のPUBを入力として受け入れ、各PUBはそれ自身の結果を得る。 これにより を使えば、さまざまなパラメータと観測値の組み合わせで、さまざまな回路を走らせることができる、 これは、 V1 インターフェースでは必ずしも可能ではありませんでした:

# executing 2 circuits with 1 parameter set using Sampler V1
job = sampler_v1.run([circuit1, circuit2], [vals1] * 2)
dists = job.result().quasi_dists

# executing 2 circuits with 1 parameter set using Sampler V2
job = sampler_v2.run([(circuit1, vals1), (circuit2, vals1)])
counts1 = job.result()[0].data.meas.get_counts()  # result for pub 1 (circuit 1)
counts2 = job.result()[1].data.meas.get_counts()  # result for pub 2 (circuit 2)
  1. Sampler : 「V2 」サンプラーは、 V1 インターフェースの準確率分布ではなく、 ビット列 またはカウント 形式の測定結果サンプルを返すようになりました。 これらのビット列は、測定された順序を保持したまま、測定結果を示しています V2 のサンプラー結果オブジェクトは、 動的回路との互換性を確保するため、 入力回路の従来のレジスタ名に基づいてデータを整理します。

    # Define quantum circuit with 2 qubits
    circuit = QuantumCircuit(2)
    circuit.h(0)
    circuit.cx(0, 1)
    circuit.measure_all()
    circuit.draw()
            ┌───┐      ░ ┌─┐
       q_0: ┤ H ├──■───░─┤M├───
            └───┘┌─┴─┐ ░ └╥┘┌─┐
       q_1: ─────┤ X ├─░──╫─┤M├
                 └───┘ ░  ║ └╥┘
    meas: 2/══════════════╩══╩═
                          0  1
    デフォルトのクラシック・レジスタ名

    上の回路では、クラシック・レジスタの名前がデフォルトで "meas" になっていることに注目してほしい。 この名前は、あとで計測ビット列にアクセスするときに使う。

    # Run using V1 Sampler
    result = sampler_v1.run(circuit).result()
    quasi_dist = result.quasi_dists[0]
    print(f"The quasi-probability distribution is: {quasi_dist}")
    The quasi-probability distribution is: {0: 0.5, 3: 0.5}
    # Run using V2 Sampler
    result = sampler_v2.run([circuit]).result()
    # Access result data for pub 0
    data_pub = result[0].data
    # Access bitstrings for the classical register "meas"
    bitstrings = data_pub.meas.get_bitstrings()
    print(f"The number of bitstrings is: {len(bitstrings)}")
    # Get counts for the classical register "meas"
    counts = data_pub.meas.get_counts()
    print(f"The counts are: {counts}")
    The number of bitstrings is: 1024
    The counts are: {'00': 523, '11': 501}
  2. Sampler and Estimator:サンプリングのオーバーヘッドは、 V1 の実装で一般的に公開されている。 shots run() で指定できるようになった。 レベルで指定できるようになった。 PUB レベルで指定できるようになった。 V2 基本クラスは、 V1 APIとは異なるフォーマットで引数を公開する:

    • BaseSamplerV2.run は、 shots (前のワークフローと同様)の引数を公開する:

      # Sample two circuits at 128 shots each.
      sampler_v2.run([circuit1, circuit2], shots=128)
      # Sample two circuits at different amounts of shots. 
      # The "None"s are necessary as placeholders
      # for the lack of parameter values in this example.
      sampler_v2.run([(circuit1, None, 123), (circuit2, None, 456)])
    • EstimatorV2.run は、 precision 引数を導入している。 を指定する引数を導入しています:

      # Estimate expectation values for two PUBs, both with 0.05 precision.
      estimator_v2.run([(circuit1, obs_array1), 
        (circuit2, obs_array_2)], precision=0.05
        )

V1 インターフェースの更新

  • 密な BaseOperator から暗黙の変換。 SparsePauliOpEstimator 観測可能な引数 への暗黙の変換は許されなくなりました。 に明示的に変換する必要があります。 SparsePauliOp に変換する必要があります。 SparsePauliOp.from_operator(operator) 代わりに

  • を使用している。 PauliList での Estimatorのobservable引数は使用できなくなりました。 代わりに を使って明示的に引数を変換する。 SparsePauliOp(pauli_list) を使って明示的に変換しなければならない。


qiskit.providers

ベーシックエア

qiskit.providers.basicaer モジュールの機能のほとんどは、新しいモジュールに置き換えられている。 に置き換えられました。 qiskit.providers.basic_provider UnitarySimulatorPy モジュールに置き換えられた。 StatevectorSimulatorPy クラスは削除されました。 その機能はすでに quantum_info モジュールに含まれていた。

新しいパスへの移行は簡単だ。 ほとんどの クラスは、 qiskit.providers.basicaerqiskit.providers.basic_provider で置き換えることができます(ドロップイン置換)。 以下のクラスには 新しいパスと名前を持っていることに注意してください:

削除済み
代替
qiskit.providers.basicaerqiskit.providers.basic_provider
BasicAerProviderBasicProvider
BasicAerJobBasicProviderJob
QasmSimulatorPyBasicSimulator
グローバル・インスタンス

新しいモジュールに移行する際には、グローバルインスタンスに注意してください。 に代わるものはない。 qiskit.BasicAer として直接インポートできる BasicAer グローバルインスタンスに代わるものはありません。 これは from qiskit import BasicProvider はもはや有効なインポートではないということだ。 その代わりに、プロバイダー・クラスはそのサブモジュールからインポートし、ユーザーがインスタンス化しなければならない:

# Previous
from qiskit import BasicAer
backend = BasicAer.get_backend("backend_name")

# Current
from qiskit.providers.basic_provider import BasicProvider
backend = BasicProvider().get_backend("backend_name")

ユニタリーシミュレータとステートベクターシミュレータは、それぞれ別のシミュレータに置き換えることができる。 異なる quantum_info クラスに置き換えることができる。 これは しかし、変更は最小限である。 以下の移行例を参照のこと。 の例を参照してください:

削除済み
代替
UnitarySimulatorPyquantum_info.Operator
StatevectorSimulatorPyquantum_info.Statevector

以下の例は、 basicaer シミュレーターの移行パスを示しています。

from qiskit import QuantumCircuit

qc = QuantumCircuit(3)
qc.h(0)
qc.h(1)
qc.cx(1, 2)
qc.measure_all()

# Previous
from qiskit import BasicAer
backend = BasicAer.get_backend("statevector_simulator")
statevector = backend.run(qc).result().get_statevector()

# Current
qc.remove_final_measurements()  # no measurements allowed
from qiskit.quantum_info import Statevector
statevector = Statevector(qc)

偽プロバイダー

ほとんどのユーザー向けコンポーネントは qiskit.providers.fake_provider コンポーネントのほとんどは qiskit-ibm-runtime Python パッケージに移行された。 これには 偽のプロバイダ・クラス、すべてのデバイス固有の偽のバックエンド(たとえば FakeVigoFakeNairobiV2FakeSherbrooke など)、そして偽のバックエンドである 基底クラスが含まれます。 以下のタブをクリックして、対象となるクラスをご覧ください。

  • どのクラスも qiskit.providers.fake_provider.backends
  • fake_provider.fake_backend.FakeBackend
  • fake_provider.fake_backend.FakeBackendV2

新しいパスに移行する:

  1. qiskit-ibm-runtime 0.17.1 以降をインストールしてください:

    pip install 'qiskit-ibm-runtime>=0.17.1'
  2. コード中の qiskit.providers.fake_provider のインスタンスを次のように置き換える。 qiskit_ibm_runtime.fake_provider. 例:

    # Old
    from qiskit.providers.fake_provider import FakeProvider
    backend1 = FakeProvider().get_backend("fake_ourense")
    
    from qiskit.providers.fake_provider import FakeSherbrooke
    backend2 = FakeSherbrooke()
    
    # Alternative
    from qiskit_ibm_runtime.fake_provider import FakeProvider
    backend1 = FakeProvider().get_backend("fake_ourense")
    
    from qiskit_ibm_runtime.fake_provider import FakeSherbrooke
    backend2 = FakeSherbrooke()

偽のバックエンド・ベース・クラスも移行されましたが、インポート・パスにいくつか違いがあります:

削除済み
代替
qiskit.providers.fake_provider.FakeQasmBackendqiskit_ibm_runtime.fake_provider.fake_qasm_backend.FakeQasmBackend
qiskit.providers.fake_provider.FakePulseBackendqiskit_ibm_runtime.fake_provider.fake_pulse_backend.FakePulseBackend
Note

ダウンストリームライブラリの単体テストをフェイクバックエンドに依存しており、その依存関係がコンフリクトしている場合は、Qiskitネイティブの汎用フェイクバックエンドを見つけることができます。 qiskit-ibm-runtime 依存関係にコンフリクトがある場合、新しいQiskitネイティブな汎用偽バックエンドの代替を見つけることもできます。 これには、以下の BackendV1 (ドロップイン振替)クラスが含まれる:

これは BackendV2 インスタンスを返す設定可能なクラスです:

fake_provider (特殊テスト用バックエンド)

の特別なテスト目的のための偽のバックエンド・クラスがあります。 qiskit.providers.fake_provider は は qiskit_ibm_runtime.fake_provider に移行されていません。 推奨される 移行経路としては、新しい GenericBackendV2 クラスを使うことです。 ターゲットを構築することです。

削除済み
代替
fake_provider.FakeBackendV2fake_provider.GenericBackendV2
fake_provider.FakeBackend5QV2fake_provider.GenericBackendV2
fake_provider.FakeBackendV2LegacyQubitPropsfake_provider.GenericBackendV2
fake_provider.FakeBackendSimplefake_provider.GenericBackendV2
fake_provider.ConfigurableFakeBackendfake_provider.GenericBackendV2

例新しい GenericBackendV2 クラスに移行します:

# Legacy path
from qiskit.providers.fake_provider import FakeBackend5QV2
backend = FakeBackend5QV2()

# New path
from qiskit.providers.fake_provider import GenericBackendV2
backend = GenericBackendV2(num_qubits=5)

# Note that this class generates a 5q backend with generic
# properties that serves the same purpose as FakeBackend5QV2
# but will not be identical.

その他の移行のヒント

  • qiskit.providers.aer からのインポートはできなくなりました。 代わりに を qiskit_aer からインポートする。 qiskit_aer をインストールするには、 を実行します:

    pip install qiskit-aer
  • Qiskit v1.0 では、バックエンドでの qiskit.providers.fake_providerパルスジョブの実行に対するサポートが削除されました。 これは、Qiskit Aerが こうしたジョブ向けのシミュレーション機能を削除したためです。 低レベルのハミルトニアンシミュレーション ワークロードについては、 Qiskit Dynamics などの専用ライブラリの利用を検討してください。


qiskit.pulse

ParametricPulse

qiskit.pulse.library.parametric_pulses.ParametricPulse 基本クラスと パルスライブラリは qiskit.pulse.SymbolicPulse と対応するパルス・ライブラリに取って代わられました。 SymbolicPulse サポート QPY シリアライズ:

from qiskit import pulse, qpy

with pulse.build() as schedule:
    pulse.play(pulse.Gaussian(100, 0.1, 25), pulse.DriveChannel(0))

with open('schedule.qpy', 'wb') as fd:
    qpy.dump(schedule, fd)
削除済み
代替
pulse.library.parametric_pulses.ParametricPulseqiskit.pulse.SymbolicPulse
pulse.library.parametric_pulses.Constantpulse.library.symbolic_pulses.Constant
pulse.library.parametric_pulses.Dragpulse.library.symbolic_pulses.Drag
pulse.library.parametric_pulses.Gaussianpulse.library.symbolic_pulses.Gaussian
qiskit.pulse.library.parametric_pulses.GaussianSquarepulse.library.symbolic_pulses.GaussianSquare

複素数値振幅

複素数値のパルス振幅(amp)は、(ampangle) デュオに置き換える。 この表現は、特に角度校正のようないくつかの校正作業では、より直感的です。 特に角度較正のような較正作業では

from qiskit import pulse
from qiskit.circuit import Parameter
from math import pi

with pulse.build() as schedule:
    angle = Parameter("θ")
    pulse.play(pulse.Gaussian(100, 0.1, 25, angle=angle), pulse.DriveChannel(0))
schedule.assign_parameters({angle: pi})

回路ゲート動作の注入

回路ゲート操作をパルスビルダー・コンテキストに注入する。 qiskit.pulse.builder.call はもはや不可能である。 この削除は、 QuantumCircuit 型の入力引数、および以下の関数に影響する。 型の入力引数、および以下の関数に影響する:

  • qiskit.pulse.builder.call_gate
  • qiskit.pulse.builder.cx
  • qiskit.pulse.builder.u1
  • qiskit.pulse.builder.u2
  • qiskit.pulse.builder.u3
  • qiskit.pulse.builder.x

バックエンドで較正されたスケジュールを注入したい場合は、ゲートコマンドを呼び出す代わりに、以下のパターンを使用する。 パターンを使用する。

from qiskit.providers.fake_provider import GenericBackendV2
from qiskit import pulse

backend = GenericBackendV2(num_qubits=5)
sched = backend.target["x"][(qubit,)].calibration

with pulse.build() as only_pulse_scheds:
    pulse.call(sched)

同様に QuantumCircuit は オブジェクトを手動でトランスパイルしてスケジューリングすることで、ビルダー・コンテキストに注入できます。 オブジェクトに注入できます。

from math import pi
from qiskit.compiler import schedule, transpile

qc = QuantumCircuit(2)
qc.rz(pi / 2, 0)
qc.sx(0)
qc.rz(pi / 2, 0)
qc.cx(0, 1)
qc_t = transpile(qc, backend)
sched = schedule(qc_t, backend)
with pulse.build() as only_pulse_scheds:
    pulse.call(sched)

ビルダーと一緒に最低限のパルスプログラムを書き、それを QuantumCircuit を通して QuantumCircuit.add_calibration ゲート命令のマイクロコードとして添付することをお勧めします。 プログラム全体をパルスモデルで記述するよりも

builder.build

qiskit.pulse.builder.build 、以下の引数が削除された。 で削除されました。

  • default_transpiler_settings
  • default_circuit_scheduler_settings

これらの機能も削除された:

  • qiskit.pulse.builder.active_transpiler_settings
  • qiskit.pulse.builder.active_circuit_scheduler_settings
  • qiskit.pulse.builder.transpiler_settings
  • qiskit.pulse.builder.circuit_scheduler_settings

これは、ビルダー コンテキストに回路オブジェクトを挿入できなくなったためです ( 「回路ゲート操作の挿入」 を参照)。これらの設定は、挿入されたオブジェクトをパルス表現に変換するためのものでした。

ライブラリー

離散パルス・ライブラリはコードベースから削除された。 こちらには以下の内容が含まれます:

  • qiskit.pulse.library.constant
  • qiskit.pulse.library.zero
  • qiskit.pulse.library.square
  • qiskit.pulse.library.sawtooth
  • qiskit.pulse.library.triangle
  • qiskit.pulse.library.cos
  • qiskit.pulse.library.sin
  • qiskit.pulse.library.gaussian
  • qiskit.pulse.library.gaussian_deriv
  • qiskit.pulse.library.sech
  • qiskit.pulse.library.sech_deriv
  • qiskit.pulse.library.gaussian_square
  • qiskit.pulse.library.drag

代わりに、対応する qiskit.pulse.SymbolicPulse, を使う。 SymbolicPulse.get_waveform(). 例えば、 pulse.gaussian(100,0.5,10) の代わりに pulse.Gaussian(100,0.5,10).get_waveform(). の両方の位相が同じであることに注意。 SawtoothSquare の位相は 2\pi の位相が1サイクルずれるように定義されていることに注意されたい。 対応する。 また、複素振幅はシンボリック・パルス・ライブラリではサポートされなくなったことに注意してください。 代わりに float, amp, angle を使用してください。

ScalableSymbolicPulse

バージョン5以前のqpyファイルから、複雑な パラメータを持つライブラリ qiskit.pulse.ScalableSymbolicPulse amp オブジェクトをロードすることができなくなりました。 (Qiskit Terra < 0.23.0 )。 複雑な amp は自動的に (, ) に変換されるため、移行作業は必要ない。 は自動的に float (amp, angle) に変換されるからである。

この変更はこれらのパルスに適用される:


qiskit.qasm

以前 qiskit.qasm にあったレガシー OpenQASM 2パーサーモジュールは、 に取って代わられました。 モジュールに取って代わられました。 qiskit.qasm2 モジュールに取って代わられた。 OpenQASM より高速で正確なパーサーを提供します。 ハイレベルの QuantumCircuit 方法 from_qasm_file() そして from_qasm_str() は変わらないが、内部的には新しいパーサーを使用する。 しかし、 qasm2 モジュールの公開インターフェースは同じではない。 一方 qiskit.qasm モジュールは、パーサー・ライブラリが返す抽象構文木へのインタフェースを提供した。 ply モジュールは、パーサー・ライブラリによって返される抽象構文木へのインターフェイスを提供したが、 qiskit.qasm2 は、ASTやパーサーに関する下位レベルの実装の詳細を公開しない。 の実装の詳細を公開していない。 代わりに、 OpenQASM 2 を入力し オブジェクトを出力する。 QuantumCircuit オブジェクトを出力します。

例えば、以前は次のように実行していたとする:

import qiskit.qasm
from qiskit.converters import ast_to_dag, dag_to_circuit

ast = qiskit.qasm.Qasm(filename="myfile.qasm").parse()
dag = ast_to_dag(ast)
qasm_circ = dag_to_circuit(dag)

次のように置き換える:

import qiskit.qasm2

qasm_circ = qiskit.qasm2.load("myfile.qasm")

qiskit.quantum_info

qiskit.quantum_info.synthesis 。 主に qiskit.synthesis.

この移動は、 Quaternion の通常のインポートパスには影響しないが、 からはアクセスできなくなった。 qiskit.quantum_info.synthesisにはアクセスできなくなった。

最後に、 cnot_rxx_decompose


qiskit.test

qiskit.test モジュールは公開モジュールではなくなった。 これは決して公開を意図したものではありません、 Qiskitテストスイート以外での使用も意図していません。 すべての機能はQiskit固有のものであり、代替機能は提供されていません。 もし同様の機能が必要であれば、あなた自身のテストハーネスに組み込んでください。 テストハーネスに含める必要があります。


qiskit.tools

この qiskit.tools モジュールは、Qiskit v1.0 で削除されました。 これらの機能のほとんどは、 他のパッケージにある類似の機能に置き換えられたか、代替手段なしに削除されました。 主な例外は 関数で qiskit.tools.parallel_map() 、これは qiskit.utils モジュールに移動されました。 代わりに、 この新しい場所から利用できます。 例:

もしあなたが以前走っていたのなら:

# Previous
from qiskit.tools import parallel_map

parallel_map(func, input)

# Current
from qiskit.utils import parallel_map

parallel_map(func, input)

Jupyter

qiskit.tools.jupyter サブモジュールは削除された。 qiskit-ibmq-provider サブモジュールは削除された。 サブモジュールは削除されました。 また、 BackendV1 にしか対応しておらず、新しいものには対応していなかった。 BackendV2 インターフェイスには対応していない。

監視

qiskit.tools.monitor サブモジュールは、サポートが終了したレガシーパッケージの レガシーな qiskit-ibmq-provider パッケージと結びついていたため、このサブモジュールは削除されました。 は BackendV1 インターフェイスのみをサポートし、新しい BackendV2 インターフェイスをサポートしていませんでした)。 この機能には この機能に代わるものはない。

可視化

qiskit.tools.visualization サブモジュールは削除された。 このモジュールは このモジュールはQiskit可視化モジュールの元の場所からレガシーリダイレクトされ に移動しました。 qiskit.visualization に移動しました。 0.8.0. まだこのパスを使用している場合は、インポートを qiskit.tools.visualization から qiskit.visualization.

# Previous
from qiskit.tools.visualization import plot_histogram

plot_histogram(counts)

# Current
from qiskit.visualization import plot_histogram

plot_histogram(counts)

イベント

qiskit.tools.events モジュールと、それが公開していた progressbar() ユーティリティは削除された。 は削除された。 このモジュールの機能はあまり使われていなかった。 のような専用パッケージがカバーしている。 tqdmのような専用パッケージでカバーするのがよいだろう。


qiskit.transpiler

合成

qiskit.transpiler.synthesis モジュールの項目は新しい場所に移行されました:

削除済み
代替
qiskit.transpiler.synthesis.aqc (を除く AQCSynthesisPlugin)qiskit.synthesis.unitary.aqc
qiskit.transpiler.synthesis.graysynthqiskit.synthesis.synth_cnot_phase_aam
qiskit.transpiler.synthesis.cnot_synthqiskit.synthesis.synth_cnot_count_full_pmh

成功

NoiseAdaptiveLayout のトランスパイラ・パスは、次のものに取って代わられた。 VF2LayoutVF2PostLayout, に取って代わられた。 バックエンドの パスと対応する "noise_adaptive" レイアウトステージ プラグインはQiskitから削除されました。

CrosstalkAdaptiveSchedule 、トランスパイラー・パスはコードベースから削除された。 コードベースから削除されました。 このパスは、内部動作が ペイロードに設定されたカスタムプロパティに依存していたため、使用できなくなった。 BackendProperties このパスは使えなくなった。 BackendV1 で設定されるカスタムプロパティに依存していたからである。 どのバックエンドもこれらのフィールドを設定していないため、このパスは削除された。 は削除されました。

パスマネージャー

appendConditionalController, FlowControllerLinearおよび DoWhileController クラス は削除された。 代わりに、すべてのタスクはコントローラオブジェクトを構築するときに提供されなければならない。 オブジェクトが構築されるときに提供されなければなりません。


qiskit.utils

qiskit.utils 、以下のツールは交換なしで撤去された:

  • qiskit.utils.arithmetic
  • qiskit.utils.circuit_utils
  • qiskit.utils.entangler_map
  • qiskit.utils.name_unnamed_args

これらの関数は、 qiskit.algorithmsqiskit.opflow モジュールでのみ使用されていた。


qiskit.visualization

qiskit.visualization.qcstyle モジュールが取り外された。 使用方法 qiskit.visualization.circuit.qcstyle を直接交換してください。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。