Skip to main content
IBM Quantum Platform

Qiskit 0.18 リリースノート


0.18.3

Terra 0.13.0

変更なし

エア 0.5.1

アップグレードの注意

  • C++ コントローラ・クラスでのトランスピレーション・パスの処理方法が変更され、各パスを明示的に呼び出す必要があります。 これにより、各パスをいつ、どのようなパラメーターで呼び出すかを、よりカスタマイズできるようになる。 特に、 QasmController のシミュレーション手法に応じて、ゲート融合最適化パスのパラメータを異なるものに設定することができます。
  • 内部コードの単位変換を処理するために、デバイス・ノイズ・モデル関数でカスタム gate_lengths を指定するために、 qiskit.providers.aer.noise.NoiseModel.from_device()gate_length_units kwarg を追加。
  • スタビライザーシミュレーターのメソッドがサポートするゲートセットにControlled-Y("cy")ゲートを追加。
  • Aerのバックエンドで、terraからの入力qobjオブジェクトのjsonschemaバリデーションが、デフォルトで有効になっていた代わりに、オプトインになった。 qobjのjsonschemaバリデーションを有効にしたい場合は、バックエンドオブジェクトの qiskit.providers.aer.QasmSimualtor.run() メソッドの validate kwargを True

バグ修正

  • 自動的に選択されるシミュレーション方法から "extended_stabilizer "を削除。 これは、拡張スタビライザー法が厳密ではなく、ユーザーがその構成パラメーターを最適化する方法を知らない限り、特定の回路に対して誤った結果を与える可能性があるため、必要なことである。

    自動メソッドは、"stabilizer"、"density_matrix"、"statevector "メソッドからのみ選択されるようになった。 statevectorメソッドに対して大きすぎる非クリフォード回路が実行された場合、例外が発生し、代わりに "extended_stabilizer "または "matrix_product_state "メソッドを明示的に使用してみることを提案する。

  • ReduceBarrier transpilation passが最初に適用されるようにControllerクラスを修正。 これにより、バリア命令しか定義されていない場合、未使用の量子ビットの切り捨てを防ぐことができる。

  • マトリックス積の状態シミュレーション手法のゲート・フュージョンを無効にしました。

  • 熱緩和エラーとゲートエラーを含むデバイス・ノイズ・モデルのゲート時間単位変換のエラーを修正。 脱分極の誤差確率は、ゲート時間をマイクロ秒単位で計算していたが、熱緩和の場合はナノ秒単位で計算していた。 不正確なユニットを使用すると、装置がコヒーレンス制限を受けているように見えるため、この結果、脱分極エラーは適用されなかった。

  • QuantumErrors、合成された命令の量子ビットが異なる場合、合成が正しく行われないバグを修正。

  • ダイアゴナル」ゲートがユニタリーであることをチェックする際、許容誤差が大きすぎる問題を修正。 このため、Numpy関数から生成された対角線はしばしばテストに失敗していた。

  • remove-barrier回路最適化パスをqubit trucationの前に適用するように修正。 これは、Terra transpilerによって挿入されたバリアが、そうでなければアクティブでない量子ビットを横切ってしまうことで、その量子ビットが切り捨てられなくなる問題を修正したものです。

イグニス 0.3.0

変更なし

アクア 0.6.6

変更なし

IBM Q プロバイダー 0.6.1

変更なし


0.18.0

Terra 0.13.0

前奏曲

0.13.0 リリースには多くの大きな変更が含まれている。 今回のリリースのハイライトは以下の通り:

トランスパイラでは、すべての操作の基礎となるデータ構造である qiskit.dagcircuit.DAGCircuit クラスを構築するために使用するグラフ・ライブラリを retworkxに変更し、パフォーマンスを大幅に向上させた。 0.13.0 リリースの回路トランスピレーション速度は、以前のリリースよりも大幅に速くなるはずです。

パルスのインストラクションのスタイルが大幅に簡素化された。 現在、 Command sは廃止され、統一された一連の Instruction がサポートされている。

モジュールには qiskit.quantum_info モジュールには、ランダム演算子(Cliffordsや量子チャンネルなど)の生成や量子チャンネルのダイヤモンドノルムの計算を行う新しい関数がいくつか含まれています。 Statevector および DensityMatrix クラスがアップグレードされ、測定確率やサンプリング測定の計算をサポートします。 これらの新しいクラスには、クリフォード作用素(Clifford)、Pauli基底で疎なN量子ビット行列(SparsePauliOp)、パウリのリスト(PauliTable)、スタビライザーのリスト(StabilizerTable)などがある。

このリリースでは、Qiskit全体のドキュメントも大幅に改善されています。 qiskit.circuit, qiskit.pulse および qiskit.quantum_info モジュールのドキュメントも改善されています。

さらに、ゲート・オブジェクトと QuantumCircuit メソッドの命名が更新されました。 その結果、より一貫性のある命名スキームへの移行に伴い、いくつかのクラスやメソッドが非推奨となった。

このリリースで行われたすべての変更の詳細については、以下の詳細リリースノートをご覧ください。

新機能

  • 回路ライブラリモジュールを追加 qiskit.circuit.library. ここは、より大規模な回路やアプリケーションのビルディング・ブロックとして使用できる、一般的に使用される回路のコンストラクタのための場所となる。

  • qiskit.providers.BaseJob クラスには4つの新しいメソッドがある:

    • done()
    • running()
    • cancelled()
    • in_final_state()

    これらのメソッドは、ジョブが所定のジョブ・ステータスにあるかどうかをチェックするために使用される。

  • 量子ビットが基底状態であることを条件とした制御を指定する機能を追加。 制御量子ビットの状態は整数で表される。 例:

    from qiskit import QuantumCircuit
    from qiskit.extensions.standard import XGate
    
    qc = QuantumCircuit(4)
    cgate = XGate().control(3, ctrl_state=6)
    qc.append(cgate, [0, 1, 2, 3])

    第1量子ビットが基底状態で、第2量子ビットと第3量子ビットが励起状態の場合、第4量子ビットが反転する4量子ビットゲートを作成します。 もし ctrl_stateNone (デフォルト)であれば、制御はすべての制御量子ビットが励起されていることを条件とする。

  • 新しいjupyterウィジェット %circuit_library_infoqiskit.tools.jupyter. このウィジェットは、回路ライブラリから構築された回路の詳細を視覚化するために使用されます。 例 :

    from qiskit.circuit.library import XOR
    import qiskit.tools.jupyter
    circuit = XOR(5, seed=42)
    %circuit_library_info circuit
  • 新しい kwarg オプション、 formatted が追加された。 qiskit.circuit.QuantumCircuit.qasm() . True に設定すると、このメソッドは(pygmentsを使用して)構文を強調表示したバージョンを標準出力に出力し、 None (QASMコードを文字列として返す通常の動作とは異なります)を返します。

  • 新しい kwarg オプション filename が追加された。 qiskit.circuit.QuantumCircuit.qasm(). パスを設定すると、このメソッドはQASMコードをそのファイルに書き込みます。 その後は通常通り出力を続ける。

  • PulseChannel の周波数を変更できる新しいインストラクション SetFrequency 。 これは次のような方法で行われる:

    from qiskit.pulse import Schedule
    from qiskit.pulse import SetFrequency
    
    sched = pulse.Schedule()
    sched += SetFrequency(5.5e9, DriveChannel(0))

    この例では、 SetFrequency コマンドの前のすべてのパルスの周波数はデフォルト周波数となり、 SetFrequency コマンドの後にドライブ・チャンネル・ゼロに適用されるすべてのパルスの周波数は 5.5 GHz となります。 SetFrequency 、ハードウェアの制限に留意する必要がある。

  • 新しいメソッド assign_parameters() メソッドが qiskit.circuit.QuantumCircuit クラスに追加されました。 このメソッドは、float オブジェクトと Parameters オブジェクトの両方を 1 つの辞書にまとめたパラメータ辞書を受け取ります。 言い換えれば、この新しいメソッドによって、フロート、パラメータ、またはその両方を1つの辞書にバインドすることができる。

    また、 inplace kwargを使用することで、オプションで元の回路を変更することもできる。 デフォルトでは、これは False に設定され、元の回路のコピーがメソッドから返される。

  • 新しいメソッド num_nonlocal_gates() メソッドが qiskit.circuit.QuantumCircuit クラスに追加されました。 このメソッドは、2つ以上の量子ビットを含む回路のゲート数を返す。 これらのゲートは、実装にかかる時間とエラーの点でコストがかかる。

  • その qiskit.circuit.QuantumCircuit メソッド iso() 回路に Isometry ゲートを追加するメソッドに新しい別名が追加された。 今なら qiskit.circuit.QuantumCircuit.isometry()iso をかけることができるようになった。

  • クラスに description 属性が追加された。 CouplingMap 属性が追加され、さまざまなカップリング・マップ(フル、グリッド、ラインなど)の短い説明を格納できるようになりました。

  • 新しいメソッド compose() メソッドが追加された。 DAGCircuit クラスに新しいメソッドが追加された。

    dag_left.compose(dag_right, edge_map={right_qubit0: self.left_qubit1,
                                      right_qubit1: self.left_qubit4,
                                      right_clbit0: self.left_clbit1,
                                      right_clbit1: self.left_clbit0})
                ┌───┐                    ┌─────┐┌─┐
    lqr_1_0: ───┤ H ├───     rqr_0: ──■──┤ Tdg ├┤M├
                ├───┤               ┌─┴─┐└─┬─┬─┘└╥┘
    lqr_1_1: ───┤ X ├───     rqr_1: ┤ X ├──┤M├───╫─
             ┌──┴───┴──┐            └───┘  └╥┘   ║
    lqr_1_2:U1(0.1)+  rcr_0: ════════╬════╩═  =
             └─────────┘                    ║
    lqr_2_0: ─────■─────     rcr_1: ════════╩══════
                ┌─┴─┐
    lqr_2_1: ───┤ X ├───
                └───┘
    lcr_0:   ═══════════
    
    lcr_1:   ═══════════
    
                ┌───┐
    lqr_1_0: ───┤ H ├──────────────────
                ├───┤        ┌─────┐┌─┐
    lqr_1_1: ───┤ X ├─────■──┤ Tdg ├┤M├
             ┌──┴───┴──┐  │  └─────┘└╥┘
    lqr_1_2:U1(0.1) ├──┼──────────╫─
             └─────────┘  │          ║
    lqr_2_0: ─────■───────┼──────────╫─
                ┌─┴─┐   ┌─┴─┐  ┌─┐   ║
    lqr_2_1: ───┤ X ├───┤ X ├──┤M├───╫─
                └───┘   └───┘  └╥┘   ║
    lcr_0:   ═══════════════════╩════╬═
    
    lcr_1:   ════════════════════════╩═
  • qiskit.test.mock のモック・バックエンドは、実機と同様の結果を返す run() メソッドを持つようになった。 qiskit-aer がインストールされている場合、偽のバックエンドのデバイススナップショットから構築されたノイズモデルでシミュレーションが実行されます。 そうでなければ qiskit.providers.basicaer.QasmSimulatorPy は理想的なシミュレーションを実行するために使用されます。 さらに、パルス実験が run 、qiskit-aerがインストールされている場合、 PulseSimulator 、パルススケジュールのシミュレーションに使用される。

  • その qiskit.result.Result() メソッド get_counts() メソッドは、ジョブ内に複数の回路がある場合に利用可能なすべてのカウントのリストを返すようになりました。 引数なしで get_counts()

    この機能の主な検討事項は、複数の回路の結果をすべて同じヒストグラムに描くことだった。 例えば、こんなことができるようになった:

    from qiskit import execute
    from qiskit import QuantumCircuit
    from qiskit.providers.basicaer import BasicAer
    from qiskit.visualization import plot_histogram
    
    sim = BasicAer.get_backend('qasm_simulator')
    
    qc = QuantumCircuit(2)
    qc.h(0)
    qc.cx(0, 1)
    qc.measure_all()
    result = execute([qc, qc, qc], sim).result()
    
    plot_histogram(result.get_counts())
  • 新しいクワーグ initial_stateqiskit.visualization.circuit_drawer() 関数と QuantumCircuit メソッド draw(). True に設定すると、すべてのバックエンドの回路可視化に初期状態が含まれます。 例:

    from qiskit import QuantumCircuit
    
    circuit = QuantumCircuit(2)
    circuit.measure_all()
    circuit.draw(output='mpl', initial_state=True)
  • に呼び出し可能ファイルを挿入できるようになった。 qiskit.pulse.InstructionScheduleMap に挿入できるようになった。 qiskit.pulse.Schedule を返す callable を挿入できるようになった。 例:

    def test_func(x):
       sched = Schedule()
       sched += pulse_lib.constant(int(x), amp_test)(DriveChannel(0))
       return sched
    
    inst_map = InstructionScheduleMap()
    inst_map.add('f', (0,), test_func)
    output_sched = inst_map.get('f', (0,), 10)
    assert output_sched.duration == 10
  • つの新しいゲート・クラス、 qiskit.extensions.iSwapGateqiskit.extensions.DCXGate とそのメソッド。 QuantumCircuit メソッド iswap()dcx() が標準拡張機能に追加された。 これらのゲートは互いに局所的に等価であり、特定のXY相互作用を実現するために使用することができる。 これらのゲートの簡単な動機は、以下を参照されたい: arxiv.org/abs/quant-ph/0209035

  • qiskit.providers.BaseJob クラスに新しいメソッド wait_for_final_state() が追加され、ジョブが最終状態( DONEERROR など)に達するまで、ジョブの状態をポーリングするようになりました。 このメソッドはまた、オプションで callback kwargを取る。このkwargは、ポーリング・ループの各反復中に呼び出される Python callableを取る。

  • パスの search_width および search_depth 属性が qiskit.transpiler.passes.LookaheadSwap 属性が初期化時に設定できるようになりました。 探索空間が大きければ、実行時間は長くなるが、より最適化された回路が得られることが多い。

  • の量子ビット数は BackendConfiguration へのアクセスは num_qubits. 以前は n_qubits

  • 新しい2つの方法 angles()angles_and_phase()メソッドが qiskit.quantum_info.OneQubitEulerDecomposer クラスに追加されました。 これらのメソッドはバリデーションなしで関連するパラメーターを返し、 OneQubitEulerDecomposer オブジェクトを呼び出すと、バリデーション付きの完全な合成が実行される。

  • RR 分解基底が追加された。 qiskit.quantum_info.OneQubitEulerDecomposer 任意の 2x2 ユニタリーを2つの RGate 回路に分解する。

  • BaseOperator クラスのサブクラスであるオブジェクトに qargs を設定する機能を追加。 これは、オブジェクト op(qargs)op は演算子クラス)を呼び出すことによって行われ、qargsプロパティが設定された元のオブジェクトの浅いコピーを返します。 このようなオブジェクトが compose() または dot() メソッドで使われる場合、 qargs メソッド kwarg が使われないときは qargs の内部値が使われる。 これにより、例えば二項演算子を使ったサブシステムの構成が可能になる:

    from qiskit.quantum_info import Operator
    
    init = Operator.from_label('III')
    x = Operator.from_label('X')
    h = Operator.from_label('H')
    init @ x([0]) @ h([1])
  • quantum_infoモジュールに qiskit.quantum_info.Clifford 演算子クラスを追加する。 この作用素は、クリフォード群のN量子ビットユニタリー作用素の効率的なシンプレクティック表現である。 このクラスには to_circuit() このクラスには、3量子ビットまでの最小数のCXゲートを持つクリフォードゲートの QuantumCircuit 。 また、N > 3量子ビットの一般的なコンパイルも提供するが、この方法は2量子ビットのゲート数では最適ではない。

  • 演算子クラスを追加 qiskit.quantum_info.SparsePauliOp 演算子クラスを追加します。 これはN量子ビット行列の効率的な表現方法であり、パウリ基底でスパースであり、データ構造として qiskit.quantum_info.PauliTable 、複素係数のベクトルを使用する。

    このクラスは qiskit.quantum_info.Operator このクラスは SparsePauliOp オブジェクトをテンソル、合成、スカラー倍、加算、減算することができます。

    Numpy配列または Operator オブジェクトは SparsePauliOp:class:`~qiskit.quantum_info.SparsePauliOp に変換できる。 SparsePauliOp メソッドを使って、疎なcsr_matrixまたは密なNumpy配列に変換できる。 to_matrix メソッド、または Operator オブジェクトに to_operator メソッドでオブジェクトに変換できる。

    A SparsePauliOp は、 PauliTable 成分と係数、係数とパウリ文字列ラベルは label_iter() メソッドを用いて,その係数とパウリ文字列ラベルの観点から,また matrix_iter() メソッドを使う。

  • 追加 qiskit.quantum_info.diamond_norm() 量子チャネルのダイヤモンドノルム(完全境界トレースノルム)を計算する関数を追加しました。 これは、 diamond_norm(chan1 - chan2) を使って2つの量子チャンネル間の距離を計算するのに使える。

  • 新しいクラス qiskit.quantum_info.PauliTable 。 これはN量子ビットのパウリ作用素のリストの効率的なシンプレクティック表現である。 このクラスの特徴は以下の通り:

    • PauliTable オブジェクトが構成され、 PauliTable オブジェクトが返される。このオブジェクトは、第一のテーブルの各要素と第二のテーブルの各要素の間に、( compose(), dot(), expand(), tensor())という操作の組み合わせで構成される。
    • 2つの表を足すことは、各表の項のリスト連結として機能する(+ )。
    • パウリ表は辞書順(テンソル積順)またはパウリ重み(sort() )でソートできる。
    • 重複要素をカウントして削除することができます (unique())。
    • PauliTable は、本来のシンプレクティックなブーリアン配列表現、パウリ文字列ラベル (label_iter())、または密なNumpy配列または疎なCSR行列 (matrix_iter())のいずれかで反復処理することができる。
    • パウリ表と別のパウリ表(commutes())またはパウリ表(commutes_with_all())の要素間の整合をチェックする

    詳細については、 qiskit.quantum_info.PauliTable クラス API ドキュメントを参照してください。

  • qiskit.quantum_info.StabilizerTable クラスを追加。 これは qiskit.quantum_info.PauliTable クラスのサブクラスで、パウリ表配列とともにブーリアン位相ベクトルを含む。 これは、+1または -1 係数を持つ実数パウリ演算子であるスタビライザー演算子のリストを表します。 スタビライザー行列は実数であるため、 "Y" ラベル行列は [[0, 1], [-1, 0]] として定義される。 詳細はAPIドキュメントを参照。

  • 追加 qiskit.quantum_info.pauli_basis() 関数を追加し、N量子ビットのパウリ基底を qiskit.quantum_info.PauliTable オブジェクトとして返します。 この基底の順序は、標準的な辞書的順序(テンソル積)か、非同一パウリ項の数(重み)のいずれかである。

  • 追加 qiskit.quantum_info.ScalarOp 演算子クラスを追加します。 これは、任意の次元のサブシステムで ID を初期化するために使用でき、暗黙のうちに他の BaseOperator サブクラス ( qiskit.quantum_info.Operator または qiskit.quantum_info.SuperOpなど) に暗黙的に変換されます。

    例同一性演算子

    from qiskit.quantum_info import ScalarOp, Operator
    
    X = Operator.from_label('X')
    Z = Operator.from_label('Z')
    
    init = ScalarOp(2 ** 3)  # 3-qubit identity
    op = init @ X([0]) @ Z([1]) @ X([2])  # Op XZX
  • 新しいメソッドが追加された、 reshape()qiskit.quantum_innfo.Operator クラスに追加されました。このメソッドは、サブシステムの入力または出力寸法をリシェイプした演算子サブクラスの浅いコピーを返します。 すべてのサブシステムの合計寸法は、元の演算子と同じでなければならない。

  • 追加 qiskit.quantum_info.random_clifford() ランダムな qiskit.quantum_info.Clifford 演算子を追加した。

  • 追加 qiskit.quantum_info.random_quantum_channel() 関数で、固定ランクのランダム量子チャネルを生成する。 Choi-ランクを Stinespring 表現を追加した。

  • 追加 qiskit.quantum_info.random_hermitian() ランダムなエルミート Operator.

  • 追加 qiskit.quantum_info.random_statevector() ランダムな Statevector.

  • ランダムな qiskit.quantum_info.PauliTable を生成するための qiskit.quantum_info.random_pauli_table() を追加する。

  • ランダムな qiskit.quantum_info.StabilizerTable を生成するための qiskit.quantum_info.random_stabilizer_table() を追加する。

  • num_qubits qiskit.quantum_info.StateVectorqiskit.quantum_info.DensityMatrix クラスに追加する。 これはN量子ビット状態の場合は量子ビット数を返し、非量子ビット状態の場合は None

  • 追加 to_dict()to_dict() メソッドを追加し qiskit.quantum_info.Statevector および qiskit.quantum_info.DensityMatrix オブジェクトをBra-Ket記法辞書に変換する

    from qiskit.quantum_info import Statevector
    
    state = Statevector.from_label('+0')
    print(state.to_dict())
    from qiskit.quantum_info import DensityMatrix
    
    state = DensityMatrix.from_label('+0')
    print(state.to_dict())
  • 追加 probabilities()probabilities()qiskit.quantum_info.Statevectorqiskit.quantum_info.DensityMatrix クラスが追加され、指定されたサブシステムの計算基礎における測定結果確率の配列を返します。

    from qiskit.quantum_info import Statevector
    
    state = Statevector.from_label('+0')
    print(state.probabilities())
    from qiskit.quantum_info import DensityMatrix
    
    state = DensityMatrix.from_label('+0')
    print(state.probabilities())
  • 追加 probabilities_dict()probabilities_dict()qiskit.quantum_info.Statevectorqiskit.quantum_info.DensityMatrix クラスを追加します。このクラスは、指定されたサブシステムの計算基礎における測定結果確率のカウント形式の辞書配列を返します。

    from qiskit.quantum_info import Statevector
    
    state = Statevector.from_label('+0')
    print(state.probabilities_dict())
    from qiskit.quantum_info import DensityMatrix
    
    state = DensityMatrix.from_label('+0')
    print(state.probabilities_dict())
  • 追加 sample_counts()sample_memory() メソッドを StatevectorDensityMatrix クラスを追加する。

    例:

    状態ベクトルからサンプリングしてカウント辞書を生成する

    from qiskit.quantum_info import Statevector
    
    psi = Statevector.from_label('+0')
    shots = 1024
    
    # Sample counts dictionary
    counts = psi.sample_counts(shots)
    print('Measure both:', counts)
    
    # Qubit-0
    counts0 = psi.sample_counts(shots, [0])
    print('Measure Qubit-0:', counts0)
    
    # Qubit-1
    counts1 = psi.sample_counts(shots, [1])
    print('Measure Qubit-1:', counts1)

    各サンプルの測定結果の配列を返す

    from qiskit.quantum_info import Statevector
    
    psi = Statevector.from_label('-1')
    shots = 10
    
    # Sample memory
    mem = psi.sample_memory(shots)
    print('Measure both:', mem)
    
    # Qubit-0
    mem0 = psi.sample_memory(shots, [0])
    print('Measure Qubit-0:', mem0)
    
    # Qubit-1
    mem1 = psi.sample_memory(shots, [1])
    print('Measure Qubit-1:', mem1)
  • メソッドを measure() メソッドを qiskit.quantum_info.Statevectorqiskit.quantum_info.DensityMatrix 量子状態クラスにメソッドを追加する。 これにより、指定されたサブシステムから単一の測定結果をサンプリングし、状態ベクトルを測定後の計算基礎状態に折りたたむことができる。 例 :

    from qiskit.quantum_info import Statevector
    
    psi = Statevector.from_label('+1')
    
    # Measure both qubits
    outcome, psi_meas = psi.measure()
    print("measure([0, 1]) outcome:", outcome, "Post-measurement state:")
    print(psi_meas)
    
    # Measure qubit-1 only
    outcome, psi_meas = psi.measure([1])
    print("measure([1]) outcome:", outcome, "Post-measurement state:")
    print(psi_meas)
  • メソッドを reset() メソッドを qiskit.quantum_info.Statevectorqiskit.quantum_info.DensityMatrix 量子状態クラスにメソッドを追加する。 これにより、一部またはすべてのサブシステムを 0|0\rangle。 例 :

    from qiskit.quantum_info import Statevector
    
    psi = Statevector.from_label('+1')
    
    # Reset both qubits
    psi_reset = psi.reset()
    print("Post reset state: ")
    print(psi_reset)
    
    # Reset qubit-1 only
    psi_reset = psi.reset([1])
    print("Post reset([1]) state: ")
    print(psi_reset)
  • 新しい可視化機能 qiskit.visualization.visualize_transition() が追加されました。 これは1つの量子ビット回路を取り込み、ブロッホ球上の量子ビット状態遷移のアニメーションを返す。 この関数を使用するには、matplotlibアニメーションライターの依存関係をインストールし、グローバルに設定する必要があります。 この詳細については、 matplotlibのドキュメントを参照してください。 しかし、デフォルトの場合、 FFmpegがインストールされていることを確認するだけで、この機能を使うには十分である。

    以下のゲートを持つ回路をサポートしている:

    • HGate
    • XGate
    • YGate
    • ZGate
    • RXGate
    • RYGate
    • RZGate
    • SGate
    • SdgGate
    • TGate
    • TdgGate
    • U1Gate

    例:

    from qiskit.visualization import visualize_transition
    from qiskit import *
    
    qc = QuantumCircuit(1)
    qc.h(0)
    qc.ry(70,0)
    qc.rx(90,0)
    qc.rz(120,0)
    
    visualize_transition(qc, fpg=20, spg=1, trace=True)
  • execute() schedule_circuitschedule_circuit=TrueSchedule. これにより qiskit.circuit.QuantumCircuit オブジェクトを構築するユーザーは、 as_late_as_possibleas_soon_as_possible などのカスタムスケジューラメソッドを利用することができる。 例:

    job = execute(qc, backend, schedule_circuit=True,
                  scheduling_method="as_late_as_possible")
  • 新しい環境変数 QISKIT_SUPPRESS_PACKAGING_WARNINGSY または y に設定することで、インポート時に qiskit-aerqiskit-ibmq-provider がインストールされていないという警告を抑制することができる。 これはqiskit-terraのみを実行している(あるいはqiskit-aerおよび/またはqiskit-ibmq-providerを実行していない)ユーザーで、警告が潜在的なパッケージング問題の兆候ではない場合に便利です。 環境変数に N または n を設定することで、ユーザー設定ファイルで警告を無効に設定していても、常に警告が有効になります。

  • 新しいユーザー設定ファイルオプション、 suppress_packaging_warnings が追加されました。 ユーザー設定ファイルで true

    [default]
    suppress_packaging_warnings = true

    これは、インポート時に qiskit-aerqiskit-ibmq-provider がインストールされていないという警告を抑制する。 これはqiskit-terraのみを実行している(あるいはqiskit-aerおよび/またはqiskit-ibmq-providerを実行していない)ユーザーで、警告が潜在的なパッケージング問題の兆候ではない場合に便利です。 ユーザー設定ファイルが警告を無効にするように設定されている場合、 QISKIT_SUPPRESS_PACKAGING_WARNINGSN または n

  • qiskit.compiler.transpile() には、 layout_methodrouting_method という2つの新しいkwargsがある。 これらにより、制約のあるアーキテクチャ上の回路の配置配線に特定の方法を選択することができます。 例えば、こうだ:

    transpile(circ, backend, layout_method='dense',
              routing_method='lookahead')

    を実行する。 DenseLayout レイアウトパスと LookaheadSwap ルーティングパスを実行します。

  • パルスのインストラクションのスタイルが大幅に簡素化された。

    以前のスタイルでは、 CommandInstruction. コマンドとインストラクションの使い分けが迷うところだった。 これが以前のスタイルだった:

    sched += Delay(5)(DriveChannel(0))
    sched += ShiftPhase(np.pi)(DriveChannel(0))
    sched += SamplePulse([1.0, ...])(DriveChannel(0))
    sched += Acquire(100)(AcquireChannel(0), MemorySlot(0))

    あるいは、(あまり使われないが)それに相当する:

    sched += DelayInstruction(Delay(5), DriveChannel(0))
    sched += ShiftPhaseInstruction(ShiftPhase(np.pi), DriveChannel(0))
    sched += PulseInstruction(SamplePulse([1.0, ...]), DriveChannel(0))
    sched += AcquireInstruction(Acquire(100), AcquireChannel(0),
                                MemorySlot(0))

    現在では、 コマンドとインストラクションを構築するのではなく、各コマンドはインストラクションに移行している:

    sched += Delay(5, DriveChannel(0))
    sched += ShiftPhase(np.pi, DriveChannel(0))
    sched += Play(SamplePulse([1.0, ...]), DriveChannel(0))
    sched += SetFrequency(5.5, DriveChannel(0))  # New instruction!
    sched += Acquire(100, AcquireChannel(0), MemorySlot(0))
  • 現在では Play パルスエンベロープとチャンネルを指定する命令がある。 pulse_lib に新しい Pulse クラスがあり、パルス・エンベロープの記述はこれをサブクラス化する。

    例:

    Play(SamplePulse([0.1]*10), DriveChannel(0))
    Play(ConstantPulse(duration=10, amp=0.1), DriveChannel(0))

アップグレードの注意

  • を削除しました。 qiskit.dagcircuit.DAGNode0.9.0 リリースで非推奨となった pop メソッドは削除された。 この方法を使用していた場合は、 Python 'の del ステートメントまたは delattr() 関数を活用して同じタスクを実行できる。

  • 新しいオプションの視覚化要件、 pygments が追加された。 これはJupyterウィジェットで OpenQASM 2.0 コードのシンタックスハイライトを提供するために使用され、オプションで qiskit.circuit.QuantumCircuit.qasm() メソッドに使われます。 の %circuit_library_info ウィジェットまたは pip install pygments kwarg を使用する前に( または pip install qiskit-terra[visualization] で)インストールする必要があります。 qiskit.tools.jupyter メソッドで formatted kwarg を使う前にインストールされていなければなりません。 qasm() メソッドを使う前にインストールする必要があります。

  • パルス buffer オプションは qiskit.pulse.Channelqiskit.pulse.Schedule は Terra 0.11.0 で非推奨となり、現在は削除されています。 チャンネルやスケジュールにディレイを追加するには、スケジュールでディレイを指定してください:

    sched = Schedule()
    sched += Delay(5)(DriveChannel(0))
  • PulseChannelSpecTerra 0.11.0、非推奨とされていた。 代わりに BackendConfiguration :

    config = backend.configuration()
    drive_chan_0 = config.drives(0)
    acq_chan_0 = config.acquires(0)

    または、 DriveChannel(index) のようにチャンネルを直接参照することもできます。

  • インポートパスは Terra 0.10.0 で非推奨とされていましたが、現在は削除されています。 PulseChannel, DriveChannel, MeasureChannel, ControlChannel の場合は、 from qiskit.pulse.channels.pulse_channels import X の代わりに from qiskit.pulse.channels import X を使用してください。

  • パス qiskit.transpiler.passes.CSPLayout ( 0.11.0 )が最適化レベル2と3のプリセットパスマネージャーに追加されました。 レベル2では、1,000の通話制限と10秒のタイムアウトがある。 レベル3の場合、呼の上限は10,000で、タイムアウトは1分である。

    パスがプリセットパスマネージャに含まれるようになったので、 python-constraint パッケージはオプションの依存関係ではなくなり、要件リストに追加されました。

  • のランタイム・コンフィギュレーションを設定するために使用されていた TranspileConfig クラスは削除され、新しいクラス に置き換えられました。 qiskit.transpiler.PassManager クラスは削除され、新しいクラス qiskit.transpile.PassManagerConfig に置き換えられました。 この新しいクラスは、. PassManager. このクラスの属性は以下の通り:

    • initial_layout
    • basis_gates
    • coupling_map
    • backend_properties
    • seed_transpiler
  • の関数 transpile_circuit は削除された。 qiskit.transpiler は削除された。 カスタム PassManager 回路をトランスパイルするには run():class:~qiskit.transpiler.PassManager` メソッドを使ってください。

  • その QuantumCircuit メソッド draw()qiskit.visualization.circuit_drawer() 関数は、デフォルトでビジュアライゼーションに含まれる初期状態を含まなくなります。 出力の可視化で初期状態を保持したい場合は、 initial_state kwarg を True に設定する必要がある。 例えば、ランニング:

    from qiskit import QuantumCircuit
    
    circuit = QuantumCircuit(2)
    circuit.measure_all()
    circuit.draw(output='text')

    これにはもはや初期状態は含まれない。 それを保持したければ、走ることができる:

    from qiskit import QuantumCircuit
    
    circuit = QuantumCircuit(2)
    circuit.measure_all()
    circuit.draw(output='text', initial_state=True)
  • qiskit.compiler.transpile() (および transpile を内部的に使用する qiskit.execute.execute()) は、 pass_manager kwarg が設定され、インスタンス化された PassManager エラーが発生するようになった。 以前は、これらの競合するkwargsはただ黙って無視され、 PassManager インスタンスの値が使用されていた。 例:

    from qiskit.circuit import QuantumCircuit
    from qiskit.transpiler.pass_manager_config import PassManagerConfig
    from qiskit.transpiler import preset_passmanagers
    from qiskit.compiler import transpile
    
    qc = QuantumCircuit(5)
    
    config = PassManagerConfig(basis_gates=['u3', 'cx'])
    pm = preset_passmanagers.level_0_pass_manager(config)
    transpile(qc, optimization_level=3, pass_manager=pm)

    このリリース以前は、 pm の値が黙って使われ、 optimization_level kwarg の値は無視されていたが、エラーが発生するようになった。 transpile

    • optimization_level
    • basis_gates
    • coupling_map
    • seed_transpiler
    • backend_properties
    • initial_layout
    • layout_method
    • routing_method
    • backend
  • その Operator, Clifford, SparsePauliOpPauliTable, StabilizerTable, 演算子クラスには、 call メソッドが追加されている。 compose(), dot(), evolve()演算子で使用するために、演算子にqargsを割り当てることができる - メソッドが追加された。

  • の加算メソッドは qiskit.quantum_info.Operatorqargs クラスの追加メソッドは、 qarg kwarg を受け付けるようになりました。 compose() および dot() メソッドと同じ)。 これにより、コンポジションと同様にコールメソッドを使ってサブシステムを追加することができる。 このサポートは、すべての BaseOperator サブクラス (ScalarOp, OperatorQuantumChannel) に追加されます。

    例:

    from qiskit.quantum_info import Operator, ScalarOp
    
    ZZ = Operator.from_label('ZZ')
    
    # Initialize empty Hamiltonian
    n_qubits = 10
    ham = ScalarOp(2 ** n_qubits, coeff=0)
    
    # Add 2-body nearest neighbour terms
    for j in range(n_qubits - 1):
        ham = ham + ZZ([j, j+1])
  • BaseOperator クラスが更新され、加算、減算、スカラー倍が抽象メソッドではなくなった。 つまり、サポートされていない場合はサブクラスで実装する必要がなくなった。 メソッドが定義されていない場合、ベース・クラスは NotImplementedError

  • この qiskit.quantum_info.random_density_matrix() 関数はランダムな DensityMatrix オブジェクトを返します。 以前のリリースではnumpyの配列を返していた。

  • その qiskit.quantum_info.Statevectorqiskit.quantum_info.DensityMatrix クラスは、入力配列がすでに正しいd型であればコピーしなくなった。

  • fastjsonschema が依存関係として追加されている。 これは、 validate キーワード引数が True に設定されたqobjオブジェクトで to_dict() メソッドが呼び出されたときに、JSONスキーマに対するqobj辞書の検証をより高速に行うために使用される。

  • のqobjコンストラクション・クラスは qiskit.qobj はデフォルトではqobj jsonschemaに対してバリデートしなくなりました。 これには以下のクラスが含まれる:

    このバリデーションに依存していた場合、あるいはqobjスキーマに対してバリデーションを行いたい場合、 validate kwargを True に設定することで行うことができます。 to_dict() メソッドを設定することで行えます。 QasmQobj または PulseQobj. 例:

    これは、Qobj jsonschemaに対して出力辞書を検証します。

  • からの出力辞書 qiskit.qobj.QasmQobj.to_dict()qiskit.qobj.PulseQobj.to_dict() からの出力辞書は、IBMQのAPIが期待するような、直接jsonシリアライズできる形式ではなくなりました。 これらのQobjオブジェクトは、プロバイダー/バックエンドに実験を渡すために我々が現在使用しているフォーマットである。IBMQ APIに直接渡すことができる辞書フォーマットを持つことは、 qiskit-ibmq-provider、それなりに便利であったが、他のプロバイダーにとってはより困難なものとなった。 特に、ローカル・シミュレーターをラッピングしているプロバイダーにとっては。 今後、プロバイダーとIBMQ APIリクエスト・フォーマットの間で受け渡されるものの定義は、(後方互換性のある方法で)さらに切り離され、プロバイダーとバックエンドを書く負担が軽減されるはずだ。

    実際には、これらのメソッドの出力が以前のリリースと機能的に異なるのは、複素数が complex 型で表現されることと、numpyの配列がサイレントでリストに変換されなくなったことだけです。 このリリース以降、 to_dict() の出力に対して json.dumps() を直接呼び出していた場合、これらのケースを処理するためにカスタム json エンコーダーが必要になる。 例:

    import json
    
    from qiskit.circuit import ParameterExpression
    from qiskit import qobj
    
    my_qasm = qobj.QasmQobj(
        qobj_id='12345',
        header=qobj.QobjHeader(),
        config=qobj.QasmQobjConfig(shots=1024, memory_slots=2,
                                   max_credits=10),
        experiments=[
            qobj.QasmQobjExperiment(instructions=[
                qobj.QasmQobjInstruction(name='u1', qubits=[1],
                                         params=[0.4]),
                qobj.QasmQobjInstruction(name='u2', qubits=[1],
                                         params=[0.4, 0.2])
            ])
        ]
    )
    qasm_dict = my_qasm.to_dict()
    
    class QobjEncoder(json.JSONEncoder):
        """A json encoder for pulse qobj"""
        def default(self, obj):
            # Convert numpy arrays:
            if hasattr(obj, 'tolist'):
                return obj.tolist()
            # Use Qobj complex json format:
            if isinstance(obj, complex):
                return (obj.real, obj.imag)
            if isinstance(obj, ParameterExpression):
                return float(obj)
            return json.JSONEncoder.default(self, obj)
    
    json_str = json.dumps(qasm_dict, cls=QobjEncoder)

    は、以前のリリースで json.dumps(my_qasm.to_dict()) が行っていたのとまったく同じ方法でjson文字列を生成する。

  • CmdDef はTerra 0.11.0 以降非推奨となり、削除されました。 代わりに InstructionScheduleMap をお使いください。

  • のメソッド cmdscmd_qubits は Terra 以降非推奨となり、削除されました。 InstructionScheduleMap メソッドは Terra 0.11.0 以降非推奨となり、削除されました。 代わりに instructionsqubits_with_instruction

  • PulseDefaults Terraが 0.11.0 をリリースして以来、 qubit_freq_estmeas_freq_est をGHzではなくHzで報告している。 この変更を知らせる警告は削除された。

  • 以前( 0.11.0 リリースで)非推奨とされていた qiskit.circuit.Instructionsympy.Basic sympy.Expr qiskit.qasm.node.node.Node sympy.Matrix パラメータを渡すサポートが削除されました。 インストラクション・パラメーターでサポートされているタイプは以下の通り:

  • には次のような特性がある。 BackendConfiguration:

    • dt
    • dtm
    • rep_time

    はすべて秒単位である。 リリース前の 0.11.0、 dtdtm の単位はナノ秒であった。 0.12.0 リリース以前は、 rep_time の単位はマイクロ秒だった。 これらの変更をユーザーに警告する警告は、現在 BackendConfiguration から削除されている。

  • 新しい要件が要件リストに追加されました。 これは、 Apache 2.0 でライセンスされたグラフ・ライブラリで、networkxと同様のAPIを持ち、トランスパイラの一部としての処理を大幅に高速化するために使用されている。 qiskit.dagcircuit.DAGCircuit トランスパイラの一部として操作の大幅な高速化に使用されている。 Qiskit Terraがサポートするすべてのプラットフォーム用のバイナリが PyPI に公開されていますが、プリコンパイルされたバイナリが公開されていないプラットフォームを使用している場合は、sdistからpipでインストールする手順について retworkxのドキュメントを参照してください。

    移行に伴ってトランスパイラやDAGCircuitクラスで問題が発生した場合は、環境変数 USE_RETWORKXN に設定することで、以前のnetworkx実装に戻すことができます。 このオプションは 0.14.0 リリースで削除される。

非推奨のメモ

  • のコンストラクタに辞書引数としてデータを渡すことは非推奨です。 qiskit.dagcircuit.DAGNode のコンストラクタに辞書引数 data_dict としてデータを渡すことは非推奨であり、将来のリリースでは削除される予定です。 その代わりに、フィールドをkwargsとしてコンストラクタに渡す必要がある。 例えば、以前のような行動である:

    from qiskit.dagcircuit import DAGNode
    
    data_dict = {
        'type': 'in',
        'name': 'q_0',
    }
    node = DAGNode(data_dict)

    であるべきだ:

    from qiskit.dagcircuit import DAGNode
    
    node = DAGNode(type='in', name='q_0')
  • ゲート・オブジェクトとメソッドの命名が、より一貫性のあるものに更新された。 以下の変更が行われました。

    • パウリゲートはすべて大文字1文字のみ (I, X, Y, Z)
    • パラメータ化されたパウリ・ゲート(つまり回転)は、大文字の RRX, RY, RZ )を先頭につける
    • 管理されたバージョンでは、大文字 C (CX, CRX, CCX) を前置する
    • ゲートの名前は、代替名ではなく、その動作に従って命名される(CCXToffoli ではない)

    古い名前は非推奨であり、将来のリリースで削除される予定である。 これは、新旧のクラス、名前属性、メソッドを示す変更点のリストである。 新しいカラムが空白の場合、そのカラムに変更はない。

    旧クラス
    新規クラス
    旧名属性
    新しい名前属性
    新しい qiskit.circuit.QuantumCircuit メソッド
    ToffoliGateCCXGateccxccx() および toffoli()
    CrxGateCRXGatecrxcrx()
    CryGateCRYGatecrycry()
    CrzGateCRZGatecrzcrz()
    FredkinGateCSwapGatecswapcswap() および fredkin()
    Cu1GateCU1Gatecu1cu1()
    Cu3GateCU3Gatecu3cu3()
    CnotGateCXGatecxcx() および cnot()
    CyGateCYGatecycy()
    CzGateCZGateczcz()
    DiagGateDiagonalGatediagdiagonaldiag_gatediagonal()
    IdGateIGateidideni() および id()
    Isometryisoisometryiso()isometry() および iso()
    UCGUCGatemultiplexerucg`uc()
    UCRotUCPauliRotGate
    UCXUCRXGateucrotXucrxucxucrx()
    UCYUCRYGateucrotyucryucyucry()
    UCZUCRZGateucrotzucrzuczucrz()
  • qiskit.pulse.pulse_lib の関数 square()sawtooth()triangle() に対する kwarg period は現在非推奨であり、将来のリリースで削除される予定である。 その代わりに、 freq kwargを使って周波数を設定する必要がある。

  • DAGCircuit.compose_back()DAGCircuit.extend_back() メソッドは非推奨であり、将来のリリースで削除される予定である。 代わりに qiskit.dagcircuit.DAGCircuit.compose() メソッドを使うべきである。

  • クラスのコンストラクタの callback qiskit.transpiler.PassManager クラスのコンストラクタのkwargは非推奨となり、将来のリリースで削除される予定です。 オブジェクトの作成時にオブジェクト・レベルで設定するのではなく、メソッドの qiskit.transpiler.PassManager.run() メソッドの

  • n_qubits および numberofqubits キーワードは Terra 全体で非推奨となり、 num_qubits に置き換えられました。 古い名前は将来のリリースで削除される。 この変更の影響を受けるオブジェクトは以下の通り:

    クラス
    オールド・メソッド
    新方式
    QuantumCircuitn_qubitsnum_qubits()
    Paulinumberofqubitsnum_qubits()
    関数
    古い議論
    新しい議論
    random_circuit()n_qubitsnum_qubits
    MSGaten_qubitnum_qubits
  • 関数 qiskit.quantum_info.synthesis.euler_angles_1q は非推奨となりました。 に取って代わられた。 qiskit.quantum_info.OneQubitEulerDecomposer クラスに取って代わられました:

    OneQubitEulerDecomposer().angles(mat)
  • pass_manager kwarg は非推奨。 qiskit.compiler.transpile() は非推奨となり、将来のリリースで削除される予定です。 今後、カスタム・オブジェクトで回路をトランスパイルするには、次のような方法が望ましい。 PassManager オブジェクトの run()PassManager メソッドを使用することです。

  • qiskit.quantum_info.random_state() 関数は非推奨となり、将来のリリースで削除される予定です。 代わりに qiskit.quantum_info.random_statevector() 関数を使うべきです。

  • addsubtractmultiply の方法。 qiskit.quantum_info.Statevector および qiskit.quantum_info.DensityMatrix クラスのメソッドは非推奨であり、将来のリリースで削除される予定です。 その代わりに、 +, -, * の二項演算子を使うべきである。

  • qiskit.quantum_info.Statevector.to_counts()qiskit.quantum_info.DensityMatrix.to_counts()qiskit.quantum_info.counts.state_to_counts() を非推奨とする。 これらの関数は、クラスメソッド qiskit.quantum_info.Statevector.probabilities_dict()qiskit.quantum_info.DensityMatrix.probabilities_dict().

  • SamplePulseParametricPulse (Gaussian など) は現在 Pulse のサブクラスとなり、 qiskit.pulse.pulse_lib に移動しました。以前の pulse.commands 経由のパスは非推奨であり、将来のリリースで削除される予定です。

  • DelayInstruction は非推奨となり、 Delay に置き換えられました。 この新しい指示は、以前の Command Delay を引き継いでいる。 移動パターンはこうだ:

    Delay(<duration>)(<channel>) -> Delay(<duration>, <channel>)
    DelayInstruction(Delay(<duration>), <channel>)
        -> Delay(<duration>, <channel>)

    非推奨期間が終了するまでは、チャンネル上でコマンドを呼び出す以前の構文( Delay )もサポートされる:

    Delay(<phase>)(<channel>)

    新しい Delay 命令は command 属性をサポートしていない。

  • FrameChange および FrameChangeInstruction は非推奨となり、次のように置き換えられました。 ShiftPhase. The changes are:

    FrameChange(<phase>)(<channel>) -> ShiftPhase(<phase>, <channel>)
    FrameChangeInstruction(FrameChange(<phase>), <channel>)
        -> ShiftPhase(<phase>, <channel>)

    非推奨期間が終了するまでは、以前の FrameChange、チャンネル上でコマンドを呼び出す構文がサポートされる:

    ShiftPhase(<phase>)(<channel>)
  • SamplePulseParametricPulsecall メソッドは廃止された。 移行は以下の通り:

    Pulse(<*args>)(<channel>) -> Play(Pulse(*args), <channel>)
  • AcquireInstruction は非推奨となり、代わりに Acquire. The changes are:

    Acquire(<duration>)(<**channels>) -> Acquire(<duration>, <**channels>)
    AcquireInstruction(Acquire(<duration>), <**channels>)
        -> Acquire(<duration>, <**channels>)

    非推奨期間が終了するまでは、チャンネル上でコマンドを呼び出す以前のAcquire構文がサポートされる:

    Acquire(<duration>)(<**channels>)

バグ修正

  • 物理デバイスをターゲットにする際に BarrierBeforeFinalMeasurements トランスパイラ・パスは、物理デバイスをターゲットとする際にプリセットされたトランスパイラ・レベルに含まれ、以前は測定された量子ビットのみにバリアを挿入していた。 このため、場合によっては、トランスパイラーがメジャー・オペレーションの後にスワップを挿入してしまい、現在のデバイスでは回路が無効になってしまうことがあった。 挿入されたバリアがデバイス上のすべての量子ビットにまたがるようにパスが更新された。 修正番号#3937

  • インスタンス QuantumCircuit インスタンス(extendee)を別の回路(extension)で拡張する場合、その回路は参照される。 回路がそれ自体で拡張されると、拡張する側と拡張される側が同じになるため、無限ループになる。 このバグは、エクステンションが被エクステンションと同じオブジェクトであればコピーすることで解決しました。 修正番号#3811

  • のケースを修正しました。 qiskit.result.Result.get_counts()実験が名前のないスケジュールとして初期化された場合、期限切れの結果を参照できない場合がありました。 #2753 を修正

  • 以前は Parameter 回路を分解する前に回路内のオブジェクトを新しいパラメータ・オブジェクトに置き換えると、置換された値が分解されたゲートに正しく代入されませんでした。 これは、結合と分解がどのような順序で起きてもよいように解決されている。

  • matplotlib 出力バックエンドの qiskit.visualization.circuit_drawer() 関数と qiskit.circuit.QuantumCircuit.draw() メソッドドロワーの matplotlib 出力バックエンドが修正され、 CU1Gate ゲートが正しくレンダリングされるようになりました。 3684番を修正

  • のバグ qiskit.circuit.QuantumCircuit.from_qasm_str()qiskit.circuit.QuantumCircuit.from_qasm_file() のバグが修正されました。 さて、このQASMをロードする:

    OPENQASM 2.0;
    include "qelib1.inc";
    gate rinv q {sdg q; h q; sdg q; h q; }
    qreg q[1];
    rinv q[0];

    は以下の回路と等価である:

    rinv_q = QuantumRegister(1, name='q')
    rinv_gate = QuantumCircuit(rinv_q, name='rinv')
    rinv_gate.sdg(rinv_q)
    rinv_gate.h(rinv_q)
    rinv_gate.sdg(rinv_q)
    rinv_gate.h(rinv_q)
    rinv = rinv_gate.to_instruction()
    qr = QuantumRegister(1, name='q')
    expected = QuantumCircuit(qr, name='circuit')
    expected.append(rinv, [qr[0]])

    1566番を修正

  • 量子回路命令でパラメータ値をリストできるようにする。 これは、例えば I+X\langle I + X\rangleparams = [[1.0, 'I'], [1.0, 'X']]] のように、期待値のスナップショット・パラメーターとしてエアで使用される。

  • 以前は、複合ゲート(または qiskit.circuit.QuantumCircuit.to_gate() または qiskit.circuit.QuantumCircuit.to_instruction() または対応するコンバータで作成されたもの)を含む回路では、回路を複数回バインドしようとすると、トランスパイル時に最初のバインド値のみがすべての回路に適用されることになります。 これは、後続のバインドに提供された値が正しく尊重されるように解決された。

その他の注意事項

エア 0.5.0

追加

  • テラ斜めゲートのサポートを追加
  • パラメータ化されたqobjのサポートを追加

固定

  • Raspberry Piにlinux用のpostfixを追加
  • qobjからのnumpy配列入力を扱う

イグニス 0.3.0

追加

  • API の資料
  • CNOT-二面体ランダム化ベンチマーク
  • ノイジーデバイスの出力認定用認定モジュール
  • 単一量子ビットのパルス校正
  • パルス識別器
  • エンタングルメント検証回路
  • 単一量子ビット・ゲート・セットのゲートセット・トモグラフィ
  • ランダム化ベンチマークユーティリティ関数 calculate_1q_epgcalculate_2q_epg 関数を追加し、クリフォードあたりのエラーからゲートあたりの1および2量子ビットエラーを計算する
  • ゲートあたりのエラーからクリフォードあたりの1および2量子ビットエラーを計算するためのランダム化ベンチマークユーティリティ関数 calculate_1q_epc, calculate_2q_epc を追加

変更

  • トモグラフィにおける量子ビットの整数ラベルのサポート
  • 測定誤差軽減のための整数ラベルをサポート

非推奨

  • twoQ_clifford_error 関数を廃止。 代わりに calculate_2q_epc
  • Python 3.5 のサポートは非推奨です。 サポートは、上流のpythonコミュニティによるこのバージョンのサポート終了日(2020年9月13日)に削除されます。

アクア 0.6.5

変更なし

IBM Q プロバイダー 0.6.0

変更なし

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