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_unitskwarg を追加。 - スタビライザーシミュレーターのメソッドがサポートするゲートセットにControlled-Y("cy")ゲートを追加。
- Aerのバックエンドで、terraからの入力qobjオブジェクトのjsonschemaバリデーションが、デフォルトで有効になっていた代わりに、オプトインになった。 qobjのjsonschemaバリデーションを有効にしたい場合は、バックエンドオブジェクトの
qiskit.providers.aer.QasmSimualtor.run()メソッドのvalidatekwargを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_stateがNone(デフォルト)であれば、制御はすべての制御量子ビットが励起されていることを条件とする。 -
新しいjupyterウィジェット
%circuit_library_info。qiskit.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つの辞書にバインドすることができる。また、
inplacekwargを使用することで、オプションで元の回路を変更することもできる。 デフォルトでは、これは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_state。qiskit.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.iSwapGateとqiskit.extensions.DCXGateとそのメソッド。QuantumCircuitメソッドiswap()とdcx()が標準拡張機能に追加された。 これらのゲートは互いに局所的に等価であり、特定のXY相互作用を実現するために使用することができる。 これらのゲートの簡単な動機は、以下を参照されたい: arxiv.org/abs/quant-ph/0209035 -
qiskit.providers.BaseJobクラスに新しいメソッドwait_for_final_state()が追加され、ジョブが最終状態(DONEやERRORなど)に達するまで、ジョブの状態をポーリングするようになりました。 このメソッドはまた、オプションでcallbackkwargを取る。この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_qubitsqiskit.quantum_info.StateVectorとqiskit.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.Statevectorとqiskit.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.Statevectorとqiskit.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()メソッドをStatevectorとDensityMatrixクラスを追加する。例:
状態ベクトルからサンプリングしてカウント辞書を生成する
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.Statevectorとqiskit.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.Statevectorとqiskit.quantum_info.DensityMatrix量子状態クラスにメソッドを追加する。 これにより、一部またはすべてのサブシステムを 。 例 :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がインストールされていることを確認するだけで、この機能を使うには十分である。以下のゲートを持つ回路をサポートしている:
HGateXGateYGateZGateRXGateRYGateRZGateSGateSdgGateTGateTdgGateU1Gate
例:
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_circuit。schedule_circuit=True。Schedule. これによりqiskit.circuit.QuantumCircuitオブジェクトを構築するユーザーは、as_late_as_possibleやas_soon_as_possibleなどのカスタムスケジューラメソッドを利用することができる。 例:job = execute(qc, backend, schedule_circuit=True, scheduling_method="as_late_as_possible") -
新しい環境変数
QISKIT_SUPPRESS_PACKAGING_WARNINGSをYまたはyに設定することで、インポート時にqiskit-aerとqiskit-ibmq-providerがインストールされていないという警告を抑制することができる。 これはqiskit-terraのみを実行している(あるいはqiskit-aerおよび/またはqiskit-ibmq-providerを実行していない)ユーザーで、警告が潜在的なパッケージング問題の兆候ではない場合に便利です。 環境変数にNまたはnを設定することで、ユーザー設定ファイルで警告を無効に設定していても、常に警告が有効になります。 -
新しいユーザー設定ファイルオプション、
suppress_packaging_warningsが追加されました。 ユーザー設定ファイルでtrue:[default] suppress_packaging_warnings = trueこれは、インポート時に
qiskit-aerとqiskit-ibmq-providerがインストールされていないという警告を抑制する。 これはqiskit-terraのみを実行している(あるいはqiskit-aerおよび/またはqiskit-ibmq-providerを実行していない)ユーザーで、警告が潜在的なパッケージング問題の兆候ではない場合に便利です。 ユーザー設定ファイルが警告を無効にするように設定されている場合、QISKIT_SUPPRESS_PACKAGING_WARNINGSをNまたはn -
qiskit.compiler.transpile()には、layout_methodとrouting_methodという2つの新しいkwargsがある。 これらにより、制約のあるアーキテクチャ上の回路の配置配線に特定の方法を選択することができます。 例えば、こうだ:transpile(circ, backend, layout_method='dense', routing_method='lookahead')を実行する。
DenseLayoutレイアウトパスとLookaheadSwapルーティングパスを実行します。 -
パルスのインストラクションのスタイルが大幅に簡素化された。
以前のスタイルでは、
Command。Instruction. コマンドとインストラクションの使い分けが迷うところだった。 これが以前のスタイルだった: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 pygmentskwarg を使用する前に( またはpip install qiskit-terra[visualization]で)インストールする必要があります。qiskit.tools.jupyterメソッドでformattedkwarg を使う前にインストールされていなければなりません。qasm()メソッドを使う前にインストールする必要があります。 -
パルス
bufferオプションはqiskit.pulse.Channelとqiskit.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_layoutbasis_gatescoupling_mapbackend_propertiesseed_transpiler
-
の関数
transpile_circuitは削除された。qiskit.transpilerは削除された。 カスタムPassManager回路をトランスパイルするにはrun():class:~qiskit.transpiler.PassManager` メソッドを使ってください。 -
その
QuantumCircuitメソッドdraw()とqiskit.visualization.circuit_drawer()関数は、デフォルトでビジュアライゼーションに含まれる初期状態を含まなくなります。 出力の可視化で初期状態を保持したい場合は、initial_statekwarg を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_managerkwarg が設定され、インスタンス化された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_levelkwarg の値は無視されていたが、エラーが発生するようになった。transpile:optimization_levelbasis_gatescoupling_mapseed_transpilerbackend_propertiesinitial_layoutlayout_methodrouting_methodbackend
-
その
Operator,Clifford,SparsePauliOpPauliTable,StabilizerTable, 演算子クラスには、callメソッドが追加されている。compose(),dot(),evolve()演算子で使用するために、演算子にqargsを割り当てることができる-メソッドが追加された。 -
の加算メソッドは
qiskit.quantum_info.Operatorqargsクラスの追加メソッドは、qargkwarg を受け付けるようになりました。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.Statevectorとqiskit.quantum_info.DensityMatrixクラスは、入力配列がすでに正しいd型であればコピーしなくなった。 -
fastjsonschema が依存関係として追加されている。 これは、
validateキーワード引数がTrueに設定されたqobjオブジェクトでto_dict()メソッドが呼び出されたときに、JSONスキーマに対するqobj辞書の検証をより高速に行うために使用される。 -
のqobjコンストラクション・クラスは
qiskit.qobjはデフォルトではqobj jsonschemaに対してバリデートしなくなりました。 これには以下のクラスが含まれる:qiskit.qobj.QasmQobjInstructionqiskit.qobj.QobjExperimentHeaderqiskit.qobj.QasmQobjExperimentConfigqiskit.qobj.QasmQobjExperimentqiskit.qobj.QasmQobjConfigqiskit.qobj.QobjHeaderqiskit.qobj.PulseQobjInstructionqiskit.qobj.PulseQobjExperimentConfigqiskit.qobj.PulseQobjExperimentqiskit.qobj.PulseQobjConfigqiskit.qobj.QobjMeasurementOptionqiskit.qobj.PulseLibraryItemqiskit.qobj.QasmQobjInstructionqiskit.qobj.QasmQobjExperimentConfigqiskit.qobj.QasmQobjExperimentqiskit.qobj.QasmQobjConfigqiskit.qobj.QasmQobjqiskit.qobj.PulseQobj
このバリデーションに依存していた場合、あるいはqobjスキーマに対してバリデーションを行いたい場合、
validatekwargを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をお使いください。 -
のメソッド
cmdsとcmd_qubitsは Terra 以降非推奨となり、削除されました。InstructionScheduleMapメソッドは Terra 0.11.0 以降非推奨となり、削除されました。 代わりにinstructions、qubits_with_instruction。 -
PulseDefaults Terraが 0.11.0 をリリースして以来、
qubit_freq_estとmeas_freq_estをGHzではなくHzで報告している。 この変更を知らせる警告は削除された。 -
以前( 0.11.0 リリースで)非推奨とされていた
qiskit.circuit.Instructionsympy.Basicsympy.Exprqiskit.qasm.node.node.Nodesympy.Matrixパラメータを渡すサポートが削除されました。 インストラクション・パラメーターでサポートされているタイプは以下の通り:intfloatcomplexstrlistnp.ndarrayqiskit.circuit.ParameterExpression
-
には次のような特性がある。
BackendConfiguration:dtdtmrep_time
はすべて秒単位である。 リリース前の 0.11.0、
dt、dtmの単位はナノ秒であった。 0.12.0 リリース以前は、rep_timeの単位はマイクロ秒だった。 これらの変更をユーザーに警告する警告は、現在BackendConfigurationから削除されている。 -
新しい要件が要件リストに追加されました。 これは、 Apache 2.0 でライセンスされたグラフ・ライブラリで、networkxと同様のAPIを持ち、トランスパイラの一部としての処理を大幅に高速化するために使用されている。
qiskit.dagcircuit.DAGCircuitトランスパイラの一部として操作の大幅な高速化に使用されている。 Qiskit Terraがサポートするすべてのプラットフォーム用のバイナリが PyPI に公開されていますが、プリコンパイルされたバイナリが公開されていないプラットフォームを使用している場合は、sdistからpipでインストールする手順について retworkxのドキュメントを参照してください。移行に伴ってトランスパイラやDAGCircuitクラスで問題が発生した場合は、環境変数
USE_RETWORKXをNに設定することで、以前の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) - パラメータ化されたパウリ・ゲート(つまり回転)は、大文字の
R(RX,RY,RZ)を先頭につける - 管理されたバージョンでは、大文字
C(CX,CRX,CCX) を前置する - ゲートの名前は、代替名ではなく、その動作に従って命名される(
CCX、Toffoliではない)
古い名前は非推奨であり、将来のリリースで削除される予定である。 これは、新旧のクラス、名前属性、メソッドを示す変更点のリストである。 新しいカラムが空白の場合、そのカラムに変更はない。
旧クラス新規クラス旧名属性新しい名前属性新しい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()UCRotUCPauliRotGateUCXUCRXGateucrotXucrxucxucrx()UCYUCRYGateucrotyucryucyucry()UCZUCRZGateucrotzucrzuczucrz() - パウリゲートはすべて大文字1文字のみ (
-
qiskit.pulse.pulse_libの関数square()、sawtooth()、triangle()に対する kwargperiodは現在非推奨であり、将来のリリースで削除される予定である。 その代わりに、freqkwargを使って周波数を設定する必要がある。 -
DAGCircuit.compose_back()とDAGCircuit.extend_back()メソッドは非推奨であり、将来のリリースで削除される予定である。 代わりにqiskit.dagcircuit.DAGCircuit.compose()メソッドを使うべきである。 -
クラスのコンストラクタの
callbackqiskit.transpiler.PassManagerクラスのコンストラクタのkwargは非推奨となり、将来のリリースで削除される予定です。 オブジェクトの作成時にオブジェクト・レベルで設定するのではなく、メソッドのqiskit.transpiler.PassManager.run()メソッドの -
n_qubitsおよびnumberofqubitsキーワードは Terra 全体で非推奨となり、num_qubitsに置き換えられました。 古い名前は将来のリリースで削除される。 この変更の影響を受けるオブジェクトは以下の通り:クラスオールド・メソッド新方式QuantumCircuitn_qubitsnum_qubits()Paulinumberofqubitsnum_qubits()関数古い議論新しい議論random_circuit()n_qubitsnum_qubitsMSGaten_qubitnum_qubits -
関数
qiskit.quantum_info.synthesis.euler_angles_1qは非推奨となりました。 に取って代わられた。qiskit.quantum_info.OneQubitEulerDecomposerクラスに取って代わられました:OneQubitEulerDecomposer().angles(mat) -
の
pass_managerkwarg は非推奨。qiskit.compiler.transpile()は非推奨となり、将来のリリースで削除される予定です。 今後、カスタム・オブジェクトで回路をトランスパイルするには、次のような方法が望ましい。PassManagerオブジェクトのrun()PassManagerメソッドを使用することです。 -
qiskit.quantum_info.random_state()関数は非推奨となり、将来のリリースで削除される予定です。 代わりにqiskit.quantum_info.random_statevector()関数を使うべきです。 -
の
add、subtract、multiplyの方法。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(). -
SamplePulseとParametricPulse(Gaussianなど) は現在Pulseのサブクラスとなり、qiskit.pulse.pulse_libに移動しました。以前のpulse.commands経由のパスは非推奨であり、将来のリリースで削除される予定です。 -
DelayInstructionは非推奨となり、Delayに置き換えられました。 この新しい指示は、以前のCommandDelayを引き継いでいる。 移動パターンはこうだ: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>) -
SamplePulseとParametricPulseのcallメソッドは廃止された。 移行は以下の通り: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番を修正
-
量子回路命令でパラメータ値をリストできるようにする。 これは、例えば の
params = [[1.0, 'I'], [1.0, 'X']]]のように、期待値のスナップショット・パラメーターとしてエアで使用される。 -
以前は、複合ゲート(または
qiskit.circuit.QuantumCircuit.to_gate()またはqiskit.circuit.QuantumCircuit.to_instruction()または対応するコンバータで作成されたもの)を含む回路では、回路を複数回バインドしようとすると、トランスパイル時に最初のバインド値のみがすべての回路に適用されることになります。 これは、後続のバインドに提供された値が正しく尊重されるように解決された。
その他の注意事項
-
qasm および pulse qobj クラス:
QasmQobjInstructionQobjExperimentHeaderQasmQobjExperimentConfigQasmQobjExperimentQasmQobjConfigQobjHeaderPulseQobjInstructionPulseQobjExperimentConfigPulseQobjExperimentPulseQobjConfigQobjMeasurementOptionPulseLibraryItemQasmQobjInstructionQasmQobjExperimentConfigQasmQobjExperimentQasmQobjConfigQasmQobjPulseQobj
から
qiskit.qobjはすべてmarsmallowライブラリを使わずに再実装されている。 これらの新しい実装は、(アップグレードリリースノートに記載されているものを除き)ドロップインで置き換えられるように設計されていますが、マシュマロから引き継いだ仕様が機能しない可能性があります。 非互換性が見つかった場合は、問題を提起してください。
エア 0.5.0
追加
- テラ斜めゲートのサポートを追加
- パラメータ化されたqobjのサポートを追加
固定
- Raspberry Piにlinux用のpostfixを追加
- qobjからのnumpy配列入力を扱う
イグニス 0.3.0
追加
- API の資料
- CNOT-二面体ランダム化ベンチマーク
- ノイジーデバイスの出力認定用認定モジュール
- 単一量子ビットのパルス校正
- パルス識別器
- エンタングルメント検証回路
- 単一量子ビット・ゲート・セットのゲートセット・トモグラフィ
- ランダム化ベンチマークユーティリティ関数
calculate_1q_epg、calculate_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
変更なし