Qiskit 0.12 リリースノート
0.12.0
Terra 0.9
前奏曲
0.9 リリースには多くの新機能とバグ修正が含まれている。 今回のリリースの最大の変更点は、 PassManagers の新しいデバッグ機能である。 これには、 PassManager, を視覚化する機能、 PassManager, にコールバック関数を追加する機能、 PassManager で実行されたパスのロギングなどが含まれる。 さらにこのリリースでは、回路の初期レイアウトを設定する方法が標準化されています。 initial_layout qiskit.compiler.transpile() 、。回路内の量子ビットは、デバイス上にある欲求の量子ビットに配置される。 qiskit.execute() 回路のビジュアル化では、レイアウトでトランスパイルされた回路をビジュアル化する際にも、このことが明確に表示されるようになりました。
新機能
-
DAGCircuitオブジェクト(すなわち、操作の依存関係が明示されている QuantumCircuit のグラフ表現)は、.draw()メソッドで可視化できるようになった。 これはQiskitの理念である「簡単な視覚化」に沿ったものだ。.draw()メソッドをサポートする他のオブジェクトには、QuantumCircuit、PassManager、Scheduleがある。 -
指定されたバックエンドのエラーマップをプロットする新しい可視化関数
qiskit.visualization.plot_error_map()を追加。 qiskit-ibmq-providerからバックエンドオブジェクトを受け取り、そのデバイスの現在のエラーマップをプロットします。 -
qiskit.QuantumCircuit.draw()とqiskit.visualization.circuit_drawer()の両方が、可視化における量子ビットのレイアウト情報の注釈をサポートするようになりました。 描画されるQuantumCircuitオブジェクトにレイアウト・メタデータ(通常、transpile()呼び出しから出力される回路にのみ設定される)が含まれている場合、デフォルトでそのレイアウトがダイアグラムに表示されます。 これはすべてのサーキットドロワーのバックエンドに対して行われる。 例:from qiskit import ClassicalRegister, QuantumCircuit, QuantumRegister from qiskit.compiler import transpile qr = QuantumRegister(2, 'userqr') cr = ClassicalRegister(2, 'c0') qc = QuantumCircuit(qr, cr) qc.h(qr[0]) qc.cx(qr[0], qr[1]) qc.y(qr[0]) qc.x(qr[1]) qc.measure(qr, cr) # Melbourne coupling map coupling_map = [[1, 0], [1, 2], [2, 3], [4, 3], [4, 10], [5, 4], [5, 6], [5, 9], [6, 8], [7, 8], [9, 8], [9, 10], [11, 3], [11, 10], [11, 12], [12, 2], [13, 1], [13, 12]] qc_result = transpile(qc, basis_gates=['u1', 'u2', 'u3', 'cx', 'id'], coupling_map=coupling_map, optimization_level=0) qc.draw(output='text')のような図が得られる:
┌──────────┐┌──────────┐┌───┐┌──────────┐┌──────────────────┐┌─┐ (userqr0) q0|0>┤ U2(0,pi) ├┤ U2(0,pi) ├┤ X ├┤ U2(0,pi) ├┤ U3(pi,pi/2,pi/2) ├┤M├─── ├──────────┤└──────────┘└─┬─┘├──────────┤└─┬─────────────┬──┘└╥┘┌─┐ (userqr1) q1|0>┤ U2(0,pi) ├──────────────■──┤ U2(0,pi) ├──┤ U3(pi,0,pi) ├────╫─┤M├ └──────────┘ └──────────┘ └─────────────┘ ║ └╥┘ (ancilla0) q2|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla1) q3|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla2) q4|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla3) q5|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla4) q6|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla5) q7|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla6) q8|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla7) q9|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla8) q10|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla9) q11|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla10) q12|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ (ancilla11) q13|0>──────────────────────────────────────────────────────────────╫──╫─ ║ ║ c0_0: 0 ══════════════════════════════════════════════════════════════╩══╬═ ║ c0_1: 0 ═════════════════════════════════════════════════════════════════╩═トランスパイルされた回路(またはレイアウトが設定された他の回路)にレイアウトを表示したくない場合は、両方の関数に新しいブール値のkwarg、
with_layout(デフォルトはTrue)があります。Falseに設定すると、出力回路のレイアウト注釈が無効になります。 -
新しい解析パス
CountOpsLongestが追加され、DAGCircuitの最長パスでの操作回数を取得できるようになった。 使用すると、プロパティ・セット・ディクショナリにcount_ops_longest_pathキーが追加されます。 パスマネージャーには、次のような方法で追加できる:from qiskit.transpiler.passes import CountOpsLongestPath from qiskit.transpiler.passes import CxCancellation from qiskit.transpiler import PassManager pm = PassManager() pm.append(CountOpsLongestPath())そして、次のような方法でプロパティセット値を介して最長パスにアクセスする:
pm.append( CxCancellation(), condition=lambda property_set: property_set[ 'count_ops_longest_path'] < 5)これは、最長パスに基づいてそのパスの条件を設定する。
-
パルス・ライブラリ・モジュール
qiskit.pulse.pulse_libに、非正規化双曲線secantSamplePulseオブジェクトと非正規化双曲線secant derviativeSamplePulseオブジェクトをそれぞれ作成するための2つの新しい関数sech()とsech_deriv()が追加された。 -
新しいkwargオプション
vertical_compressionがQuantumCircuit.draw()メソッドとqiskit.visualization.circuit_drawer()関数に追加された。 このオプションはtextバックエンドでのみ動作します。 このオプションは、high、medium(デフォルト)、lowのいずれかに設定することで、出力の視覚化で使用される垂直方向のスペースを調整することができます。 -
QuantumCircuit.draw()メソッドとqiskit.visualization.circuit_drawer()関数に、新しい kwarg boolean オプションidle_wiresが追加された。 すべてのドロワーバックエンドで機能する。 引出し呼び出しでidle_wiresが False に設定されている場合、引出しは、出力量子回路可視化で回路要素を持たないビットを描画しない。 -
新しい PassManager ビジュアライザー機能
qiskit.visualization.pass_mamanger_drawer()が追加された。 この関数は、 PassManager オブジェクトを受け取り、 PassManager で実行されるすべてのパスのフロー制御図を生成します。 -
PassManager を作成する際、コールバック関数を指定できるようになりました。この関数を指定すると、各パスの実行後に実行されます。 この関数は、各パス実行後のパス・マネージャーの状態を含むkwargsのセットを呼び出しごとに渡される。 現在、これらのkwargsは以下の通りである:
pass_(Pass): 実行されるパスdag(DAGCircuit): パスのダグ出力time(float): パス実行時間property_set(PropertySet): プロパティセットcount(int): パス実行のインデックス
ただし、これらの引数は 0.9 リリース用に設定されたものであり、パス・マネージャーの内部を暴露しているため、将来のリリースで変更される可能性があることに注意する必要がある。
例えば、各パスが実行された後に回路出力を視覚化するコールバック関数を作成するために使用することができます:
from qiskit.transpiler import PassManager def my_callback(**kwargs): print(kwargs['dag']) pm = PassManager(callback=my_callback)さらに、
qiskit.compiler.transpile()を使用する場合は、コールバック関数を指定することもできます:from qiskit.compiler import transpile def my_callback(**kwargs): print(kwargs['pass']) transpile(circ, callback=my_callback) -
qiskit.pulse.Scheduleクラスに新しいメソッドfilter()が追加された。 これにより、スケジュール内の指示をフィルタリングすることができます。 例えば、命令の種類でフィルタリングする:from qiskit.pulse import Schedule from qiskit.pulse.commands import Acquire from qiskit.pulse.commands import AcquireInstruction from qiskit.pulse.commands import FrameChange sched = Schedule(name='MyExperiment') sched.insert(0, FrameChange(phase=-1.57)(device)) sched.insert(60, Acquire(5)) acquire_sched = sched.filter(instruction_types=[AcquireInstruction]) -
いくつかのタイプのゲートに対する追加の分解方法。 これらの方法は、ゲートを一連のCNOTと単一量子ビットゲートに分解するために、異なる分解技術を使用する。 以下のメソッドが導入されました。
メソッド説明QuantumCircuit.iso()m量子ビットからn量子ビットへの任意のアイソメトリを回路に追加する。 これにより、n個の量子ビットに任意のユニタリーをアタッチしたり(m=n)、n個の量子ビットの任意の状態を準備することができる( m=0 ) QuantumCircuit.diag_gate()回路に斜めのゲートを加える QuantumCircuit.squ()任意の 2x2 ユニタリーを3つの回転ゲートに分解し、回路に加える QuantumCircuit.ucg()均一に制御されたゲート(多重化ゲートとも呼ばれる)を回路に取り付ける QuantumCircuit.ucx()一様に制御された(多重化されたとも呼ばれる)Rx回転ゲートを回路に取り付ける QuantumCircuit.ucy()均一に制御された(多重化されたとも呼ばれる)Ry回転ゲートを回路に取り付ける QuantumCircuit.ucz()均一に制御された(多重化されたとも呼ばれる)Rz回転ゲートを回路に取り付ける -
Gray-SynthとPatel-Markov-Hayesアルゴリズムの追加によるCNOT-PhaseおよびCNOT-Only線形回路の合成。 これらの関数により、一次関数が与えられたCNOTゲートのみで構成される回路や、行列記述が与えられたCNOTゲートと位相ゲートのみで構成される回路を合成することができる。
-
qiskit.circuit.randomモジュールに新しい関数random_circuitが追加された。 この関数は、異なるゲートをランダムに選択して回路に追加することにより、指定されたサイズのランダムな回路を生成する。 例えば、深さ10の5量子ビット回路を生成するのに使うことができる:from qiskit.circuit.random import random_circuit circ = random_circuit(5, 10) -
qiskit.compiler.transpile()関数に新しい kwargoutput_namesが追加された。 このkwargは文字列または文字列のリストを取り込み、transpile()の呼び出しによって返される出力回路の回路名の値として使用する。 例:from qiskit.compiler import transpile my_circs = [circ_a, circ_b] tcirc_a, tcirc_b = transpile(my_circs, output_names=['Circuit A', 'Circuit B'])tcirc_a と tcirc_b の
name属性はそれぞれ'Circuit A'と'Circuit B'になる。 -
qiskit.quantum_info.Operatorとqiskit.quantum_info.Statevectorクラスに新しいメソッドequiv()が追加された。 これらのメソッドは、2番目のOperatorオブジェクトまたはStatevectorがグローバル位相まで等価であるかどうかをチェックするために使用される。 -
ユーザー設定ファイルにいくつかの新しいオプションが追加された:
circuit_drawerフィールドが自動値を受け付けるようになった。circuit_drawerフィールドの値として設定された場合、デフォルトのドロワーバックエンドは、それが利用可能であれば mpl となり、そうでなければ text バックエンドが使われます。- 新しいフィールド
circuit_mpl_styleを使って、matplotlib の回路ドロワーが使うデフォルトのスタイルを設定することができます。 このフィールドに有効な値は、bwとdefaultで、それぞれデフォルトを白黒またはデフォルトのカラースタイルに設定します。 - 新しいフィールド
transpile_optimization_levelを使って、qiskit.compiler.transpile()への呼び出しに使用するデフォルトのトランスパイラ最適化レベルを設定することができる。 値は0、1、2、3のいずれかに設定できる。
-
新しいパルス・コマンドを導入
Delayパルスに挿入可能Schedule。 このコマンドはdurationを受け付け、任意のChannelに追加することができる。 ディレイの間、他のコマンドをチャンネルにスケジュールすることはできない。ディレイは他のパルス・コマンドと同様に追加できる。 例:
from qiskit import pulse drive_channel = pulse.DriveChannel(0) delay = pulse.Delay(20) sched = pulse.Schedule() sched += delay(drive_channel)
アップグレードの注意
-
以前は非推奨だった
qiskit._utilモジュールが削除された。qiskit.utilを代わりに使うべきである。 -
QuantumCircuit.count_ops()メソッドはdictの代わりにOrderedDictオブジェクトを返すようになった。OrderedDictはdictのサブクラスなので、ほとんどのユースケースで互換性があるはずだ。 しかし、タイプチェックやその他のクラスチェックは更新する必要があるかもしれない。 -
DAGCircuit.width()、量子ビットと古典ビットの合計数を返すようになった。 以前は量子ビットの数を返すだけだった。 量子ビットの数だけが必要な場合は、DAGCircuit.num_qubits()。 -
関数
DAGCircuit.num_cbits()は削除された。 その代わりに、DAGCircuit.num_clbits()。 -
個々の量子ビットと古典ビットは、もはや
(register, index)タプルとしては表現されない。 これらは現在、QubitとClbitクラスのインスタンスである。 個々のビットを扱う場合は、タプルの代わりにこれらの新しいクラスを探すように、使用法や型チェックを更新してください。 -
プリセットのパスマネージャークラス
qiskit.transpiler.preset_passmanagers.default_pass_managerとqiskit.transpiler.preset_passmanagers.default_pass_manager_simulator(qiskit.compiler.transpile()コールの以前のデフォルトパスマネージャ)は削除されました。 手動でこのパスを使用していた場合は、qiskit.transpile.preset_passmanagers.level1_pass_manager。 -
LegacySwapパスは削除された。 カスタムパスマネージャーで使用していた場合は、より高速で安定したバージョンであるStochasticSwap。 すべてのプリセット・パスマネージャーは、LegacySwapの代わりにStochasticSwapパスを使用するように更新されました。 -
以下の非推奨の
qiskit.dagcircuit.DAGCircuitメソッドは削除されました:-
DAGCircuit.get_qubits()- 代わりにDAGCircuit.qubits() -
DAGCircuit.get_bits()- 代わりにDAGCircuit.clbits() -
DAGCircuit.qasm()-qiskit.converters.dag_to_circuit()とQuantumCircuit.qasm()を組み合わせて使う。 例:from qiskit.dagcircuit import DAGCircuit from qiskit.converters import dag_to_circuit my_dag = DAGCircuit() qasm = dag_to_circuit(my_dag).qasm() -
DAGCircuit.get_op_nodes()- 代わりにDAGCircuit.op_nodes()。 返り値の型は、get_op_nodes()で返されていたタプルのリストではなく、op_nodes()のDAGNodeオブジェクトのリストであることに注意。 -
DAGCircuit.get_gate_nodes()- 代わりにDAGCircuit.gate_nodes()。 返り値の型は、get_gate_nodes()で返されていたタプルのリストではなく、gate_nodes()のDAGNodeオブジェクトのリストであることに注意。 -
DAGCircuit.get_named_nodes()- 代わりにDAGCircuit.named_nodes()。get_named_nodes()によって返されたnode_idsのリストの代わりに、named_nodes()のDAGNodeオブジェクトのリストが返されることに注意。 -
DAGCircuit.get_2q_nodes()- 代わりにDAGCircuit.twoQ_gates()。get_2q_nodes()で返されていたdata_dictsのリストの代わりに、twoQ_gates()のDAGNodeオブジェクトのリストが返されることに注意。 -
DAGCircuit.get_3q_or_more_nodes()- 代わりにDAGCircuit.threeQ_or_more_gates()。 返り値の型は、get_3q_or_more_nodes()で返されていたタプルのリストではなく、threeQ_or_more_gates()のDAGNodeオブジェクトのリストであることに注意。
-
-
以下の
qiskit.dagcircuit.DAGCircuitメソッドでは、node_idをパラメータとして受け付けるサポートが廃止されました。 これは削除され、現在はDAGNodeオブジェクトのみが入力として受け入れられる:successors()predecessors()ancestors()descendants()bfs_successors()quantum_successors()remove_op_node()remove_ancestors_of()remove_descendants_of()remove_nonancestors_of()remove_nondescendants_of()substitute_node_with_dag()
-
qiskit.dagcircuit.DAGCircuitメソッドrename_register()は削除された。 これはすべてのqiskitコードで使われていない。 もし外部関数に依存しているのであれば、外部関数を再実装しなければならない。 -
qiskit.dagcircuit.DAGCircuitプロパティmulti_graphは削除されました。networkxmulti_graphオブジェクトへの直接アクセスはサポートされなくなりました。 代わりにDAGCircuitクラスが提供するAPIを使うべきである。 -
非推奨の例外クラス
qiskit.qiskiterror.QiskitErrorは削除されました。 代わりにqiskit.exceptions.QiskitErrorを使うべきだ。 -
qiskit.transpiler.PassManagerコンストラクタの boolean kwargs、ignore_requires、ignore_preservesが削除された。 これらはもはや有効な選択肢ではない。 -
モジュール
qiskit.tools.loggingは取り外された。 このモジュールは何にも使われておらず、 Python の標準ライブラリloggingモジュールが提供するインターフェイスを超えるものは何もない。 ロギングにカスタムフォーマッタを設定したい場合は、代わりに標準ライブラリloggingモジュールを使用する。 -
CompositeGateクラスは削除された。 その代わりに、回路から直接命令オブジェクトを作成し、それを回路に追加する必要があります。 例えば、次のように実行できる:custom_gate_circ = qiskit.QuantumCircuit(2) custom_gate_circ.x(1) custom_gate_circ.h(0) custom_gate_circ.cx(0, 1) custom_gate = custom_gate_circ.to_instruction() -
以前は非推奨だったkwargs、
qiskit.compiler.assemble()用のseed、configは削除され、代わりにそれぞれseed_simulator、run_config。 -
以前は非推奨だったコンバーター
qiskit.converters.qobj_to_circuits()とqiskit.converters.circuits_to_qobj()は削除された。 代わりにそれぞれqiskit.assembler.disassemble()、qiskit.compiler.assemble()。 -
以前は非推奨だった
qiskit.compiler.transpile()用の kwargseed_mapperは削除された。 代わりにseed_transpiler -
これまで非推奨であった
qiskit.execute()関数の kwargsseed、seed_mapper、config、circuitsは削除された。 代わりに、seed_simulator、seed_transpiler、run_config、experimentsの各引数を使用する。 -
以前は非推奨だった
qiskit.tools.qcvvモジュールは削除されました。代わりに qiskit-ignis を使ってください。 -
これまで非推奨だった関数
qiskit.transpiler.transpile()とqiskit.transpiler.transpile_dag()は削除された。 代わりにqiskit.compiler.transpileを使うべきだ。transpile_dag()を使っていた場合は、ランニングに置き換えることができる:circ = qiskit.converters.dag_to_circuit(dag) out_circ = qiskit.compiler.transpile(circ) qiskit.converters.circuit_to_dag(out_circ) -
以前は非推奨だった関数
qiskit.compile()は削除され、代わりにqiskit.compiler.transpile()とqiskit.compiler.assemble()を使用する必要があります。 -
qiskit.tools.jupyter、jupyterのセル・マジック%%qiskit_progress_barがライン・マジックに変更された。 これはマジックがどのように使われ、どのように機能するかをよりよく反映させるために行われた。 既存のノートブックで%%qiskit_progress_barのセルマジックを使っていた場合は、代わりに%qiskit_progress_barに変更して、これをラインマジックに更新する必要があります。 それ以外はすべて同じように振る舞うはずだ。 -
非推奨の関数
qiskit.tools.qi.qi.random_unitary_matrix()は削除されました。 代わりにqiskit.quantum_info.random.random_unitary()。 -
非推奨の関数
qiskit.tools.qi.qi.random_density_matrix()は削除されました。 代わりにqiskit.quantum_info.random.random_density_matrix()。 -
非推奨の関数
qiskit.tools.qi.qi.purity()は削除されました。 代わりにqiskit.quantum_info.purity()。 -
非推奨の
QuantumCircuit._attach()メソッドは削除されました。 代わりにQuantumCircuit.append()。 -
qiskit.qasm.Qasmメソッドget_filename()は削除された。 代わりにreturn_filename()。 -
非推奨の
qiskit.mapperモジュールは削除されました。 関数とクラスとその代替のリストは以下の通り:qiskit.mapper.CouplingMapqiskit.transpiler.CouplingMap。qiskit.mapper.Layout代わりにqiskit.transpiler.Layoutを使うべきであるqiskit.mapper.compiling.euler_angles_1q()代わりにqiskit.quantum_info.synthesis.euler_angles_1q()を使うべきであるqiskit.mapper.compiling.two_qubit_kak()qiskit.quantum_info.synthesis.two_qubit_cnot_decompose()。
非推奨の例外クラス
qiskit.mapper.exceptions.CouplingErrorとqiskit.mapper.exceptions.LayoutErrorは、qiskit.mapperモジュールなしでは何の役にも立たないので、代替はない。 -
qiskit.pulse.samplersモジュールはqiskit.pulse.pulse_lib.samplersに移動した。qiskit.pulse.samplersのインポートをqiskit.pulse.pulse_lib.samplersに更新する必要がある。 -
seabornは関数
qiskit.visualization.plot_state_qsphere()の依存関係になった。 これは、視覚化のために適切な角度カラーマップを生成するために必要である。qiskit-terra[visualization]extras install target が更新され、seaborn>=0.9.0がインストールされるようになった。ビジュアライゼーションを使用していて、特にplot_state_qsphere()関数を使用している場合は、seabornをインストールするか、手動で以下を実行する。pip install seaborn>=0.9.0 -
これまで非推奨だった関数
qiksit.visualization.plot_stateとqiskit.visualization.iplot_stateは削除された。 その代わりに、プロットタイプごとに固有の関数を使用する必要があります。 以下の表を参照して、非推奨の関数と同等の新しい関数を対応させることができる:キスキット・テラ 0.6Qiskit Terra 0.7 +plot_state(rho) plot_state_city(rho) plot_state(rho, method='city') plot_state_city(rho) plot_state(rho, method='paulivec') plot_state_paulivec(rho) plot_state(rho, method='qsphere') plot_state_qsphere(rho) plot_state(rho, method='bloch') plot_bloch_multivector(rho) plot_state(rho, method='hinton') plot_state_hinton(rho) -
latexおよびlatex_source回路引出しバックエンドに対するpylatexencおよびpillowの依存関係は、要件としてリストされなくなった。 latex circuit drawersを使用する場合は、両方のパッケージがインストールされていることを確認するか、setuptools extrasを使ってqiskit-terraと一緒にインストールしてください:pip install qiskit-terra[visualization] -
qiskit.IBMQまたはqiskit.Aerのいずれかがセットアップできなかった場合、qiskit名前空間のルートがインポート時に警告を発するようになった。 これは、qiskit名前空間にあるものがインポートされるたびに発生する。 これらの警告は、qiskitを実行しているときにqiskit-aerおよびqiskit-ibmq-providerパッケージが見つからない場合に、ユーザーに前もって明確に伝えるために追加されました。 パッケージが足りないのか、python パッケージング/pip が要素を間違ってインストールしたのかは、使おうとしてImportErrorが空になるまでわからないことがあります。 これらの警告は、よく使われるエイリアスが欠落している場合、前もって明確にする必要がある。しかし、qiskit-aerもqiskit-ibmq-providerも使わないというユーザーにとっては、これはさらなるノイズの原因になるかもしれません。 これらの警告は、 Python の標準ライブラリ
warningsを使って簡単に抑制できる。 この2行をqiskitからのインポートの前に置くことで、警告を抑制することができます:import warnings warnings.filterwarnings('ignore', category=RuntimeWarning, module='qiskit')これにより、qiskit-aerやqiskit-ibmq-providerがインストールされていない場合に発生する警告は抑制されますが、qiskitやその他のパッケージによって発生するその他の警告は保持されます。
非推奨のメモ
-
U、CXゲートは非推奨。 もしあなたのコードでこれらのゲートを使っているなら、代わりにu3、cx。 例えば、回路ゲート関数circuit.u_base()とcircuit.cx_base()を使用している場合、それぞれcircuit.u3()とcircuit.cx()に更新する必要があります。 -
u0ゲートは非推奨となり、複数のidenゲートを使用するようになった。 あなたの回路でu0ゲートを使用している場合は、idenを使用するように呼び出しを更新する必要があります。 例えば、以前の回路でcircuit.u0(2):circuit.iden() circuit.iden()代わりに使用します。
-
qiskit.pulse.DeviceSpecificationクラスは現在非推奨。 代わりにqiskit.pulse.PulseChannelSpecを使うべきだ。 -
インデックスによる
qiskit.circuit.Qubit、qiskit.circuit.Clbit、qiskit.circuit.Bitクラスへのアクセスは非推奨です(これらのクラスが置き換わった(register, index)タプルとの互換性のため)。 代わりにregister、index。 -
qiskit.QuantumCircuitメソッドappendにタプル(register, index)としてビットを渡すことは非推奨である。 代わりにビット・オブジェクトを直接使うべきである。 -
タプル
(register, index)、qiskit.transpiler.Layoutオブジェクトの要素へのアクセスは非推奨。 その代わりに、ビット・オブジェクトを直接使うべきである。 -
qiskit.transpiler.Layoutコンストラクタのメソッドqiskit.transpiler.Layout.from_tuplelist()は非推奨。 代わりにコンストラクタqiskit.transpiler.Layout.from_qubit_list()。 -
モジュール
qiskit.pulse.opsは廃止されました。 それが提供するすべての機能:unionflattenshiftinsertappend
は、
qiskit.pulse.Scheduleとqiskit.pulse.Instructionクラスで直接利用できる同等のメソッドを持っている。 それらの方法を代わりに使うべきである。 -
qiskit.qasm.Qasmメソッドget_tokens()は非推奨。 その代わり、generate_tokens()。 -
qiskit.qasm.qasmparser.QasmParserメソッドget_tokens()は非推奨。 その代わり、read_tokens()。 -
Qobjクラスの
as_dict()メソッドは非推奨となり、今後削除される予定です。 その代わりにto_dict()。
バグ修正
-
CU3Gateの定義は、統制されたU3Gateの正規の定義と同等に変更された。 -
パス・マネージャーにおけるレイアウトの扱いが標準化された。 これにより、レイアウトの処理に関するいくつかの問題が修正された。
qiskit.compiler.transpile()とqiskit.execute()のinitial_layoutkwarg パラメーターは、回路をトランスパイルする際に、回路からデバイス上の希望する量子ビットに配置します。 -
BasicAer シミュレータにn-qubitユニタリーのサポートが追加され、シミュレータの基底ゲートのセットに
unitary(任意のユニタリーゲート)が追加された -
qiskit.visualization.plost_state_qsphere()、いくつかの問題が修正された。 Q Sphereの可視化出力が正しく生成されるようになり、以下の点が更新されました:
その他の注意事項
-
qiskit.compiler.transpile()とqiskit.execute()のデフォルト PassManager は、qiskit.transpile.preset_passmanagers.level1_pass_managerで定義された最適化レベル 1 パス・マネージャーに変更された。 -
すべての回路描画バックエンドは、出力ビジュアライゼーションにおいて、回路のゲート・パラメータをπの公分数として表現するようになった。 パラメータの値が円周率の分数で表せる場合は、数値の代わりにそれが使われる。
-
qiskit.assembler.assemble_schedules()を使用する場合、使用する memory_slots の数を指定しないと、入力スケジュールの獲得数に基づいて数が推測されます。 -
qiskit.dagcircuit.DAGCircuitプロパティnode_counterの非推奨警告が削除されました。 警告された動作の変更は、警告が追加された時点で有効になっていたため、変更されたことを警告しても何の意味もない。 -
PassManager.run()を呼び出すと、各パスの実行に対して INFO レベルの python ロギングメッセージが出力されるようになりました。 これらのメッセージには、パス名とパスの合計実行時間が含まれます。 Python の標準ロギングが使用されたのは、Qiskit-Terraのロギングが他のアプリケーションやライブラリと標準的な方法で統合できるためです。 トランスパイラのロギングはすべて、logging.getLogger('qiskit.transpiler) が使用するqiskit.transpiler名前空間の下で行われる。 例えば、トランスパイラのDEBUGレベルのロギングを有効にするには、次のように実行します:import logging logging.basicConfig() logging.getLogger('qiskit.transpiler').setLevel(logging.DEBUG)これは、トランスパイラのログレベルをDEBUGに設定し、これらのメッセージを標準エラー出力するように設定します。
エア 0.3
- 新しい高性能密度行列シミュレーターがあり、私たちの騒音モデルと組み合わせて使用することで、より現実のシナリオをシミュレートすることができます。
- マトリックス・プロダクト・ステート(MPS)シミュレーターを追加しました。 MPSは、強い相関や高度なもつれ状態が存在する場合でも、いくつかのクラスの量子回路を効率的にシミュレーションできる。 MPSが適用可能なケースでは、数百量子ビット以上の回路を、観測値の期待値を求める目的などで、正確にシミュレートすることができる。
- スナップショットはすべてのシミュレーターで実行できます。
- これで、理想的な回路だけでなく、読み出し誤差のあるサンプリング回路も測定できるようになった。
- ノイズの存在に伴う回路の最適化をいくつか増やした。
- より良い2量子ビット誤差近似が含まれている。
- ノイジーなシミュレーションをより簡単に、より高速に行うためのツールも含まれている。
- 浮動小数点の数値精度をあまり必要としないシミュレーションでパフォーマンスが向上。
イグニス 0.2
新機能
- ロギング・モジュール
- 純度RB
- インターリーブRB
- 検証用反復コード
- RBにシード値を任意に追加できるようになりました(順番だけではありません)
- 測定緩和への複数の結果の追加をサポート
- RBフィッターが推測値の提供をサポート
バグ修正
- RBフィットエラーのバグを修正
- フィッティングする量子ビットインデックスを選択する際の特性フィッティングのバグを修正
その他の注意事項
- 測定緩和が複数の結果に適用された場合、並行して動作するようになりました
- RBフィッターの推測値が向上
アクア 0.6
追加
-
相対相トッフォリゲート
rccx(2コントロールあり)、rcccx(3コントロールあり)。 -
変分形式
RYCRX -
mctへの新しい'basic-no-ancilla'モード。 -
マルチ制御回転ゲート
mcrx,mcry, およびmcrz一般的なu3ゲートとしては、グレイコードの実装ではサポートされていません -
化学ROHFオープンシェル
- すべてのドライバーに対応しています: Gaussian16 PyQuante, PySCF および PSI4
- HartreeFock 初期状態、UCCSD変分形式、パリティマッピングのための2量子ビット削減が、オープンシェルをサポートするために異なるアルファ粒子数とベータ粒子数をサポートするようになりました
-
化学UHFオープンシェル対応
- すべてのドライバーに対応しています: Gaussian16 PyQuante, PySCF および PSI4
- QMoleculeが拡張され、個別のベータに対する積分や係数などを含むようになった
-
化学QMoleculeに原子軌道基準の積分が追加され、実験へのアクセスが容易になりました
- すべてのドライバーに対応しています: Gaussian16 PyQuante, PySCF および PSI4
-
化学: PyQuante および PySCF ドライバの追加設定
- 収束許容値と最大収束反復制御。
- PySCF 初期推測の選択について
-
化学: PyQuante および PySCF の計算からデバッグログに処理出力が追加されました ( Gaussian16 および PSI4 の出力はすでにデバッグログに追加されていました)
-
化学qiskit-chemistry を qiskit-aqua にマージした
-
MatrixOperator,WeightedPauliOperator,TPBGroupedPauliOperatorクラスを追加。 -
evolution_instruction関数を追加し、時間発展のレジスタレス命令を得る。 -
op_converterモジュールを追加し、異なるタイプの演算子の変換を担当する場所を統一。 -
Z2 シンメトリー情報をカプセル化し、Operatorをテーパリングするためのヘルパーメソッドを持つ
Z2Symmetriesクラスを追加しました。 -
振幅推定:最尤ポスト処理と信頼区間計算を追加。
-
最尤振幅推定(MLAE):最尤推定に基づく新しい振幅推定アルゴリズムを実装し、必要な量子ビット数と回路深度を削減。
-
(区分的)線形および多項式に制御されたパウリ回転回路を追加。
-
分子の励起状態を研究するために
q_equation_of_motion、参照状態を準備するために2つのアルゴリズムを追加する。
変更
- 中間結果を構築するために相対位相トッフォリゲートを使用することにより、
mct'の'basic'モードを改善する。 - Qiskit Terraの新しく導入された
Qubitクラスに適応する。 QPE/IQPEが入力Operatorオブジェクトを変更できないようにする。- PyEDA 対応するオラクルの基本的な論理演算は SymPy で処理されるようになった。
Operatorクラスをリファクタリングし、各表現は独自のクラスMatrixOperator、WeightedPauliOperator、TPBGroupedPauliOperatorを持つ。evolution_instructionのpowerは、CRZゲートのシータに直接適用されていたが、新しいバージョンは、パワーを実装するために回路を繰り返す。- CircuitCache はデフォルトではオフで、環境変数
QISKIT_AQUA_CIRCUIT_CACHEで設定できる。
バグ修正
1の値が1つしかない真理値表に対して、TruthTableOracleが誤った回路を構築してしまうバグ。PyEDAの不確定性によるバグ。QPE/IQPEの平行移動と伸張の計算にバグがあった。- 化学:Bravyi-Kitaevマッピングは量子ビット数が2のべき乗でない場合に修正された
QuantumInstanceのinitial_layoutをリストで設定する。
削除済み
- 一般的な多制御回転ゲート
mcu3は取り除かれ、多制御回転ゲートmcrx、mcry、およびmcrz
非推奨
Operatorクラスは非推奨となり、MatrixOperator、WeightedPauliOperator、TPBGroupedPauliOperatorの使用が推奨されます。
IBM Q プロバイダー 0.3
変更なし