From 055fe0f9c9ca3b3b994f68ba2c7647763a29f63b Mon Sep 17 00:00:00 2001 From: Guillermo-Mijares-Vilarino <106545082+Guillermo-Mijares-Vilarino@users.noreply.github.com> Date: Mon, 12 Sep 2022 19:21:17 +0200 Subject: [PATCH 01/56] Changed plot histogram code example and added another one in the API reference (#8351) * changed plot_histogram code examples to better showcase the different arguments * run tests * Removed extra imports and matplotlib inline * use BasicAer, add comments * Fixed formatting * unwrap comments and codes, remove spaces around = in function arguments * wrapped long line * Change import order Co-authored-by: Luciano Bello * fix typo Co-authored-by: Luciano Bello * Simplify second example * Simplified first example Co-authored-by: Junye Huang Co-authored-by: Luciano Bello Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/visualization/counts_visualization.py | 38 ++++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/qiskit/visualization/counts_visualization.py b/qiskit/visualization/counts_visualization.py index 98bba2222839..b332d595dd04 100644 --- a/qiskit/visualization/counts_visualization.py +++ b/qiskit/visualization/counts_visualization.py @@ -95,21 +95,37 @@ def plot_histogram( VisualizationError: When legend is provided and the length doesn't match the input data. - Example: + Examples: .. jupyter-execute:: - from qiskit import QuantumCircuit, BasicAer, execute - from qiskit.visualization import plot_histogram - %matplotlib inline + # Plot two counts in the same figure with legends and colors specified. - qc = QuantumCircuit(2, 2) - qc.h(0) - qc.cx(0, 1) - qc.measure([0, 1], [0, 1]) + from qiskit.visualization import plot_histogram + + counts1 = {'00': 525, '11': 499} + counts2 = {'00': 511, '11': 514} + + legend = ['First execution', 'Second execution'] + + plot_histogram([counts1, counts2], legend=legend, color=['crimson','midnightblue'], + title="New Histogram") + + .. jupyter-execute:: + + # You can sort the bitstrings using different methods. + + counts = {'001': 596, '011': 211, '010': 50, '000': 117, '101': 33, '111': 8, + '100': 6, '110': 3} + + # Sort by the probability in descending order + hist1 = plot_histogram(counts, sort='value_desc') + + # Sort by the hamming distance (the number of bit flips to change from + # one bitstring to the other) from a target string. + hist2 = plot_histogram(counts, sort='hamming', target_string='001') + + display(hist1, hist2) - backend = BasicAer.get_backend('qasm_simulator') - job = execute(qc, backend) - plot_histogram(job.result().get_counts(), color='midnightblue', title="New Histogram") """ import matplotlib.pyplot as plt from matplotlib.ticker import MaxNLocator From ffc811be259bde3bd3a10404ad2599caeb2be2ff Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Mon, 12 Sep 2022 18:17:54 -0400 Subject: [PATCH 02/56] Cap stestr version in CI (#8732) After the recent release of stestr 4.0.0 CI started failing in a weird unexpected way 100% of the time. It's not clear why the failure started and I'm unable to reproduce it locally (which is part of why I pushed stestr 4.0.0, I did test that I passed tests locally before releasing). To try and unblock CI this commit caps the stestr version we install in CI to see if this fixes the failure and potentially unblock CI. --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index bd16781eeb62..fab7f79a23d9 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ black[jupyter]~=22.0 pydot astroid==2.5.6 pylint==2.8.3 -stestr>=2.0.0 +stestr>=2.0.0,<4.0.0 pylatexenc>=1.4 ddt>=1.2.0,!=1.4.0,!=1.4.3 seaborn>=0.9.0 From 780099972c0dc8bb073665ebd1a137e56126b479 Mon Sep 17 00:00:00 2001 From: Shelly Garion <46566946+ShellyGarion@users.noreply.github.com> Date: Tue, 13 Sep 2022 05:02:45 +0300 Subject: [PATCH 03/56] Add CS, CSdg and CCZ gates to the CNOTDihedral class (#8673) * add CS, CSdg and CCZ gates to the CNOTDihedral class * add CS, CSdg and CCZ gates to the CNOTDihedral tests * add release notes * fix test following review * move assert in tests * handle CCZGate() in dihedral_circuits * test CSGate(), CSdgGate(), CCZGate() Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../operators/dihedral/dihedral.py | 3 +- .../operators/dihedral/dihedral_circuits.py | 55 +++++- ...l_class_cs_ccz_gates-6bd567daf3a467bd.yaml | 6 + .../quantum_info/operators/test_dihedral.py | 161 +++++++++++++++++- 4 files changed, 215 insertions(+), 10 deletions(-) create mode 100644 releasenotes/notes/add_cnot_dihedral_class_cs_ccz_gates-6bd567daf3a467bd.yaml diff --git a/qiskit/quantum_info/operators/dihedral/dihedral.py b/qiskit/quantum_info/operators/dihedral/dihedral.py index c46538932950..204580761fff 100644 --- a/qiskit/quantum_info/operators/dihedral/dihedral.py +++ b/qiskit/quantum_info/operators/dihedral/dihedral.py @@ -70,7 +70,8 @@ class CNOTDihedral(BaseOperator, AdjointMixin): :class:`~qiskit.circuit.library.TGate`, :class:`~qiskit.circuit.library.TdgGate` :class:`~qiskit.circuit.library.SGate`, :class:`~qiskit.circuit.library.SdgGate`, :class:`~qiskit.circuit.library.CXGate`, :class:`~qiskit.circuit.library.CZGate`, - :class:`~qiskit.circuit.library.SwapGate`. + :class:`~qiskit.circuit.library.CSGate`, :class:`~qiskit.circuit.library.CSdgGate`, + :class:`~qiskit.circuit.library.SwapGate`, :class:`~qiskit.circuit.library.CCZGate`. They can be converted back into a :class:`~qiskit.circuit.QuantumCircuit`, or :class:`~qiskit.circuit.Gate` object using the :meth:`~CNOTDihedral.to_circuit` or :meth:`~CNOTDihderal.to_instruction` methods respectively. Note that this diff --git a/qiskit/quantum_info/operators/dihedral/dihedral_circuits.py b/qiskit/quantum_info/operators/dihedral/dihedral_circuits.py index a27fa4699f4e..b85a88cded03 100644 --- a/qiskit/quantum_info/operators/dihedral/dihedral_circuits.py +++ b/qiskit/quantum_info/operators/dihedral/dihedral_circuits.py @@ -45,7 +45,7 @@ def _append_circuit(elem, circuit, qargs=None): else: gate = circuit - # Handle cx, cz and id since they are basic gates, and cannot be decomposed, + # Handle cx, cz, ccz and id since they are basic gates, and cannot be decomposed, if gate.name == "cx": if len(qargs) != 2: raise QiskitError("Invalid qubits for 2-qubit gate cx.") @@ -64,6 +64,24 @@ def _append_circuit(elem, circuit, qargs=None): elem._append_phase(7, qargs[0]) return elem + if gate.name == "ccz": + if len(qargs) != 3: + raise QiskitError("Invalid qubits for 2-qubit gate cx.") + elem._append_cx(qargs[1], qargs[2]) + elem._append_phase(7, qargs[2]) + elem._append_cx(qargs[0], qargs[2]) + elem._append_phase(1, qargs[2]) + elem._append_cx(qargs[1], qargs[2]) + elem._append_phase(1, qargs[1]) + elem._append_phase(7, qargs[2]) + elem._append_cx(qargs[0], qargs[2]) + elem._append_cx(qargs[0], qargs[1]) + elem._append_phase(1, qargs[2]) + elem._append_phase(1, qargs[0]) + elem._append_phase(7, qargs[1]) + elem._append_cx(qargs[0], qargs[1]) + return elem + if gate.name == "id": if len(qargs) != 1: raise QiskitError("Invalid qubits for 1-qubit gate id.") @@ -148,6 +166,24 @@ def _append_circuit(elem, circuit, qargs=None): elem._append_phase(7, new_qubits[1]) elem._append_phase(7, new_qubits[0]) + elif instruction.operation.name == "cs" or gate.name == "cs": + if len(new_qubits) != 2: + raise QiskitError("Invalid qubits for 2-qubit gate cs.") + elem._append_phase(1, new_qubits[1]) + elem._append_phase(1, new_qubits[0]) + elem._append_cx(new_qubits[1], new_qubits[0]) + elem._append_phase(7, new_qubits[0]) + elem._append_cx(new_qubits[1], new_qubits[0]) + + elif instruction.operation.name == "csdg" or gate.name == "csdg": + if len(new_qubits) != 2: + raise QiskitError("Invalid qubits for 2-qubit gate csdg.") + elem._append_phase(7, new_qubits[1]) + elem._append_phase(7, new_qubits[0]) + elem._append_cx(new_qubits[1], new_qubits[0]) + elem._append_phase(1, new_qubits[0]) + elem._append_cx(new_qubits[1], new_qubits[0]) + elif instruction.operation.name == "swap" or gate.name == "swap": if len(new_qubits) != 2: raise QiskitError("Invalid qubits for 2-qubit gate swap.") @@ -155,6 +191,23 @@ def _append_circuit(elem, circuit, qargs=None): elem._append_cx(new_qubits[1], new_qubits[0]) elem._append_cx(new_qubits[0], new_qubits[1]) + elif instruction.operation.name == "ccz": + if len(new_qubits) != 3: + raise QiskitError("Invalid qubits for 3-qubit gate ccz.") + elem._append_cx(new_qubits[1], new_qubits[2]) + elem._append_phase(7, new_qubits[2]) + elem._append_cx(new_qubits[0], new_qubits[2]) + elem._append_phase(1, new_qubits[2]) + elem._append_cx(new_qubits[1], new_qubits[2]) + elem._append_phase(1, new_qubits[1]) + elem._append_phase(7, new_qubits[2]) + elem._append_cx(new_qubits[0], new_qubits[2]) + elem._append_cx(new_qubits[0], new_qubits[1]) + elem._append_phase(1, new_qubits[2]) + elem._append_phase(1, new_qubits[0]) + elem._append_phase(7, new_qubits[1]) + elem._append_cx(new_qubits[0], new_qubits[1]) + elif instruction.operation.name == "id": pass diff --git a/releasenotes/notes/add_cnot_dihedral_class_cs_ccz_gates-6bd567daf3a467bd.yaml b/releasenotes/notes/add_cnot_dihedral_class_cs_ccz_gates-6bd567daf3a467bd.yaml new file mode 100644 index 000000000000..23f2866c75dc --- /dev/null +++ b/releasenotes/notes/add_cnot_dihedral_class_cs_ccz_gates-6bd567daf3a467bd.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Add the new gates :class:`~qiskit.circuit.library.CSGate`, + :class:`~qiskit.circuit.library.CSdgGate` and :class:`~qiskit.circuit.library.CCZGate` + to the operator class:`~qiskit.quantum_info.CNOTDihedral` class. diff --git a/test/python/quantum_info/operators/test_dihedral.py b/test/python/quantum_info/operators/test_dihedral.py index f2956c7a1ecd..c464f32e87d1 100644 --- a/test/python/quantum_info/operators/test_dihedral.py +++ b/test/python/quantum_info/operators/test_dihedral.py @@ -30,7 +30,10 @@ SdgGate, CXGate, CZGate, + CSGate, + CSdgGate, SwapGate, + CCZGate, ) from qiskit.quantum_info.operators import Operator from qiskit.quantum_info.operators import random @@ -42,10 +45,11 @@ def random_cnotdihedral_circuit(num_qubits, num_gates, gates="all", seed=None): """Generate a pseudo random CNOTDihedral circuit.""" if gates == "all": - if num_qubits == 1: - gates = ["i", "x", "y", "z", "t", "tdg", "s", "sdg"] - else: - gates = ["i", "x", "y", "z", "t", "tdg", "s", "sdg", "cx", "cz", "swap"] + gates = ["i", "x", "y", "z", "t", "tdg", "s", "sdg"] + if num_qubits >= 2: + gates += ["cx", "cz", "cs", "csdg", "swap"] + if num_qubits >= 3: + gates += ["ccz"] instructions = { "i": (IGate(), 1), @@ -58,7 +62,10 @@ def random_cnotdihedral_circuit(num_qubits, num_gates, gates="all", seed=None): "tdg": (TdgGate(), 1), "cx": (CXGate(), 2), "cz": (CZGate(), 2), + "cs": (CSGate(), 2), + "csdg": (CSdgGate(), 2), "swap": (SwapGate(), 2), + "ccz": (CCZGate(), 3), } if isinstance(seed, np.random.Generator): @@ -169,13 +176,14 @@ def test_2_qubit_identities(self): circ1.cx(0, 1) circ1.cx(1, 0) circ1.cx(0, 1) + elem1 = CNOTDihedral(circ1) + self.assertEqual(elem, elem1, "Error: 2-qubit SWAP identity does not hold") + circ2 = QuantumCircuit(2) circ2.cx(1, 0) circ2.cx(0, 1) circ2.cx(1, 0) - elem1 = CNOTDihedral(circ1) elem2 = CNOTDihedral(circ2) - self.assertEqual(elem, elem1, "Error: 2-qubit SWAP identity does not hold") self.assertEqual(elem1, elem2, "Error: 2-qubit SWAP identity does not hold") # CS01 = CS10 (symmetric) @@ -207,6 +215,20 @@ def test_2_qubit_identities(self): elem2 = CNOTDihedral(circ2) self.assertEqual(elem1, elem2, "Error: 2-qubit CS identity does not hold") + circcs01 = QuantumCircuit(2) + circcs01.cs(0, 1) + elemcs01 = CNOTDihedral(circcs01) + self.assertEqual(elem1, elemcs01, "Error: 2-qubit CS identity does not hold") + + circcs10 = QuantumCircuit(2) + circcs10.cs(1, 0) + elemcs10 = CNOTDihedral(circcs10) + self.assertEqual(elem1, elemcs10, "Error: 2-qubit CS identity does not hold") + + circ_cs = CSGate() + elem_cs = CNOTDihedral(circ_cs) + self.assertEqual(elem1, elem_cs, "Error: 2-qubit CS identity does not hold") + # TI*CS*TdgI = CS # # ┌───┐┌───┐ ┌─────┐ @@ -225,6 +247,13 @@ def test_2_qubit_identities(self): elem3 = CNOTDihedral(circ3) self.assertEqual(elem1, elem3, "Error: 2-qubit CS identity does not hold") + circ3 = QuantumCircuit(2) + circ3.t(0) + circ3.cs(0, 1) + circ3.tdg(0) + elem3 = CNOTDihedral(circ3) + self.assertEqual(elem1, elem3, "Error: 2-qubit CS identity does not hold") + # IT*CS*ITdg = CS # # ┌───┐ @@ -243,6 +272,13 @@ def test_2_qubit_identities(self): elem4 = CNOTDihedral(circ4) self.assertEqual(elem1, elem4, "Error: 2-qubit CS identity does not hold") + circ4 = QuantumCircuit(2) + circ4.t(1) + circ4.cs(0, 1) + circ4.tdg(1) + elem4 = CNOTDihedral(circ4) + self.assertEqual(elem1, elem4, "Error: 2-qubit CS identity does not hold") + # XX*CS*XX*SS = CS # # ┌───┐┌───┐ ┌───┐┌───┐ @@ -265,6 +301,17 @@ def test_2_qubit_identities(self): elem5 = CNOTDihedral(circ5) self.assertEqual(elem1, elem5, "Error: 2-qubit CS identity does not hold") + circ5 = QuantumCircuit(2) + circ5.x(0) + circ5.x(1) + circ5.cs(0, 1) + circ5.x(0) + circ5.x(1) + circ5.s(0) + circ5.s(1) + elem5 = CNOTDihedral(circ5) + self.assertEqual(elem1, elem5, "Error: 2-qubit CS identity does not hold") + # CSdg01 = CSdg10 (symmetric) # # ┌─────┐ @@ -294,6 +341,20 @@ def test_2_qubit_identities(self): elem2 = CNOTDihedral(circ2) self.assertEqual(elem1, elem2, "Error: 2-qubit CSdg identity does not hold") + circsdg01 = QuantumCircuit(2) + circsdg01.csdg(0, 1) + elemcsdg01 = CNOTDihedral(circsdg01) + self.assertEqual(elem1, elemcsdg01, "Error: 2-qubit CSdg identity does not hold") + + circsdg10 = QuantumCircuit(2) + circsdg10.csdg(1, 0) + elemcsdg10 = CNOTDihedral(circsdg10) + self.assertEqual(elem1, elemcsdg10, "Error: 2-qubit CSdg identity does not hold") + + circ_csdg = CSdgGate() + elem_csdg = CNOTDihedral(circ_csdg) + self.assertEqual(elem1, elem_csdg, "Error: 2-qubit CS identity does not hold") + # XI*CS*XI*ISdg = CSdg # # ┌───┐┌───┐ ┌───┐ @@ -313,6 +374,14 @@ def test_2_qubit_identities(self): elem3 = CNOTDihedral(circ3) self.assertEqual(elem1, elem3, "Error: 2-qubit CSdg identity does not hold") + circ3 = QuantumCircuit(2) + circ3.x(0) + circ3.cs(0, 1) + circ3.x(0) + circ3.sdg(1) + elem3 = CNOTDihedral(circ3) + self.assertEqual(elem3, elemcsdg01, "Error: 2-qubit CSdg identity does not hold") + # IX*CS*IX*SdgI = CSdg # # ┌───┐ ┌─────┐ @@ -332,16 +401,25 @@ def test_2_qubit_identities(self): elem4 = CNOTDihedral(circ4) self.assertEqual(elem1, elem4, "Error: 2-qubit CSdg identity does not hold") + circ4 = QuantumCircuit(2) + circ4.x(1) + circ4.cs(0, 1) + circ4.x(1) + circ4.sdg(0) + elem4 = CNOTDihedral(circ4) + self.assertEqual(elemcsdg01, elem4, "Error: 2-qubit CSdg identity does not hold") + # relations for CZ # CZ(0,1) = CZ(1,0) elem = CNOTDihedral(CZGate()) circ1 = QuantumCircuit(2) circ1.cz(0, 1) + elem1 = CNOTDihedral(circ1) + self.assertEqual(elem, elem1, "Error: 2-qubit CZ identity does not hold") + circ2 = QuantumCircuit(2) circ2.cz(1, 0) - elem1 = CNOTDihedral(circ1) elem2 = CNOTDihedral(circ2) - self.assertEqual(elem, elem1, "Error: 2-qubit CZ identity does not hold") self.assertEqual(elem1, elem2, "Error: 2-qubit CZ identity does not hold") # CZ = CS * CS @@ -365,6 +443,12 @@ def test_2_qubit_identities(self): elem3 = CNOTDihedral(circ3) self.assertEqual(elem1, elem3, "Error: 2-qubit CZ identity does not hold") + circ3 = QuantumCircuit(2) + circ3.cs(0, 1) + circ3.cs(0, 1) + elem3 = CNOTDihedral(circ3) + self.assertEqual(elem1, elem3, "Error: 2-qubit CZ identity does not hold") + # CZ = CSdg * CSdg # # ┌─────┐ ┌─────┐ @@ -386,6 +470,12 @@ def test_2_qubit_identities(self): elem4 = CNOTDihedral(circ4) self.assertEqual(elem1, elem4, "Error: 2-qubit CZ identity does not hold") + circ4 = QuantumCircuit(2) + circ4.csdg(0, 1) + circ4.csdg(0, 1) + elem4 = CNOTDihedral(circ4) + self.assertEqual(elem1, elem4, "Error: 2-qubit CZ identity does not hold") + # CZ = TdgTdg * CX * T^2I * CX * TdgTdg # # ┌─────┐┌───┐┌───┐┌───┐┌───┐┌─────┐ @@ -492,6 +582,61 @@ def test_2_qubit_identities(self): elem2 = CNOTDihedral(circ2) self.assertEqual(elem1, elem2, "Error: 2-qubit CX01*CX10 identity does not hold") + def test_ccz_identities(self): + """Tests identities for CCZ gate""" + + # Check the definition of a CCZ gate + circ_ccz = CCZGate() + elem_ccz = CNOTDihedral(circ_ccz) + + circ1 = QuantumCircuit(3) + circ1.ccz(0, 1, 2) + elem1 = CNOTDihedral(circ1) + self.assertEqual(elem1, elem_ccz, "Error: 3-qubit CCZ identity does not hold") + + circ2 = QuantumCircuit(3) + circ2.cx(1, 2) + circ2.tdg(2) + circ2.cx(0, 2) + circ2.t(2) + circ2.cx(1, 2) + circ2.t(1) + circ2.tdg(2) + circ2.cx(0, 2) + circ2.cx(0, 1) + circ2.t(2) + circ2.t(0) + circ2.tdg(1) + circ2.cx(0, 1) + elem2 = CNOTDihedral(circ2) + self.assertEqual(elem1, elem2, "Error: 3-qubit CCZ identity does not hold") + + # Check that a CCZ gate is the same when permuting the qubits + circ3 = QuantumCircuit(3) + circ3.ccz(0, 2, 1) + elem3 = CNOTDihedral(circ3) + self.assertEqual(elem1, elem3, "Error: 3-qubit CCZ identity does not hold") + + circ4 = QuantumCircuit(3) + circ4.ccz(1, 0, 2) + elem4 = CNOTDihedral(circ4) + self.assertEqual(elem1, elem4, "Error: 3-qubit CCZ identity does not hold") + + circ5 = QuantumCircuit(3) + circ5.ccz(1, 2, 0) + elem5 = CNOTDihedral(circ5) + self.assertEqual(elem1, elem5, "Error: 3-qubit CCZ identity does not hold") + + circ6 = QuantumCircuit(3) + circ6.ccz(2, 0, 1) + elem6 = CNOTDihedral(circ6) + self.assertEqual(elem1, elem6, "Error: 3-qubit CCZ identity does not hold") + + circ7 = QuantumCircuit(3) + circ7.ccz(1, 2, 0) + elem7 = CNOTDihedral(circ7) + self.assertEqual(elem1, elem7, "Error: 3-qubit CCZ identity does not hold") + def test_random_decompose(self): """ Test that random elements are CNOTDihedral From bcec9a314c68d9412a89904701d45491a68a12c0 Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Tue, 13 Sep 2022 18:18:45 +0100 Subject: [PATCH 04/56] Fix OpenQASM 3 built-ins with classical conditions (#8731) The `.condition` attribute for `Instruction` instances corresponding to OpenQASM 3 built-ins (such as `reset` and `measure`) would previously be ignored. This now correctly nests them inside a a branching statement in the exporter, so the condition is preserved. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/qasm3/exporter.py | 52 +++++++++-------- ...ditional-measurement-2d938cad74a9024a.yaml | 7 +++ test/python/circuit/test_circuit_qasm3.py | 56 ++++++++++++++++++- 3 files changed, 90 insertions(+), 25 deletions(-) create mode 100644 releasenotes/notes/qasm3-fix-conditional-measurement-2d938cad74a9024a.yaml diff --git a/qiskit/qasm3/exporter.py b/qiskit/qasm3/exporter.py index e0a956d7bfae..a5bc667c0c4f 100644 --- a/qiskit/qasm3/exporter.py +++ b/qiskit/qasm3/exporter.py @@ -779,45 +779,49 @@ def build_quantum_instructions(self, instructions): """Builds a list of call statements""" ret = [] for instruction in instructions: + if isinstance(instruction.operation, ForLoopOp): + ret.append(self.build_for_loop(instruction)) + continue + if isinstance(instruction.operation, WhileLoopOp): + ret.append(self.build_while_loop(instruction)) + continue + if isinstance(instruction.operation, IfElseOp): + ret.append(self.build_if_statement(instruction)) + continue + # Build the node, ignoring any condition. if isinstance(instruction.operation, Gate): - if instruction.operation.condition: - eqcondition = self.build_eqcondition(instruction.operation.condition) - operation_without_condition = instruction.operation.copy() - operation_without_condition.condition = None - true_body = self.build_program_block( - [instruction.replace(operation=operation_without_condition)] - ) - ret.append(ast.BranchingStatement(eqcondition, true_body)) - else: - ret.append(self.build_gate_call(instruction)) + nodes = [self.build_gate_call(instruction)] elif isinstance(instruction.operation, Barrier): operands = [ self.build_single_bit_reference(operand) for operand in instruction.qubits ] - ret.append(ast.QuantumBarrier(operands)) + nodes = [ast.QuantumBarrier(operands)] elif isinstance(instruction.operation, Measure): measurement = ast.QuantumMeasurement( [self.build_single_bit_reference(operand) for operand in instruction.qubits] ) qubit = self.build_single_bit_reference(instruction.clbits[0]) - ret.append(ast.QuantumMeasurementAssignment(qubit, measurement)) + nodes = [ast.QuantumMeasurementAssignment(qubit, measurement)] elif isinstance(instruction.operation, Reset): - for operand in instruction.qubits: - ret.append(ast.QuantumReset(self.build_single_bit_reference(operand))) + nodes = [ + ast.QuantumReset(self.build_single_bit_reference(operand)) + for operand in instruction.qubits + ] elif isinstance(instruction.operation, Delay): - ret.append(self.build_delay(instruction)) - elif isinstance(instruction.operation, ForLoopOp): - ret.append(self.build_for_loop(instruction)) - elif isinstance(instruction.operation, WhileLoopOp): - ret.append(self.build_while_loop(instruction)) - elif isinstance(instruction.operation, IfElseOp): - ret.append(self.build_if_statement(instruction)) + nodes = [self.build_delay(instruction)] elif isinstance(instruction.operation, BreakLoopOp): - ret.append(ast.BreakStatement()) + nodes = [ast.BreakStatement()] elif isinstance(instruction.operation, ContinueLoopOp): - ret.append(ast.ContinueStatement()) + nodes = [ast.ContinueStatement()] + else: + nodes = [self.build_subroutine_call(instruction)] + + if instruction.operation.condition is None: + ret.extend(nodes) else: - ret.append(self.build_subroutine_call(instruction)) + eqcondition = self.build_eqcondition(instruction.operation.condition) + body = ast.ProgramBlock(nodes) + ret.append(ast.BranchingStatement(eqcondition, body)) return ret def build_if_statement(self, instruction: CircuitInstruction) -> ast.BranchingStatement: diff --git a/releasenotes/notes/qasm3-fix-conditional-measurement-2d938cad74a9024a.yaml b/releasenotes/notes/qasm3-fix-conditional-measurement-2d938cad74a9024a.yaml new file mode 100644 index 000000000000..faca28264d09 --- /dev/null +++ b/releasenotes/notes/qasm3-fix-conditional-measurement-2d938cad74a9024a.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + The OpenQASM 3 exporter (:mod:`qiskit.qasm3`) will now correctly handle + OpenQASM built-ins (such as ``reset`` and ``measure``) that have a classical + condition applied by :meth:`~.InstructionSet.c_if`. Previously the condition + would have been ignored. diff --git a/test/python/circuit/test_circuit_qasm3.py b/test/python/circuit/test_circuit_qasm3.py index 17daa30fb2a3..324dc1d38b03 100644 --- a/test/python/circuit/test_circuit_qasm3.py +++ b/test/python/circuit/test_circuit_qasm3.py @@ -22,7 +22,7 @@ from ddt import ddt, data from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, transpile -from qiskit.circuit import Parameter, Qubit, Clbit, Instruction, Gate +from qiskit.circuit import Parameter, Qubit, Clbit, Instruction, Gate, Delay, Barrier from qiskit.test import QiskitTestCase from qiskit.qasm3 import Exporter, dumps, dump, QASM3ExporterError from qiskit.qasm3.exporter import QASM3Builder @@ -1696,6 +1696,60 @@ def test_no_include(self): ) self.assertEqual(Exporter(includes=[]).dumps(circuit), expected_qasm) + def test_unusual_conditions(self): + """Test that special QASM constructs such as ``measure`` are correctly handled when the + Terra instructions have old-style conditions.""" + qc = QuantumCircuit(3, 2) + qc.h(0) + qc.measure(0, 0) + qc.measure(1, 1).c_if(0, True) + qc.reset([0, 1]).c_if(0, True) + with qc.while_loop((qc.clbits[0], True)): + qc.break_loop().c_if(0, True) + qc.continue_loop().c_if(0, True) + # Terra forbids delay and barrier from being conditioned through `c_if`, but in theory they + # should work fine in a dynamic-circuits sense (although what a conditional barrier _means_ + # is a whole other kettle of fish). + delay = Delay(16, "dt") + delay.condition = (qc.clbits[0], True) + qc.append(delay, [0], []) + barrier = Barrier(2) + barrier.condition = (qc.clbits[0], True) + qc.append(barrier, [0, 1], []) + + expected = """ +OPENQASM 3; +include "stdgates.inc"; +bit[2] c; +qubit[3] _all_qubits; +let q = _all_qubits[0:2]; +h q[0]; +c[0] = measure q[0]; +if (c[0] == 1) { + c[1] = measure q[1]; +} +if (c[0] == 1) { + reset q[0]; +} +if (c[0] == 1) { + reset q[1]; +} +while (c[0] == 1) { + if (c[0] == 1) { + break; + } + if (c[0] == 1) { + continue; + } +} +if (c[0] == 1) { + delay[16dt] q[0]; +} +if (c[0] == 1) { + barrier q[0], q[1]; +}""" + self.assertEqual(dumps(qc).strip(), expected.strip()) + @ddt class TestQASM3ExporterFailurePaths(QiskitTestCase): From 8a97349650941d7238779d11ce05418ae43a295b Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Tue, 13 Sep 2022 20:43:35 +0100 Subject: [PATCH 05/56] Fix QuantumCircuit.draw without matplotlib installed (#8737) A recent change to the structure of the visualisation module in #8306 caused `matplotlib` to be eagerly imported when `qiskit.visualization` was imported, since the internal `bloch` module was imported in the `__init__`. This means that `QuantumCircuit.draw()` in text mode had ceased working without the visualisation extra installed. This module doesn't really need to be eagerly imported, and it's faffy to refactor it all to use lazy imports. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/visualization/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/qiskit/visualization/__init__.py b/qiskit/visualization/__init__.py index c915ee930a03..d353d64c9da1 100644 --- a/qiskit/visualization/__init__.py +++ b/qiskit/visualization/__init__.py @@ -244,7 +244,6 @@ from .circuit import circuit_drawer from .counts_visualization import plot_histogram -from .bloch import Bloch, Arrow3D from .state_visualization import ( plot_state_hinton, plot_bloch_vector, From b35b18a90ff10b2ae245db85b3bfc728cc0adcd8 Mon Sep 17 00:00:00 2001 From: dlasecki Date: Tue, 13 Sep 2022 22:16:35 +0100 Subject: [PATCH 06/56] Time Evolution Framework with primitives. (#8681) * Implemented observables_evaluator.py with primitives. * Added evolvers problems and interfaces to time_evolvers package. * Mostly updated trotter_qrte.py to use primitives. * Added observables_evaluator.py that uses primitives. * Added observables_evaluator.py that uses primitives. * Updated trotter_qrte.py to use primitives. * Updated imports * Updated typehints and limited use of opflow. * Updated typehints and limited use of opflow. * Removed files out of scope for this PR. * Added annotations import. * Applied some CR comments. * Added reno. * Accepting Statevector. * Added attributes docs. * Add pending deprecation for evolvers * Renamed classes and linked to algorithms init. * fix docstring * Improved reno. * Code refactoring. * Black fix. * Applied CR comments. * Add deprecation msg to evolvers package Co-authored-by: Manoel Marques Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> --- qiskit/algorithms/__init__.py | 30 +++++ .../algorithms/evolvers/evolution_problem.py | 15 ++- .../algorithms/evolvers/evolution_result.py | 17 ++- .../algorithms/evolvers/imaginary_evolver.py | 20 ++- qiskit/algorithms/evolvers/pvqd/pvqd.py | 1 + qiskit/algorithms/evolvers/real_evolver.py | 20 ++- .../evolvers/trotterization/trotter_qrte.py | 20 ++- qiskit/algorithms/time_evolvers/__init__.py | 11 ++ .../time_evolvers/imaginary_time_evolver.py | 37 ++++++ .../time_evolvers/real_time_evolver.py | 37 ++++++ .../time_evolvers/time_evolution_problem.py | 119 ++++++++++++++++++ .../time_evolvers/time_evolution_result.py | 46 +++++++ ...framework-primitives-c86779b5d0dffd25.yaml | 15 +++ .../algorithms/time_evolvers/__init__.py | 11 ++ .../test_time_evolution_problem.py | 101 +++++++++++++++ .../test_time_evolution_result.py | 47 +++++++ 16 files changed, 542 insertions(+), 5 deletions(-) create mode 100644 qiskit/algorithms/time_evolvers/__init__.py create mode 100644 qiskit/algorithms/time_evolvers/imaginary_time_evolver.py create mode 100644 qiskit/algorithms/time_evolvers/real_time_evolver.py create mode 100644 qiskit/algorithms/time_evolvers/time_evolution_problem.py create mode 100644 qiskit/algorithms/time_evolvers/time_evolution_result.py create mode 100644 releasenotes/notes/evolution-framework-primitives-c86779b5d0dffd25.yaml create mode 100644 test/python/algorithms/time_evolvers/__init__.py create mode 100644 test/python/algorithms/time_evolvers/test_time_evolution_problem.py create mode 100644 test/python/algorithms/time_evolvers/test_time_evolution_result.py diff --git a/qiskit/algorithms/__init__.py b/qiskit/algorithms/__init__.py index c13f00cb1e60..40f255501ad5 100644 --- a/qiskit/algorithms/__init__.py +++ b/qiskit/algorithms/__init__.py @@ -108,6 +108,11 @@ Evolvers -------- +Pending deprecation: This package has been superseded by the package below. It will be +deprecated in a future release and subsequently removed after that: + +`Time Evolvers`_ + Algorithms to evolve quantum states in time. Both real and imaginary time evolution is possible with algorithms that support them. For machine learning, Quantum Imaginary Time Evolution might be used to train Quantum Boltzmann Machine Neural Networks for example. @@ -127,6 +132,23 @@ EvolutionProblem +Time Evolvers +------------- + +Primitives-enabled algorithms to evolve quantum states in time. Both real and imaginary time +evolution is possible with algorithms that support them. For machine learning, Quantum Imaginary +Time Evolution might be used to train Quantum Boltzmann Machine Neural Networks for example. + +.. autosummary:: + :toctree: ../stubs/ + :nosignatures: + + RealTimeEvolver + ImaginaryTimeEvolver + TimeEvolutionResult + TimeEvolutionProblem + + Factorizers ----------- @@ -257,6 +279,10 @@ from .evolvers import EvolutionResult, EvolutionProblem from .evolvers.real_evolver import RealEvolver from .evolvers.imaginary_evolver import ImaginaryEvolver +from .time_evolvers.imaginary_time_evolver import ImaginaryTimeEvolver +from .time_evolvers.real_time_evolver import RealTimeEvolver +from .time_evolvers.time_evolution_problem import TimeEvolutionProblem +from .time_evolvers.time_evolution_result import TimeEvolutionResult from .variational_algorithm import VariationalAlgorithm, VariationalResult from .amplitude_amplifiers import Grover, GroverResult, AmplificationProblem, AmplitudeAmplifier from .amplitude_estimators import ( @@ -322,11 +348,15 @@ "NumPyEigensolver", "RealEvolver", "ImaginaryEvolver", + "RealTimeEvolver", + "ImaginaryTimeEvolver", "TrotterQRTE", "VarQITE", "VarQRTE", "EvolutionResult", "EvolutionProblem", + "TimeEvolutionResult", + "TimeEvolutionProblem", "LinearSolverResult", "Eigensolver", "EigensolverResult", diff --git a/qiskit/algorithms/evolvers/evolution_problem.py b/qiskit/algorithms/evolvers/evolution_problem.py index 175beecd6bf6..cd34c5a34f8a 100644 --- a/qiskit/algorithms/evolvers/evolution_problem.py +++ b/qiskit/algorithms/evolvers/evolution_problem.py @@ -17,16 +17,29 @@ from qiskit import QuantumCircuit from qiskit.circuit import Parameter from qiskit.opflow import OperatorBase, StateFn +from qiskit.utils.deprecation import deprecate_function from ..list_or_dict import ListOrDict class EvolutionProblem: - """Evolution problem class. + """Pending deprecation: Evolution problem class. + + The EvolutionProblem class has been superseded by the + :class:`qiskit.algorithms.time_evolvers.TimeEvolutionProblem` class. + This class will be deprecated in a future release and subsequently + removed after that. This class is the input to time evolution algorithms and must contain information on the total evolution time, a quantum state to be evolved and under which Hamiltonian the state is evolved. """ + @deprecate_function( + "The EvolutionProblem class has been superseded by the " + "qiskit.algorithms.time_evolvers.TimeEvolutionProblem class. " + "This class will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def __init__( self, hamiltonian: OperatorBase, diff --git a/qiskit/algorithms/evolvers/evolution_result.py b/qiskit/algorithms/evolvers/evolution_result.py index 1dd91d705d28..9ae567ca91c9 100644 --- a/qiskit/algorithms/evolvers/evolution_result.py +++ b/qiskit/algorithms/evolvers/evolution_result.py @@ -17,12 +17,27 @@ from qiskit import QuantumCircuit from qiskit.algorithms.list_or_dict import ListOrDict from qiskit.opflow import StateFn, OperatorBase +from qiskit.utils.deprecation import deprecate_function from ..algorithm_result import AlgorithmResult class EvolutionResult(AlgorithmResult): - """Class for holding evolution result.""" + """Pending deprecation: Class for holding evolution result. + The EvolutionResult class has been superseded by the + :class:`qiskit.algorithms.time_evolvers.TimeEvolutionResult` class. + This class will be deprecated in a future release and subsequently + removed after that. + + """ + + @deprecate_function( + "The EvolutionResult class has been superseded by the " + "qiskit.algorithms.time_evolvers.TimeEvolutionResult class. " + "This class will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def __init__( self, evolved_state: Union[StateFn, QuantumCircuit, OperatorBase], diff --git a/qiskit/algorithms/evolvers/imaginary_evolver.py b/qiskit/algorithms/evolvers/imaginary_evolver.py index 309bb73b08af..37a24d266a30 100644 --- a/qiskit/algorithms/evolvers/imaginary_evolver.py +++ b/qiskit/algorithms/evolvers/imaginary_evolver.py @@ -14,12 +14,30 @@ from abc import ABC, abstractmethod +from qiskit.utils.deprecation import deprecate_function from .evolution_problem import EvolutionProblem from .evolution_result import EvolutionResult class ImaginaryEvolver(ABC): - """Interface for Quantum Imaginary Time Evolution.""" + """Pending deprecation: Interface for Quantum Imaginary Time Evolution. + + The ImaginaryEvolver interface has been superseded by the + :class:`qiskit.algorithms.time_evolvers.ImaginaryTimeEvolver` interface. + This interface will be deprecated in a future release and subsequently + removed after that. + + """ + + @deprecate_function( + "The ImaginaryEvolver interface has been superseded by the " + "qiskit.algorithms.time_evolvers.ImaginaryTimeEvolver interface. " + "This interface will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def __init__(self) -> None: + pass @abstractmethod def evolve(self, evolution_problem: EvolutionProblem) -> EvolutionResult: diff --git a/qiskit/algorithms/evolvers/pvqd/pvqd.py b/qiskit/algorithms/evolvers/pvqd/pvqd.py index e4a1d5893bb5..323f32aa9db5 100644 --- a/qiskit/algorithms/evolvers/pvqd/pvqd.py +++ b/qiskit/algorithms/evolvers/pvqd/pvqd.py @@ -149,6 +149,7 @@ def __init__( a random vector with elements in the interval :math:`[-0.01, 0.01]`. quantum_instance: The backend or quantum instance used to evaluate the circuits. """ + super().__init__() if evolution is None: evolution = LieTrotter() diff --git a/qiskit/algorithms/evolvers/real_evolver.py b/qiskit/algorithms/evolvers/real_evolver.py index 6107facfe542..c869344a19ba 100644 --- a/qiskit/algorithms/evolvers/real_evolver.py +++ b/qiskit/algorithms/evolvers/real_evolver.py @@ -13,13 +13,31 @@ """Interface for Quantum Real Time Evolution.""" from abc import ABC, abstractmethod +from qiskit.utils.deprecation import deprecate_function from .evolution_problem import EvolutionProblem from .evolution_result import EvolutionResult class RealEvolver(ABC): - """Interface for Quantum Real Time Evolution.""" + """Pending deprecation: Interface for Quantum Real Time Evolution. + + The RealEvolver interface has been superseded by the + :class:`qiskit.algorithms.time_evolvers.RealTimeEvolver` interface. + This interface will be deprecated in a future release and subsequently + removed after that. + + """ + + @deprecate_function( + "The RealEvolver interface has been superseded by the " + "qiskit.algorithms.time_evolvers.RealTimeEvolver interface. " + "This interface will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def __init__(self) -> None: + pass @abstractmethod def evolve(self, evolution_problem: EvolutionProblem) -> EvolutionResult: diff --git a/qiskit/algorithms/evolvers/trotterization/trotter_qrte.py b/qiskit/algorithms/evolvers/trotterization/trotter_qrte.py index 05b8266605b7..e91793570d51 100644 --- a/qiskit/algorithms/evolvers/trotterization/trotter_qrte.py +++ b/qiskit/algorithms/evolvers/trotterization/trotter_qrte.py @@ -13,6 +13,7 @@ """An algorithm to implement a Trotterization real time-evolution.""" from typing import Union, Optional +import warnings from qiskit import QuantumCircuit from qiskit.algorithms.aux_ops_evaluator import eval_observables @@ -32,10 +33,17 @@ from qiskit.providers import Backend from qiskit.synthesis import ProductFormula, LieTrotter from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_function class TrotterQRTE(RealEvolver): - """Quantum Real Time Evolution using Trotterization. + """Pending deprecation: Quantum Real Time Evolution using Trotterization. + + The TrotterQRTE class has been superseded by the + :class:`qiskit.algorithms.time_evolvers.trotterization.TrotterQRTE` class. + This class will be deprecated in a future release and subsequently + removed after that. + Type of Trotterization is defined by a ProductFormula provided. Examples: @@ -58,6 +66,13 @@ class TrotterQRTE(RealEvolver): evolved_state = trotter_qrte.evolve(evolution_problem).evolved_state """ + @deprecate_function( + "The TrotterQRTE class has been superseded by the " + "qiskit.algorithms.time_evolvers.trotterization.TrotterQRTE class. " + "This class will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def __init__( self, product_formula: Optional[ProductFormula] = None, @@ -73,6 +88,9 @@ def __init__( quantum_instance: A quantum instance used for calculating expectation values of EvolutionProblem.aux_operators. """ + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + super().__init__() if product_formula is None: product_formula = LieTrotter() self._product_formula = product_formula diff --git a/qiskit/algorithms/time_evolvers/__init__.py b/qiskit/algorithms/time_evolvers/__init__.py new file mode 100644 index 000000000000..fdb172d367f0 --- /dev/null +++ b/qiskit/algorithms/time_evolvers/__init__.py @@ -0,0 +1,11 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. diff --git a/qiskit/algorithms/time_evolvers/imaginary_time_evolver.py b/qiskit/algorithms/time_evolvers/imaginary_time_evolver.py new file mode 100644 index 000000000000..e62d02e5ab9c --- /dev/null +++ b/qiskit/algorithms/time_evolvers/imaginary_time_evolver.py @@ -0,0 +1,37 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2021, 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Interface for Quantum Imaginary Time Evolution.""" + +from abc import ABC, abstractmethod + +from .time_evolution_problem import TimeEvolutionProblem +from .time_evolution_result import TimeEvolutionResult + + +class ImaginaryTimeEvolver(ABC): + """Interface for Quantum Imaginary Time Evolution.""" + + @abstractmethod + def evolve(self, evolution_problem: TimeEvolutionProblem) -> TimeEvolutionResult: + r"""Perform imaginary time evolution :math:`\exp(-\tau H)|\Psi\rangle`. + + Evolves an initial state :math:`|\Psi\rangle` for an imaginary time :math:`\tau` + under a Hamiltonian :math:`H`, as provided in the ``evolution_problem``. + + Args: + evolution_problem: The definition of the evolution problem. + + Returns: + Evolution result which includes an evolved quantum state. + """ + raise NotImplementedError() diff --git a/qiskit/algorithms/time_evolvers/real_time_evolver.py b/qiskit/algorithms/time_evolvers/real_time_evolver.py new file mode 100644 index 000000000000..587f85d436e2 --- /dev/null +++ b/qiskit/algorithms/time_evolvers/real_time_evolver.py @@ -0,0 +1,37 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2021, 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Interface for Quantum Real Time Evolution.""" + +from abc import ABC, abstractmethod + +from .time_evolution_problem import TimeEvolutionProblem +from .time_evolution_result import TimeEvolutionResult + + +class RealTimeEvolver(ABC): + """Interface for Quantum Real Time Evolution.""" + + @abstractmethod + def evolve(self, evolution_problem: TimeEvolutionProblem) -> TimeEvolutionResult: + r"""Perform real time evolution :math:`\exp(-i t H)|\Psi\rangle`. + + Evolves an initial state :math:`|\Psi\rangle` for a time :math:`t` + under a Hamiltonian :math:`H`, as provided in the ``evolution_problem``. + + Args: + evolution_problem: The definition of the evolution problem. + + Returns: + Evolution result which includes an evolved quantum state. + """ + raise NotImplementedError() diff --git a/qiskit/algorithms/time_evolvers/time_evolution_problem.py b/qiskit/algorithms/time_evolvers/time_evolution_problem.py new file mode 100644 index 000000000000..9b2226f4764f --- /dev/null +++ b/qiskit/algorithms/time_evolvers/time_evolution_problem.py @@ -0,0 +1,119 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Time evolution problem class.""" +from __future__ import annotations + +from collections.abc import Mapping + +from qiskit import QuantumCircuit +from qiskit.circuit import Parameter, ParameterExpression +from qiskit.opflow import PauliSumOp +from ..list_or_dict import ListOrDict +from ...quantum_info import Statevector +from ...quantum_info.operators.base_operator import BaseOperator + + +class TimeEvolutionProblem: + """Time evolution problem class. + + This class is the input to time evolution algorithms and must contain information on the total + evolution time, a quantum state to be evolved and under which Hamiltonian the state is evolved. + + Attributes: + hamiltonian (BaseOperator | PauliSumOp): The Hamiltonian under which to evolve the system. + initial_state (QuantumCircuit | Statevector | None): The quantum state to be evolved for + methods like Trotterization. For variational time evolutions, where the evolution + happens in an ansatz, this argument is not required. + aux_operators (ListOrDict[BaseOperator | PauliSumOp] | None): Optional list of auxiliary + operators to be evaluated with the evolved ``initial_state`` and their expectation + values returned. + truncation_threshold (float): Defines a threshold under which values can be assumed to be 0. + Used when ``aux_operators`` is provided. + t_param (Parameter | None): Time parameter in case of a time-dependent Hamiltonian. This + free parameter must be within the ``hamiltonian``. + param_value_map (dict[Parameter, complex] | None): Maps free parameters in the problem to + values. Depending on the algorithm, it might refer to e.g. a Hamiltonian or an initial + state. + """ + + def __init__( + self, + hamiltonian: BaseOperator | PauliSumOp, + time: float, + initial_state: QuantumCircuit | Statevector | None = None, + aux_operators: ListOrDict[BaseOperator | PauliSumOp] | None = None, + truncation_threshold: float = 1e-12, + t_param: Parameter | None = None, + param_value_map: Mapping[Parameter, complex] | None = None, + ): + """ + Args: + hamiltonian: The Hamiltonian under which to evolve the system. + time: Total time of evolution. + initial_state: The quantum state to be evolved for methods like Trotterization. + For variational time evolutions, where the evolution happens in an ansatz, + this argument is not required. + aux_operators: Optional list of auxiliary operators to be evaluated with the + evolved ``initial_state`` and their expectation values returned. + truncation_threshold: Defines a threshold under which values can be assumed to be 0. + Used when ``aux_operators`` is provided. + t_param: Time parameter in case of a time-dependent Hamiltonian. This + free parameter must be within the ``hamiltonian``. + param_value_map: Maps free parameters in the problem to values. Depending on the + algorithm, it might refer to e.g. a Hamiltonian or an initial state. + + Raises: + ValueError: If non-positive time of evolution is provided. + """ + + self.t_param = t_param + self.param_value_map = param_value_map + self.hamiltonian = hamiltonian + self.time = time + if isinstance(initial_state, Statevector): + circuit = QuantumCircuit(initial_state.num_qubits) + circuit.prepare_state(initial_state.data) + initial_state = circuit + self.initial_state = initial_state + self.aux_operators = aux_operators + self.truncation_threshold = truncation_threshold + + @property + def time(self) -> float: + """Returns time.""" + return self._time + + @time.setter + def time(self, time: float) -> None: + """ + Sets time and validates it. + + Raises: + ValueError: If time is not positive. + """ + if time <= 0: + raise ValueError(f"Evolution time must be > 0 but was {time}.") + self._time = time + + def validate_params(self) -> None: + """ + Checks if all parameters present in the Hamiltonian are also present in the dictionary + that maps them to values. + + Raises: + ValueError: If Hamiltonian parameters cannot be bound with data provided. + """ + if isinstance(self.hamiltonian, PauliSumOp) and isinstance( + self.hamiltonian.coeff, ParameterExpression + ): + raise ValueError("A global parametrized coefficient for PauliSumOp is not allowed.") diff --git a/qiskit/algorithms/time_evolvers/time_evolution_result.py b/qiskit/algorithms/time_evolvers/time_evolution_result.py new file mode 100644 index 000000000000..60c900945543 --- /dev/null +++ b/qiskit/algorithms/time_evolvers/time_evolution_result.py @@ -0,0 +1,46 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2021, 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Class for holding time evolution result.""" +from __future__ import annotations + +from qiskit import QuantumCircuit +from qiskit.algorithms.list_or_dict import ListOrDict +from ..algorithm_result import AlgorithmResult + + +class TimeEvolutionResult(AlgorithmResult): + """ + Class for holding time evolution result. + + Attributes: + evolved_state (QuantumCircuit): An evolved quantum state. + aux_ops_evaluated (ListOrDict[tuple[complex, complex]] | None): Optional list of + observables for which expected values on an evolved state are calculated. These values + are in fact tuples formatted as (mean, standard deviation). + """ + + def __init__( + self, + evolved_state: QuantumCircuit, + aux_ops_evaluated: ListOrDict[tuple[complex, complex]] | None = None, + ): + """ + Args: + evolved_state: An evolved quantum state. + aux_ops_evaluated: Optional list of observables for which expected values on an evolved + state are calculated. These values are in fact tuples formatted as (mean, standard + deviation). + """ + + self.evolved_state = evolved_state + self.aux_ops_evaluated = aux_ops_evaluated diff --git a/releasenotes/notes/evolution-framework-primitives-c86779b5d0dffd25.yaml b/releasenotes/notes/evolution-framework-primitives-c86779b5d0dffd25.yaml new file mode 100644 index 000000000000..2adf8a637293 --- /dev/null +++ b/releasenotes/notes/evolution-framework-primitives-c86779b5d0dffd25.yaml @@ -0,0 +1,15 @@ +--- +features: + - | + Added :class:`qiskit.algorithms.time_evolvers` package with interfaces that will cover + primitive-enabled time evolution algorithms: + :class:`qiskit.algorithms.time_evolvers.TimeEvolutionProblem`, + :class:`qiskit.algorithms.time_evolvers.TimeEvolutionResult`, + :class:`qiskit.algorithms.time_evolvers.ImaginaryTimeEvolver`, + :class:`qiskit.algorithms.time_evolvers.RealTimeEvolver`. +deprecations: + - | + :class:`qiskit.algorithms.evolvers` package will now issue a ``PendingDeprecationWarning``. It + will be deprecated in a future release and subsequently removed after that. This is being + replaced by the new :class:`qiskit.algorithms.time_evolvers` package that will host + primitive-enabled algorithms. diff --git a/test/python/algorithms/time_evolvers/__init__.py b/test/python/algorithms/time_evolvers/__init__.py new file mode 100644 index 000000000000..fdb172d367f0 --- /dev/null +++ b/test/python/algorithms/time_evolvers/__init__.py @@ -0,0 +1,11 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. diff --git a/test/python/algorithms/time_evolvers/test_time_evolution_problem.py b/test/python/algorithms/time_evolvers/test_time_evolution_problem.py new file mode 100644 index 000000000000..83a7fd4d5e3a --- /dev/null +++ b/test/python/algorithms/time_evolvers/test_time_evolution_problem.py @@ -0,0 +1,101 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Test evolver problem class.""" +import unittest +from test.python.algorithms import QiskitAlgorithmsTestCase +from ddt import data, ddt, unpack +from numpy.testing import assert_raises +from qiskit import QuantumCircuit +from qiskit.algorithms import TimeEvolutionProblem +from qiskit.quantum_info import Pauli, SparsePauliOp, Statevector +from qiskit.circuit import Parameter +from qiskit.opflow import Y, Z, One, X, Zero, PauliSumOp + + +@ddt +class TestTimeEvolutionProblem(QiskitAlgorithmsTestCase): + """Test evolver problem class.""" + + def test_init_default(self): + """Tests that all default fields are initialized correctly.""" + hamiltonian = Y + time = 2.5 + initial_state = One + + evo_problem = TimeEvolutionProblem(hamiltonian, time, initial_state) + + expected_hamiltonian = Y + expected_time = 2.5 + expected_initial_state = One + expected_aux_operators = None + expected_t_param = None + expected_param_value_dict = None + + self.assertEqual(evo_problem.hamiltonian, expected_hamiltonian) + self.assertEqual(evo_problem.time, expected_time) + self.assertEqual(evo_problem.initial_state, expected_initial_state) + self.assertEqual(evo_problem.aux_operators, expected_aux_operators) + self.assertEqual(evo_problem.t_param, expected_t_param) + self.assertEqual(evo_problem.param_value_map, expected_param_value_dict) + + @data(QuantumCircuit(1), Statevector([1, 0])) + def test_init_all(self, initial_state): + """Tests that all fields are initialized correctly.""" + t_parameter = Parameter("t") + hamiltonian = t_parameter * Z + Y + time = 2 + aux_operators = [X, Y] + param_value_dict = {t_parameter: 3.2} + + evo_problem = TimeEvolutionProblem( + hamiltonian, + time, + initial_state, + aux_operators, + t_param=t_parameter, + param_value_map=param_value_dict, + ) + + expected_hamiltonian = Y + t_parameter * Z + expected_time = 2 + expected_type = QuantumCircuit + expected_aux_operators = [X, Y] + expected_t_param = t_parameter + expected_param_value_dict = {t_parameter: 3.2} + + self.assertEqual(evo_problem.hamiltonian, expected_hamiltonian) + self.assertEqual(evo_problem.time, expected_time) + self.assertEqual(type(evo_problem.initial_state), expected_type) + self.assertEqual(evo_problem.aux_operators, expected_aux_operators) + self.assertEqual(evo_problem.t_param, expected_t_param) + self.assertEqual(evo_problem.param_value_map, expected_param_value_dict) + + @data([Y, -1, One], [Y, -1.2, One], [Y, 0, One]) + @unpack + def test_init_errors(self, hamiltonian, time, initial_state): + """Tests expected errors are thrown on invalid time argument.""" + with assert_raises(ValueError): + _ = TimeEvolutionProblem(hamiltonian, time, initial_state) + + def test_validate_params(self): + """Tests expected errors are thrown on parameters mismatch.""" + param_x = Parameter("x") + with self.subTest(msg="Parameter missing in dict."): + hamiltonian = PauliSumOp(SparsePauliOp([Pauli("X"), Pauli("Y")]), param_x) + evolution_problem = TimeEvolutionProblem(hamiltonian, 2, Zero) + with assert_raises(ValueError): + evolution_problem.validate_params() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/python/algorithms/time_evolvers/test_time_evolution_result.py b/test/python/algorithms/time_evolvers/test_time_evolution_result.py new file mode 100644 index 000000000000..26f21ba93627 --- /dev/null +++ b/test/python/algorithms/time_evolvers/test_time_evolution_result.py @@ -0,0 +1,47 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. +"""Class for testing evolution result.""" +import unittest +from test.python.algorithms import QiskitAlgorithmsTestCase +from qiskit.algorithms import TimeEvolutionResult +from qiskit.opflow import Zero + + +class TestTimeEvolutionResult(QiskitAlgorithmsTestCase): + """Class for testing evolution result and relevant metadata.""" + + def test_init_state(self): + """Tests that a class is initialized correctly with an evolved_state.""" + evolved_state = Zero + evo_result = TimeEvolutionResult(evolved_state=evolved_state) + + expected_state = Zero + expected_aux_ops_evaluated = None + + self.assertEqual(evo_result.evolved_state, expected_state) + self.assertEqual(evo_result.aux_ops_evaluated, expected_aux_ops_evaluated) + + def test_init_observable(self): + """Tests that a class is initialized correctly with an evolved_observable.""" + evolved_state = Zero + evolved_aux_ops_evaluated = [(5j, 5j), (1.0, 8j), (5 + 1j, 6 + 1j)] + evo_result = TimeEvolutionResult(evolved_state, evolved_aux_ops_evaluated) + + expected_state = Zero + expected_aux_ops_evaluated = [(5j, 5j), (1.0, 8j), (5 + 1j, 6 + 1j)] + + self.assertEqual(evo_result.evolved_state, expected_state) + self.assertEqual(evo_result.aux_ops_evaluated, expected_aux_ops_evaluated) + + +if __name__ == "__main__": + unittest.main() From a4c8df0ee9cbda4bc9757185b82d12bba13df8c4 Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Wed, 14 Sep 2022 03:16:56 +0100 Subject: [PATCH 07/56] Fix circuit drawers mutating input circuits (#8741) The wire management in the circuit drawers could accidentally mutate the qubits in the input circuit. The root cause of this is because `QuantumCircuit.qubits` (and `.clbits`) are properties that expose the internal, mutable lists that back them directly. This is a larger failing of the `QuantumCircuit` API, but one that is slightly tricky to walk back without backwards-incompatible changes or performance regressions. --- qiskit/visualization/circuit/_utils.py | 4 ++-- test/python/visualization/test_circuit_text_drawer.py | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/qiskit/visualization/circuit/_utils.py b/qiskit/visualization/circuit/_utils.py index 26f2fb54d647..63dc01caa09b 100644 --- a/qiskit/visualization/circuit/_utils.py +++ b/qiskit/visualization/circuit/_utils.py @@ -399,8 +399,8 @@ def _get_layered_instructions( # default to left justify = justify if justify in ("right", "none") else "left" - qubits = circuit.qubits - clbits = circuit.clbits + qubits = circuit.qubits.copy() + clbits = circuit.clbits.copy() nodes = [] # Create a mapping of each register to the max layer number for all measure ops diff --git a/test/python/visualization/test_circuit_text_drawer.py b/test/python/visualization/test_circuit_text_drawer.py index fdd98a1f4aea..d570341f40ba 100644 --- a/test/python/visualization/test_circuit_text_drawer.py +++ b/test/python/visualization/test_circuit_text_drawer.py @@ -3447,6 +3447,13 @@ def test_text_barrier_delay(self): circuit.delay(100, qr[2]) self.assertEqual(str(_text_circuit_drawer(circuit, idle_wires=False)), expected) + def test_does_not_mutate_circuit(self): + """Using 'idle_wires=False' should not mutate the circuit. Regression test of gh-8739.""" + circuit = QuantumCircuit(1) + before_qubits = circuit.num_qubits + circuit.draw(idle_wires=False) + self.assertEqual(circuit.num_qubits, before_qubits) + class TestTextNonRational(QiskitTestCase): """non-rational numbers are correctly represented""" From 66303f07eb187be40a6977d098b05528012c525c Mon Sep 17 00:00:00 2001 From: Ikko Hamamura Date: Wed, 14 Sep 2022 13:18:01 +0900 Subject: [PATCH 08/56] Rename run_options to options (#8719) * Rename run_options to options * fix algorithms * update docs Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Co-authored-by: Manoel Marques --- .../gradients/base_estimator_gradient.py | 2 +- .../gradients/base_sampler_gradient.py | 2 +- qiskit/primitives/base_estimator.py | 18 +++++++++--------- qiskit/primitives/base_sampler.py | 18 +++++++++--------- qiskit/primitives/estimator.py | 6 +++--- qiskit/primitives/sampler.py | 6 +++--- .../algorithms/test_estimator_gradient.py | 6 +++--- .../python/algorithms/test_sampler_gradient.py | 2 +- test/python/primitives/test_estimator.py | 16 ++++++++-------- test/python/primitives/test_sampler.py | 16 ++++++++-------- 10 files changed, 46 insertions(+), 46 deletions(-) diff --git a/qiskit/algorithms/gradients/base_estimator_gradient.py b/qiskit/algorithms/gradients/base_estimator_gradient.py index fe71441b45d0..3e04605bdd4d 100644 --- a/qiskit/algorithms/gradients/base_estimator_gradient.py +++ b/qiskit/algorithms/gradients/base_estimator_gradient.py @@ -175,6 +175,6 @@ def _get_local_run_options(self, run_options: dict) -> Options: Returns: The updated run options. """ - run_opts = copy(self._estimator.run_options) + run_opts = copy(self._estimator.options) run_opts.update_options(**run_options) return run_opts diff --git a/qiskit/algorithms/gradients/base_sampler_gradient.py b/qiskit/algorithms/gradients/base_sampler_gradient.py index 91e3ca23f8fa..40284c177dbd 100644 --- a/qiskit/algorithms/gradients/base_sampler_gradient.py +++ b/qiskit/algorithms/gradients/base_sampler_gradient.py @@ -147,6 +147,6 @@ def _get_local_run_options(self, run_options: dict) -> dict: Returns: The updated run options. """ - run_opts = copy(self._sampler.run_options) + run_opts = copy(self._sampler.options) run_opts.update_options(**run_options) return run_opts diff --git a/qiskit/primitives/base_estimator.py b/qiskit/primitives/base_estimator.py index 10be880f3f37..f5996dea82c2 100644 --- a/qiskit/primitives/base_estimator.py +++ b/qiskit/primitives/base_estimator.py @@ -134,7 +134,7 @@ def __init__( circuits: Iterable[QuantumCircuit] | QuantumCircuit | None = None, observables: Iterable[SparsePauliOp] | SparsePauliOp | None = None, parameters: Iterable[Iterable[Parameter]] | None = None, - run_options: dict | None = None, + options: dict | None = None, ): """ Creating an instance of an Estimator, or using one in a ``with`` context opens a session that @@ -147,7 +147,7 @@ def __init__( will be bound. Defaults to ``[circ.parameters for circ in circuits]`` The indexing is such that ``parameters[i, j]`` is the j-th formal parameter of ``circuits[i]``. - run_options: runtime options. + options: Default options. Raises: QiskitError: For mismatch of circuits and parameters list. @@ -189,8 +189,8 @@ def __init__( f"expected {circ.num_parameters}, actual {len(params)}." ) self._run_options = Options() - if run_options is not None: - self._run_options.update_options(**run_options) + if options is not None: + self._run_options.update_options(**options) def __new__( cls, @@ -265,15 +265,15 @@ def parameters(self) -> tuple[ParameterView, ...]: return tuple(self._parameters) @property - def run_options(self) -> Options: + def options(self) -> Options: """Return options values for the estimator. Returns: - run_options + options """ return self._run_options - def set_run_options(self, **fields) -> BaseEstimator: + def set_options(self, **fields) -> BaseEstimator: """Set options values for the estimator. Args: @@ -409,7 +409,7 @@ def __call__( f"The number of circuits is {len(self.observables)}, " f"but the index {max(observables)} is given." ) - run_opts = copy(self.run_options) + run_opts = copy(self.options) run_opts.update_options(**run_options) return self._call( @@ -520,7 +520,7 @@ def run( f"not match the number of qubits of the {i}-th observable " f"({observable.num_qubits})." ) - run_opts = copy(self.run_options) + run_opts = copy(self.options) run_opts.update_options(**run_options) return self._run( diff --git a/qiskit/primitives/base_sampler.py b/qiskit/primitives/base_sampler.py index 1cb8da2a39dc..4aeee0f55b89 100644 --- a/qiskit/primitives/base_sampler.py +++ b/qiskit/primitives/base_sampler.py @@ -120,14 +120,14 @@ def __init__( self, circuits: Iterable[QuantumCircuit] | QuantumCircuit | None = None, parameters: Iterable[Iterable[Parameter]] | None = None, - run_options: dict | None = None, + options: dict | None = None, ): """ Args: circuits: Quantum circuits to be executed. parameters: Parameters of each of the quantum circuits. Defaults to ``[circ.parameters for circ in circuits]``. - run_options: Default runtime options. + options: Default options. Raises: QiskitError: For mismatch of circuits and parameters list. @@ -158,8 +158,8 @@ def __init__( f"and circuits ({len(self._circuits)})" ) self._run_options = Options() - if run_options is not None: - self._run_options.update_options(**run_options) + if options is not None: + self._run_options.update_options(**options) def __new__( cls, @@ -217,15 +217,15 @@ def parameters(self) -> tuple[ParameterView, ...]: return tuple(self._parameters) @property - def run_options(self) -> Options: + def options(self) -> Options: """Return options values for the estimator. Returns: - run_options + options """ return self._run_options - def set_run_options(self, **fields) -> BaseSampler: + def set_options(self, **fields): """Set options values for the estimator. Args: @@ -309,7 +309,7 @@ def __call__( f"The number of circuits is {len(self.circuits)}, " f"but the index {max(circuits)} is given." ) - run_opts = copy(self.run_options) + run_opts = copy(self.options) run_opts.update_options(**run_options) return self._call( @@ -401,7 +401,7 @@ def run( f" the used classical bits ({set(mapping.values())})." ) - run_opts = copy(self.run_options) + run_opts = copy(self.options) run_opts.update_options(**run_options) return self._run( diff --git a/qiskit/primitives/estimator.py b/qiskit/primitives/estimator.py index 5fa73e00e27f..142e254d6dee 100644 --- a/qiskit/primitives/estimator.py +++ b/qiskit/primitives/estimator.py @@ -54,7 +54,7 @@ def __init__( circuits: QuantumCircuit | Iterable[QuantumCircuit] | None = None, observables: BaseOperator | PauliSumOp | Iterable[BaseOperator | PauliSumOp] | None = None, parameters: Iterable[Iterable[Parameter]] | None = None, - run_options: dict | None = None, + options: dict | None = None, ): """ Args: @@ -62,7 +62,7 @@ def __init__( observables: observables to be estimated. parameters: Parameters of each of the quantum circuits. Defaults to ``[circ.parameters for circ in circuits]``. - run_options: Default runtime options. + options: Default options. Raises: QiskitError: if some classical bits are not used for measurements. @@ -81,7 +81,7 @@ def __init__( circuits=circuits, observables=observables, # type: ignore parameters=parameters, - run_options=run_options, + options=options, ) self._is_closed = False diff --git a/qiskit/primitives/sampler.py b/qiskit/primitives/sampler.py index b071e6d01d90..6114997c073f 100644 --- a/qiskit/primitives/sampler.py +++ b/qiskit/primitives/sampler.py @@ -53,14 +53,14 @@ def __init__( self, circuits: QuantumCircuit | Iterable[QuantumCircuit] | None = None, parameters: Iterable[Iterable[Parameter]] | None = None, - run_options: dict | None = None, + options: dict | None = None, ): """ Args: circuits: circuits to be executed parameters: Parameters of each of the quantum circuits. Defaults to ``[circ.parameters for circ in circuits]``. - run_options: Default runtime options. + options: Default options. Raises: QiskitError: if some classical bits are not used for measurements. @@ -76,7 +76,7 @@ def __init__( preprocessed_circuits.append(circuit) else: preprocessed_circuits = None - super().__init__(preprocessed_circuits, parameters, run_options) + super().__init__(preprocessed_circuits, parameters, options) self._is_closed = False def _call( diff --git a/test/python/algorithms/test_estimator_gradient.py b/test/python/algorithms/test_estimator_gradient.py index d859adcf1d30..b4b2c52024d7 100644 --- a/test/python/algorithms/test_estimator_gradient.py +++ b/test/python/algorithms/test_estimator_gradient.py @@ -30,7 +30,7 @@ from qiskit.circuit.library import EfficientSU2, RealAmplitudes from qiskit.circuit.library.standard_gates import RXXGate, RYYGate, RZXGate, RZZGate from qiskit.primitives import Estimator -from qiskit.quantum_info import SparsePauliOp, Operator +from qiskit.quantum_info import Operator, SparsePauliOp from qiskit.quantum_info.random import random_pauli_list from qiskit.test import QiskitTestCase @@ -382,13 +382,13 @@ def test_gradient_random_parameters(self, grad): SPSAEstimatorGradient, ], ) - def test_run_options(self, grad): + def test_options(self, grad): """Test estimator gradient's run options""" a = Parameter("a") qc = QuantumCircuit(1) qc.rx(a, 0) op = SparsePauliOp.from_list([("Z", 1)]) - estimator = Estimator(run_options={"shots": 100}) + estimator = Estimator(options={"shots": 100}) with self.subTest("estimator"): if grad is FiniteDiffEstimatorGradient or grad is SPSAEstimatorGradient: gradient = grad(estimator, epsilon=1e-6) diff --git a/test/python/algorithms/test_sampler_gradient.py b/test/python/algorithms/test_sampler_gradient.py index e1a4bfef1c30..47a82249b680 100644 --- a/test/python/algorithms/test_sampler_gradient.py +++ b/test/python/algorithms/test_sampler_gradient.py @@ -521,7 +521,7 @@ def test_run_options(self, grad): qc = QuantumCircuit(1) qc.rx(a, 0) qc.measure_all() - sampler = Sampler(run_options={"shots": 100}) + sampler = Sampler(options={"shots": 100}) with self.subTest("sampler"): if grad is FiniteDiffSamplerGradient or grad is SPSASamplerGradient: gradient = grad(sampler, epsilon=1e-6) diff --git a/test/python/primitives/test_estimator.py b/test/python/primitives/test_estimator.py index 58212a358627..c3125380fe34 100644 --- a/test/python/primitives/test_estimator.py +++ b/test/python/primitives/test_estimator.py @@ -568,15 +568,15 @@ def test_run_with_shots_option(self): self.assertIsInstance(result, EstimatorResult) np.testing.assert_allclose(result.values, [-1.307397243478641]) - def test_run_options(self): - """Test for run_options""" + def test_options(self): + """Test for options""" with self.subTest("init"): - estimator = Estimator(run_options={"shots": 3000}) - self.assertEqual(estimator.run_options.get("shots"), 3000) - with self.subTest("set_run_options"): - estimator.set_run_options(shots=1024, seed=15) - self.assertEqual(estimator.run_options.get("shots"), 1024) - self.assertEqual(estimator.run_options.get("seed"), 15) + estimator = Estimator(options={"shots": 3000}) + self.assertEqual(estimator.options.get("shots"), 3000) + with self.subTest("set_options"): + estimator.set_options(shots=1024, seed=15) + self.assertEqual(estimator.options.get("shots"), 1024) + self.assertEqual(estimator.options.get("seed"), 15) with self.subTest("run"): result = estimator.run( [self.ansatz], diff --git a/test/python/primitives/test_sampler.py b/test/python/primitives/test_sampler.py index 1e23a876f010..ec211a695f42 100644 --- a/test/python/primitives/test_sampler.py +++ b/test/python/primitives/test_sampler.py @@ -672,15 +672,15 @@ def test_primitive_job_status_done(self): job = sampler.run(circuits=[bell]) self.assertEqual(job.status(), JobStatus.DONE) - def test_run_options(self): - """Test for run_options""" + def test_options(self): + """Test for options""" with self.subTest("init"): - sampler = Sampler(run_options={"shots": 3000}) - self.assertEqual(sampler.run_options.get("shots"), 3000) - with self.subTest("set_run_options"): - sampler.set_run_options(shots=1024, seed=15) - self.assertEqual(sampler.run_options.get("shots"), 1024) - self.assertEqual(sampler.run_options.get("seed"), 15) + sampler = Sampler(options={"shots": 3000}) + self.assertEqual(sampler.options.get("shots"), 3000) + with self.subTest("set_options"): + sampler.set_options(shots=1024, seed=15) + self.assertEqual(sampler.options.get("shots"), 1024) + self.assertEqual(sampler.options.get("seed"), 15) with self.subTest("run"): params, target = self._generate_params_target([1]) result = sampler.run([self._pqc], parameter_values=params).result() From ae29802000333ba278643c96a751017dd52e96c3 Mon Sep 17 00:00:00 2001 From: Pedro Rivero Date: Wed, 14 Sep 2022 08:12:41 -0500 Subject: [PATCH 09/56] Add BaseResult functionality to primitives module (#8091) * Add BaseResult functionality to primitives module * Translate tests from pytest to unittest * Update docstring * Update __post_init__ docstring * Add experiments property and update types * Refactor variable names * Refactor _field_values * Finilize docstring * Add renlease note * Fix lint errors * Fix lint docstring errors * Fix formatting * Fix variable names * Remove BaseResult from primitives init and update test imports * Rename BaseResult to BasePrimitiveResult * Update qiskit/primitives/base_result.py Co-authored-by: Takashi Imamichi <31178928+t-imamichi@users.noreply.github.com> * Cache properties in base result since child dataclasses are frozen * Revert "Cache properties in base result since child dataclasses are frozen" This reverts commit 0d505a1cf11f80f889d898bee747543a6ab748e7. * Update experiments type, add decompose method, and validate data types * Fix lint * Fix BaseResult post_init docstring Co-authored-by: Takashi Imamichi <31178928+t-imamichi@users.noreply.github.com> * Index BasePrimitiveResult in primitives module __init__ * Add bytes case to TestBasePrimitiveResult Co-authored-by: Takashi Imamichi <31178928+t-imamichi@users.noreply.github.com> * Exclude bytes from possible field types in BasePrimitiveResult Co-authored-by: Takashi Imamichi <31178928+t-imamichi@users.noreply.github.com> --- qiskit/primitives/__init__.py | 2 + qiskit/primitives/base_result.py | 87 +++++++++++++++++ qiskit/primitives/estimator_result.py | 4 +- qiskit/primitives/sampler_result.py | 4 +- ...rimitive-base-result-92808b069299c19e.yaml | 9 ++ test/python/primitives/test_result.py | 93 +++++++++++++++++++ 6 files changed, 197 insertions(+), 2 deletions(-) create mode 100644 qiskit/primitives/base_result.py create mode 100644 releasenotes/notes/primitive-base-result-92808b069299c19e.yaml create mode 100644 test/python/primitives/test_result.py diff --git a/qiskit/primitives/__init__.py b/qiskit/primitives/__init__.py index bd00dedc711f..58ee1f41d27d 100644 --- a/qiskit/primitives/__init__.py +++ b/qiskit/primitives/__init__.py @@ -46,11 +46,13 @@ .. autosummary:: :toctree: ../stubs/ + BasePrimitiveResult EstimatorResult SamplerResult """ from .base_estimator import BaseEstimator +from .base_result import BasePrimitiveResult from .base_sampler import BaseSampler from .estimator import Estimator from .estimator_result import EstimatorResult diff --git a/qiskit/primitives/base_result.py b/qiskit/primitives/base_result.py new file mode 100644 index 000000000000..2c23ea1d7b59 --- /dev/null +++ b/qiskit/primitives/base_result.py @@ -0,0 +1,87 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. +""" +Primitive result abstract base class +""" + +from __future__ import annotations + +from abc import ABC +from collections.abc import Iterator, Sequence +from dataclasses import fields +from typing import Any, Dict + +from numpy import ndarray + + +ExperimentData = Dict[str, Any] + + +class BasePrimitiveResult(ABC): + """Primitive result abstract base class. + + Base class for Primitive results meant to provide common functionality to all inheriting + result dataclasses. + """ + + def __post_init__(self) -> None: + """ + Verify that all fields in any inheriting result dataclass are consistent, after + instantiation, with the number of experiments being represented. + + This magic method is specific of `dataclasses.dataclass`, therefore all inheriting + classes must have this decorator. + + Raises: + TypeError: If one of the data fields is not a Sequence or ``numpy.ndarray``. + ValueError: Inconsistent number of experiments across data fields. + """ + for value in self._field_values: # type: Sequence + # TODO: enforce all data fields to be tuples instead of sequences + if not isinstance(value, (Sequence, ndarray)) or isinstance(value, (str, bytes)): + raise TypeError( + f"Expected sequence or `numpy.ndarray`, provided {type(value)} instead." + ) + if len(value) != self.num_experiments: + raise ValueError("Inconsistent number of experiments across data fields.") + + @property # TODO: functools.cached_property when py37 is droppped + def num_experiments(self) -> int: + """Number of experiments in any inheriting result dataclass.""" + value: Sequence = self._field_values[0] + return len(value) + + @property # TODO: functools.cached_property when py37 is droppped + def experiments(self) -> tuple[ExperimentData, ...]: + """Experiment data dicts in any inheriting result dataclass.""" + return tuple(self._generate_experiments()) + + def _generate_experiments(self) -> Iterator[ExperimentData]: + """Generate experiment data dicts in any inheriting result dataclass.""" + names: tuple[str, ...] = self._field_names + for values in zip(*self._field_values): + yield dict(zip(names, values)) + + def decompose(self) -> Iterator[BasePrimitiveResult]: + """Generate single experiment result objects from self.""" + for values in zip(*self._field_values): + yield self.__class__(*[(v,) for v in values]) + + @property # TODO: functools.cached_property when py37 is droppped + def _field_names(self) -> tuple[str, ...]: + """Tuple of field names in any inheriting result dataclass.""" + return tuple(field.name for field in fields(self)) + + @property # TODO: functools.cached_property when py37 is droppped + def _field_values(self) -> tuple: + """Tuple of field values in any inheriting result dataclass.""" + return tuple(getattr(self, name) for name in self._field_names) diff --git a/qiskit/primitives/estimator_result.py b/qiskit/primitives/estimator_result.py index 46ea00447acc..9ac811fb6f17 100644 --- a/qiskit/primitives/estimator_result.py +++ b/qiskit/primitives/estimator_result.py @@ -18,12 +18,14 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Any +from .base_result import BasePrimitiveResult + if TYPE_CHECKING: import numpy as np @dataclass(frozen=True) -class EstimatorResult: +class EstimatorResult(BasePrimitiveResult): """Result of Estimator. .. code-block:: python diff --git a/qiskit/primitives/sampler_result.py b/qiskit/primitives/sampler_result.py index 9581e951dc04..5dbb12d20898 100644 --- a/qiskit/primitives/sampler_result.py +++ b/qiskit/primitives/sampler_result.py @@ -20,9 +20,11 @@ from qiskit.result import QuasiDistribution +from .base_result import BasePrimitiveResult + @dataclass(frozen=True) -class SamplerResult: +class SamplerResult(BasePrimitiveResult): """Result of Sampler. .. code-block:: python diff --git a/releasenotes/notes/primitive-base-result-92808b069299c19e.yaml b/releasenotes/notes/primitive-base-result-92808b069299c19e.yaml new file mode 100644 index 000000000000..ed0641f3c5b2 --- /dev/null +++ b/releasenotes/notes/primitive-base-result-92808b069299c19e.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + Adds a primitive result :class:`qiskit.primitives.base_result.BasePrimitiveResult` to provide common functionality to all inheriting result dataclasses. + * Adds :py:meth:`result.num_experiments` property. + * Adds :py:meth:`result.experiments` property. + * Adds :py:meth:`result.decompose`. + * Validates data types after instantiation (i.e. on dataclass :py:meth:`__post_init__`). + * Checks for consistency in the number of experiments across data fields after instantiation (i.e. on dataclass :py:meth:`__post_init__`). diff --git a/test/python/primitives/test_result.py b/test/python/primitives/test_result.py new file mode 100644 index 000000000000..2a688e6d2f45 --- /dev/null +++ b/test/python/primitives/test_result.py @@ -0,0 +1,93 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Tests for BasePrimitiveResult.""" + +from __future__ import annotations + +from collections.abc import Collection +from dataclasses import dataclass +from typing import Any + +from ddt import data, ddt, unpack + +from qiskit.primitives.base_result import BasePrimitiveResult +from qiskit.test import QiskitTestCase + + +################################################################################ +## STUB DATACLASS +################################################################################ +@dataclass +class Result(BasePrimitiveResult): + """Dummy result dataclass implementing BasePrimitiveResult.""" + + field_1: Collection[Any] + field_2: Collection[Any] + + +################################################################################ +## TESTS +################################################################################ +@ddt +class TestBasePrimitiveResult(QiskitTestCase): + """Tests BasePrimitiveResult.""" + + @data(0, 1.2, True, "sequence", b"sequence", {"name": "value"}) + def test_post_init_type_error(self, field_1): + """Tests post init type error.""" + self.assertRaises(TypeError, Result, *(field_1, [])) + + @data(([1], []), ([], [1]), ([1, 2], []), ([1], [1, 2])) + @unpack + def test_post_init_value_error(self, field_1, field_2): + """Tests post init value error.""" + self.assertRaises(ValueError, Result, *(field_1, field_2)) + + @data(0, 1, 2, 3) + def test_num_experiments(self, num_experiments): + """Tests {num_experiments} num_experiments.""" + result = Result([0] * num_experiments, [1] * num_experiments) + self.assertEqual(num_experiments, result.num_experiments) + + @data(0, 1, 2, 3) + def test_experiments(self, num_experiments): + """Test experiment data.""" + field_1 = list(range(num_experiments)) + field_2 = [i + 1 for i in range(num_experiments)] + experiments = Result(field_1, field_2).experiments + self.assertIsInstance(experiments, tuple) + for i, exp in enumerate(experiments): + self.assertEqual(exp, {"field_1": i, "field_2": i + 1}) + + @data(0, 1, 2, 3) + def test_decompose(self, num_experiments): + """Test decompose.""" + field_1 = list(range(num_experiments)) + field_2 = [i + 1 for i in range(num_experiments)] + result = Result(field_1, field_2) + for i, res in enumerate(result.decompose()): + self.assertIsInstance(res, Result) + f1, f2 = (i,), (i + 1,) + self.assertEqual(res, Result(f1, f2)) + + def test_field_names(self): + """Tests field names ("field_1", "field_2").""" + result = Result([], []) + self.assertEqual(result._field_names, ("field_1", "field_2")) + + @data(([], []), ([0], [0]), ([0], [1])) + @unpack + def test_field_values(self, field_1, field_2): + """Tests field values ({field_1}, {field_2}).""" + result = Result(field_1, field_2) + self.assertEqual(result._field_values, (field_1, field_2)) From 69d2994779ef81221f223ef177a44b455dffd723 Mon Sep 17 00:00:00 2001 From: Naoki Kanazawa Date: Thu, 15 Sep 2022 01:09:06 +0900 Subject: [PATCH 10/56] Pulse reference mechanism (#8005) * This commit add reference to schedule block and cleanup data structure of it with DAGSchedule class. Pulse builder call function is also updated to use reference mechanism. Now call function can be called without actual pulse program, which will be later assigned to the schedule through assign_reference method. * Introduce ref_id instead of using (name, channels) tuple as a key of reference dict. Note that channels can be parametrized, and such dynamic key may break reference during programming. Even though if we update key with parameter assignment, assigned key doesn't work because they are different object, i.e. key is evaluated with "is" thus object id is important. Rather than introducing complicated mechanism to manage this, static ref key provides robust and cleaner solution. * Add scope to reference manager reference added to the program is managed with scope. this helps users to address parameters and reference to assign. * fix parameter scope bug * add more test * documentation update * support regex in get_parameters * update reference manager implementation Redefined ReferenceManager as a subclass of mutable mapping. This is the mapping to both schedule and channels. Parameter management is excluded from the reference and moved to the schedule block. All parameters including one in subroutines are exposed with .parameters property. * wording edits Co-authored-by: Daniel Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Will Shanks * add details of returned order * fix bug in reference management * update reference model - reference take multiple keys instead of channels - builder.refer command is newly added - schedule.blocks returns reference replaced with actual subroutine if assigned - remove dagschedule and revert to on the fly dag generation - move reference to own file - simplify reference manager - update docs and tests * add test for special parameter name * docs update Co-authored-by: Will Shanks Co-authored-by: Daniel Egger <38065505+eggerdj@users.noreply.github.com> * update delimiter * misc updates * update reference argument (name, **extra_keys) * update builder command refer -> reference * update parallel alignment dag generator to consider unassigned reference placed before undefined channels * add search_parameters method * cleanup * reno * documentation update Co-authored-by: Will Shanks * update parameter collection method not to merge parameter object in different scope. * avoid overriding existing reference * update comments about reference policy * cleanup * add comment about parent * Update union of parameters, add some test for expression. * Switch baseclass to UserDict * Remove .name setter * Update parameter logic. Turn scoped_parameters into a method. * update _get_references logic * Fix sequential dag generation logic * add warning for parameter collision * add test of sequential two edges Co-authored-by: Will Shanks * fix replace logic * add explicit validate logic and cleanup constructor of instruction subclasses * fix test * add upgrade notice and API doc * revert return type of parameters * fix documentation Co-authored-by: Daniel Egger <38065505+eggerdj@users.noreply.github.com> Co-authored-by: Will Shanks Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/pulse/__init__.py | 1 + qiskit/pulse/builder.py | 266 +++++-- qiskit/pulse/exceptions.py | 4 + qiskit/pulse/instructions/__init__.py | 2 + qiskit/pulse/instructions/acquire.py | 34 +- qiskit/pulse/instructions/call.py | 15 +- qiskit/pulse/instructions/delay.py | 4 - qiskit/pulse/instructions/frequency.py | 45 +- qiskit/pulse/instructions/instruction.py | 30 +- qiskit/pulse/instructions/phase.py | 40 +- qiskit/pulse/instructions/play.py | 36 +- qiskit/pulse/instructions/reference.py | 99 +++ qiskit/pulse/instructions/snapshot.py | 15 +- qiskit/pulse/parameter_manager.py | 91 +-- qiskit/pulse/reference_manager.py | 58 ++ qiskit/pulse/schedule.py | 717 +++++++++++++++--- qiskit/pulse/transforms/__init__.py | 16 +- qiskit/pulse/transforms/dag.py | 63 +- ...-reference-mechanism-8a7811e17b4fead3.yaml | 43 ++ test/python/pulse/test_block.py | 20 +- test/python/pulse/test_instructions.py | 36 + test/python/pulse/test_parameter_manager.py | 2 +- test/python/pulse/test_reference.py | 705 +++++++++++++++++ 23 files changed, 1949 insertions(+), 393 deletions(-) create mode 100644 qiskit/pulse/instructions/reference.py create mode 100644 qiskit/pulse/reference_manager.py create mode 100644 releasenotes/notes/add-schedule-block-reference-mechanism-8a7811e17b4fead3.yaml create mode 100644 test/python/pulse/test_reference.py diff --git a/qiskit/pulse/__init__.py b/qiskit/pulse/__init__.py index f1ac8e3582cb..e6dab41cfb29 100644 --- a/qiskit/pulse/__init__.py +++ b/qiskit/pulse/__init__.py @@ -74,6 +74,7 @@ call, delay, play, + reference, set_frequency, set_phase, shift_frequency, diff --git a/qiskit/pulse/builder.py b/qiskit/pulse/builder.py index 6bde026c7f46..f0ed02eaa006 100644 --- a/qiskit/pulse/builder.py +++ b/qiskit/pulse/builder.py @@ -11,6 +11,9 @@ # that they have been altered from the originals. r""" + +.. _pulse_builder: + ============= Pulse Builder ============= @@ -299,6 +302,7 @@ call delay play + reference set_frequency set_phase shift_frequency @@ -440,6 +444,8 @@ import contextvars import functools import itertools +import uuid +import warnings from contextlib import contextmanager from typing import ( Any, @@ -736,6 +742,16 @@ def append_block(self, context_block: ScheduleBlock): if len(context_block) > 0: self._context_stack[-1].append(context_block) + def append_reference(self, name: str, *extra_keys: str): + """Add external program as a :class:`~qiskit.pulse.instructions.Reference` instruction. + + Args: + name: Name of subroutine. + extra_keys: Assistance keys to uniquely specify the subroutine. + """ + inst = instructions.Reference(name, *extra_keys) + self.append_instruction(inst) + def call_subroutine( self, subroutine: Union[circuit.QuantumCircuit, Schedule, ScheduleBlock], @@ -747,7 +763,7 @@ def call_subroutine( The ``subroutine`` is appended to the context schedule as a call instruction. This logic just generates a convenient program representation in the compiler. - Thus this doesn't affect execution of inline subroutines. + Thus, this doesn't affect execution of inline subroutines. See :class:`~pulse.instructions.Call` for more details. Args: @@ -769,39 +785,53 @@ def call_subroutine( self._compile_lazy_circuit() subroutine = self._compile_circuit(subroutine) - empty_subroutine = True - if isinstance(subroutine, Schedule): - if len(subroutine.instructions) > 0: - empty_subroutine = False - elif isinstance(subroutine, ScheduleBlock): - if len(subroutine.blocks) > 0: - empty_subroutine = False - else: + if not isinstance(subroutine, (Schedule, ScheduleBlock)): raise exceptions.PulseError( f"Subroutine type {subroutine.__class__.__name__} is " "not valid data format. Call QuantumCircuit, " "Schedule, or ScheduleBlock." ) - if not empty_subroutine: - param_value_map = {} - for param_name, assigned_value in kw_params.items(): - param_objs = subroutine.get_parameters(param_name) - if len(param_objs) > 0: - for param_obj in param_objs: - param_value_map[param_obj] = assigned_value - else: - raise exceptions.PulseError( - f"Parameter {param_name} is not defined in the target subroutine. " - f'{", ".join(map(str, subroutine.parameters))} can be specified.' - ) - - if value_dict: - param_value_map.update(value_dict) + if len(subroutine) == 0: + return - call_def = instructions.Call(subroutine, param_value_map, name) - - self.append_instruction(call_def) + # Create local parameter assignment + local_assignment = dict() + for param_name, value in kw_params.items(): + params = subroutine.get_parameters(param_name) + if not params: + raise exceptions.PulseError( + f"Parameter {param_name} is not defined in the target subroutine. " + f'{", ".join(map(str, subroutine.parameters))} can be specified.' + ) + for param in params: + local_assignment[param] = value + if value_dict: + if local_assignment.keys() & value_dict.keys(): + warnings.warn( + "Some parameters provided by 'value_dict' conflict with one through " + "keyword arguments. Parameter values in the keyword arguments " + "are overridden by the dictionary values.", + UserWarning, + ) + local_assignment.update(value_dict) + + if isinstance(subroutine, ScheduleBlock): + # If subroutine is schedule block, use reference mechanism. + if local_assignment: + subroutine = subroutine.assign_parameters(local_assignment, inplace=False) + if name is None: + # Add unique string, not to accidentally override existing reference entry. + keys = (subroutine.name, uuid.uuid4().hex) + else: + keys = (name,) + self.append_reference(*keys) + self.get_context().assign_references({keys: subroutine}, inplace=True) + else: + # If subroutine is schedule, use Call instruction. + name = name or subroutine.name + call_instruction = instructions.Call(subroutine, local_assignment, name) + self.append_instruction(call_instruction) @_requires_backend def call_gate(self, gate: circuit.Gate, qubits: Tuple[int, ...], lazy: bool = True): @@ -1679,18 +1709,17 @@ def acquire( from qiskit import pulse - d0 = pulse.MeasureChannel(0) + acq0 = pulse.AcquireChannel(0) mem0 = pulse.MemorySlot(0) with pulse.build() as pulse_prog: - pulse.acquire(100, d0, mem0) + pulse.acquire(100, acq0, mem0) # measurement metadata kernel = pulse.configuration.Kernel('linear_discriminator') - pulse.acquire(100, d0, mem0, kernel=kernel) + pulse.acquire(100, acq0, mem0, kernel=kernel) - .. note:: The type of data acquire will depend on the execution - ``meas_level``. + .. note:: The type of data acquire will depend on the execution ``meas_level``. Args: duration: Duration to acquire data for @@ -1832,89 +1861,166 @@ def snapshot(label: str, snapshot_type: str = "statevector"): def call( - target: Union[circuit.QuantumCircuit, Schedule, ScheduleBlock], + target: Optional[Union[circuit.QuantumCircuit, Schedule, ScheduleBlock]], name: Optional[str] = None, value_dict: Optional[Dict[ParameterValueType, ParameterValueType]] = None, **kw_params: ParameterValueType, ): - """Call the ``target`` within the currently active builder context with arbitrary + """Call the subroutine within the currently active builder context with arbitrary parameters which will be assigned to the target program. .. note:: - The ``target`` program is inserted as a ``Call`` instruction. - This instruction defines a subroutine. See :class:`~qiskit.pulse.instructions.Call` - for more details. + + If the ``target`` program is a :class:`.ScheduleBlock`, then a :class:`.Reference` + instruction will be created and appended to the current context. + The ``target`` program will be immediately assigned to the current scope as a subroutine. + If the ``target`` program is :class:`.Schedule`, it will be wrapped by the + :class:`.Call` instruction and appended to the current context to avoid + a mixed representation of :class:`.ScheduleBlock` and :class:`.Schedule`. + If the ``target`` program is a :class:`.QuantumCircuit` it will be scheduled + and the new :class:`.Schedule` will be added as a :class:`.Call` instruction. Examples: - .. code-block:: python + 1. Calling a schedule block (recommended) - from qiskit import circuit, pulse, schedule, transpile - from qiskit.providers.fake_provider import FakeOpenPulse2Q + .. jupyter-execute:: - backend = FakeOpenPulse2Q() + from qiskit import circuit, pulse + from qiskit.providers.fake_provider import FakeBogotaV2 - qc = circuit.QuantumCircuit(2) - qc.cx(0, 1) - qc_transpiled = transpile(qc, optimization_level=3) - sched = schedule(qc_transpiled, backend) + backend = FakeBogotaV2() - with pulse.build(backend) as pulse_prog: - pulse.call(sched) - pulse.call(qc) + with pulse.build() as x_sched: + pulse.play(pulse.Gaussian(160, 0.1, 40), pulse.DriveChannel(0)) - This function can optionally take parameter dictionary with the parameterized target program. + with pulse.build() as pulse_prog: + pulse.call(x_sched) - .. code-block:: python + print(pulse_prog) - from qiskit import circuit, pulse + The actual program is stored in the reference table attached to the schedule. - amp = circuit.Parameter('amp') + .. jupyter-execute:: - with pulse.build() as subroutine: - pulse.play(pulse.Gaussian(160, amp, 40), pulse.DriveChannel(0)) + print(pulse_prog.references) - with pulse.build() as main_prog: - pulse.call(subroutine, amp=0.1) - pulse.call(subroutine, amp=0.3) + In addition, you can call a parameterized target program with parameter assignment. - If there is any parameter name collision, you can distinguish them by specifying - each parameter object as a python dictionary. Otherwise ``amp1`` and ``amp2`` will be - updated with the same value. + .. jupyter-execute:: - .. code-block:: python + amp = circuit.Parameter("amp") - from qiskit import circuit, pulse + with pulse.build() as subroutine: + pulse.play(pulse.Gaussian(160, amp, 40), pulse.DriveChannel(0)) - amp1 = circuit.Parameter('amp') - amp2 = circuit.Parameter('amp') + with pulse.build() as pulse_prog: + pulse.call(subroutine, amp=0.1) + pulse.call(subroutine, amp=0.3) - with pulse.build() as subroutine: - pulse.play(pulse.Gaussian(160, amp1, 40), pulse.DriveChannel(0)) - pulse.play(pulse.Gaussian(160, amp2, 40), pulse.DriveChannel(1)) + print(pulse_prog) - with pulse.build() as main_prog: - pulse.call(subroutine, value_dict={amp1: 0.1, amp2: 0.2}) + If there is a name collision between parameters, you can distinguish them by specifying + each parameter object in a python dictionary. For example, + + .. jupyter-execute:: + + amp1 = circuit.Parameter('amp') + amp2 = circuit.Parameter('amp') + + with pulse.build() as subroutine: + pulse.play(pulse.Gaussian(160, amp1, 40), pulse.DriveChannel(0)) + pulse.play(pulse.Gaussian(160, amp2, 40), pulse.DriveChannel(1)) + + with pulse.build() as pulse_prog: + pulse.call(subroutine, value_dict={amp1: 0.1, amp2: 0.3}) + + print(pulse_prog) + + 2. Calling a schedule + + .. jupyter-execute:: + + x_sched = backend.instruction_schedule_map.get("x", (0,)) + + with pulse.build(backend) as pulse_prog: + pulse.call(x_sched) + + print(pulse_prog) + + Currently, the backend calibrated gates are provided in the form of :class:`~.Schedule`. + The parameter assignment mechanism is available also for schedules. + However, the called schedule is not treated as a reference. + + 3. Calling a quantum circuit + + .. jupyter-execute:: + + backend = FakeBogotaV2() + + qc = circuit.QuantumCircuit(1) + qc.x(0) + + with pulse.build(backend) as pulse_prog: + pulse.call(qc) + + print(pulse_prog) + + .. warning:: + + Calling a circuit from a schedule is not encouraged. Currently, the Qiskit execution model + is migrating toward the pulse gate model, where schedules are attached to + circuits through the :meth:`.QuantumCircuit.add_calibration` method. Args: target: Target circuit or pulse schedule to call. - name: Name of subroutine if defined. - value_dict: Parameter object and assigned value mapping. This is more precise way to - identify a parameter since mapping is managed with unique object id rather than - name. Especially there is any name collision in a parameter table. - kw_params: Parameter values to bind to the target subroutine - with string parameter names. If there are parameter name overlapping, - these parameters are updated with the same assigned value. + name: Optional. A unique name of subroutine if defined. When the name is explicitly + provided, one cannot call different schedule blocks with the same name. + value_dict: Optional. Parameters assigned to the ``target`` program. + If this dictionary is provided, the ``target`` program is copied and + then stored in the main built schedule and its parameters are assigned to the given values. + This dictionary is keyed on :class:`~.Parameter` objects, + allowing parameter name collision to be avoided. + kw_params: Alternative way to provide parameters. + Since this is keyed on the string parameter name, + the parameters having the same name are all updated together. + If you want to avoid name collision, use ``value_dict`` with :class:`~.Parameter` + objects instead. Raises: exceptions.PulseError: If the input ``target`` type is not supported. """ if not isinstance(target, (circuit.QuantumCircuit, Schedule, ScheduleBlock)): - raise exceptions.PulseError( - f'Target of type "{target.__class__.__name__}" is not supported.' - ) + raise exceptions.PulseError(f"'{target.__class__.__name__}' is not a valid target object.") - _active_builder().call_subroutine(target, name, value_dict, **kw_params) + _active_builder().call_subroutine( + subroutine=target, name=name, value_dict=value_dict, **kw_params + ) + + +def reference(name: str, *extra_keys: str): + """Refer to undefined subroutine by string keys. + + A :class:`~qiskit.pulse.instructions.Reference` instruction is implicitly created + and a schedule can be separately registered to the reference at a later stage. + + .. code-block:: python + + from qiskit import pulse + + with pulse.build() as main_prog: + pulse.reference("x_gate", "q0") + + with pulse.build() as subroutine: + pulse.play(pulse.Gaussian(160, 0.1, 40), pulse.DriveChannel(0)) + + main_prog.assign_references(subroutine_dict={("x_gate", "q0"): subroutine}) + + Args: + name: Name of subroutine. + extra_keys: Helper keys to uniquely specify the subroutine. + """ + _active_builder().append_reference(name, *extra_keys) # Directives diff --git a/qiskit/pulse/exceptions.py b/qiskit/pulse/exceptions.py index 272f8ceb4f93..21bda97ee1b9 100644 --- a/qiskit/pulse/exceptions.py +++ b/qiskit/pulse/exceptions.py @@ -37,3 +37,7 @@ class NoActiveBuilder(PulseError): class UnassignedDurationError(PulseError): """Raised if instruction duration is unassigned.""" + + +class UnassignedReferenceError(PulseError): + """Raised if subroutine is unassigned.""" diff --git a/qiskit/pulse/instructions/__init__.py b/qiskit/pulse/instructions/__init__.py index 5a980f8c1620..142a6e96e857 100644 --- a/qiskit/pulse/instructions/__init__.py +++ b/qiskit/pulse/instructions/__init__.py @@ -42,6 +42,7 @@ Acquire Call + Reference Delay Play SetFrequency @@ -63,3 +64,4 @@ from .phase import ShiftPhase, SetPhase from .play import Play from .snapshot import Snapshot +from .reference import Reference diff --git a/qiskit/pulse/instructions/acquire.py b/qiskit/pulse/instructions/acquire.py index 9555e9317938..f7d66bbfedd6 100644 --- a/qiskit/pulse/instructions/acquire.py +++ b/qiskit/pulse/instructions/acquire.py @@ -61,25 +61,33 @@ def __init__( discriminator: A ``Discriminator`` for discriminating kerneled IQ data into 0/1 results. name: Name of the instruction for display purposes. - - Raises: - PulseError: If channels are supplied, and the number of register and/or memory slots - does not equal the number of channels. """ - if isinstance(channel, list) or isinstance(mem_slot, list) or isinstance(reg_slot, list): - raise PulseError( - "The Acquire instruction takes only one AcquireChannel and one " - "classical memory destination for the measurement result." - ) - - if not (mem_slot or reg_slot): - raise PulseError("Neither MemorySlots nor RegisterSlots were supplied.") - super().__init__( operands=(duration, channel, mem_slot, reg_slot, kernel, discriminator), name=name, ) + def _validate(self): + """Called after initialization to validate instruction data. + + Raises: + PulseError: If the input ``channel`` is not type :class:`AcquireChannel`. + PulseError: If the input ``mem_slot`` is not type :class:`MemorySlot`. + PulseError: If the input ``reg_slot`` is not type :class:`RegisterSlot`. + PulseError: When memory slot and register slot are both empty. + """ + if not isinstance(self.channel, AcquireChannel): + raise PulseError(f"Expected an acquire channel, got {self.channel} instead.") + + if self.mem_slot and not isinstance(self.mem_slot, MemorySlot): + raise PulseError(f"Expected a memory slot, got {self.mem_slot} instead.") + + if self.reg_slot and not isinstance(self.reg_slot, RegisterSlot): + raise PulseError(f"Expected a register slot, got {self.reg_slot} instead.") + + if self.mem_slot is None and self.reg_slot is None: + raise PulseError("Neither MemorySlots nor RegisterSlots were supplied.") + @property def channel(self) -> AcquireChannel: """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is diff --git a/qiskit/pulse/instructions/call.py b/qiskit/pulse/instructions/call.py index 4f209f3d1a81..3353f23d0b4a 100644 --- a/qiskit/pulse/instructions/call.py +++ b/qiskit/pulse/instructions/call.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2020, 2021. +# (C) Copyright IBM 2020, 2021, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -49,9 +49,9 @@ def __init__( Raises: PulseError: If subroutine is not valid data format. """ - from qiskit.pulse.schedule import ScheduleBlock, Schedule + from qiskit.pulse.schedule import Schedule, ScheduleBlock - if not isinstance(subroutine, (ScheduleBlock, Schedule)): + if not isinstance(subroutine, (Schedule, ScheduleBlock)): raise PulseError(f"Subroutine type {subroutine.__class__.__name__} cannot be called.") value_dict = value_dict or {} @@ -112,18 +112,13 @@ def assigned_subroutine(self): return subroutine - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return any(isinstance(value, ParameterExpression) for value in self.arguments.values()) - @property def parameters(self) -> Set: """Unassigned parameters which determine the instruction behavior.""" params = set() for value in self._arguments.values(): if isinstance(value, ParameterExpression): - for param in value.parameters: - params.add(param) + params |= value.parameters return params @property @@ -156,7 +151,7 @@ def _get_arg_hash(self): """A helper function to generate hash of parameters.""" return hash(tuple(self.arguments.items())) - def __eq__(self, other: "Instruction") -> bool: + def __eq__(self, other: instruction.Instruction) -> bool: """Check if this instruction is equal to the `other` instruction. Instructions are equal if they share the same type, operands, and channels. diff --git a/qiskit/pulse/instructions/delay.py b/qiskit/pulse/instructions/delay.py index f045a4880ff3..e27353e09698 100644 --- a/qiskit/pulse/instructions/delay.py +++ b/qiskit/pulse/instructions/delay.py @@ -67,7 +67,3 @@ def channels(self) -> Tuple[Channel]: def duration(self) -> Union[int, ParameterExpression]: """Duration of this instruction.""" return self.operands[0] - - def is_parameterized(self) -> bool: - """Return ``True`` iff the instruction is parameterized.""" - return isinstance(self.duration, ParameterExpression) or super().is_parameterized() diff --git a/qiskit/pulse/instructions/frequency.py b/qiskit/pulse/instructions/frequency.py index 15866e0ae79a..a14e60ee1a32 100644 --- a/qiskit/pulse/instructions/frequency.py +++ b/qiskit/pulse/instructions/frequency.py @@ -16,8 +16,9 @@ from typing import Optional, Union, Tuple from qiskit.circuit.parameterexpression import ParameterExpression -from qiskit.pulse.channels import PulseChannel, PulseError +from qiskit.pulse.channels import PulseChannel from qiskit.pulse.instructions.instruction import Instruction +from qiskit.pulse.exceptions import PulseError class SetFrequency(Instruction): @@ -46,17 +47,18 @@ def __init__( frequency: New frequency of the channel in Hz. channel: The channel this instruction operates on. name: Name of this set channel frequency instruction. - Raises: - PulseError: If channel is not a PulseChannel. """ - if not isinstance(channel, PulseChannel): - raise PulseError( - "The `channel` argument to `SetFrequency` must be of type `channels.PulseChannel`." - ) - if not isinstance(frequency, ParameterExpression): - frequency = float(frequency) super().__init__(operands=(frequency, channel), name=name) + def _validate(self): + """Called after initialization to validate instruction data. + + Raises: + PulseError: If the input ``channel`` is not type :class:`PulseChannel`. + """ + if not isinstance(self.channel, PulseChannel): + raise PulseError(f"Expected a pulse channel, got {self.channel} instead.") + @property def frequency(self) -> Union[float, ParameterExpression]: """New frequency.""" @@ -79,10 +81,6 @@ def duration(self) -> int: """Duration of this instruction.""" return 0 - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return isinstance(self.frequency, ParameterExpression) or super().is_parameterized() - class ShiftFrequency(Instruction): """Shift the channel frequency away from the current frequency.""" @@ -99,17 +97,18 @@ def __init__( frequency: Frequency shift of the channel in Hz. channel: The channel this instruction operates on. name: Name of this set channel frequency instruction. - Raises: - PulseError: If channel is not a PulseChannel. """ - if not isinstance(frequency, ParameterExpression): - frequency = float(frequency) - if not isinstance(channel, PulseChannel): - raise PulseError( - "The `channel` argument to `ShiftFrequency` must be of type `channels.PulseChannel`." - ) super().__init__(operands=(frequency, channel), name=name) + def _validate(self): + """Called after initialization to validate instruction data. + + Raises: + PulseError: If the input ``channel`` is not type :class:`PulseChannel`. + """ + if not isinstance(self.channel, PulseChannel): + raise PulseError(f"Expected a pulse channel, got {self.channel} instead.") + @property def frequency(self) -> Union[float, ParameterExpression]: """Frequency shift from the set frequency.""" @@ -131,7 +130,3 @@ def channels(self) -> Tuple[PulseChannel]: def duration(self) -> int: """Duration of this instruction.""" return 0 - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return isinstance(self.frequency, ParameterExpression) or super().is_parameterized() diff --git a/qiskit/pulse/instructions/instruction.py b/qiskit/pulse/instructions/instruction.py index 5ddffab05e82..ae2225e2cb8d 100644 --- a/qiskit/pulse/instructions/instruction.py +++ b/qiskit/pulse/instructions/instruction.py @@ -24,6 +24,7 @@ from abc import ABC, abstractmethod from typing import Callable, Iterable, List, Optional, Set, Tuple +from qiskit.circuit import Parameter from qiskit.pulse.channels import Channel from qiskit.pulse.exceptions import PulseError @@ -46,16 +47,18 @@ def __init__( Args: operands: The argument list. name: Optional display name for this instruction. - - Raises: - PulseError: If duration is negative. - PulseError: If the input ``channels`` are not all of - type :class:`Channel`. """ self._operands = operands self._name = name self._hash = None + self._validate() + def _validate(self): + """Called after initialization to validate instruction data. + + Raises: + PulseError: If the input ``channels`` are not all of type :class:`Channel`. + """ for channel in self.channels: if not isinstance(channel, Channel): raise PulseError(f"Expected a channel, got {channel} instead.") @@ -197,16 +200,25 @@ def append(self, schedule, name: Optional[str] = None): @property def parameters(self) -> Set: """Parameters which determine the instruction behavior.""" + + def _get_parameters_recursive(obj): + params = set() + if hasattr(obj, "parameters"): + for param in obj.parameters: + if isinstance(param, Parameter): + params.add(param) + else: + params |= _get_parameters_recursive(param) + return params + parameters = set() for op in self.operands: - if hasattr(op, "parameters"): - for op_param in op.parameters: - parameters.add(op_param) + parameters |= _get_parameters_recursive(op) return parameters def is_parameterized(self) -> bool: """Return True iff the instruction is parameterized.""" - return any(chan.is_parameterized() for chan in self.channels) + return any(self.parameters) def draw( self, diff --git a/qiskit/pulse/instructions/phase.py b/qiskit/pulse/instructions/phase.py index d8db037a5aa1..21f46dfb5f72 100644 --- a/qiskit/pulse/instructions/phase.py +++ b/qiskit/pulse/instructions/phase.py @@ -18,8 +18,9 @@ from typing import Optional, Union, Tuple from qiskit.circuit import ParameterExpression -from qiskit.pulse.channels import PulseChannel, PulseError +from qiskit.pulse.channels import PulseChannel from qiskit.pulse.instructions.instruction import Instruction +from qiskit.pulse.exceptions import PulseError class ShiftPhase(Instruction): @@ -52,15 +53,17 @@ def __init__( phase: The rotation angle in radians. channel: The channel this instruction operates on. name: Display name for this instruction. + """ + super().__init__(operands=(phase, channel), name=name) + + def _validate(self): + """Called after initialization to validate instruction data. Raises: - PulseError: If channel is not a PulseChannel. + PulseError: If the input ``channel`` is not type :class:`PulseChannel`. """ - if not isinstance(channel, PulseChannel): - raise PulseError( - "The `channel` argument to `ShiftPhase` must be of type `channels.PulseChannel`." - ) - super().__init__(operands=(phase, channel), name=name) + if not isinstance(self.channel, PulseChannel): + raise PulseError(f"Expected a pulse channel, got {self.channel} instead.") @property def phase(self) -> Union[complex, ParameterExpression]: @@ -84,10 +87,6 @@ def duration(self) -> int: """Duration of this instruction.""" return 0 - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return isinstance(self.phase, ParameterExpression) or super().is_parameterized() - class SetPhase(Instruction): r"""The set phase instruction sets the phase of the proceeding pulses on that channel @@ -115,15 +114,18 @@ def __init__( phase: The rotation angle in radians. channel: The channel this instruction operates on. name: Display name for this instruction. - Raises: - PulseError: If channel is not a PulseChannel. """ - if not isinstance(channel, PulseChannel): - raise PulseError( - "The `channel` argument to `SetPhase` must be of type `channels.PulseChannel`." - ) super().__init__(operands=(phase, channel), name=name) + def _validate(self): + """Called after initialization to validate instruction data. + + Raises: + PulseError: If the input ``channel`` is not type :class:`PulseChannel`. + """ + if not isinstance(self.channel, PulseChannel): + raise PulseError(f"Expected a pulse channel, got {self.channel} instead.") + @property def phase(self) -> Union[complex, ParameterExpression]: """Return the rotation angle enacted by this instruction in radians.""" @@ -145,7 +147,3 @@ def channels(self) -> Tuple[PulseChannel]: def duration(self) -> int: """Duration of this instruction.""" return 0 - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return isinstance(self.phase, ParameterExpression) or super().is_parameterized() diff --git a/qiskit/pulse/instructions/play.py b/qiskit/pulse/instructions/play.py index 41effc205d83..4be3fd113f47 100644 --- a/qiskit/pulse/instructions/play.py +++ b/qiskit/pulse/instructions/play.py @@ -39,20 +39,24 @@ def __init__(self, pulse: Pulse, channel: PulseChannel, name: Optional[str] = No :py:class:`~qiskit.pulse.library.Waveform`. channel: The channel to which the pulse is applied. name: Name of the instruction for display purposes. Defaults to ``pulse.name``. - - Raises: - PulseError: If pulse is not a Pulse type, or channel is not a PulseChannel. """ - if not isinstance(pulse, Pulse): - raise PulseError("The `pulse` argument to `Play` must be of type `library.Pulse`.") - if not isinstance(channel, PulseChannel): - raise PulseError( - "The `channel` argument to `Play` must be of type `channels.PulseChannel`." - ) if name is None: name = pulse.name super().__init__(operands=(pulse, channel), name=name) + def _validate(self): + """Called after initialization to validate instruction data. + + Raises: + PulseError: If pulse is not a Pulse type. + PulseError: If the input ``channel`` is not type :class:`PulseChannel`. + """ + if not isinstance(self.pulse, Pulse): + raise PulseError("The `pulse` argument to `Play` must be of type `library.Pulse`.") + + if not isinstance(self.channel, PulseChannel): + raise PulseError(f"Expected a pulse channel, got {self.channel} instead.") + @property def pulse(self) -> Pulse: """A description of the samples that will be played.""" @@ -79,16 +83,14 @@ def duration(self) -> Union[int, ParameterExpression]: def parameters(self) -> Set: """Parameters which determine the instruction behavior.""" parameters = set() + + # Note that Pulse.parameters returns dict rather than set for convention. + # We need special handling for Play instruction. for pulse_param_expr in self.pulse.parameters.values(): if isinstance(pulse_param_expr, ParameterExpression): - for pulse_param in pulse_param_expr.parameters: - parameters.add(pulse_param) + parameters = parameters | pulse_param_expr.parameters + if self.channel.is_parameterized(): - for ch_param in self.channel.parameters: - parameters.add(ch_param) + parameters = parameters | self.channel.parameters return parameters - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return self.pulse.is_parameterized() or super().is_parameterized() diff --git a/qiskit/pulse/instructions/reference.py b/qiskit/pulse/instructions/reference.py new file mode 100644 index 000000000000..e37c0444c419 --- /dev/null +++ b/qiskit/pulse/instructions/reference.py @@ -0,0 +1,99 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Reference instruction that is a placeholder for subroutine.""" + +from typing import Union, Tuple, Set + +from qiskit.circuit.parameterexpression import ParameterExpression +from qiskit.pulse.channels import Channel +from qiskit.pulse.exceptions import PulseError, UnassignedReferenceError +from qiskit.pulse.instructions import instruction + + +class Reference(instruction.Instruction): + """Pulse compiler directive that refers to a subroutine. + + If a pulse program uses the same subset of instructions multiple times, then + using the :class:`~.Reference` class may significantly reduce the memory footprint of + the program. This instruction only stores the set of strings to identify the subroutine. + + The actual pulse program can be stored in the :attr:`ScheduleBlock.references` of the + :class:`.ScheduleBlock` that this reference instruction belongs to. + + You can later assign schedules with the :meth:`ScheduleBlock.assign_references` method. + This allows you to build the main program without knowing the actual subroutine, + that is supplied at a later time. + """ + + # Delimiter for representing nested scope. + scope_delimiter = "::" + + # Delimiter for tuple keys. + key_delimiter = "," + + def __init__(self, name: str, *extra_keys: str): + """Create new reference. + + Args: + name: Name of subroutine. + extra_keys: Optional. A set of string keys that may be necessary to + refer to a particular subroutine. For example, when we use + "sx" as a name to refer to the subroutine of an sx pulse, + this name might be used among schedules for different qubits. + In this example, you may specify "q0" in the extra keys + to distinguish the sx schedule for qubit 0 from others. + The user can use an arbitrary number of extra string keys to + uniquely determine the subroutine. + """ + # Run validation + ref_keys = (name,) + tuple(extra_keys) + super().__init__(operands=ref_keys, name=name) + + def _validate(self): + """Called after initialization to validate instruction data. + + Raises: + PulseError: When a key is not a string. + PulseError: When a key in ``ref_keys`` contains the scope delimiter. + """ + for key in self.ref_keys: + if not isinstance(key, str): + raise PulseError(f"Keys must be strings. '{repr(key)}' is not a valid object.") + if self.scope_delimiter in key or self.key_delimiter in key: + raise PulseError( + f"'{self.scope_delimiter}' and '{self.key_delimiter}' are reserved. " + f"'{key}' is not a valid key string." + ) + + @property + def ref_keys(self) -> Tuple[str, ...]: + """Returns unique key of the subroutine.""" + return self.operands + + @property + def duration(self) -> Union[int, ParameterExpression]: + """Duration of this instruction.""" + raise UnassignedReferenceError(f"Subroutine is not assigned to {self.ref_keys}.") + + @property + def channels(self) -> Tuple[Channel, ...]: + """Returns the channels that this schedule uses.""" + raise UnassignedReferenceError(f"Subroutine is not assigned to {self.ref_keys}.") + + @property + def parameters(self) -> Set: + """Parameters which determine the instruction behavior.""" + return set() + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.key_delimiter.join(self.ref_keys)})" diff --git a/qiskit/pulse/instructions/snapshot.py b/qiskit/pulse/instructions/snapshot.py index a4b09f7e2155..b78858b5d2c0 100644 --- a/qiskit/pulse/instructions/snapshot.py +++ b/qiskit/pulse/instructions/snapshot.py @@ -32,17 +32,22 @@ def __init__(self, label: str, snapshot_type: str = "statevector", name: Optiona The types of snapshots offered are defined by the simulator used. name: Snapshot name which defaults to ``label``. This parameter is only for display purposes and is not taken into account during comparison. - - Raises: - PulseError: If snapshot label is invalid. """ - if not isinstance(label, str): - raise PulseError("Snapshot label must be a string.") self._channel = SnapshotChannel() + if name is None: name = label super().__init__(operands=(label, snapshot_type), name=name) + def _validate(self): + """Called after initialization to validate instruction data. + + Raises: + PulseError: If snapshot label is invalid. + """ + if not isinstance(self.label, str): + raise PulseError("Snapshot label must be a string.") + @property def label(self) -> str: """Label of snapshot.""" diff --git a/qiskit/pulse/parameter_manager.py b/qiskit/pulse/parameter_manager.py index 7a0bbefdebae..330df026ee23 100644 --- a/qiskit/pulse/parameter_manager.py +++ b/qiskit/pulse/parameter_manager.py @@ -50,7 +50,7 @@ Note that we don't need to write any parameter management logic for each object, and thus this parameter framework gives greater scalability to the pulse module. """ -from copy import deepcopy, copy +from copy import copy from typing import List, Dict, Set, Any, Union from qiskit.circuit.parameter import Parameter @@ -135,9 +135,9 @@ def visit_ScheduleBlock(self, node: ScheduleBlock): .. note:: ``ScheduleBlock`` can have parameters in blocks and its alignment. """ - # accessing to protected member - node._blocks = [self.visit(block) for block in node.blocks] node._alignment_context = self.visit_AlignmentKind(node.alignment_context) + for elm in node._blocks: + self.visit(elm) self._update_parameter_manager(node) return node @@ -258,29 +258,29 @@ def generic_visit(self, node: Any): def _assign_parameter_expression(self, param_expr: ParameterExpression): """A helper function to assign parameter value to parameter expression.""" new_value = copy(param_expr) - for parameter in param_expr.parameters: - if parameter in self._param_map: - new_value = new_value.assign(parameter, self._param_map[parameter]) + updated = param_expr.parameters & self._param_map.keys() + for param in updated: + new_value = new_value.assign(param, self._param_map[param]) return format_parameter_value(new_value) def _update_parameter_manager(self, node: Union[Schedule, ScheduleBlock]): """A helper function to update parameter manager of pulse program.""" - new_parameters = set() + if not hasattr(node, "_parameter_manager"): + raise PulseError(f"Node type {node.__class__.__name__} has no parameter manager.") - for parameter in node.parameters: - if parameter in self._param_map: - value = self._param_map[parameter] - if isinstance(value, ParameterExpression): - for new_parameter in value.parameters: - new_parameters.add(new_parameter) - else: - new_parameters.add(parameter) + param_manager = node._parameter_manager + updated = param_manager.parameters & self._param_map.keys() - if hasattr(node, "_parameter_manager"): - node._parameter_manager._parameters = new_parameters - else: - raise PulseError(f"Node type {node.__class__.__name__} has no parameter manager.") + new_parameters = set() + for param in param_manager.parameters: + if param not in updated: + new_parameters.add(param) + continue + new_value = self._param_map[param] + if isinstance(new_value, ParameterExpression): + new_parameters |= new_value.parameters + param_manager._parameters = new_parameters class ParameterGetter(NodeVisitor): @@ -300,18 +300,19 @@ def visit_ScheduleBlock(self, node: ScheduleBlock): .. note:: ``ScheduleBlock`` can have parameters in blocks and its alignment. """ - for parameter in node.parameters: - self.parameters.add(parameter) + # Note that node.parameters returns parameters of main program with subroutines. + # The manager of main program is not aware of parameters in subroutines. + self.parameters |= node._parameter_manager.parameters def visit_Schedule(self, node: Schedule): """Visit ``Schedule``. Recursively visit schedule children and search parameters.""" - for parameter in node.parameters: - self.parameters.add(parameter) + self.parameters |= node.parameters def visit_AlignmentKind(self, node: AlignmentKind): """Get parameters from block's ``AlignmentKind`` specification.""" for param in node._context_params: - self.visit(param) + if isinstance(param, ParameterExpression): + self.parameters |= param.parameters # Mid layer: Get parameters from instructions @@ -321,14 +322,13 @@ def visit_Call(self, node: instructions.Call): .. note:: ``Call`` instruction has a special parameter handling logic. This instruction separately keeps parameters and program. """ - for parameter in node.parameters: - self.parameters.add(parameter) + self.parameters |= node.parameters def visit_Instruction(self, node: instructions.Instruction): """Get parameters from general pulse instruction. .. note:: All parametrized object should be stored in the operands. - Otherwise parameter cannot be detected. + Otherwise, parameter cannot be detected. """ for op in node.operands: self.visit(op) @@ -337,20 +337,19 @@ def visit_Instruction(self, node: instructions.Instruction): def visit_Channel(self, node: channels.Channel): """Get parameters from ``Channel`` object.""" - if isinstance(node.index, ParameterExpression): - self._add_parameters(node.index) + self.parameters |= node.parameters def visit_ParametricPulse(self, node: ParametricPulse): """Get parameters from ``ParametricPulse`` object.""" for op_value in node.parameters.values(): if isinstance(op_value, ParameterExpression): - self._add_parameters(op_value) + self.parameters |= op_value.parameters def visit_SymbolicPulse(self, node: SymbolicPulse): """Get parameters from ``SymbolicPulse`` object.""" for op_value in node.parameters.values(): if isinstance(op_value, ParameterExpression): - self._add_parameters(op_value) + self.parameters |= op_value.parameters def visit_Waveform(self, node: Waveform): """Get parameters from ``Waveform`` object. @@ -362,12 +361,7 @@ def visit_Waveform(self, node: Waveform): def generic_visit(self, node: Any): """Get parameters from object that doesn't belong to Qiskit Pulse module.""" if isinstance(node, ParameterExpression): - self._add_parameters(node) - - def _add_parameters(self, param_expr: ParameterExpression): - """A helper function to get parameters from parameter expression.""" - for parameter in param_expr.parameters: - self.parameters.add(parameter) + self.parameters |= node.parameters class ParameterManager: @@ -385,10 +379,14 @@ def __init__(self): self._parameters = set() @property - def parameters(self) -> Set: + def parameters(self) -> Set[Parameter]: """Parameters which determine the schedule behavior.""" return self._parameters + def clear(self): + """Remove the parameters linked to this manager.""" + self._parameters.clear() + def is_parameterized(self) -> bool: """Return True iff the instruction is parameterized.""" return bool(self.parameters) @@ -411,7 +409,6 @@ def assign_parameters( self, pulse_program: Any, value_dict: Dict[ParameterExpression, ParameterValueType], - inplace: bool = True, ) -> Any: """Modify and return program data with parameters assigned according to the input. @@ -419,21 +416,15 @@ def assign_parameters( pulse_program: Arbitrary pulse program associated with this manager instance. value_dict: A mapping from Parameters to either numeric values or another Parameter expression. - inplace: Set ``True`` to overwrite existing program data. Returns: Updated program data. """ - if inplace: - source = pulse_program - else: - source = deepcopy(pulse_program) - - valid_map = {par: val for par, val in value_dict.items() if par in self.parameters} + valid_map = {k: value_dict[k] for k in value_dict.keys() & self._parameters} if valid_map: visitor = ParameterSetter(param_map=valid_map) - return visitor.visit(source) - return source + return visitor.visit(pulse_program) + return pulse_program def update_parameter_table(self, new_node: Any): """A helper function to update parameter table with given data node. @@ -443,6 +434,4 @@ def update_parameter_table(self, new_node: Any): """ visitor = ParameterGetter() visitor.visit(new_node) - - for parameter in visitor.parameters: - self._parameters.add(parameter) + self._parameters |= visitor.parameters diff --git a/qiskit/pulse/reference_manager.py b/qiskit/pulse/reference_manager.py new file mode 100644 index 000000000000..9016fa7efaec --- /dev/null +++ b/qiskit/pulse/reference_manager.py @@ -0,0 +1,58 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Management of schedule block references.""" + +from typing import Tuple +from collections import UserDict +from qiskit.pulse.exceptions import PulseError + + +class ReferenceManager(UserDict): + """Dictionary wrapper to manage pulse schedule references.""" + + def unassigned(self) -> Tuple[Tuple[str, ...], ...]: + """Get the keys of unassigned references. + + Returns: + Tuple of reference keys. + """ + keys = [] + for key, value in self.items(): + if value is None: + keys.append(key) + return tuple(keys) + + def __setitem__(self, key, value): + if key in self and self[key] is not None: + # Check subroutine conflict. + if self[key] != value: + raise PulseError( + f"Subroutine {key} is already assigned to the reference of the current scope, " + "however, the newly assigned schedule conflicts with the existing schedule. " + "This operation was not successfully done." + ) + return + super().__setitem__(key, value) + + def __repr__(self): + keys = ", ".join(map(repr, self.keys())) + return f"{self.__class__.__name__}(references=[{keys}])" + + def __str__(self): + out = f"{self.__class__.__name__}:" + for key, reference in self.items(): + prog_repr = repr(reference) + if len(prog_repr) > 50: + prog_repr = prog_repr[:50] + "..." + out += f"\n - {repr(key)}: {prog_repr}" + return out diff --git a/qiskit/pulse/schedule.py b/qiskit/pulse/schedule.py index 843e6030ebf3..9d0561c11c6d 100644 --- a/qiskit/pulse/schedule.py +++ b/qiskit/pulse/schedule.py @@ -36,17 +36,21 @@ import functools import itertools import multiprocessing as mp +import re import sys +import warnings from typing import List, Tuple, Iterable, Union, Dict, Callable, Set, Optional, Any import numpy as np +import retworkx as rx from qiskit.circuit.parameter import Parameter from qiskit.circuit.parameterexpression import ParameterExpression, ParameterValueType from qiskit.pulse.channels import Channel -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.instructions import Instruction +from qiskit.pulse.exceptions import PulseError, UnassignedReferenceError +from qiskit.pulse.instructions import Instruction, Reference from qiskit.pulse.utils import instruction_duration_validation +from qiskit.pulse.reference_manager import ReferenceManager from qiskit.utils.multiprocessing import is_main_process @@ -722,9 +726,11 @@ def assign_parameters( Returns: Schedule with updated parameters. """ - return self._parameter_manager.assign_parameters( - pulse_program=self, value_dict=value_dict, inplace=inplace - ) + if not inplace: + new_schedule = copy.deepcopy(self) + return new_schedule.assign_parameters(value_dict, inplace=True) + + return self._parameter_manager.assign_parameters(pulse_program=self, value_dict=value_dict) def get_parameters(self, parameter_name: str) -> List[Parameter]: """Get parameter object bound to this schedule by string name. @@ -814,69 +820,193 @@ def wrapper(self, *args, **kwargs): class ScheduleBlock: - r"""A ``ScheduleBlock`` is a time-ordered sequence of instructions and transform macro to - manage their relative timing. The relative position of the instructions is managed by - the ``alignment_context``. This allows ``ScheduleBlock`` to support instructions with - a parametric duration and allows the lazy scheduling of instructions, - i.e. allocating the instruction time just before execution. + """Time-ordered sequence of instructions with alignment context. + + :class:`.ScheduleBlock` supports lazy scheduling of context instructions, + i.e. their timeslots is always generated at runtime. + This indicates we can parametrize instruction durations as well as + other parameters. In contrast to :class:`.Schedule` being somewhat static, + :class:`.ScheduleBlock` is a dynamic representation of a pulse program. + + .. rubric:: Pulse Builder + + The Qiskit pulse builder is a domain specific language that is developed on top of + the schedule block. Use of the builder syntax will improve the workflow of + pulse programming. See :ref:`pulse_builder` for a user guide. + + .. rubric:: Alignment contexts + + A schedule block is always relatively scheduled. + Instead of taking individual instructions with absolute execution time ``t0``, + the schedule block defines a context of scheduling and instructions + under the same context are scheduled in the same manner (alignment). + Several contexts are available in :ref:`pulse_alignments`. + A schedule block is instantiated with one of these alignment contexts. + The default context is :class:`AlignLeft`, for which all instructions are left-justified, + in other words, meaning they use as-soon-as-possible scheduling. + + If you need an absolute-time interval in between instructions, you can explicitly + insert :class:`~qiskit.pulse.instructions.Delay` instructions. + + .. rubric:: Nested blocks + + A schedule block can contain other nested blocks with different alignment contexts. + This enables advanced scheduling, where a subset of instructions is + locally scheduled in a different manner. + Note that a :class:`.Schedule` instance cannot be directly added to a schedule block. + To add a :class:`.Schedule` instance, wrap it in a :class:`.Call` instruction. + This is implicitly performed when a schedule is added through the :ref:`pulse_builder`. + + .. rubric:: Unsupported operations + + Because the schedule block representation lacks timeslots, it cannot + perform particular :class:`.Schedule` operations such as :meth:`insert` or :meth:`shift` that + require instruction start time ``t0``. + In addition, :meth:`exclude` and :meth:`filter` methods are not supported + because these operations may identify the target instruction with ``t0``. + Except for these operations, :class:`.ScheduleBlock` provides full compatibility + with :class:`.Schedule`. + + .. rubric:: Subroutine + + The timeslots-free representation offers much greater flexibility for writing pulse programs. + Because :class:`.ScheduleBlock` only cares about the ordering of the child blocks + we can add an undefined pulse sequence as a subroutine of the main program. + If your program contains the same sequence multiple times, this representation may + reduce the memory footprint required by the program construction. + Such a subroutine is realized by the special compiler directive + :class:`~qiskit.pulse.instructions.Reference` that is defined by + a unique set of reference key strings to the subroutine. + The (executable) subroutine is separately stored in the main program. + Appended reference directives are resolved when the main program is executed. + Subroutines must be assigned through :meth:`assign_references` before execution. + + .. rubric:: Program Scoping + + When you call a subroutine from another subroutine, or append a schedule block + to another schedule block, the management of references and parameters + can be a hard task. Schedule block offers a convenient feature to help with this + by automatically scoping the parameters and subroutines. + + .. jupyter-execute:: + + from qiskit import pulse + from qiskit.circuit.parameter import Parameter + + amp1 = Parameter("amp") + + with pulse.build() as sched1: + pulse.play(pulse.Constant(100, amp1), pulse.DriveChannel(0)) + + print(sched1.scoped_parameters()) + + The :meth:`~ScheduleBlock.scoped_parameters` method returns all :class:`~.Parameter` + objects defined in the schedule block. The parameter name is updated to reflect + its scope information, i.e. where it is defined. + The outer scope is called "root". Since the "amp" parameter is directly used + in the current builder context, it is prefixed with "root". + Note that the :class:`Parameter` object returned by :meth:`~ScheduleBlock.scoped_parameters` + preserves the hidden `UUID`_ key, and thus the scoped name doesn't break references + to the original :class:`Parameter`. + + You may want to call this program from another program. + In this example, the program is called with the reference key "grand_child". + You can call a subroutine without specifying a substantial program + (like ``sched1`` above which we will assign later). + + .. jupyter-execute:: - ``ScheduleBlock``\ s should be initialized with one of the following alignment contexts: + amp2 = Parameter("amp") - - :class:`~qiskit.pulse.transforms.AlignLeft`: Align instructions in the - `as-soon-as-possible` manner. Instructions are scheduled at the earliest - possible time on the channel. + with pulse.build() as sched2: + with pulse.align_right(): + pulse.reference("grand_child") + pulse.play(pulse.Constant(200, amp2), pulse.DriveChannel(0)) - - :class:`~qiskit.pulse.transforms.AlignRight`: Align instructions in the - `as-late-as-possible` manner. Instructions are scheduled at the latest - possible time on the channel. + print(sched2.scoped_parameters()) - - :class:`~qiskit.pulse.transforms.AlignSequential`: Align instructions sequentially - even though they are allocated in different channels. + This only returns "root::amp" because the "grand_child" reference is unknown. + Now you assign the actual pulse program to this reference. - - :class:`~qiskit.pulse.transforms.AlignEquispaced`: Align instructions with - equal interval within a specified duration. Instructions on different channels - are aligned sequentially. + .. jupyter-execute:: - - :class:`~qiskit.pulse.transforms.AlignFunc`: Align instructions with - arbitrary position within the given duration. The position is specified by - a callback function taking a pulse index ``j`` and returning a - fractional coordinate in [0, 1]. + sched2.assign_references({("grand_child", ): sched1}) + print(sched2.scoped_parameters()) - The ``ScheduleBlock`` defaults to the ``AlignLeft`` alignment. - The timing overlap constraint of instructions is not immediately evaluated, - and thus we can assign a parameter object to the instruction duration. - Instructions are implicitly scheduled at optimum time when the program is executed. + Now you get two parameters "root::amp" and "root::grand_child::amp". + The second parameter name indicates it is defined within the referred program "grand_child". + The program calling the "grand_child" has a reference program description + which is accessed through :attr:`ScheduleBlock.references`. - Note that ``ScheduleBlock`` can contain :class:`~qiskit.pulse.instructions.Instruction` - and other ``ScheduleBlock`` to build an experimental program, but ``Schedule`` is not - supported. This should be added as a :class:`~qiskit.pulse.instructions.Call` instruction. - This conversion is automatically performed with the pulse builder. + .. jupyter-execute:: - By using ``ScheduleBlock`` representation we can fully parametrize pulse waveforms. - For example, Rabi schedule generator can be defined as + print(sched2.references) - .. code-block:: python + Finally, you may want to call this program from another program. + Here we try a different approach to define subroutine. Namely, we call + a subroutine from the root program with the actual program ``sched2``. - duration = Parameter('rabi_dur') - amp = Parameter('rabi_amp') + .. jupyter-execute:: - block = ScheduleBlock() - rabi_pulse = pulse.Gaussian(duration=duration, amp=amp, sigma=duration/4) + amp3 = Parameter("amp") - block += Play(rabi_pulse, pulse.DriveChannel(0)) - block += Call(measure_schedule) + with pulse.build() as main: + pulse.play(pulse.Constant(300, amp3), pulse.DriveChannel(0)) + pulse.call(sched2, name="child") - Note that such waveform cannot be appended to the ``Schedule`` representation. + print(main.scoped_parameters()) - In the block representation, the interval between two instructions can be - managed with the ``Delay`` instruction. Because the schedule block lacks an instruction - start time ``t0``, we cannot ``insert`` or ``shift`` the target instruction. - In addition, stored instructions are not interchangable because the schedule block is - sensitive to the relative position of instructions. - Apart from these differences, the block representation can provide compatible - functionality with ``Schedule`` representation. + This implicitly creates a reference named "child" within + the root program and assigns ``sched2`` to it. + You get three parameters "root::amp", "root::child::amp", and "root::child::grand_child::amp". + As you can see, each parameter name reflects the layer of calls from the root program. + If you know the scope of a parameter, you can directly get the parameter object + using :meth:`ScheduleBlock.search_parameters` as follows. + + .. jupyter-execute:: + + main.search_parameters("root::child::grand_child::amp") + + You can use a regular expression to specify the scope. + The following returns the parameters defined within the scope of "ground_child" + regardless of its parent scope. This is sometimes convenient if you + want to extract parameters from a deeply nested program. + + .. jupyter-execute:: + + main.search_parameters("\\S::grand_child::amp") + + Note that the root program is only aware of its direct references. + + .. jupyter-execute:: + + print(main.references) + + As you can see the main program cannot directly assign a subroutine to the "grand_child" because + this subroutine is not called within the root program, i.e. it is indirectly called by "child". + However, the returned :class:`.ReferenceManager` is a dict-like object, and you can still + reach to "grand_child" via the "child" program with the following chained dict access. + + .. jupyter-execute:: + + main.references[("child", )].references[("grand_child", )] + + Note that :attr:`ScheduleBlock.parameters` and :meth:`ScheduleBlock.scoped_parameters()` + still collect all parameters also from the subroutine once it's assigned. + + .. _UUID: https://docs.python.org/3/library/uuid.html#module-uuid """ + __slots__ = ( + "_parent", + "_name", + "_reference_manager", + "_parameter_manager", + "_alignment_context", + "_blocks", + "_metadata", + ) + # Prefix to use for auto naming. prefix = "block" @@ -896,6 +1026,7 @@ def __init__( used in the schedule. alignment_context (AlignmentKind): ``AlignmentKind`` instance that manages scheduling of instructions in this block. + Raises: TypeError: if metadata is not a dict. """ @@ -907,19 +1038,27 @@ def __init__( if sys.platform != "win32" and not is_main_process(): name += f"-{mp.current_process().pid}" + # This points to the parent schedule object in the current scope. + # Note that schedule block can be nested without referencing, e.g. .append(child_block), + # and parent=None indicates the root program of the current scope. + # The nested schedule block objects should not have _reference_manager and + # should refer to the one of the root program. + # This also means referenced program should be assigned to the root program, not to child. + self._parent = None + self._name = name self._parameter_manager = ParameterManager() - - if not isinstance(metadata, dict) and metadata is not None: - raise TypeError("Only a dictionary or None is accepted for schedule metadata") - self._metadata = metadata or {} - + self._reference_manager = ReferenceManager() self._alignment_context = alignment_context or AlignLeft() self._blocks = [] # get parameters from context self._parameter_manager.update_parameter_table(self._alignment_context) + if not isinstance(metadata, dict) and metadata is not None: + raise TypeError("Only a dictionary or None is accepted for schedule metadata") + self._metadata = metadata or {} + @classmethod def initialize_from(cls, other_program: Any, name: Optional[str] = None) -> "ScheduleBlock": """Create new schedule object with metadata of another schedule object. @@ -932,7 +1071,7 @@ def initialize_from(cls, other_program: Any, name: Optional[str] = None) -> "Sch New block object with name and metadata. Raises: - PulseError: When `other_program` does not provide necessary information. + PulseError: When ``other_program`` does not provide necessary information. """ try: name = name or other_program.name @@ -956,7 +1095,7 @@ def initialize_from(cls, other_program: Any, name: Optional[str] = None) -> "Sch @property def name(self) -> str: - """Name of this Schedule""" + """Return name of this schedule""" return self._name @property @@ -987,17 +1126,20 @@ def alignment_context(self): def is_schedulable(self) -> bool: """Return ``True`` if all durations are assigned.""" # check context assignment - for context_param in self.alignment_context._context_params: + for context_param in self._alignment_context._context_params: if isinstance(context_param, ParameterExpression): return False # check duration assignment - for block in self.blocks: - if isinstance(block, ScheduleBlock): - if not block.is_schedulable(): + for elm in self.blocks: + if isinstance(elm, ScheduleBlock): + if not elm.is_schedulable(): return False else: - if not isinstance(block.duration, int): + try: + if not isinstance(elm.duration, int): + return False + except UnassignedReferenceError: return False return True @@ -1009,11 +1151,15 @@ def duration(self) -> int: @property def channels(self) -> Tuple[Channel]: - """Returns channels that this schedule clock uses.""" + """Returns channels that this schedule block uses.""" chans = set() - for block in self.blocks: - for chan in block.channels: - chans.add(chan) + for elm in self.blocks: + if isinstance(elm, Reference): + raise UnassignedReferenceError( + f"This schedule contains unassigned reference {elm.ref_keys} " + "and channels are ambiguous. Please assign the subroutine first." + ) + chans = chans | set(elm.channels) return tuple(chans) @property @@ -1024,13 +1170,63 @@ def instructions(self) -> Tuple[Tuple[int, Instruction]]: @property def blocks(self) -> Tuple["BlockComponent", ...]: - """Get the time-ordered instructions from self.""" - return tuple(self._blocks) + """Get the block elements added to self. + + .. note:: + + The sequence of elements is returned in order of addition. Because the first element is + schedule first, e.g. FIFO, the returned sequence is roughly time-ordered. + However, in the parallel alignment context, especially in + the as-late-as-possible scheduling, or :class:`.AlignRight` context, + the actual timing of when the instructions are issued is unknown until + the :class:`.ScheduleBlock` is scheduled and converted into a :class:`.Schedule`. + """ + blocks = [] + for elm in self._blocks: + if isinstance(elm, Reference): + elm = self.references.get(elm.ref_keys, None) or elm + blocks.append(elm) + return tuple(blocks) @property - def parameters(self) -> Set: - """Parameters which determine the schedule behavior.""" - return self._parameter_manager.parameters + def parameters(self) -> Set[Parameter]: + """Return unassigned parameters with raw names.""" + # Need new object not to mutate parameter_manager.parameters + out_params = set() + + out_params |= self._parameter_manager.parameters + for subroutine in self.references.values(): + if subroutine is None: + continue + out_params |= subroutine.parameters + + return out_params + + def scoped_parameters(self) -> Tuple[Parameter]: + """Return unassigned parameters with scoped names. + + .. note:: + + If a parameter is defined within a nested scope, + it is prefixed with all parent-scope names with the delimiter string, + which is "::". If a reference key of the scope consists of + multiple key strings, it will be represented by a single string joined with ",". + For example, "root::xgate,q0::amp" for the parameter "amp" defined in the + reference specified by the key strings ("xgate", "q0"). + """ + return tuple( + sorted( + _collect_scoped_parameters(self, current_scope="root").values(), + key=lambda p: p.name, + ) + ) + + @property + def references(self) -> ReferenceManager: + """Return a reference manager of the current scope.""" + if self._parent is not None: + return self._parent.references + return self._reference_manager @_require_schedule_conversion def ch_duration(self, *channels: Channel) -> int: @@ -1050,7 +1246,7 @@ def append( Args: block: ScheduleBlock to be appended. name: Name of the new ``Schedule``. Defaults to name of ``self``. - inplace: Perform operation inplace on this schedule. Otherwise + inplace: Perform operation inplace on this schedule. Otherwise, return a new ``Schedule``. Returns: @@ -1066,15 +1262,41 @@ def append( ) if not inplace: - ret_block = copy.deepcopy(self) - ret_block._name = name or self.name - ret_block.append(block, inplace=True) - return ret_block - else: - self._blocks.append(block) - self._parameter_manager.update_parameter_table(block) + schedule = copy.deepcopy(self) + schedule._name = name or self.name + schedule.append(block, inplace=True) + return schedule + + if isinstance(block, Reference) and block.ref_keys not in self.references: + self.references[block.ref_keys] = None + + elif isinstance(block, ScheduleBlock): + block = copy.deepcopy(block) + # Expose subroutines to the current main scope. + # Note that this 'block' is not called. + # The block is just directly appended to the current scope. + if block.is_referenced(): + if block._parent is not None: + # This is an edge case: + # If this is not a parent, block.references points to the parent's reference + # where subroutine not referred within the 'block' may exist. + # Move only references existing in the 'block'. + # See 'test.python.pulse.test_reference.TestReference.test_appending_child_block' + for ref in _get_references(block._blocks): + self.references[ref.ref_keys] = block.references[ref.ref_keys] + else: + # Avoid using dict.update and explicitly call __set_item__ for validation. + # Reference manager of appended block is cleared because of data reduction. + for ref_keys, ref in block._reference_manager.items(): + self.references[ref_keys] = ref + block._reference_manager.clear() + # Now switch the parent because block is appended to self. + block._parent = self - return self + self._blocks.append(block) + self._parameter_manager.update_parameter_table(block) + + return self def filter( self, @@ -1104,7 +1326,7 @@ def filter( instruction_types: For example, ``[PulseInstruction, AcquireInstruction]``. time_ranges: For example, ``[(0, 5), (6, 10)]``. intervals: For example, ``[(0, 5), (6, 10)]``. - check_subroutine: Set `True` to individually filter instructions inside of a subroutine + check_subroutine: Set `True` to individually filter instructions inside a subroutine defined by the :py:class:`~qiskit.pulse.instructions.Call` instruction. Returns: @@ -1180,38 +1402,69 @@ def replace( Returns: The modified schedule block with ``old`` replaced by ``new``. """ - from qiskit.pulse.parameter_manager import ParameterManager + if not inplace: + schedule = copy.deepcopy(self) + return schedule.replace(old, new, inplace=True) - new_blocks = [] - new_parameters = ParameterManager() + if old not in self._blocks: + # Avoid unnecessary update of reference and parameter manager + return self - for block in self.blocks: - if block == old: - new_blocks.append(new) - new_parameters.update_parameter_table(new) - else: - if isinstance(block, ScheduleBlock): - new_blocks.append(block.replace(old, new, inplace)) - else: - new_blocks.append(block) - new_parameters.update_parameter_table(block) + # Temporarily copies references + all_references = ReferenceManager() + if isinstance(new, ScheduleBlock): + new = copy.deepcopy(new) + all_references.update(new.references) + new._reference_manager.clear() + new._parent = self + for ref_key, subroutine in self.references.items(): + if ref_key in all_references: + warnings.warn( + f"Reference {ref_key} conflicts with substituted program {new.name}. " + "Existing reference has been replaced with new reference.", + UserWarning, + ) + continue + all_references[ref_key] = subroutine - if inplace: - self._blocks = new_blocks - self._parameter_manager = new_parameters - return self - else: - ret_block = copy.deepcopy(self) - ret_block._blocks = new_blocks - ret_block._parameter_manager = new_parameters - return ret_block + # Regenerate parameter table by regenerating elements. + # Note that removal of parameters in old is not sufficient, + # because corresponding parameters might be also used in another block element. + self._parameter_manager.clear() + self._parameter_manager.update_parameter_table(self._alignment_context) + + new_elms = [] + for elm in self._blocks: + if elm == old: + elm = new + self._parameter_manager.update_parameter_table(elm) + new_elms.append(elm) + self._blocks = new_elms + + # Regenerate reference table + # Note that reference is attached to the outer schedule if nested. + # Thus, this investigates all references within the scope. + self.references.clear() + root = self + while root._parent is not None: + root = root._parent + for ref in _get_references(root._blocks): + self.references[ref.ref_keys] = all_references[ref.ref_keys] + + return self def is_parameterized(self) -> bool: """Return True iff the instruction is parameterized.""" - return self._parameter_manager.is_parameterized() + return any(self.parameters) + + def is_referenced(self) -> bool: + """Return True iff the current schedule block contains reference to subroutine.""" + return len(self.references) > 0 def assign_parameters( - self, value_dict: Dict[ParameterExpression, ParameterValueType], inplace: bool = True + self, + value_dict: Dict[ParameterExpression, ParameterValueType], + inplace: bool = True, ) -> "ScheduleBlock": """Assign the parameters in this schedule according to the input. @@ -1222,16 +1475,131 @@ def assign_parameters( Returns: Schedule with updated parameters. + + Raises: + PulseError: When the block is nested into another block. """ - return self._parameter_manager.assign_parameters( - pulse_program=self, value_dict=value_dict, inplace=inplace - ) + if not inplace: + new_schedule = copy.deepcopy(self) + return new_schedule.assign_parameters(value_dict, inplace=True) + + # Update parameters in the current scope + self._parameter_manager.assign_parameters(pulse_program=self, value_dict=value_dict) + + for subroutine in self._reference_manager.values(): + # Also assigning parameters to the references associated with self. + # Note that references are always stored in the root program. + # So calling assign_parameters from nested block doesn't update references. + if subroutine is None: + continue + subroutine.assign_parameters(value_dict=value_dict, inplace=True) + + return self + + def assign_references( + self, + subroutine_dict: Dict[Union[str, Tuple[str, ...]], "ScheduleBlock"], + inplace: bool = True, + ) -> "ScheduleBlock": + """Assign schedules to references. + + It is only capable of assigning a schedule block to immediate references + which are directly referred within the current scope. + Let's see following example: + + .. code-block:: python + + from qiskit import pulse + + with pulse.build() as subroutine: + pulse.delay(10, pulse.DriveChannel(0)) + + with pulse.build() as sub_prog: + pulse.reference("A") + + with pulse.build() as main_prog: + pulse.reference("B") + + In above example, the ``main_prog`` can refer to the subroutine "root::B" and the + reference of "B" to program "A", i.e., "B::A", is not defined in the root namespace. + This prevents breaking the reference "root::B::A" by the assignment of "root::B". + For example, if a user could indirectly assign "root::B::A" from the root program, + one can later assign another program to "root::B" that doesn't contain "A" within it. + In this situation, a reference "root::B::A" would still live in + the reference manager of the root. + However, the subroutine "root::B::A" would no longer be used in the actual pulse program. + To assign subroutine "A" to ``nested_prog`` as a nested subprogram of ``main_prog``, + you must first assign "A" of the ``sub_prog``, + and then assign the ``sub_prog`` to the ``main_prog``. + + .. code-block:: python + + sub_prog.assign_references({("A", ): nested_prog}, inplace=True) + main_prog.assign_references({("B", ): sub_prog}, inplace=True) + + Alternatively, you can also write + + .. code-block:: python + + main_prog.assign_references({("B", ): sub_prog}, inplace=True) + main_prog.references[("B", )].assign_references({"A": nested_prog}, inplace=True) + + Here :attr:`.references` returns a dict-like object, and you can + mutably update the nested reference of the particular subroutine. + + .. note:: + + Assigned programs are deep-copied to prevent an unexpected update. + + Args: + subroutine_dict: A mapping from reference key to schedule block of the subroutine. + inplace: Set ``True`` to override this instance with new subroutine. + + Returns: + Schedule block with assigned subroutine. + + Raises: + PulseError: When reference key is not defined in the current scope. + """ + if not inplace: + new_schedule = copy.deepcopy(self) + return new_schedule.assign_references(subroutine_dict, inplace=True) + + for key, subroutine in subroutine_dict.items(): + if key not in self.references: + unassigned_keys = ", ".join(map(repr, self.references.unassigned())) + raise PulseError( + f"Reference instruction with {key} doesn't exist " + f"in the current scope: {unassigned_keys}" + ) + self.references[key] = copy.deepcopy(subroutine) + + return self def get_parameters(self, parameter_name: str) -> List[Parameter]: """Get parameter object bound to this schedule by string name. - Because different ``Parameter`` objects can have the same name, - this method returns a list of ``Parameter`` s for the provided name. + Note that we can define different parameter objects with the same name, + because these different objects are identified by their unique uuid. + For example, + + .. code-block:: python + + from qiskit import pulse, circuit + + amp1 = circuit.Parameter("amp") + amp2 = circuit.Parameter("amp") + + with pulse.build() as sub_prog: + pulse.play(pulse.Constant(100, amp1), pulse.DriveChannel(0)) + + with pulse.build() as main_prog: + pulse.call(sub_prog, name="sub") + pulse.play(pulse.Constant(100, amp2), pulse.DriveChannel(0)) + + main_prog.get_parameters("amp") + + This returns a list of two parameters ``amp1`` and ``amp2``. Args: parameter_name: Name of parameter. @@ -1239,7 +1607,45 @@ def get_parameters(self, parameter_name: str) -> List[Parameter]: Returns: Parameter objects that have corresponding name. """ - return self._parameter_manager.get_parameters(parameter_name) + matched = [p for p in self.parameters if p.name == parameter_name] + return matched + + def search_parameters(self, parameter_regex: str) -> List[Parameter]: + """Search parameter with regular expression. + + This method looks for the scope-aware parameters. + For example, + + .. code-block:: python + + from qiskit import pulse, circuit + + amp1 = circuit.Parameter("amp") + amp2 = circuit.Parameter("amp") + + with pulse.build() as sub_prog: + pulse.play(pulse.Constant(100, amp1), pulse.DriveChannel(0)) + + with pulse.build() as main_prog: + pulse.call(sub_prog, name="sub") + pulse.play(pulse.Constant(100, amp2), pulse.DriveChannel(0)) + + main_prog.search_parameters("root::sub::amp") + + This finds ``amp1`` with scoped name "root::sub::amp". + + Args: + parameter_regex: Regular expression for scoped parameter name. + + Returns: + Parameter objects that have corresponding name. + """ + pattern = re.compile(parameter_regex) + + return sorted( + _collect_scoped_parameters(self, current_scope="root", filter_regex=pattern).values(), + key=lambda p: p.name, + ) def __len__(self) -> int: """Return number of instructions in the schedule.""" @@ -1272,21 +1678,17 @@ def __eq__(self, other: "ScheduleBlock") -> bool: if self.alignment_context != other.alignment_context: return False - # 2. channel check - if set(self.channels) != set(other.channels): - return False - - # 3. size check + # 2. size check if len(self) != len(other): return False - # 4. instruction check - import retworkx as rx - from qiskit.pulse.transforms import block_to_dag + # 3. instruction check with alignment + from qiskit.pulse.transforms.dag import block_to_dag as dag - return rx.is_isomorphic_node_match( - block_to_dag(self), block_to_dag(other), lambda x, y: x == y - ) + if not rx.is_isomorphic_node_match(dag(self), dag(other), lambda x, y: x == y): + return False + + return True def __repr__(self) -> str: name = format(self._name) if self._name else "" @@ -1504,6 +1906,75 @@ def _get_timeslots(schedule: "ScheduleComponent") -> TimeSlots: return timeslots +def _get_references(block_elms: List["BlockComponent"]) -> Set[Reference]: + """Recursively get reference instructions in the current scope. + + Args: + block_elms: List of schedule block elements to investigate. + + Returns: + A set of unique reference instructions. + """ + references = set() + for elm in block_elms: + if isinstance(elm, ScheduleBlock): + references |= _get_references(elm._blocks) + elif isinstance(elm, Reference): + references.add(elm) + return references + + +def _collect_scoped_parameters( + schedule: ScheduleBlock, + current_scope: str, + filter_regex: Optional[re.Pattern] = None, +) -> Dict[Tuple[str, int], Parameter]: + """A helper function to collect parameters from all references in scope-aware fashion. + + Parameter object is renamed with attached scope information but its UUID is remained. + This means object is treated identically on the assignment logic. + This function returns a dictionary of all parameters existing in the target program + including its reference, which is keyed on the unique identifier consisting of + scoped parameter name and parameter object UUID. + + This logic prevents parameter clash in the different scope. + For example, when two parameter objects with the same UUID exist in different references, + both of them appear in the output dictionary, even though they are technically the same object. + This feature is particularly convenient to search parameter object with associated scope. + + Args: + schedule: Schedule to get parameters. + current_scope: Name of scope where schedule exist. + filter_regex: Optional. Compiled regex to sort parameter by name. + + Returns: + A dictionary of scoped parameter objects. + """ + parameters_out = {} + for param in schedule._parameter_manager.parameters: + new_name = f"{current_scope}{Reference.scope_delimiter}{param.name}" + + if filter_regex and not re.search(filter_regex, new_name): + continue + scoped_param = Parameter.__new__(Parameter, new_name, uuid=getattr(param, "_uuid")) + scoped_param.__init__(new_name) + + unique_key = new_name, hash(param) + parameters_out[unique_key] = scoped_param + + for sub_namespace, subroutine in schedule.references.items(): + if subroutine is None: + continue + composite_key = Reference.key_delimiter.join(sub_namespace) + full_path = f"{current_scope}{Reference.scope_delimiter}{composite_key}" + sub_parameters = _collect_scoped_parameters( + subroutine, current_scope=full_path, filter_regex=filter_regex + ) + parameters_out.update(sub_parameters) + + return parameters_out + + # These type aliases are defined at the bottom of the file, because as of 2022-01-18 they are # imported into other parts of Terra. Previously, the aliases were at the top of the file and used # forwards references within themselves. This was fine within the same file, but causes scoping diff --git a/qiskit/pulse/transforms/__init__.py b/qiskit/pulse/transforms/__init__.py index e30e4330a3bf..fcc5557bf565 100644 --- a/qiskit/pulse/transforms/__init__.py +++ b/qiskit/pulse/transforms/__init__.py @@ -17,6 +17,8 @@ The pulse transforms provide transformation routines to reallocate and optimize pulse programs for backends. +.. _pulse_alignments: + Alignments ========== @@ -37,6 +39,8 @@ .. autoclass:: AlignmentKind +.. _pulse_canonical_transform: + Canonicalization ================ @@ -57,6 +61,8 @@ remove_trivial_barriers +.. _pulse_dag: + DAG === @@ -69,6 +75,8 @@ block_to_dag +.. _pulse_transform_chain: + Composite transform =================== @@ -81,7 +89,7 @@ """ -from qiskit.pulse.transforms.alignments import ( +from .alignments import ( AlignEquispaced, AlignFunc, AlignLeft, @@ -90,9 +98,9 @@ AlignmentKind, ) -from qiskit.pulse.transforms.base_transforms import target_qobj_transform +from .base_transforms import target_qobj_transform -from qiskit.pulse.transforms.canonicalization import ( +from .canonicalization import ( add_implicit_acquires, align_measures, block_to_schedule, @@ -104,4 +112,4 @@ remove_trivial_barriers, ) -from qiskit.pulse.transforms.dag import block_to_dag +from .dag import block_to_dag diff --git a/qiskit/pulse/transforms/dag.py b/qiskit/pulse/transforms/dag.py index e533740ece02..4756cb98ef63 100644 --- a/qiskit/pulse/transforms/dag.py +++ b/qiskit/pulse/transforms/dag.py @@ -13,10 +13,10 @@ import retworkx as rx -from qiskit.pulse.schedule import ScheduleBlock +from qiskit.pulse.exceptions import UnassignedReferenceError -def block_to_dag(block: ScheduleBlock) -> rx.PyDAG: +def block_to_dag(block) -> rx.PyDAG: """Convert schedule block instruction into DAG. ``ScheduleBlock`` can be represented as a DAG as needed. @@ -54,7 +54,7 @@ def block_to_dag(block: ScheduleBlock) -> rx.PyDAG: This can be easily found on the DAG representation. Args: - block: A schedule block to be converted. + block ("ScheduleBlock"): A schedule block to be converted. Returns: Instructions in DAG representation. @@ -64,39 +64,44 @@ def block_to_dag(block: ScheduleBlock) -> rx.PyDAG: """ if block.alignment_context.is_sequential: return _sequential_allocation(block) - else: - return _parallel_allocation(block) + return _parallel_allocation(block) -def _sequential_allocation(block: ScheduleBlock) -> rx.PyDAG: +def _sequential_allocation(block) -> rx.PyDAG: """A helper function to create a DAG of a sequential alignment context.""" - dag_blocks = rx.PyDAG() + dag = rx.PyDAG() - prev_node = None edges = [] - for inst in block.blocks: - current_node = dag_blocks.add_node(inst) - if prev_node is not None: - edges.append((prev_node, current_node)) - prev_node = current_node - dag_blocks.add_edges_from_no_data(edges) + prev_id = None + for elm in block.blocks: + node_id = dag.add_node(elm) + if dag.num_nodes() > 1: + edges.append((prev_id, node_id)) + prev_id = node_id + dag.add_edges_from_no_data(edges) + return dag - return dag_blocks - -def _parallel_allocation(block: ScheduleBlock) -> rx.PyDAG: +def _parallel_allocation(block) -> rx.PyDAG: """A helper function to create a DAG of a parallel alignment context.""" - dag_blocks = rx.PyDAG() + dag = rx.PyDAG() slots = {} - edges = [] - for inst in block.blocks: - current_node = dag_blocks.add_node(inst) - for chan in inst.channels: - prev_node = slots.pop(chan, None) - if prev_node is not None: - edges.append((prev_node, current_node)) - slots[chan] = current_node - dag_blocks.add_edges_from_no_data(edges) - - return dag_blocks + edges = set() + prev_reference = None + for elm in block.blocks: + node_id = dag.add_node(elm) + try: + for chan in elm.channels: + prev_id = slots.pop(chan, prev_reference) + if prev_id is not None: + edges.add((prev_id, node_id)) + slots[chan] = node_id + except UnassignedReferenceError: + # Broadcasting channels because the reference's channels are unknown. + for chan, prev_id in slots.copy().items(): + edges.add((prev_id, node_id)) + slots[chan] = node_id + prev_reference = node_id + dag.add_edges_from_no_data(list(edges)) + return dag diff --git a/releasenotes/notes/add-schedule-block-reference-mechanism-8a7811e17b4fead3.yaml b/releasenotes/notes/add-schedule-block-reference-mechanism-8a7811e17b4fead3.yaml new file mode 100644 index 000000000000..0f66480fb6d0 --- /dev/null +++ b/releasenotes/notes/add-schedule-block-reference-mechanism-8a7811e17b4fead3.yaml @@ -0,0 +1,43 @@ +--- +features: + - | + :class:`.ScheduleBlock` has been updated so that it can manage unassigned subroutine, + in other words, to allow lazy calling of other programs. + For example, this enables the following workflow: + + .. code-block:: python + + from qiskit import pulse + + with pulse.build() as prog: + pulse.reference("x", "q0") + + with pulse.build() as xq0: + pulse.play(Gaussian(160, 0.1, 40), pulse.DriveChannel(0)) + + prog.assign_references({("x", "q0"): xq0}) + + Now a user can create ``prog`` without knowing actual implementation of + the reference ``("x", "q0")``, and assign it at a later time for execution. + This improves modularity of pulse programs, and thus one can easily write a template + pulse program relying on other calibrations. + + To realize this feature, the new pulse instruction (compiler directive) + :class:`~qiskit.pulse.instructions.Reference` has been added. + This instruction is injected into the current builder scope when + the :func:`~qiskit.pulse.builder.reference` command is used. + All references defined in the current pulse program can be listed with + the :attr:`~qiskit.pulse.schedule.ScheduleBlock.references` property. + + In addition, every reference is managed with a scope to ease parameter management. + :meth:`~qiskit.pulse.schedule.ScheduleBlock.scoped_parameters` and + :meth:`~qiskit.pulse.schedule.ScheduleBlock.search_parameters` have been added to + the schedule block. See API documentation for more details. +upgrade: + - | + Behavior of the :func:`~qiskit.pulse.builder.call` pulse builder function has been upgraded. + When a :class:`.ScheduleBlock` instance is called by this method, it internally creates + a :class:`.Reference` in the current context, and immediately assigns the called program to + the reference. Thus, the :class:`.Call` instruction is no longer generated. + Along with this change, it is prohibited to call different blocks with the same ``name`` + argument. Such operation will result in an error. diff --git a/test/python/pulse/test_block.py b/test/python/pulse/test_block.py index 201da25fb156..ab5fe33a67ad 100644 --- a/test/python/pulse/test_block.py +++ b/test/python/pulse/test_block.py @@ -376,7 +376,7 @@ def test_execute_block(self): with pulse.build(name="test_block") as sched_block: pulse.play(pulse.Constant(160, 1.0), pulse.DriveChannel(0)) - pulse.acquire(50, pulse.MeasureChannel(0), pulse.MemorySlot(0)) + pulse.acquire(50, pulse.AcquireChannel(0), pulse.MemorySlot(0)) backend = FakeArmonk() test_result = backend.run(sched_block).result() @@ -483,6 +483,24 @@ def test_instruction_out_of_order_sequential(self): self.assertNotEqual(block1, block2) + def test_instruction_out_of_order_sequential_more(self): + """Test equality is False if three blocks have instructions in different order. + + This could detect a particular bug as discussed in this thread: + https://github.com/Qiskit/qiskit-terra/pull/8005#discussion_r966191018 + """ + block1 = pulse.ScheduleBlock(alignment_context=self.sequential_context) + block1 += pulse.Play(self.test_waveform0, self.d0) + block1 += pulse.Play(self.test_waveform0, self.d0) + block1 += pulse.Play(self.test_waveform0, self.d1) + + block2 = pulse.ScheduleBlock(alignment_context=self.sequential_context) + block2 += pulse.Play(self.test_waveform0, self.d0) + block2 += pulse.Play(self.test_waveform0, self.d1) + block2 += pulse.Play(self.test_waveform0, self.d0) + + self.assertNotEqual(block1, block2) + def test_instruction_in_order_sequential(self): """Test equality is True if two blocks have instructions in same order.""" block1 = pulse.ScheduleBlock(alignment_context=self.sequential_context) diff --git a/test/python/pulse/test_instructions.py b/test/python/pulse/test_instructions.py index 111ebd35f4ae..c41e0a12080c 100644 --- a/test/python/pulse/test_instructions.py +++ b/test/python/pulse/test_instructions.py @@ -161,6 +161,15 @@ def test_freq_non_pulse_channel(self): with self.assertRaises(exceptions.PulseError): instructions.SetFrequency(4.5e9, channels.RegisterSlot(1), name="test") + def test_parameter_expression(self): + """Test getting all parameters assigned by expression.""" + p1 = circuit.Parameter("P1") + p2 = circuit.Parameter("P2") + expr = p1 + p2 + + instr = instructions.SetFrequency(expr, channel=channels.DriveChannel(0)) + self.assertSetEqual(instr.parameters, {p1, p2}) + class TestShiftFrequency(QiskitTestCase): """Shift frequency tests.""" @@ -188,6 +197,15 @@ def test_freq_non_pulse_channel(self): with self.assertRaises(exceptions.PulseError): instructions.ShiftFrequency(4.5e9, channels.RegisterSlot(1), name="test") + def test_parameter_expression(self): + """Test getting all parameters assigned by expression.""" + p1 = circuit.Parameter("P1") + p2 = circuit.Parameter("P2") + expr = p1 + p2 + + instr = instructions.ShiftFrequency(expr, channel=channels.DriveChannel(0)) + self.assertSetEqual(instr.parameters, {p1, p2}) + class TestSetPhase(QiskitTestCase): """Test the instruction construction.""" @@ -214,6 +232,15 @@ def test_set_phase_non_pulse_channel(self): with self.assertRaises(exceptions.PulseError): instructions.SetPhase(1.57, channels.RegisterSlot(1), name="test") + def test_parameter_expression(self): + """Test getting all parameters assigned by expression.""" + p1 = circuit.Parameter("P1") + p2 = circuit.Parameter("P2") + expr = p1 + p2 + + instr = instructions.SetPhase(expr, channel=channels.DriveChannel(0)) + self.assertSetEqual(instr.parameters, {p1, p2}) + class TestShiftPhase(QiskitTestCase): """Test the instruction construction.""" @@ -240,6 +267,15 @@ def test_shift_phase_non_pulse_channel(self): with self.assertRaises(exceptions.PulseError): instructions.ShiftPhase(1.57, channels.RegisterSlot(1), name="test") + def test_parameter_expression(self): + """Test getting all parameters assigned by expression.""" + p1 = circuit.Parameter("P1") + p2 = circuit.Parameter("P2") + expr = p1 + p2 + + instr = instructions.ShiftPhase(expr, channel=channels.DriveChannel(0)) + self.assertSetEqual(instr.parameters, {p1, p2}) + class TestSnapshot(QiskitTestCase): """Snapshot tests.""" diff --git a/test/python/pulse/test_parameter_manager.py b/test/python/pulse/test_parameter_manager.py index 41dfe1533ea2..bd0cacf6bd21 100644 --- a/test/python/pulse/test_parameter_manager.py +++ b/test/python/pulse/test_parameter_manager.py @@ -469,7 +469,7 @@ def test_attribute_parameters(self): ref_set = {amp, sigma} - self.assertSetEqual(block.parameters, ref_set) + self.assertSetEqual(set(block.parameters), ref_set) def test_parametric_pulses(self): """Test Parametric Pulses with parameters determined by ParameterExpressions diff --git a/test/python/pulse/test_reference.py b/test/python/pulse/test_reference.py new file mode 100644 index 000000000000..0b040656ba84 --- /dev/null +++ b/test/python/pulse/test_reference.py @@ -0,0 +1,705 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2020. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Test schedule block subroutine reference mechanism.""" + +import numpy as np + +from qiskit import circuit, pulse +from qiskit.pulse import builder +from qiskit.pulse.transforms import inline_subroutines +from qiskit.test import QiskitTestCase + + +class TestReference(QiskitTestCase): + """Test for basic behavior of reference mechanism.""" + + def test_append_schedule(self): + """Test appending schedule without calling. + + Appended schedules are not subroutines. + These are directly exposed to the outer block. + """ + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, 0.1, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + builder.append_schedule(sched_x1) + + with pulse.build() as sched_z1: + builder.append_schedule(sched_y1) + + self.assertEqual(len(sched_z1.references), 0) + + def test_append_schedule_parameter_scope(self): + """Test appending schedule without calling. + + Parameter in the appended schedule has the scope of outer schedule. + """ + param = circuit.Parameter("name") + + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, param, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + builder.append_schedule(sched_x1) + + with pulse.build() as sched_z1: + builder.append_schedule(sched_y1) + + sched_param = next(iter(sched_z1.scoped_parameters())) + self.assertEqual(sched_param.name, "root::name") + + # object equality + self.assertEqual( + sched_z1.search_parameters("root::name")[0], + param, + ) + + def test_refer_schedule(self): + """Test refer to schedule by name. + + Outer block is only aware of its inner reference. + Nested reference is not directly exposed to the most outer block. + """ + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, 0.1, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + builder.reference("x1", "d0") + + with pulse.build() as sched_z1: + builder.reference("y1", "d0") + + sched_y1.assign_references({("x1", "d0"): sched_x1}) + sched_z1.assign_references({("y1", "d0"): sched_y1}) + + self.assertEqual(len(sched_z1.references), 1) + self.assertEqual(sched_z1.references[("y1", "d0")], sched_y1) + + self.assertEqual(len(sched_y1.references), 1) + self.assertEqual(sched_y1.references[("x1", "d0")], sched_x1) + + def test_refer_schedule_parameter_scope(self): + """Test refer to schedule by name. + + Parameter in the called schedule has the scope of called schedule. + """ + param = circuit.Parameter("name") + + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, param, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + builder.reference("x1", "d0") + + with pulse.build() as sched_z1: + builder.reference("y1", "d0") + + sched_y1.assign_references({("x1", "d0"): sched_x1}) + sched_z1.assign_references({("y1", "d0"): sched_y1}) + + sched_param = next(iter(sched_z1.scoped_parameters())) + self.assertEqual(sched_param.name, "root::y1,d0::x1,d0::name") + + # object equality + self.assertEqual( + sched_z1.search_parameters("root::y1,d0::x1,d0::name")[0], + param, + ) + + # regex + self.assertEqual( + sched_z1.search_parameters(r"\S::x1,d0::name")[0], + param, + ) + + def test_call_schedule(self): + """Test call schedule. + + Outer block is only aware of its inner reference. + Nested reference is not directly exposed to the most outer block. + """ + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, 0.1, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + builder.call(sched_x1, name="x1") + + with pulse.build() as sched_z1: + builder.call(sched_y1, name="y1") + + self.assertEqual(len(sched_z1.references), 1) + self.assertEqual(sched_z1.references[("y1",)], sched_y1) + + self.assertEqual(len(sched_y1.references), 1) + self.assertEqual(sched_y1.references[("x1",)], sched_x1) + + def test_call_schedule_parameter_scope(self): + """Test call schedule. + + Parameter in the called schedule has the scope of called schedule. + """ + param = circuit.Parameter("name") + + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, param, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + builder.call(sched_x1, name="x1") + + with pulse.build() as sched_z1: + builder.call(sched_y1, name="y1") + + sched_param = next(iter(sched_z1.scoped_parameters())) + self.assertEqual(sched_param.name, "root::y1::x1::name") + + # object equality + self.assertEqual( + sched_z1.search_parameters("root::y1::x1::name")[0], + param, + ) + + # regex + self.assertEqual( + sched_z1.search_parameters(r"\S::x1::name")[0], + param, + ) + + def test_append_and_call_schedule(self): + """Test call and append schedule. + + Reference is copied to the outer schedule by appending. + Original reference remains unchanged. + """ + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, 0.1, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + builder.call(sched_x1, name="x1") + + with pulse.build() as sched_z1: + builder.append_schedule(sched_y1) + + self.assertEqual(len(sched_z1.references), 1) + self.assertEqual(sched_z1.references[("x1",)], sched_x1) + + # blocks[0] is sched_y1 and its reference is now point to outer block reference + self.assertIs(sched_z1.blocks[0].references, sched_z1.references) + + # however the original program is protected to prevent unexpected mutation + self.assertIsNot(sched_y1.references, sched_z1.references) + + # appended schedule is preserved + self.assertEqual(len(sched_y1.references), 1) + self.assertEqual(sched_y1.references[("x1",)], sched_x1) + + def test_calling_similar_schedule(self): + """Test calling schedules with the same representation. + + sched_x1 and sched_y1 are the different subroutines, but same representation. + Two references shoud be created. + """ + param1 = circuit.Parameter("param") + param2 = circuit.Parameter("param") + + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, param1, name="p"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + pulse.play(pulse.Constant(100, param2, name="p"), pulse.DriveChannel(0)) + + with pulse.build() as sched_z1: + pulse.call(sched_x1) + pulse.call(sched_y1) + + self.assertEqual(len(sched_z1.references), 2) + + def test_calling_same_schedule(self): + """Test calling same schedule twice. + + Because it calls the same schedule, no duplication should occur in reference table. + """ + param = circuit.Parameter("param") + + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, param, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_z1: + pulse.call(sched_x1, name="same_sched") + pulse.call(sched_x1, name="same_sched") + + self.assertEqual(len(sched_z1.references), 1) + + def test_calling_same_schedule_with_different_assignment(self): + """Test calling same schedule twice but with different parameters. + + Same schedule is called twice but with different assignment. + Two references should be created. + """ + param = circuit.Parameter("param") + + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, param, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_z1: + pulse.call(sched_x1, param=0.1) + pulse.call(sched_x1, param=0.2) + + self.assertEqual(len(sched_z1.references), 2) + + def test_alignment_context(self): + """Test nested alignment context. + + Inline alignment is identical to append_schedule operation. + Thus scope is not newly generated. + """ + with pulse.build(name="x1") as sched_x1: + with pulse.align_right(): + with pulse.align_left(): + pulse.play(pulse.Constant(100, 0.1, name="x1"), pulse.DriveChannel(0)) + + self.assertEqual(len(sched_x1.references), 0) + + def test_appending_child_block(self): + """Test for edge case. + + User can append blocks which is an element of another schedule block. + But this is not standard use case. + + In this case, references may contain subroutines which don't exist in the context. + This is because all references within the program are centrally + managed in the most outer block. + """ + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, 0.1, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + pulse.play(pulse.Constant(100, 0.2, name="y1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_x2: + builder.call(sched_x1, name="x1") + self.assertEqual(list(sched_x2.references.keys()), [("x1",)]) + + with pulse.build() as sched_y2: + builder.call(sched_y1, name="y1") + self.assertEqual(list(sched_y2.references.keys()), [("y1",)]) + + with pulse.build() as sched_z1: + builder.append_schedule(sched_x2) + builder.append_schedule(sched_y2) + self.assertEqual(list(sched_z1.references.keys()), [("x1",), ("y1",)]) + + # child block references point to its parent, i.e. sched_z1 + self.assertIs(sched_z1.blocks[0].references, sched_z1._reference_manager) + self.assertIs(sched_z1.blocks[1].references, sched_z1._reference_manager) + + with pulse.build() as sched_z2: + # Append child block + # The reference of this block is sched_z1.reference thus it contains both x1 and y1. + # However, y1 doesn't exist in the context, so only x1 should be added. + + # Usually, user will append sched_x2 directly here, rather than sched_z1.blocks[0] + # This is why this situation is an edge case. + builder.append_schedule(sched_z1.blocks[0]) + + self.assertEqual(len(sched_z2.references), 1) + self.assertEqual(sched_z2.references[("x1",)], sched_x1) + + def test_replacement(self): + """Test nested alignment context. + + Replacing schedule block with schedule block. + Removed block contains own reference, that should be removed with replacement. + New block also contains reference, that should be passed to the current reference. + """ + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, 0.1, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + pulse.play(pulse.Constant(100, 0.2, name="y1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_x2: + builder.call(sched_x1, name="x1") + + with pulse.build() as sched_y2: + builder.call(sched_y1, name="y1") + + with pulse.build() as sched_z1: + builder.append_schedule(sched_x2) + builder.append_schedule(sched_y2) + self.assertEqual(len(sched_z1.references), 2) + self.assertEqual(sched_z1.references[("x1",)], sched_x1) + self.assertEqual(sched_z1.references[("y1",)], sched_y1) + + # Define schedule to replace + with pulse.build() as sched_r1: + pulse.play(pulse.Constant(100, 0.1, name="r1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_r2: + pulse.call(sched_r1, name="r1") + + sched_z2 = sched_z1.replace(sched_x2, sched_r2) + self.assertEqual(len(sched_z2.references), 2) + self.assertEqual(sched_z2.references[("r1",)], sched_r1) + self.assertEqual(sched_z2.references[("y1",)], sched_y1) + + def test_special_parameter_name(self): + """Testcase to guarantee usage of some special symbols in parameter name. + + These symbols might be often used in user code. + No conflict should occur with the default scope delimiter. + """ + param = circuit.Parameter("my.parameter_object") + + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, param, name="x1"), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + pulse.reference("sub", "q0") + sched_y1.assign_references({("sub", "q0"): sched_x1}) + + ret_param = sched_y1.search_parameters(r"\Ssub,q0::my.parameter_object")[0] + + self.assertEqual(param, ret_param) + + def test_parameter_in_multiple_scope(self): + """Testcase for scope-aware parameter getter. + + When a single parameter object is used in multiple scopes, + the scoped_parameters method must return parameter objects associated to each scope, + while parameters property returns a single parameter object. + """ + param = circuit.Parameter("name") + + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, param), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + pulse.play(pulse.Constant(100, param), pulse.DriveChannel(1)) + + with pulse.build() as sched_z1: + pulse.call(sched_x1, name="x1") + pulse.call(sched_y1, name="y1") + + self.assertEqual(len(sched_z1.parameters), 1) + self.assertEqual(len(sched_z1.scoped_parameters()), 2) + + self.assertEqual(sched_z1.search_parameters("root::x1::name")[0], param) + self.assertEqual(sched_z1.search_parameters("root::y1::name")[0], param) + + def test_parallel_alignment_equality(self): + """Testcase for potential edge case. + + In parallel alignment context, reference instruction is broadcasted to + all channels. When new channel is added after reference, this should be + connected with reference node. + """ + + with pulse.build() as subroutine: + pulse.reference("unassigned") + + with pulse.build() as sched1: + with pulse.align_left(): + pulse.delay(10, pulse.DriveChannel(0)) + pulse.call(subroutine) # This should be broadcasted to d1 as well + pulse.delay(10, pulse.DriveChannel(1)) + + with pulse.build() as sched2: + with pulse.align_left(): + pulse.delay(10, pulse.DriveChannel(0)) + pulse.delay(10, pulse.DriveChannel(1)) + pulse.call(subroutine) + + self.assertNotEqual(sched1, sched2) + + def test_subroutine_conflict(self): + """Test for edge case of appending two schedule blocks having the + references with conflicting reference key. + + This operation should fail because one of references will be gone after assignment. + """ + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, 0.1), pulse.DriveChannel(0)) + + with pulse.build() as sched_x2: + pulse.call(sched_x1, name="conflict_name") + + self.assertEqual(sched_x2.references[("conflict_name",)], sched_x1) + + with pulse.build() as sched_y1: + pulse.play(pulse.Constant(100, 0.2), pulse.DriveChannel(0)) + + with pulse.build() as sched_y2: + pulse.call(sched_y1, name="conflict_name") + + self.assertEqual(sched_y2.references[("conflict_name",)], sched_y1) + + with self.assertRaises(pulse.exceptions.PulseError): + with pulse.build(): + builder.append_schedule(sched_x2) + builder.append_schedule(sched_y2) + + def test_assign_existing_reference(self): + """Test for explicitly assign existing reference. + + This operation should fail because overriding reference is not allowed. + """ + with pulse.build() as sched_x1: + pulse.play(pulse.Constant(100, 0.1), pulse.DriveChannel(0)) + + with pulse.build() as sched_y1: + pulse.play(pulse.Constant(100, 0.2), pulse.DriveChannel(0)) + + with pulse.build() as sched_z1: + pulse.call(sched_x1, name="conflict_name") + + with self.assertRaises(pulse.exceptions.PulseError): + sched_z1.assign_references({("conflict_name",): sched_y1}) + + +class TestSubroutineWithCXGate(QiskitTestCase): + """Test called program scope with practical example of building fully parametrized CX gate.""" + + def setUp(self): + super().setUp() + + # parameters of X pulse + self.xp_dur = circuit.Parameter("dur") + self.xp_amp = circuit.Parameter("amp") + self.xp_sigma = circuit.Parameter("sigma") + self.xp_beta = circuit.Parameter("beta") + + # amplitude of SX pulse + self.sxp_amp = circuit.Parameter("amp") + + # parameters of CR pulse + self.cr_dur = circuit.Parameter("dur") + self.cr_amp = circuit.Parameter("amp") + self.cr_sigma = circuit.Parameter("sigma") + self.cr_risefall = circuit.Parameter("risefall") + + # channels + self.control_ch = circuit.Parameter("ctrl") + self.target_ch = circuit.Parameter("tgt") + self.cr_ch = circuit.Parameter("cr") + + # echo pulse on control qubit + with pulse.build(name="xp") as xp_sched_q0: + pulse.play( + pulse.Drag( + duration=self.xp_dur, + amp=self.xp_amp, + sigma=self.xp_sigma, + beta=self.xp_beta, + ), + channel=pulse.DriveChannel(self.control_ch), + ) + self.xp_sched = xp_sched_q0 + + # local rotation on target qubit + with pulse.build(name="sx") as sx_sched_q1: + pulse.play( + pulse.Drag( + duration=self.xp_dur, + amp=self.sxp_amp, + sigma=self.xp_sigma, + beta=self.xp_beta, + ), + channel=pulse.DriveChannel(self.target_ch), + ) + self.sx_sched = sx_sched_q1 + + # cross resonance + with pulse.build(name="cr") as cr_sched: + pulse.play( + pulse.GaussianSquare( + duration=self.cr_dur, + amp=self.cr_amp, + sigma=self.cr_sigma, + risefall_sigma_ratio=self.cr_risefall, + ), + channel=pulse.ControlChannel(self.cr_ch), + ) + self.cr_sched = cr_sched + + def test_lazy_ecr(self): + """Test lazy subroutines through ECR schedule construction.""" + + with pulse.build(name="lazy_ecr") as sched: + with pulse.align_sequential(): + pulse.reference("cr", "q0", "q1") + pulse.reference("xp", "q0") + with pulse.phase_offset(np.pi, pulse.ControlChannel(self.cr_ch)): + pulse.reference("cr", "q0", "q1") + pulse.reference("xp", "q0") + + # Schedule has references + self.assertTrue(sched.is_referenced()) + + # Schedule is not schedulable because of unassigned references + self.assertFalse(sched.is_schedulable()) + + # Two references cr and xp are called + self.assertEqual(len(sched.references), 2) + + # Parameters in the current scope are Parameter("cr") which is used in phase_offset + # References are not assigned yet. + params = set(p.name for p in sched.parameters) + self.assertSetEqual(params, {"cr"}) + + # Parameter names are scoepd + scoped_params = set(p.name for p in sched.scoped_parameters()) + self.assertSetEqual(scoped_params, {"root::cr"}) + + # Assign CR and XP schedule to the empty reference + sched.assign_references({("cr", "q0", "q1"): self.cr_sched}) + sched.assign_references({("xp", "q0"): self.xp_sched}) + + # Check updated references + assigned_refs = sched.references + self.assertEqual(assigned_refs[("cr", "q0", "q1")], self.cr_sched) + self.assertEqual(assigned_refs[("xp", "q0")], self.xp_sched) + + # Parameter added from subroutines + scoped_params = set(p.name for p in sched.scoped_parameters()) + ref_params = { + # This is the cr parameter that belongs to phase_offset instruction in the root scope + "root::cr", + # This is the same cr parameter that belongs to the play instruction in a child scope + "root::cr,q0,q1::cr", + "root::cr,q0,q1::amp", + "root::cr,q0,q1::dur", + "root::cr,q0,q1::risefall", + "root::cr,q0,q1::sigma", + "root::xp,q0::ctrl", + "root::xp,q0::amp", + "root::xp,q0::beta", + "root::xp,q0::dur", + "root::xp,q0::sigma", + } + self.assertSetEqual(scoped_params, ref_params) + + # Get parameter without scope, cr amp and xp amp are hit. + params = sched.get_parameters(parameter_name="amp") + self.assertEqual(len(params), 2) + + # Get parameter with scope, only xp amp + params = sched.search_parameters(parameter_regex="root::xp,q0::amp") + self.assertEqual(len(params), 1) + + def test_cnot(self): + """Integration test with CNOT schedule construction.""" + # echeod cross resonance + with pulse.build(name="ecr", default_alignment="sequential") as ecr_sched: + pulse.call(self.cr_sched, name="cr") + pulse.call(self.xp_sched, name="xp") + with pulse.phase_offset(np.pi, pulse.ControlChannel(self.cr_ch)): + pulse.call(self.cr_sched, name="cr") + pulse.call(self.xp_sched, name="xp") + + # cnot gate, locally equivalent to ecr + with pulse.build(name="cx", default_alignment="sequential") as cx_sched: + pulse.shift_phase(np.pi / 2, pulse.DriveChannel(self.control_ch)) + pulse.call(self.sx_sched, name="sx") + pulse.call(ecr_sched, name="ecr") + + # get parameter with scope, full scope is not needed + xp_amp = cx_sched.search_parameters(r"\S:xp::amp")[0] + self.assertEqual(self.xp_amp, xp_amp) + + # get parameter with scope, of course full scope can be specified + xp_amp_full_scoped = cx_sched.search_parameters("root::ecr::xp::amp")[0] + self.assertEqual(xp_amp_full_scoped, xp_amp) + + # assign parameters + assigned_cx = cx_sched.assign_parameters( + value_dict={ + self.cr_ch: 0, + self.control_ch: 0, + self.target_ch: 1, + self.sxp_amp: 0.1, + self.xp_amp: 0.2, + self.xp_dur: 160, + self.xp_sigma: 40, + self.xp_beta: 3.0, + self.cr_amp: 0.5, + self.cr_dur: 800, + self.cr_sigma: 64, + self.cr_risefall: 2, + }, + inplace=True, + ) + flatten_cx = inline_subroutines(assigned_cx) + + with pulse.build(default_alignment="sequential") as ref_cx: + # sz + pulse.shift_phase(np.pi / 2, pulse.DriveChannel(0)) + with pulse.align_left(): + # sx + pulse.play( + pulse.Drag( + duration=160, + amp=0.1, + sigma=40, + beta=3.0, + ), + channel=pulse.DriveChannel(1), + ) + with pulse.align_sequential(): + # cr + with pulse.align_left(): + pulse.play( + pulse.GaussianSquare( + duration=800, + amp=0.5, + sigma=64, + risefall_sigma_ratio=2, + ), + channel=pulse.ControlChannel(0), + ) + # xp + with pulse.align_left(): + pulse.play( + pulse.Drag( + duration=160, + amp=0.2, + sigma=40, + beta=3.0, + ), + channel=pulse.DriveChannel(0), + ) + with pulse.phase_offset(np.pi, pulse.ControlChannel(0)): + # cr + with pulse.align_left(): + pulse.play( + pulse.GaussianSquare( + duration=800, + amp=0.5, + sigma=64, + risefall_sigma_ratio=2, + ), + channel=pulse.ControlChannel(0), + ) + # xp + with pulse.align_left(): + pulse.play( + pulse.Drag( + duration=160, + amp=0.2, + sigma=40, + beta=3.0, + ), + channel=pulse.DriveChannel(0), + ) + + self.assertEqual(flatten_cx, ref_cx) From 3cc9c178be02b20c5cad6443fec11d2adcecd080 Mon Sep 17 00:00:00 2001 From: Clemens Possel <62604102+cpossel@users.noreply.github.com> Date: Wed, 14 Sep 2022 22:07:18 +0200 Subject: [PATCH 11/56] Raise error for missing bounds in optimizer SNOBFIT (#8638) * Update snobfit.py Raise error for invalid `None`s in bounds of optimizer SNOBFIT * Add SNOBFIT test for missing bounds * Move refactored SNOBFIT test for missing bounds to test_optimizers_scikitquant.py * Remove obsolete SNOBFIT import * Add release note Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/algorithms/optimizers/snobfit.py | 3 +++ ...obfit-missing-bounds-748943a87e682d82.yaml | 4 ++++ .../optimizers/test_optimizers_scikitquant.py | 20 ++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/improve-error-message-snobfit-missing-bounds-748943a87e682d82.yaml diff --git a/qiskit/algorithms/optimizers/snobfit.py b/qiskit/algorithms/optimizers/snobfit.py index f1bd12faff36..f74d8ca85153 100644 --- a/qiskit/algorithms/optimizers/snobfit.py +++ b/qiskit/algorithms/optimizers/snobfit.py @@ -84,6 +84,9 @@ def minimize( import skquant.opt as skq from SQSnobFit import optset + if bounds is None or any(None in bound_tuple for bound_tuple in bounds): + raise ValueError("Optimizer SNOBFIT requires bounds for all parameters.") + snobfit_settings = { "maxmp": self._maxmp, "maxfail": self._maxfail, diff --git a/releasenotes/notes/improve-error-message-snobfit-missing-bounds-748943a87e682d82.yaml b/releasenotes/notes/improve-error-message-snobfit-missing-bounds-748943a87e682d82.yaml new file mode 100644 index 000000000000..da40ee94a6f0 --- /dev/null +++ b/releasenotes/notes/improve-error-message-snobfit-missing-bounds-748943a87e682d82.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Catch error of missing bounds for SNOBFIT optimizer (raising error with clear error message). Arises e.g. when ansatz `UCC` is used in combination with SNOBFIT. Refer to `#8580 ` for more details. diff --git a/test/python/algorithms/optimizers/test_optimizers_scikitquant.py b/test/python/algorithms/optimizers/test_optimizers_scikitquant.py index b355232ba372..63dd95c44a84 100644 --- a/test/python/algorithms/optimizers/test_optimizers_scikitquant.py +++ b/test/python/algorithms/optimizers/test_optimizers_scikitquant.py @@ -13,8 +13,10 @@ """ Test of scikit-quant optimizers. """ import unittest - from test.python.algorithms import QiskitAlgorithmsTestCase + +from ddt import ddt, data, unpack + from qiskit import BasicAer from qiskit.circuit.library import RealAmplitudes from qiskit.utils import QuantumInstance, algorithm_globals @@ -24,6 +26,7 @@ from qiskit.algorithms.optimizers import BOBYQA, SNOBFIT, IMFIL +@ddt class TestOptimizers(QiskitAlgorithmsTestCase): """Test scikit-quant optimizers.""" @@ -68,6 +71,21 @@ def test_snobfit(self): except MissingOptionalLibraryError as ex: self.skipTest(str(ex)) + @data((None,), ([(-1, 1), (None, None)],)) + @unpack + def test_snobfit_missing_bounds(self, bounds): + """SNOBFIT optimizer test with missing bounds.""" + try: + optimizer = SNOBFIT() + with self.assertRaises(ValueError): + optimizer.minimize( + fun=lambda _: 1, # using dummy function (never called) + x0=[0.1, 0.1], # dummy initial point + bounds=bounds, + ) + except MissingOptionalLibraryError as ex: + self.skipTest(str(ex)) + def test_imfil(self): """IMFIL test.""" try: From dad18bb33a9b7f091a703f6a344c5fbc4158b2fb Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Wed, 14 Sep 2022 17:14:58 -0400 Subject: [PATCH 12/56] Add rust coverage data to coverage CI collection (#8365) * Add rust coverage data to coverage CI collection This commit expands the existing coverage data collection for the github actions coverage job to also include rust source coverage. To accomplish this we need to build the qiskit-terra compiled extension with the rust `instrument-coverage` compiler flag to instrument the binary. Then we use grcov to generate an lcov file from the collected coverage data and finally we combine the lcov files from rust and python into a single file and upload that to coveralls. Ideally this will enable us to ensure our python unittests provide sufficient coverage of compiled code in Qiskit and highlight any potential gaps in test coverage. * Add necessary rust llvm toolchain pieces * Stop using tox and build terra by hand Tox wasn't enabling passing the passenv variables from the environment to pip during the build step. This prevented the instrumented binary from being built which caused the grcov step to fail. To address this, this commit stops using tox so we can manually build terra from source and set the appropriate flags on rustc/cargo to enabled the coverage instrumentation. * Use pip to pull in pyproject.toml build deps * Fix typo * Remove unused mv line * Fix typo * Generate separate rust coverage files for different test stages * Clear coverage data between test steps * Remove stray target entry in rust coverage data * Try extra grcov options * Update .github/workflows/coverage.yml * Drop rust flags from tox.ini Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/workflows/coverage.yml | 52 ++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 08861cb1def9..f0c957994ccb 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -16,14 +16,56 @@ jobs: name: Install Python with: python-version: '3.8' + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + profile: default + components: llvm-tools-preview - name: Install dependencies - run: pip install tox coveragepy-lcov - - name: Run coverage report - run: tox -ecoverage + run: | + pip install coveragepy-lcov + sudo apt-get install lcov + - name: Download grcov for rust coverage + run: curl -L https://github.com/mozilla/grcov/releases/download/v0.8.11/grcov-x86_64-unknown-linux-gnu.tar.bz2 | tar xj + - name: Build and install qiskit-terra + run: pip install -e . env: + CARGO_INCREMENTAL: 0 + RUSTFLAGS: "-Cinstrument-coverage" + LLVM_PROFILE_FILE: "qiskit-%p-%m.profraw" SETUPTOOLS_ENABLE_FEATURES: "legacy-editable" - - name: Convert to lcov - run: coveragepy-lcov --output_file_path coveralls.info + - name: Generate unittest coverage report + run: | + set -e + pip install -r requirements-dev.txt qiskit-aer + stestr run + ./grcov . --binary-path ./target/debug/ -s . --llvm --parallel -t lcov --branch --ignore-not-existing --ignore "/*" -o ./rust_unittest.info + mkdir rust_lcov + mv ./rust_unittest.info rust_lcov/. + rm *profraw + env: + QISKIT_TEST_CAPTURE_STREAMS: 1 + QISKIT_PARALLEL: FALSE + PYTHON: "coverage3 run --source qiskit --parallel-mode" + - name: Generate parallel_map test + run: | + set -e + coverage3 run --source qiskit --parallel-mode ./tools/verify_parallel_map.py + ./grcov . --binary-path ./target/debug/ -s . --llvm --parallel -t lcov --branch --ignore-not-existing --ignore "/*" -o ./rust_parallel_map.info + mv rust_lcov/rust_unittest.info . + env: + QISKIT_TEST_CAPTURE_STREAMS: 1 + QISKIT_PARALLEL: FALSE + PYTHON: "coverage3 run --source qiskit --parallel-mode" + - name: Convert to lcov and combine data + run: | + set -e + coverage3 combine + coveragepy-lcov --output_file_path python.info + lcov --add-tracefile python.info -a rust_unittest.info -a rust_parallel_map.info -o combined.info + lcov --remove combined.info "target/*" -o coveralls.info - name: Coveralls uses: coverallsapp/github-action@master with: From f2befd10b1aba6d9369daf4465cffdf75c7da576 Mon Sep 17 00:00:00 2001 From: Ikko Hamamura Date: Thu, 15 Sep 2022 13:19:42 +0900 Subject: [PATCH 13/56] Composite key for Primitives (#8604) * robust key for pirmitives * add more keys * black * fix type hint * add num_qubits and num_clbits * add docstring * use more circuit.data * remove id * add tests * Update qiskit/primitives/utils.py * add scheduling test * readd id --- qiskit/primitives/base_estimator.py | 9 ++++---- qiskit/primitives/base_sampler.py | 10 ++++---- qiskit/primitives/estimator.py | 7 +++--- qiskit/primitives/sampler.py | 12 +++++++--- qiskit/primitives/utils.py | 26 ++++++++++++++++++++- test/python/primitives/test_sampler.py | 32 +++++++++++++++++++++++++- 6 files changed, 79 insertions(+), 17 deletions(-) diff --git a/qiskit/primitives/base_estimator.py b/qiskit/primitives/base_estimator.py index f5996dea82c2..446aaebd9156 100644 --- a/qiskit/primitives/base_estimator.py +++ b/qiskit/primitives/base_estimator.py @@ -119,6 +119,7 @@ from qiskit.utils.deprecation import deprecate_arguments, deprecate_function from .estimator_result import EstimatorResult +from .utils import _circuit_key class BaseEstimator(ABC): @@ -170,7 +171,7 @@ def __init__( # To guarantee that they exist as instance variable. # With only dynamic set, the python will not know if the attribute exists or not. - self._circuit_ids: dict[int, int] = self._circuit_ids + self._circuit_ids: dict[tuple, int] = self._circuit_ids self._observable_ids: dict[int, int] = self._observable_ids if parameters is None: @@ -205,9 +206,9 @@ def __new__( self._circuit_ids = {} elif isinstance(circuits, Iterable): circuits = copy(circuits) - self._circuit_ids = {id(circuit): i for i, circuit in enumerate(circuits)} + self._circuit_ids = {_circuit_key(circuit): i for i, circuit in enumerate(circuits)} else: - self._circuit_ids = {id(circuits): 0} + self._circuit_ids = {_circuit_key(circuits): 0} if observables is None: self._observable_ids = {} elif isinstance(observables, Iterable): @@ -335,7 +336,7 @@ def __call__( # Allow objects circuits = [ - self._circuit_ids.get(id(circuit)) + self._circuit_ids.get(_circuit_key(circuit)) if not isinstance(circuit, (int, np.integer)) else circuit for circuit in circuits diff --git a/qiskit/primitives/base_sampler.py b/qiskit/primitives/base_sampler.py index 4aeee0f55b89..f36469d09630 100644 --- a/qiskit/primitives/base_sampler.py +++ b/qiskit/primitives/base_sampler.py @@ -105,7 +105,7 @@ from qiskit.utils.deprecation import deprecate_arguments, deprecate_function from .sampler_result import SamplerResult -from .utils import final_measurement_mapping +from .utils import _circuit_key, final_measurement_mapping class BaseSampler(ABC): @@ -146,7 +146,7 @@ def __init__( # To guarantee that they exist as instance variable. # With only dynamic set, the python will not know if the attribute exists or not. - self._circuit_ids: dict[int, int] = self._circuit_ids + self._circuit_ids: dict[tuple, int] = self._circuit_ids if parameters is None: self._parameters = [circ.parameters for circ in self._circuits] @@ -173,9 +173,9 @@ def __new__( self._circuit_ids = {} elif isinstance(circuits, Iterable): circuits = copy(circuits) - self._circuit_ids = {id(circuit): i for i, circuit in enumerate(circuits)} + self._circuit_ids = {_circuit_key(circuit): i for i, circuit in enumerate(circuits)} else: - self._circuit_ids = {id(circuits): 0} + self._circuit_ids = {_circuit_key(circuits): 0} return self @deprecate_function( @@ -267,7 +267,7 @@ def __call__( # Allow objects circuits = [ - self._circuit_ids.get(id(circuit)) + self._circuit_ids.get(_circuit_key(circuit)) if not isinstance(circuit, (int, np.integer)) else circuit for circuit in circuits diff --git a/qiskit/primitives/estimator.py b/qiskit/primitives/estimator.py index 142e254d6dee..bc26b242e14a 100644 --- a/qiskit/primitives/estimator.py +++ b/qiskit/primitives/estimator.py @@ -30,7 +30,7 @@ from .base_estimator import BaseEstimator from .estimator_result import EstimatorResult from .primitive_job import PrimitiveJob -from .utils import bound_circuit_to_instruction, init_circuit, init_observable +from .utils import _circuit_key, bound_circuit_to_instruction, init_circuit, init_observable class Estimator(BaseEstimator): @@ -157,12 +157,13 @@ def _run( ) -> PrimitiveJob: circuit_indices = [] for i, circuit in enumerate(circuits): - index = self._circuit_ids.get(id(circuit)) + key = _circuit_key(circuit) + index = self._circuit_ids.get(key) if index is not None: circuit_indices.append(index) else: circuit_indices.append(len(self._circuits)) - self._circuit_ids[id(circuit)] = len(self._circuits) + self._circuit_ids[key] = len(self._circuits) self._circuits.append(circuit) self._parameters.append(parameters[i]) observable_indices = [] diff --git a/qiskit/primitives/sampler.py b/qiskit/primitives/sampler.py index 6114997c073f..398a26b6d8b1 100644 --- a/qiskit/primitives/sampler.py +++ b/qiskit/primitives/sampler.py @@ -29,7 +29,12 @@ from .base_sampler import BaseSampler from .primitive_job import PrimitiveJob from .sampler_result import SamplerResult -from .utils import bound_circuit_to_instruction, final_measurement_mapping, init_circuit +from .utils import ( + _circuit_key, + bound_circuit_to_instruction, + final_measurement_mapping, + init_circuit, +) class Sampler(BaseSampler): @@ -140,12 +145,13 @@ def _run( ) -> PrimitiveJob: circuit_indices = [] for i, circuit in enumerate(circuits): - index = self._circuit_ids.get(id(circuit)) + key = _circuit_key(circuit) + index = self._circuit_ids.get(key) if index is not None: circuit_indices.append(index) else: circuit_indices.append(len(self._circuits)) - self._circuit_ids[id(circuit)] = len(self._circuits) + self._circuit_ids[key] = len(self._circuits) circuit, qargs = self._preprocess_circuit(circuit) self._circuits.append(circuit) self._qargs_list.append(qargs) diff --git a/qiskit/primitives/utils.py b/qiskit/primitives/utils.py index 36fbae8f15f9..053fb17291bf 100644 --- a/qiskit/primitives/utils.py +++ b/qiskit/primitives/utils.py @@ -15,7 +15,7 @@ from __future__ import annotations -from qiskit.circuit import ParameterExpression, QuantumCircuit, Instruction +from qiskit.circuit import Instruction, ParameterExpression, QuantumCircuit from qiskit.extensions.quantum_initializer.initializer import Initialize from qiskit.opflow import PauliSumOp from qiskit.quantum_info import SparsePauliOp, Statevector @@ -113,6 +113,30 @@ def final_measurement_mapping(circuit: QuantumCircuit) -> dict[int, int]: return mapping +def _circuit_key(circuit: QuantumCircuit) -> tuple: + """Private key function for QuantumCircuit. + + This is the workaround until :meth:`QuantumCircuit.__hash__` will be introduced. + If key collision is found, please add elements to avoid it. + + Args: + circuit: Input quantum circuit. + + Returns: + Key for directory. + """ + return ( + id(circuit), + circuit.num_qubits, + circuit.num_clbits, + circuit.num_parameters, + tuple( + (d.qubits, d.clbits, d.operation.name, tuple(d.operation.params)) for d in circuit.data + ), + None if circuit._op_start_times is None else tuple(circuit._op_start_times), + ) + + def bound_circuit_to_instruction(circuit: QuantumCircuit) -> Instruction: """Build an :class:`~qiskit.circuit.Instruction` object from a :class:`~qiskit.circuit.QuantumCircuit` diff --git a/test/python/primitives/test_sampler.py b/test/python/primitives/test_sampler.py index ec211a695f42..dbdc048b69b6 100644 --- a/test/python/primitives/test_sampler.py +++ b/test/python/primitives/test_sampler.py @@ -18,12 +18,14 @@ import numpy as np from ddt import ddt -from qiskit import QuantumCircuit +from qiskit import QuantumCircuit, pulse, transpile from qiskit.circuit import Parameter from qiskit.circuit.library import RealAmplitudes from qiskit.exceptions import QiskitError from qiskit.primitives import Sampler, SamplerResult +from qiskit.primitives.utils import _circuit_key from qiskit.providers import JobStatus, JobV1 +from qiskit.providers.fake_provider import FakeAlmaden from qiskit.test import QiskitTestCase @@ -686,6 +688,34 @@ def test_options(self): result = sampler.run([self._pqc], parameter_values=params).result() self._compare_probs(result.quasi_dists, target) + def test_different_circuits(self): + """Test collision of quantum circuits.""" + + with self.subTest("Ry circuit"): + + def test_func(n): + qc = QuantumCircuit(1, 1, name="foo") + qc.ry(n, 0) + return qc + + keys = [_circuit_key(test_func(i)) for i in range(5)] + self.assertEqual(len(keys), len(set(keys))) + + with self.subTest("pulse circuit"): + + def test_with_scheduling(n): + custom_gate = pulse.Schedule(name="custom_x_gate") + custom_gate.insert( + 0, pulse.Play(pulse.Constant(160 * n, 0.1), pulse.DriveChannel(0)), inplace=True + ) + qc = QuantumCircuit(1) + qc.x(0) + qc.add_calibration("x", qubits=(0,), schedule=custom_gate) + return transpile(qc, FakeAlmaden(), scheduling_method="alap") + + keys = [_circuit_key(test_with_scheduling(i)) for i in range(1, 5)] + self.assertEqual(len(keys), len(set(keys))) + if __name__ == "__main__": unittest.main() From 4ac8b24af1cf6f99a418b5f118c29661f89a2b2c Mon Sep 17 00:00:00 2001 From: "Daniel J. Egger" <38065505+eggerdj@users.noreply.github.com> Date: Thu, 15 Sep 2022 19:01:38 +0200 Subject: [PATCH 14/56] Edge coloring for the Commuting2qGateRouter (#8341) * * Added an edge coloring to the Commuting2qGateRouter. * * Black and lint. * * Lint * * ddt bug fix * * docs * * lint * * Removed unneeded check. * * Removed wrong test. * * Updated docstring. * * Test refactor Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../commuting_2q_gate_router.py | 55 +++++++++++++--- .../notes/edge-coloring-e55700fcf8902c79.yaml | 6 ++ .../transpiler/test_swap_strategy_router.py | 66 +++++++++++++++++++ 3 files changed, 117 insertions(+), 10 deletions(-) create mode 100644 releasenotes/notes/edge-coloring-e55700fcf8902c79.yaml diff --git a/qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py b/qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py index eb1c3bbcfa98..11919bf18b6c 100644 --- a/qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +++ b/qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py @@ -103,18 +103,32 @@ class Commuting2qGateRouter(TransformationPass): into account. """ - def __init__(self, swap_strategy: Optional[SwapStrategy] = None) -> None: - """ + def __init__( + self, + swap_strategy: Optional[SwapStrategy] = None, + edge_coloring: Optional[Dict[Tuple[int, int], int]] = None, + ) -> None: + r""" Args: swap_strategy: An instance of a :class:`.SwapStrategy` that holds the swap layers that are used, and the order in which to apply them, to map the instruction to the hardware. If this field is not given if should be contained in the property set of the pass. This allows other passes to determine the most appropriate swap strategy at run-time. + edge_coloring: An optional edge coloring of the coupling map (I.e. no two edges that + share a node have the same color). If the edge coloring is given then the commuting + gates that can be simultaneously applied given the current qubit permutation are + grouped according to the edge coloring and applied according to this edge + coloring. Here, a color is an int which is used as the index to define and + access the groups of commuting gates that can be applied simultaneously. + If the edge coloring is not given then the sets will be built-up using a + greedy algorithm. The edge coloring is useful to position gates such as + ``RZZGate``\s next to swap gates to exploit CX cancellations. """ super().__init__() self._swap_strategy = swap_strategy self._bit_indices = None + self._edge_coloring = edge_coloring def run(self, dag: DAGCircuit) -> DAGCircuit: """Run the pass by decomposing the nodes it applies on. @@ -217,23 +231,44 @@ def _position_in_cmap(self, j: int, k: int, layout: Layout) -> Tuple[int, ...]: return bit0, bit1 - @staticmethod - def _build_sub_layers(current_layer: Dict[tuple, Gate]) -> List[Dict[tuple, Gate]]: - """A helper method to build-up sets of gates that can simultaneously be applied. + def _build_sub_layers(self, current_layer: Dict[tuple, Gate]) -> List[Dict[tuple, Gate]]: + """A helper method to build-up sets of gates to simultaneously apply. - Note that this could also be done using an edge coloring of the coupling map. + This is done with an edge coloring if the ``edge_coloring`` init argument was given or with + a greedy algorithm if not. With an edge coloring all gates on edges with the same color + will be applied simultaneously. These sublayers are applied in the order of their color, + which is an int, in increasing color order. Args: current_layer: All gates in the current layer can be applied given the qubit ordering - of the current layout. However, not all gates in the current layer can be applied - simultaneously. This function creates sub-layers by greedily building up sub-layers - of gates. All gates in a sub-layer can simultaneously be applied given the coupling - map and current qubit configuration. + of the current layout. However, not all gates in the current layer can be applied + simultaneously. This function creates sub-layers by building up sub-layers + of gates. All gates in a sub-layer can simultaneously be applied given the coupling + map and current qubit configuration. Returns: A list of gate dicts that can be applied. The gates a position 0 are applied first. A gate dict has the qubit tuple as key and the gate to apply as value. """ + if self._edge_coloring is not None: + return self._edge_coloring_build_sub_layers(current_layer) + else: + return self._greedy_build_sub_layers(current_layer) + + def _edge_coloring_build_sub_layers( + self, current_layer: Dict[tuple, Gate] + ) -> List[Dict[tuple, Gate]]: + """The edge coloring method of building sub-layers of commuting gates.""" + sub_layers = [{} for _ in set(self._edge_coloring.values())] + for edge, gate in current_layer.items(): + color = self._edge_coloring[edge] + sub_layers[color][edge] = gate + + return sub_layers + + @staticmethod + def _greedy_build_sub_layers(current_layer: Dict[tuple, Gate]) -> List[Dict[tuple, Gate]]: + """The greedy method of building sub-layers of commuting gates.""" sub_layers = [] while len(current_layer) > 0: current_sub_layer, remaining_gates, blocked_vertices = {}, {}, set() diff --git a/releasenotes/notes/edge-coloring-e55700fcf8902c79.yaml b/releasenotes/notes/edge-coloring-e55700fcf8902c79.yaml new file mode 100644 index 000000000000..130c72cb8157 --- /dev/null +++ b/releasenotes/notes/edge-coloring-e55700fcf8902c79.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + The :class:`.Commuting2qGateRouter` can now take as argument an edge + coloring of the coupling map to determine the order in which the + commuting gates are applied. diff --git a/test/python/transpiler/test_swap_strategy_router.py b/test/python/transpiler/test_swap_strategy_router.py index 357e5bff182c..fe94206d497e 100644 --- a/test/python/transpiler/test_swap_strategy_router.py +++ b/test/python/transpiler/test_swap_strategy_router.py @@ -12,6 +12,8 @@ """Tests for swap strategy routers.""" +from ddt import ddt, data + from qiskit.circuit import QuantumCircuit, Qubit, QuantumRegister from qiskit.transpiler import PassManager, CouplingMap, Layout, TranspilerError @@ -25,6 +27,8 @@ from qiskit.transpiler.passes import EnlargeWithAncilla from qiskit.transpiler.passes import ApplyLayout from qiskit.transpiler.passes import SetLayout +from qiskit.transpiler.passes import CXCancellation +from qiskit.transpiler.passes import Decompose from qiskit.test import QiskitTestCase @@ -38,6 +42,7 @@ ) +@ddt class TestPauliEvolutionSwapStrategies(QiskitTestCase): """A class to test the swap strategies transpiler passes.""" @@ -497,6 +502,67 @@ def test_single_qubit_circuit(self): self.assertEqual(circ, self.pm_.run(circ)) + @data( + {(0, 1): 0, (2, 3): 0, (1, 2): 1}, # better coloring for the swap strategy + {(0, 1): 1, (2, 3): 1, (1, 2): 0}, # worse, i.e., less CX cancellation. + ) + def test_edge_coloring(self, edge_coloring): + """Test that the edge coloring works.""" + op = PauliSumOp.from_list([("IIZZ", 1), ("IZZI", 2), ("ZZII", 3), ("ZIZI", 4)]) + swaps = (((1, 2),),) + + cmap = CouplingMap([[0, 1], [1, 2], [2, 3]]) + cmap.make_symmetric() + + swap_strat = SwapStrategy(cmap, swaps) + + circ = QuantumCircuit(4) + circ.append(PauliEvolutionGate(op, 1), range(4)) + + pm_ = PassManager( + [ + FindCommutingPauliEvolutions(), + Commuting2qGateRouter(swap_strat, edge_coloring=edge_coloring), + Decompose(), # double decompose gets to CX + Decompose(), + CXCancellation(), + ] + ) + + expected = QuantumCircuit(4) + if edge_coloring[(0, 1)] == 1: + expected.cx(1, 2) + expected.rz(4, 2) + expected.cx(1, 2) + expected.cx(0, 1) + expected.rz(2, 1) + expected.cx(0, 1) + expected.cx(2, 3) + expected.rz(6, 3) + expected.cx(2, 3) + expected.cx(1, 2) + expected.cx(2, 1) + expected.cx(1, 2) + expected.cx(2, 3) + expected.rz(8, 3) + expected.cx(2, 3) + else: + expected.cx(0, 1) + expected.rz(2, 1) + expected.cx(0, 1) + expected.cx(2, 3) + expected.rz(6, 3) + expected.cx(2, 3) + expected.cx(1, 2) + expected.rz(4, 2) + expected.cx(2, 1) + expected.cx(1, 2) + expected.cx(2, 3) + expected.rz(8, 3) + expected.cx(2, 3) + + self.assertEqual(pm_.run(circ), expected) + class TestSwapRouterExceptions(QiskitTestCase): """Test that exceptions are properly raises.""" From 50f2eaa33e30afbefa5baf84cfe4273078a792fa Mon Sep 17 00:00:00 2001 From: dlasecki Date: Thu, 15 Sep 2022 22:01:29 +0200 Subject: [PATCH 15/56] Adds observable evaluator with primitives. (#8683) * Added observables_evaluator.py with primitives. * Added ListOrDict support to observables_evaluator.py. * Included CR suggestions. * Applied some CR comments. * Added reno. * Support for 0 operator. * Add pending deprecation * Code refactoring. * Code refactoring. * Improved reno. * Returning variances and shots. * Unit test fix. * Reduced use of opflow. * Handle empty inputs gracefully. * Applied CR comments. * Applied CR comments. * Eliminated cyclic import. Co-authored-by: Manoel Marques Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/algorithms/__init__.py | 3 + qiskit/algorithms/aux_ops_evaluator.py | 16 +- qiskit/algorithms/observables_evaluator.py | 157 ++++++++++++++++++ ...able-eval-primitives-e1fd989e15c7760c.yaml | 12 ++ .../algorithms/test_observables_evaluator.py | 157 ++++++++++++++++++ 5 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 qiskit/algorithms/observables_evaluator.py create mode 100644 releasenotes/notes/observable-eval-primitives-e1fd989e15c7760c.yaml create mode 100644 test/python/algorithms/test_observables_evaluator.py diff --git a/qiskit/algorithms/__init__.py b/qiskit/algorithms/__init__.py index 40f255501ad5..4bf66e001622 100644 --- a/qiskit/algorithms/__init__.py +++ b/qiskit/algorithms/__init__.py @@ -262,6 +262,7 @@ :toctree: ../stubs/ eval_observables + estimate_observables Utility classes --------------- @@ -319,6 +320,7 @@ ) from .exceptions import AlgorithmError from .aux_ops_evaluator import eval_observables +from .observables_evaluator import estimate_observables from .evolvers.trotterization import TrotterQRTE from .evolvers.variational.var_qite import VarQITE from .evolvers.variational.var_qrte import VarQRTE @@ -382,4 +384,5 @@ "IterativePhaseEstimation", "AlgorithmError", "eval_observables", + "estimate_observables", ] diff --git a/qiskit/algorithms/aux_ops_evaluator.py b/qiskit/algorithms/aux_ops_evaluator.py index dded8f80645b..9ce9349a7de8 100644 --- a/qiskit/algorithms/aux_ops_evaluator.py +++ b/qiskit/algorithms/aux_ops_evaluator.py @@ -26,10 +26,18 @@ from qiskit.providers import Backend from qiskit.quantum_info import Statevector from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_function from .list_or_dict import ListOrDict +@deprecate_function( + "The eval_observables function has been superseded by the " + "qiskit.algorithms.observables_evaluator.estimate_observables function. " + "This function will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, +) def eval_observables( quantum_instance: Union[QuantumInstance, Backend], quantum_state: Union[ @@ -42,10 +50,16 @@ def eval_observables( threshold: float = 1e-12, ) -> ListOrDict[Tuple[complex, complex]]: """ - Accepts a list or a dictionary of operators and calculates their expectation values - means + Pending deprecation: Accepts a list or a dictionary of operators and calculates + their expectation values - means and standard deviations. They are calculated with respect to a quantum state provided. A user can optionally provide a threshold value which filters mean values falling below the threshold. + This function has been superseded by the + :func:`qiskit.algorithms.observables_evaluator.eval_observables` function. + It will be deprecated in a future release and subsequently + removed after that. + Args: quantum_instance: A quantum instance used for calculations. quantum_state: An unparametrized quantum circuit representing a quantum state that diff --git a/qiskit/algorithms/observables_evaluator.py b/qiskit/algorithms/observables_evaluator.py new file mode 100644 index 000000000000..f6a6c3d8094a --- /dev/null +++ b/qiskit/algorithms/observables_evaluator.py @@ -0,0 +1,157 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2021, 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. +"""Evaluator of observables for algorithms.""" +from __future__ import annotations + +import numpy as np + +from qiskit import QuantumCircuit +from qiskit.opflow import PauliSumOp +from .exceptions import AlgorithmError +from .list_or_dict import ListOrDict +from ..primitives import EstimatorResult, BaseEstimator +from ..quantum_info.operators.base_operator import BaseOperator + + +def estimate_observables( + estimator: BaseEstimator, + quantum_state: QuantumCircuit, + observables: ListOrDict[BaseOperator | PauliSumOp], + threshold: float = 1e-12, +) -> ListOrDict[tuple[complex, tuple[complex, int]]]: + """ + Accepts a sequence of operators and calculates their expectation values - means + and standard deviations. They are calculated with respect to a quantum state provided. A user + can optionally provide a threshold value which filters mean values falling below the threshold. + + Args: + estimator: An estimator primitive used for calculations. + quantum_state: An unparametrized quantum circuit representing a quantum state that + expectation values are computed against. + observables: A list or a dictionary of operators whose expectation values are to be + calculated. + threshold: A threshold value that defines which mean values should be neglected (helpful for + ignoring numerical instabilities close to 0). + + Returns: + A list or a dictionary of tuples (mean, (variance, shots)). + + Raises: + ValueError: If a ``quantum_state`` with free parameters is provided. + AlgorithmError: If a primitive job is not successful. + """ + + if ( + isinstance(quantum_state, QuantumCircuit) # State cannot be parametrized + and len(quantum_state.parameters) > 0 + ): + raise ValueError( + "A parametrized representation of a quantum_state was provided. It is not " + "allowed - it cannot have free parameters." + ) + if isinstance(observables, dict): + observables_list = list(observables.values()) + else: + observables_list = observables + + observables_list = _handle_zero_ops(observables_list) + quantum_state = [quantum_state] * len(observables) + try: + estimator_job = estimator.run(quantum_state, observables_list) + expectation_values = estimator_job.result().values + except Exception as exc: + raise AlgorithmError("The primitive job failed!") from exc + + variance_and_shots = _prep_variance_and_shots(estimator_job, len(expectation_values)) + + # Discard values below threshold + observables_means = expectation_values * (np.abs(expectation_values) > threshold) + # zip means and standard deviations into tuples + observables_results = list(zip(observables_means, variance_and_shots)) + + return _prepare_result(observables_results, observables) + + +def _handle_zero_ops( + observables_list: list[BaseOperator | PauliSumOp], +) -> list[BaseOperator | PauliSumOp]: + """Replaces all occurrence of operators equal to 0 in the list with an equivalent ``PauliSumOp`` + operator.""" + if observables_list: + zero_op = PauliSumOp.from_list([("I" * observables_list[0].num_qubits, 0)]) + for ind, observable in enumerate(observables_list): + if observable == 0: + observables_list[ind] = zero_op + return observables_list + + +def _prepare_result( + observables_results: list[tuple[complex, tuple[complex, int]]], + observables: ListOrDict[BaseOperator | PauliSumOp], +) -> ListOrDict[tuple[complex, tuple[complex, int]]]: + """ + Prepares a list of tuples of eigenvalues and (variance, shots) tuples from + ``observables_results`` and ``observables``. + + Args: + observables_results: A list of tuples (mean, (variance, shots)). + observables: A list or a dictionary of operators whose expectation values are to be + calculated. + + Returns: + A list or a dictionary of tuples (mean, (variance, shots)). + """ + + if isinstance(observables, list): + # by construction, all None values will be overwritten + observables_eigenvalues = [None] * len(observables) + key_value_iterator = enumerate(observables_results) + else: + observables_eigenvalues = {} + key_value_iterator = zip(observables.keys(), observables_results) + + for key, value in key_value_iterator: + observables_eigenvalues[key] = value + return observables_eigenvalues + + +def _prep_variance_and_shots( + estimator_result: EstimatorResult, + results_length: int, +) -> list[tuple[complex, int]]: + """ + Prepares a list of tuples with variances and shots from results provided by expectation values + calculations. If there is no variance or shots data available from a primitive, the values will + be set to ``0``. + + Args: + estimator_result: An estimator result. + results_length: Number of expectation values calculated. + + Returns: + A list of tuples of the form (variance, shots). + """ + if not estimator_result.metadata: + return [(0, 0)] * results_length + + results = [] + for metadata in estimator_result.metadata: + variance, shots = 0.0, 0 + if metadata: + if "variance" in metadata.keys(): + variance = metadata["variance"] + if "shots" in metadata.keys(): + shots = metadata["shots"] + + results.append((variance, shots)) + + return results diff --git a/releasenotes/notes/observable-eval-primitives-e1fd989e15c7760c.yaml b/releasenotes/notes/observable-eval-primitives-e1fd989e15c7760c.yaml new file mode 100644 index 000000000000..43b2c622edbb --- /dev/null +++ b/releasenotes/notes/observable-eval-primitives-e1fd989e15c7760c.yaml @@ -0,0 +1,12 @@ +--- +features: + - | + Added :meth:`qiskit.algorithms.observables_evaluator.eval_observables` with + :class:`qiskit.primitives.BaseEstimator` as ``init`` parameter. It will soon replace + :meth:`qiskit.algorithms.aux_ops_evaluator.eval_observables`. +deprecations: + - | + Using :meth:`qiskit.algorithms.aux_ops_evaluator.eval_observables` will now issue a + ``PendingDeprecationWarning``. This method will be deprecated in a future release and + subsequently removed after that. This is being replaced by the new + :meth:`qiskit.algorithms.observables_evaluator.eval_observables` primitive-enabled method. diff --git a/test/python/algorithms/test_observables_evaluator.py b/test/python/algorithms/test_observables_evaluator.py new file mode 100644 index 000000000000..bcff77cdd5b4 --- /dev/null +++ b/test/python/algorithms/test_observables_evaluator.py @@ -0,0 +1,157 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. +"""Tests evaluator of auxiliary operators for algorithms.""" +from __future__ import annotations +import unittest +from typing import Tuple + +from test.python.algorithms import QiskitAlgorithmsTestCase +import numpy as np +from ddt import ddt, data + +from qiskit.algorithms.list_or_dict import ListOrDict +from qiskit.quantum_info.operators.base_operator import BaseOperator +from qiskit.algorithms import estimate_observables +from qiskit.primitives import Estimator +from qiskit.quantum_info import Statevector, SparsePauliOp +from qiskit import QuantumCircuit +from qiskit.circuit.library import EfficientSU2 +from qiskit.opflow import PauliSumOp +from qiskit.utils import algorithm_globals + + +@ddt +class TestObservablesEvaluator(QiskitAlgorithmsTestCase): + """Tests evaluator of auxiliary operators for algorithms.""" + + def setUp(self): + super().setUp() + self.seed = 50 + algorithm_globals.random_seed = self.seed + + self.threshold = 1e-8 + + def get_exact_expectation( + self, ansatz: QuantumCircuit, observables: ListOrDict[BaseOperator | PauliSumOp] + ): + """ + Calculates the exact expectation to be used as an expected result for unit tests. + """ + if isinstance(observables, dict): + observables_list = list(observables.values()) + else: + observables_list = observables + # the exact value is a list of (mean, (variance, shots)) where we expect 0 variance and + # 0 shots + exact = [ + (Statevector(ansatz).expectation_value(observable), (0, 0)) + for observable in observables_list + ] + + if isinstance(observables, dict): + return dict(zip(observables.keys(), exact)) + + return exact + + def _run_test( + self, + expected_result: ListOrDict[Tuple[complex, complex]], + quantum_state: QuantumCircuit, + decimal: int, + observables: ListOrDict[BaseOperator | PauliSumOp], + estimator: Estimator, + ): + result = estimate_observables(estimator, quantum_state, observables, self.threshold) + + if isinstance(observables, dict): + np.testing.assert_equal(list(result.keys()), list(expected_result.keys())) + means = [element[0] for element in result.values()] + expected_means = [element[0] for element in expected_result.values()] + np.testing.assert_array_almost_equal(means, expected_means, decimal=decimal) + + vars_and_shots = [element[1] for element in result.values()] + expected_vars_and_shots = [element[1] for element in expected_result.values()] + np.testing.assert_array_equal(vars_and_shots, expected_vars_and_shots) + else: + means = [element[0] for element in result] + expected_means = [element[0] for element in expected_result] + np.testing.assert_array_almost_equal(means, expected_means, decimal=decimal) + + vars_and_shots = [element[1] for element in result] + expected_vars_and_shots = [element[1] for element in expected_result] + np.testing.assert_array_equal(vars_and_shots, expected_vars_and_shots) + + @data( + [ + PauliSumOp.from_list([("II", 0.5), ("ZZ", 0.5), ("YY", 0.5), ("XX", -0.5)]), + PauliSumOp.from_list([("II", 2.0)]), + ], + [ + PauliSumOp.from_list([("ZZ", 2.0)]), + ], + { + "op1": PauliSumOp.from_list([("II", 2.0)]), + "op2": PauliSumOp.from_list([("II", 0.5), ("ZZ", 0.5), ("YY", 0.5), ("XX", -0.5)]), + }, + { + "op1": PauliSumOp.from_list([("ZZ", 2.0)]), + }, + [], + {}, + ) + def test_estimate_observables(self, observables: ListOrDict[BaseOperator | PauliSumOp]): + """Tests evaluator of auxiliary operators for algorithms.""" + + ansatz = EfficientSU2(2) + parameters = np.array( + [1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0], + dtype=float, + ) + + bound_ansatz = ansatz.bind_parameters(parameters) + states = bound_ansatz + expected_result = self.get_exact_expectation(bound_ansatz, observables) + estimator = Estimator() + decimal = 6 + self._run_test( + expected_result, + states, + decimal, + observables, + estimator, + ) + + def test_estimate_observables_zero_op(self): + """Tests if a zero operator is handled correctly.""" + ansatz = EfficientSU2(2) + parameters = np.array( + [1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0], + dtype=float, + ) + + bound_ansatz = ansatz.bind_parameters(parameters) + state = bound_ansatz + estimator = Estimator() + observables = [SparsePauliOp(["XX", "YY"]), 0] + result = estimate_observables(estimator, state, observables, self.threshold) + expected_result = [(0.015607318055509564, (0, 0)), (0.0, (0, 0))] + means = [element[0] for element in result] + expected_means = [element[0] for element in expected_result] + np.testing.assert_array_almost_equal(means, expected_means, decimal=0.01) + + vars_and_shots = [element[1] for element in result] + expected_vars_and_shots = [element[1] for element in expected_result] + np.testing.assert_array_equal(vars_and_shots, expected_vars_and_shots) + + +if __name__ == "__main__": + unittest.main() From 64a9eb1e4a0d03ba8f2c11fdd7a13996666de71f Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Thu, 15 Sep 2022 22:31:50 +0100 Subject: [PATCH 16/56] Lift trivial transpiler passes to handle control flow (#8752) This converts all transpiler passes whose structure allows their `run` methods to be made trivially recursive, either by eagerly modifying all control-flow operations in a depth-first pass before running the method on the top level of the circuit, or by inserting the recursion during an interior loop. There are other passes that are relatively simple to handle as well (`UnitarySynthesis` is one), but their current structure would require just a shade more work than the trivial cases in this commit. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../passes/basis/unroll_3q_or_more.py | 6 ++ .../passes/basis/unroll_custom_definitions.py | 6 +- qiskit/transpiler/passes/basis/unroller.py | 11 +-- .../optimization/collect_linear_functions.py | 2 + .../passes/optimization/cx_cancellation.py | 2 + .../passes/optimization/optimize_cliffords.py | 2 + .../optimize_swap_before_measure.py | 3 + .../remove_diagonal_gates_before_measure.py | 2 + .../reset_after_measure_simplification.py | 2 + qiskit/transpiler/passes/utils/__init__.py | 5 +- .../transpiler/passes/utils/control_flow.py | 58 +++++++++++++++ .../passes/utils/remove_barriers.py | 2 + .../python/transpiler/test_clifford_passes.py | 62 ++++++++++++++++ .../python/transpiler/test_cx_cancellation.py | 54 ++++++++++++++ .../test_linear_functions_passes.py | 49 ++++++++++++- .../test_optimize_swap_before_measure.py | 54 ++++++++++++++ .../python/transpiler/test_remove_barriers.py | 54 ++++++++++++++ ...st_remove_diagonal_gates_before_measure.py | 54 ++++++++++++++ ...test_reset_after_measure_simplification.py | 56 +++++++++++++++ .../transpiler/test_unroll_3q_or_more.py | 50 +++++++++++++ .../test_unroll_custom_definitions.py | 72 ++++++++++++++++++- 21 files changed, 594 insertions(+), 12 deletions(-) create mode 100644 qiskit/transpiler/passes/utils/control_flow.py diff --git a/qiskit/transpiler/passes/basis/unroll_3q_or_more.py b/qiskit/transpiler/passes/basis/unroll_3q_or_more.py index 4f0ec9069f86..9852c9f12f27 100644 --- a/qiskit/transpiler/passes/basis/unroll_3q_or_more.py +++ b/qiskit/transpiler/passes/basis/unroll_3q_or_more.py @@ -13,7 +13,9 @@ """Recursively expands 3q+ gates until the circuit only contains 2q or 1q gates.""" from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow from qiskit.exceptions import QiskitError +from qiskit.circuit import ControlFlowOp from qiskit.converters.circuit_to_dag import circuit_to_dag @@ -63,6 +65,10 @@ def run(self, dag): elif self.basis_gates is not None and node.name in self.basis_gates: continue + if isinstance(node.op, ControlFlowOp): + node.op = control_flow.map_blocks(self.run, node.op) + continue + # TODO: allow choosing other possible decompositions rule = node.op.definition.data if not rule: diff --git a/qiskit/transpiler/passes/basis/unroll_custom_definitions.py b/qiskit/transpiler/passes/basis/unroll_custom_definitions.py index 185460ab9506..312676d2b689 100644 --- a/qiskit/transpiler/passes/basis/unroll_custom_definitions.py +++ b/qiskit/transpiler/passes/basis/unroll_custom_definitions.py @@ -14,7 +14,8 @@ from qiskit.exceptions import QiskitError from qiskit.transpiler.basepasses import TransformationPass -from qiskit.circuit import ControlledGate +from qiskit.transpiler.passes.utils import control_flow +from qiskit.circuit import ControlledGate, ControlFlowOp from qiskit.converters.circuit_to_dag import circuit_to_dag @@ -56,6 +57,9 @@ def run(self, dag): device_insts = basic_insts | set(self._basis_gates) for node in dag.op_nodes(): + if isinstance(node.op, ControlFlowOp): + node.op = control_flow.map_blocks(self.run, node.op) + continue if getattr(node.op, "_directive", False): continue diff --git a/qiskit/transpiler/passes/basis/unroller.py b/qiskit/transpiler/passes/basis/unroller.py index 035f87455783..5027e99bd550 100644 --- a/qiskit/transpiler/passes/basis/unroller.py +++ b/qiskit/transpiler/passes/basis/unroller.py @@ -13,10 +13,10 @@ """Unroll a circuit to a given basis.""" from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow from qiskit.exceptions import QiskitError from qiskit.circuit import ControlledGate, ControlFlowOp from qiskit.converters.circuit_to_dag import circuit_to_dag -from qiskit.converters.dag_to_circuit import dag_to_circuit class Unroller(TransformationPass): @@ -70,14 +70,9 @@ def run(self, dag): continue if isinstance(node.op, ControlFlowOp): - unrolled_blocks = [] - for block in node.op.blocks: - dag_block = circuit_to_dag(block) - unrolled_dag_block = self.run(dag_block) - unrolled_circ_block = dag_to_circuit(unrolled_dag_block) - unrolled_blocks.append(unrolled_circ_block) - node.op = node.op.replace_blocks(unrolled_blocks) + node.op = control_flow.map_blocks(self.run, node.op) continue + try: phase = node.op.definition.global_phase rule = node.op.definition.data diff --git a/qiskit/transpiler/passes/optimization/collect_linear_functions.py b/qiskit/transpiler/passes/optimization/collect_linear_functions.py index 455115511bbc..debf4f68c405 100644 --- a/qiskit/transpiler/passes/optimization/collect_linear_functions.py +++ b/qiskit/transpiler/passes/optimization/collect_linear_functions.py @@ -16,6 +16,7 @@ from collections import deque from qiskit.circuit.library.generalized_gates import LinearFunction from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow from qiskit.circuit import QuantumCircuit from qiskit.dagcircuit import DAGOpNode @@ -131,6 +132,7 @@ class CollectLinearFunctions(TransformationPass): """Collect blocks of linear gates (:class:`.CXGate` and :class:`.SwapGate` gates) and replaces them by linear functions (:class:`.LinearFunction`).""" + @control_flow.trivial_recurse def run(self, dag): """Run the CollectLinearFunctions pass on `dag`. diff --git a/qiskit/transpiler/passes/optimization/cx_cancellation.py b/qiskit/transpiler/passes/optimization/cx_cancellation.py index 945af3840955..6dd4a5364552 100644 --- a/qiskit/transpiler/passes/optimization/cx_cancellation.py +++ b/qiskit/transpiler/passes/optimization/cx_cancellation.py @@ -13,11 +13,13 @@ """Cancel back-to-back `cx` gates in dag.""" from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow class CXCancellation(TransformationPass): """Cancel back-to-back `cx` gates in dag.""" + @control_flow.trivial_recurse def run(self, dag): """Run the CXCancellation pass on `dag`. diff --git a/qiskit/transpiler/passes/optimization/optimize_cliffords.py b/qiskit/transpiler/passes/optimization/optimize_cliffords.py index c81539b60637..bf195f715547 100644 --- a/qiskit/transpiler/passes/optimization/optimize_cliffords.py +++ b/qiskit/transpiler/passes/optimization/optimize_cliffords.py @@ -13,6 +13,7 @@ """Combine consecutive Cliffords over the same qubits.""" from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow from qiskit.quantum_info.operators import Clifford @@ -22,6 +23,7 @@ class OptimizeCliffords(TransformationPass): Cliffords natively on the circuit. """ + @control_flow.trivial_recurse def run(self, dag): """Run the OptimizeCliffords pass on `dag`. diff --git a/qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py b/qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py index f4bc30d0cdb3..96cc3b8cdd62 100644 --- a/qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +++ b/qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py @@ -16,6 +16,7 @@ from qiskit.circuit import Measure from qiskit.circuit.library.standard_gates import SwapGate from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow from qiskit.dagcircuit import DAGCircuit, DAGOpNode, DAGOutNode @@ -26,6 +27,7 @@ class OptimizeSwapBeforeMeasure(TransformationPass): the classical bit of the measure instruction. """ + @control_flow.trivial_recurse def run(self, dag): """Run the OptimizeSwapBeforeMeasure pass on `dag`. @@ -35,6 +37,7 @@ def run(self, dag): Returns: DAGCircuit: the optimized DAG. """ + swaps = dag.op_nodes(SwapGate) for swap in swaps[::-1]: if getattr(swap.op, "condition", None) is not None: diff --git a/qiskit/transpiler/passes/optimization/remove_diagonal_gates_before_measure.py b/qiskit/transpiler/passes/optimization/remove_diagonal_gates_before_measure.py index 62066d518852..be4c79aa47e6 100644 --- a/qiskit/transpiler/passes/optimization/remove_diagonal_gates_before_measure.py +++ b/qiskit/transpiler/passes/optimization/remove_diagonal_gates_before_measure.py @@ -28,6 +28,7 @@ ) from qiskit.dagcircuit import DAGOpNode from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow class RemoveDiagonalGatesBeforeMeasure(TransformationPass): @@ -37,6 +38,7 @@ class RemoveDiagonalGatesBeforeMeasure(TransformationPass): a measurement. Including diagonal 2Q gates. """ + @control_flow.trivial_recurse def run(self, dag): """Run the RemoveDiagonalGatesBeforeMeasure pass on `dag`. diff --git a/qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py b/qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py index 22f1f87e2d79..4445e878ce6b 100644 --- a/qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +++ b/qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py @@ -13,6 +13,7 @@ """Replace resets after measure with a conditional XGate.""" from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow from qiskit.circuit.library.standard_gates.x import XGate from qiskit.circuit.reset import Reset from qiskit.circuit.measure import Measure @@ -29,6 +30,7 @@ class ResetAfterMeasureSimplification(TransformationPass): differently. """ + @control_flow.trivial_recurse def run(self, dag): """Run the pass on a dag.""" for node in dag.op_nodes(Measure): diff --git a/qiskit/transpiler/passes/utils/__init__.py b/qiskit/transpiler/passes/utils/__init__.py index 32b4057d0684..65209c35be9c 100644 --- a/qiskit/transpiler/passes/utils/__init__.py +++ b/qiskit/transpiler/passes/utils/__init__.py @@ -10,7 +10,7 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -"""Utility passes used for other main passes.""" +"""Utility passes and functions used for other main passes.""" from .check_map import CheckMap from .check_cx_direction import CheckCXDirection # Deprecated @@ -26,3 +26,6 @@ from .remove_barriers import RemoveBarriers from .contains_instruction import ContainsInstruction from .gates_basis import GatesInBasis + +# Utility functions +from . import control_flow diff --git a/qiskit/transpiler/passes/utils/control_flow.py b/qiskit/transpiler/passes/utils/control_flow.py new file mode 100644 index 000000000000..7786aeec9ec5 --- /dev/null +++ b/qiskit/transpiler/passes/utils/control_flow.py @@ -0,0 +1,58 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Internal utilities for working with control-flow operations.""" + +import functools +from typing import Callable + +from qiskit.circuit import ControlFlowOp +from qiskit.converters import circuit_to_dag, dag_to_circuit +from qiskit.dagcircuit import DAGCircuit + + +def map_blocks(dag_mapping: Callable[[DAGCircuit], DAGCircuit], op: ControlFlowOp) -> ControlFlowOp: + """Use the ``dag_mapping`` function to replace the blocks of a :class:`.ControlFlowOp` with new + ones. Each block will be automatically converted to a :class:`.DAGCircuit` and then returned + to a :class:`.QuantumCircuit`.""" + return op.replace_blocks( + [dag_to_circuit(dag_mapping(circuit_to_dag(block))) for block in op.blocks] + ) + + +def trivial_recurse(method): + """Decorator that causes :class:`.BasePass.run` to iterate over all control-flow nodes, + replacing their operations with a new :class:`.ControlFlowOp` whose blocks have all had + :class`.BasePass.run` called on them. + + This is only suitable for simple run calls that store no state between calls, do not need + circuit-specific information feeding into them (such as via a :class:`.PropertySet`), and will + safely do nothing to control-flow operations that are in the DAG. + + If slightly finer control is needed on when the control-flow operations are modified, one can + use :func:`map_blocks` as:: + + if isinstance(node.op, ControlFlowOp): + node.op = map_blocks(self.run, node.op) + + from with :meth:`.BasePass.run`.""" + + @functools.wraps(method) + def out(self, dag): + def bound_wrapped_method(dag): + return out(self, dag) + + for node in dag.op_nodes(ControlFlowOp): + node.op = map_blocks(bound_wrapped_method, node.op) + return method(self, dag) + + return out diff --git a/qiskit/transpiler/passes/utils/remove_barriers.py b/qiskit/transpiler/passes/utils/remove_barriers.py index 9d952333ef9d..0de332e4145d 100644 --- a/qiskit/transpiler/passes/utils/remove_barriers.py +++ b/qiskit/transpiler/passes/utils/remove_barriers.py @@ -14,6 +14,7 @@ from qiskit.dagcircuit import DAGCircuit from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow class RemoveBarriers(TransformationPass): @@ -38,6 +39,7 @@ class RemoveBarriers(TransformationPass): """ + @control_flow.trivial_recurse def run(self, dag: DAGCircuit) -> DAGCircuit: """Run the RemoveBarriers pass on `dag`.""" diff --git a/test/python/transpiler/test_clifford_passes.py b/test/python/transpiler/test_clifford_passes.py index faf0db738008..b25d4d25cdd8 100644 --- a/test/python/transpiler/test_clifford_passes.py +++ b/test/python/transpiler/test_clifford_passes.py @@ -228,6 +228,68 @@ def test_optimize_cliffords(self): self.assertTrue(Operator(qc1).equiv(Operator(qc2))) self.assertTrue(Operator(qc1).equiv(Operator(qc3))) + def test_if_else(self): + """Test pass recurses into simple if-else.""" + cliff1 = self.create_cliff1() + cliff2 = self.create_cliff2() + combined = cliff1.compose(cliff2) + + inner_test = QuantumCircuit(cliff1.num_qubits) + inner_test.append(cliff1, inner_test.qubits) + inner_test.append(cliff2, inner_test.qubits) + + inner_expected = QuantumCircuit(combined.num_qubits) + inner_expected.append(combined, inner_expected.qubits) + + test = QuantumCircuit(cliff1.num_qubits, 1) + test.measure(0, 0) + test.if_else( + (test.clbits[0], True), inner_test.copy(), inner_test.copy(), test.qubits, test.clbits + ) + + expected = QuantumCircuit(combined.num_qubits, 1) + expected.measure(0, 0) + expected.if_else( + (expected.clbits[0], True), + inner_expected, + inner_expected, + expected.qubits, + expected.clbits, + ) + + self.assertEqual(OptimizeCliffords()(test), expected) + + def test_nested_control_flow(self): + """Test pass recurses into nested control flow.""" + cliff1 = self.create_cliff1() + cliff2 = self.create_cliff2() + combined = cliff1.compose(cliff2) + + inner_test = QuantumCircuit(cliff1.num_qubits) + inner_test.append(cliff1, inner_test.qubits) + inner_test.append(cliff2, inner_test.qubits) + + while_test = QuantumCircuit(cliff1.num_qubits, 1) + while_test.for_loop((0,), None, inner_test.copy(), while_test.qubits, []) + + inner_expected = QuantumCircuit(combined.num_qubits) + inner_expected.append(combined, inner_expected.qubits) + + while_expected = QuantumCircuit(combined.num_qubits, 1) + while_expected.for_loop((0,), None, inner_expected, while_expected.qubits, []) + + test = QuantumCircuit(cliff1.num_qubits, 1) + test.measure(0, 0) + test.while_loop((test.clbits[0], True), while_test, test.qubits, test.clbits) + + expected = QuantumCircuit(combined.num_qubits, 1) + expected.measure(0, 0) + expected.while_loop( + (expected.clbits[0], True), while_expected, expected.qubits, expected.clbits + ) + + self.assertEqual(OptimizeCliffords()(test), expected) + def test_topological_ordering(self): """Test that Clifford optimization pass optimizes Cliffords across a gate on a different qubit.""" diff --git a/test/python/transpiler/test_cx_cancellation.py b/test/python/transpiler/test_cx_cancellation.py index 6a9e10ab60b7..f7837501a68a 100644 --- a/test/python/transpiler/test_cx_cancellation.py +++ b/test/python/transpiler/test_cx_cancellation.py @@ -13,6 +13,7 @@ """Tests for pass cancelling 2 consecutive CNOTs on the same qubits.""" from qiskit import QuantumRegister, QuantumCircuit +from qiskit.circuit import Clbit, Qubit from qiskit.transpiler import PassManager from qiskit.transpiler.passes import CXCancellation from qiskit.test import QiskitTestCase @@ -136,3 +137,56 @@ def test_inverted_cx(self): pass_manager.append(CXCancellation()) out_circuit = pass_manager.run(circuit) self.assertEqual(out_circuit, circuit) + + def test_if_else(self): + """Test that the pass recurses in a simple if-else.""" + pass_ = CXCancellation() + + inner_test = QuantumCircuit(4, 1) + inner_test.cx(0, 1) + inner_test.cx(0, 1) + inner_test.cx(2, 3) + + inner_expected = QuantumCircuit(4, 1) + inner_expected.cx(2, 3) + + test = QuantumCircuit(4, 1) + test.h(0) + test.measure(0, 0) + test.if_else((0, True), inner_test.copy(), inner_test.copy(), range(4), [0]) + + expected = QuantumCircuit(4, 1) + expected.h(0) + expected.measure(0, 0) + expected.if_else((0, True), inner_expected, inner_expected, range(4), [0]) + + self.assertEqual(pass_(test), expected) + + def test_nested_control_flow(self): + """Test that collection recurses into nested control flow.""" + pass_ = CXCancellation() + qubits = [Qubit() for _ in [None] * 4] + clbit = Clbit() + + inner_test = QuantumCircuit(qubits, [clbit]) + inner_test.cx(0, 1) + inner_test.cx(0, 1) + inner_test.cx(2, 3) + + inner_expected = QuantumCircuit(qubits, [clbit]) + inner_expected.cx(2, 3) + + true_body = QuantumCircuit(qubits, [clbit]) + true_body.while_loop((clbit, True), inner_test.copy(), [0, 1, 2, 3], [0]) + + test = QuantumCircuit(qubits, [clbit]) + test.for_loop(range(2), None, inner_test.copy(), [0, 1, 2, 3], [0]) + test.if_else((clbit, True), true_body, None, [0, 1, 2, 3], [0]) + + expected_if_body = QuantumCircuit(qubits, [clbit]) + expected_if_body.while_loop((clbit, True), inner_expected, [0, 1, 2, 3], [0]) + expected = QuantumCircuit(qubits, [clbit]) + expected.for_loop(range(2), None, inner_expected, [0, 1, 2, 3], [0]) + expected.if_else((clbit, True), expected_if_body, None, [0, 1, 2, 3], [0]) + + self.assertEqual(pass_(test), expected) diff --git a/test/python/transpiler/test_linear_functions_passes.py b/test/python/transpiler/test_linear_functions_passes.py index 01f7cf2918a1..dbd1b6ba173a 100644 --- a/test/python/transpiler/test_linear_functions_passes.py +++ b/test/python/transpiler/test_linear_functions_passes.py @@ -14,7 +14,7 @@ import unittest -from qiskit.circuit import QuantumCircuit +from qiskit.circuit import QuantumCircuit, Qubit, Clbit from qiskit.transpiler.passes.optimization import CollectLinearFunctions from qiskit.transpiler.passes.synthesis import ( LinearFunctionsSynthesis, @@ -329,6 +329,53 @@ def test_connected_gates(self): self.assertNotIn("cx", circuit2.count_ops().keys()) self.assertNotIn("swap", circuit2.count_ops().keys()) + def test_if_else(self): + """Test that collection recurses into a simple if-else.""" + pass_ = CollectLinearFunctions() + + circuit = QuantumCircuit(4) + circuit.cx(0, 1) + circuit.cx(1, 0) + circuit.cx(2, 3) + + test = QuantumCircuit(4, 1) + test.h(0) + test.measure(0, 0) + test.if_else((0, True), circuit.copy(), circuit.copy(), range(4), [0]) + + expected = QuantumCircuit(4, 1) + expected.h(0) + expected.measure(0, 0) + expected.if_else((0, True), pass_(circuit), pass_(circuit), range(4), [0]) + + self.assertEqual(pass_(test), expected) + + def test_nested_control_flow(self): + """Test that collection recurses into nested control flow.""" + pass_ = CollectLinearFunctions() + qubits = [Qubit() for _ in [None] * 4] + clbit = Clbit() + + circuit = QuantumCircuit(qubits, [clbit]) + circuit.cx(0, 1) + circuit.cx(1, 0) + circuit.cx(2, 3) + + true_body = QuantumCircuit(qubits, [clbit]) + true_body.while_loop((clbit, True), circuit.copy(), [0, 1, 2, 3], [0]) + + test = QuantumCircuit(qubits, [clbit]) + test.for_loop(range(2), None, circuit.copy(), [0, 1, 2, 3], [0]) + test.if_else((clbit, True), true_body, None, [0, 1, 2, 3], [0]) + + expected_if_body = QuantumCircuit(qubits, [clbit]) + expected_if_body.while_loop((clbit, True), pass_(circuit), [0, 1, 2, 3], [0]) + expected = QuantumCircuit(qubits, [clbit]) + expected.for_loop(range(2), None, pass_(circuit), [0, 1, 2, 3], [0]) + expected.if_else((clbit, True), pass_(expected_if_body), None, [0, 1, 2, 3], [0]) + + self.assertEqual(pass_(test), expected) + if __name__ == "__main__": unittest.main() diff --git a/test/python/transpiler/test_optimize_swap_before_measure.py b/test/python/transpiler/test_optimize_swap_before_measure.py index f635c9754a3b..4daea21aab1f 100644 --- a/test/python/transpiler/test_optimize_swap_before_measure.py +++ b/test/python/transpiler/test_optimize_swap_before_measure.py @@ -160,6 +160,60 @@ def test_cannot_optimize(self): self.assertEqual(circuit_to_dag(circuit), after) + def test_if_else(self): + """Test that the pass recurses into a simple if-else.""" + pass_ = OptimizeSwapBeforeMeasure() + + base_test = QuantumCircuit(2, 1) + base_test.swap(0, 1) + base_test.measure(0, 0) + + base_expected = QuantumCircuit(2, 1) + base_expected.measure(1, 0) + + test = QuantumCircuit(2, 1) + test.if_else( + (test.clbits[0], True), base_test.copy(), base_test.copy(), test.qubits, test.clbits + ) + + expected = QuantumCircuit(2, 1) + expected.if_else( + (expected.clbits[0], True), + base_expected.copy(), + base_expected.copy(), + expected.qubits, + expected.clbits, + ) + + self.assertEqual(pass_(test), expected) + + def test_nested_control_flow(self): + """Test that the pass recurses into nested control flow.""" + pass_ = OptimizeSwapBeforeMeasure() + + base_test = QuantumCircuit(2, 1) + base_test.swap(0, 1) + base_test.measure(0, 0) + + base_expected = QuantumCircuit(2, 1) + base_expected.measure(1, 0) + + body_test = QuantumCircuit(2, 1) + body_test.for_loop((0,), None, base_expected.copy(), body_test.qubits, []) + + body_expected = QuantumCircuit(2, 1) + body_expected.for_loop((0,), None, base_expected.copy(), body_expected.qubits, []) + + test = QuantumCircuit(2, 1) + test.while_loop((test.clbits[0], True), body_test, test.qubits, test.clbits) + + expected = QuantumCircuit(2, 1) + expected.while_loop( + (expected.clbits[0], True), body_expected, expected.qubits, expected.clbits + ) + + self.assertEqual(pass_(test), expected) + class TestOptimizeSwapBeforeMeasureFixedPoint(QiskitTestCase): """Test swap-followed-by-measure optimizations in a transpiler, using fixed point.""" diff --git a/test/python/transpiler/test_remove_barriers.py b/test/python/transpiler/test_remove_barriers.py index 89bbcdbe065a..c04bf3db4773 100644 --- a/test/python/transpiler/test_remove_barriers.py +++ b/test/python/transpiler/test_remove_barriers.py @@ -52,6 +52,60 @@ def test_remove_barriers_other_gates(self): for ii, name in enumerate(["x", "h"]): self.assertEqual(op_nodes[ii].name, name) + def test_simple_if_else(self): + """Test that the pass recurses into an if-else.""" + pass_ = RemoveBarriers() + + base_test = QuantumCircuit(1, 1) + base_test.barrier() + base_test.measure(0, 0) + + base_expected = QuantumCircuit(1, 1) + base_expected.measure(0, 0) + + test = QuantumCircuit(1, 1) + test.if_else( + (test.clbits[0], True), base_test.copy(), base_test.copy(), test.qubits, test.clbits + ) + + expected = QuantumCircuit(1, 1) + expected.if_else( + (expected.clbits[0], True), + base_expected.copy(), + base_expected.copy(), + expected.qubits, + expected.clbits, + ) + + self.assertEqual(pass_(test), expected) + + def test_nested_control_flow(self): + """Test that the pass recurses into nested control flow.""" + pass_ = RemoveBarriers() + + base_test = QuantumCircuit(1, 1) + base_test.barrier() + base_test.measure(0, 0) + + base_expected = QuantumCircuit(1, 1) + base_expected.measure(0, 0) + + body_test = QuantumCircuit(1, 1) + body_test.for_loop((0,), None, base_expected.copy(), body_test.qubits, []) + + body_expected = QuantumCircuit(1, 1) + body_expected.for_loop((0,), None, base_expected.copy(), body_expected.qubits, []) + + test = QuantumCircuit(1, 1) + test.while_loop((test.clbits[0], True), body_test, test.qubits, test.clbits) + + expected = QuantumCircuit(1, 1) + expected.while_loop( + (expected.clbits[0], True), body_expected, expected.qubits, expected.clbits + ) + + self.assertEqual(pass_(test), expected) + if __name__ == "__main__": unittest.main() diff --git a/test/python/transpiler/test_remove_diagonal_gates_before_measure.py b/test/python/transpiler/test_remove_diagonal_gates_before_measure.py index 20b9a63a26cc..eb225a19c841 100644 --- a/test/python/transpiler/test_remove_diagonal_gates_before_measure.py +++ b/test/python/transpiler/test_remove_diagonal_gates_before_measure.py @@ -212,6 +212,60 @@ def test_optimize_1rz_1z_1measure(self): self.assertEqual(circuit_to_dag(expected), after) + def test_simple_if_else(self): + """Test that the pass recurses into an if-else.""" + pass_ = RemoveDiagonalGatesBeforeMeasure() + + base_test = QuantumCircuit(1, 1) + base_test.z(0) + base_test.measure(0, 0) + + base_expected = QuantumCircuit(1, 1) + base_expected.measure(0, 0) + + test = QuantumCircuit(1, 1) + test.if_else( + (test.clbits[0], True), base_test.copy(), base_test.copy(), test.qubits, test.clbits + ) + + expected = QuantumCircuit(1, 1) + expected.if_else( + (expected.clbits[0], True), + base_expected.copy(), + base_expected.copy(), + expected.qubits, + expected.clbits, + ) + + self.assertEqual(pass_(test), expected) + + def test_nested_control_flow(self): + """Test that the pass recurses into nested control flow.""" + pass_ = RemoveDiagonalGatesBeforeMeasure() + + base_test = QuantumCircuit(2, 1) + base_test.cz(0, 1) + base_test.measure(0, 0) + + base_expected = QuantumCircuit(2, 1) + base_expected.measure(1, 0) + + body_test = QuantumCircuit(2, 1) + body_test.for_loop((0,), None, base_expected.copy(), body_test.qubits, []) + + body_expected = QuantumCircuit(2, 1) + body_expected.for_loop((0,), None, base_expected.copy(), body_expected.qubits, []) + + test = QuantumCircuit(2, 1) + test.while_loop((test.clbits[0], True), body_test, test.qubits, test.clbits) + + expected = QuantumCircuit(2, 1) + expected.while_loop( + (expected.clbits[0], True), body_expected, expected.qubits, expected.clbits + ) + + self.assertEqual(pass_(test), expected) + class TesRemoveDiagonalControlGatesBeforeMeasure(QiskitTestCase): """Test remove diagonal control gates before measure.""" diff --git a/test/python/transpiler/test_reset_after_measure_simplification.py b/test/python/transpiler/test_reset_after_measure_simplification.py index 86b810299011..d0ab0913ada8 100644 --- a/test/python/transpiler/test_reset_after_measure_simplification.py +++ b/test/python/transpiler/test_reset_after_measure_simplification.py @@ -138,3 +138,59 @@ def test_bv_circuit(self): for op in new_qc.data: if op.operation.name == "reset": self.assertEqual(op.qubits[0], new_qc.qubits[1]) + + def test_simple_if_else(self): + """Test that the pass recurses into an if-else.""" + pass_ = ResetAfterMeasureSimplification() + + base_test = QuantumCircuit(1, 1) + base_test.measure(0, 0) + base_test.reset(0) + + base_expected = QuantumCircuit(1, 1) + base_expected.measure(0, 0) + base_expected.x(0).c_if(0, True) + + test = QuantumCircuit(1, 1) + test.if_else( + (test.clbits[0], True), base_test.copy(), base_test.copy(), test.qubits, test.clbits + ) + + expected = QuantumCircuit(1, 1) + expected.if_else( + (expected.clbits[0], True), + base_expected.copy(), + base_expected.copy(), + expected.qubits, + expected.clbits, + ) + + self.assertEqual(pass_(test), expected) + + def test_nested_control_flow(self): + """Test that the pass recurses into nested control flow.""" + pass_ = ResetAfterMeasureSimplification() + + base_test = QuantumCircuit(1, 1) + base_test.measure(0, 0) + base_test.reset(0) + + base_expected = QuantumCircuit(1, 1) + base_expected.measure(0, 0) + base_expected.x(0).c_if(0, True) + + body_test = QuantumCircuit(1, 1) + body_test.for_loop((0,), None, base_expected.copy(), body_test.qubits, []) + + body_expected = QuantumCircuit(1, 1) + body_expected.for_loop((0,), None, base_expected.copy(), body_expected.qubits, []) + + test = QuantumCircuit(1, 1) + test.while_loop((test.clbits[0], True), body_test, test.qubits, test.clbits) + + expected = QuantumCircuit(1, 1) + expected.while_loop( + (expected.clbits[0], True), body_expected, expected.qubits, expected.clbits + ) + + self.assertEqual(pass_(test), expected) diff --git a/test/python/transpiler/test_unroll_3q_or_more.py b/test/python/transpiler/test_unroll_3q_or_more.py index 34181309ec4d..2d8bdc23aba8 100644 --- a/test/python/transpiler/test_unroll_3q_or_more.py +++ b/test/python/transpiler/test_unroll_3q_or_more.py @@ -14,6 +14,7 @@ import numpy as np from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit +from qiskit.circuit import Qubit, Clbit from qiskit.circuit.library import CCXGate, RCCXGate from qiskit.transpiler.passes import Unroll3qOrMore from qiskit.converters import circuit_to_dag, dag_to_circuit @@ -130,3 +131,52 @@ def test_target_over_basis_gates(self): res = unroll_pass(qc) self.assertIn("ccx", res.count_ops()) self.assertNotIn("rccx", res.count_ops()) + + def test_if_else(self): + """Test that a simple if-else over 3+ qubits unrolls correctly.""" + pass_ = Unroll3qOrMore(basis_gates=["u", "cx"]) + + true_body = QuantumCircuit(3, 1) + true_body.h(0) + true_body.ccx(0, 1, 2) + false_body = QuantumCircuit(3, 1) + false_body.rccx(2, 1, 0) + + test = QuantumCircuit(3, 1) + test.h(0) + test.measure(0, 0) + test.if_else((0, True), true_body, false_body, [0, 1, 2], [0]) + + expected = QuantumCircuit(3, 1) + expected.h(0) + expected.measure(0, 0) + expected.if_else((0, True), pass_(true_body), pass_(false_body), [0, 1, 2], [0]) + + self.assertEqual(pass_(test), expected) + + def test_nested_control_flow(self): + """Test that the unroller recurses into nested control flow.""" + pass_ = Unroll3qOrMore(basis_gates=["u", "cx"]) + qubits = [Qubit() for _ in [None] * 3] + clbit = Clbit() + + for_body = QuantumCircuit(qubits, [clbit]) + for_body.ccx(0, 1, 2) + + while_body = QuantumCircuit(qubits, [clbit]) + while_body.rccx(0, 1, 2) + + true_body = QuantumCircuit(qubits, [clbit]) + true_body.while_loop((clbit, True), while_body, [0, 1, 2], [0]) + + test = QuantumCircuit(qubits, [clbit]) + test.for_loop(range(2), None, for_body, [0, 1, 2], [0]) + test.if_else((clbit, True), true_body, None, [0, 1, 2], [0]) + + expected_if_body = QuantumCircuit(qubits, [clbit]) + expected_if_body.while_loop((clbit, True), pass_(while_body), [0, 1, 2], [0]) + expected = QuantumCircuit(qubits, [clbit]) + expected.for_loop(range(2), None, pass_(for_body), [0, 1, 2], [0]) + expected.if_else(range(2), pass_(expected_if_body), None, [0, 1, 2], [0]) + + self.assertEqual(pass_(test), expected) diff --git a/test/python/transpiler/test_unroll_custom_definitions.py b/test/python/transpiler/test_unroll_custom_definitions.py index 2125e7ddc763..18d6ea932dd2 100644 --- a/test/python/transpiler/test_unroll_custom_definitions.py +++ b/test/python/transpiler/test_unroll_custom_definitions.py @@ -15,7 +15,7 @@ from qiskit.transpiler.passes.basis import UnrollCustomDefinitions from qiskit.test import QiskitTestCase -from qiskit.circuit import EquivalenceLibrary, Gate +from qiskit.circuit import EquivalenceLibrary, Gate, Qubit, Clbit from qiskit.circuit import QuantumCircuit, QuantumRegister from qiskit.converters import circuit_to_dag from qiskit.exceptions import QiskitError @@ -135,3 +135,73 @@ def test_unroll_twice_until_we_get_to_eqlib(self): expected_dag = circuit_to_dag(expected) self.assertEqual(out, expected_dag) + + def test_if_else(self): + """Test that a simple if-else unrolls correctly.""" + eq_lib = EquivalenceLibrary() + + equiv = QuantumCircuit(1) + equiv.h(0) + eq_lib.add_equivalence(TestGate(), equiv) + + equiv = QuantumCircuit(1) + equiv.z(0) + eq_lib.add_equivalence(TestCompositeGate(), equiv) + + pass_ = UnrollCustomDefinitions(eq_lib, basis_gates=["h", "z", "cx"]) + + true_body = QuantumCircuit(1) + true_body.h(0) + true_body.append(TestGate(), [0]) + false_body = QuantumCircuit(1) + false_body.append(TestCompositeGate(), [0]) + + test = QuantumCircuit(1, 1) + test.h(0) + test.measure(0, 0) + test.if_else((0, True), true_body, false_body, [0], []) + + expected = QuantumCircuit(1, 1) + expected.h(0) + expected.measure(0, 0) + expected.if_else((0, True), pass_(true_body), pass_(false_body), [0], []) + + self.assertEqual(pass_(test), expected) + + def test_nested_control_flow(self): + """Test that the unroller recurses into nested control flow.""" + eq_lib = EquivalenceLibrary() + base_gate = TestGate() + equiv = QuantumCircuit(1) + equiv.h(0) + eq_lib.add_equivalence(base_gate, equiv) + base_gate = TestCompositeGate() + equiv = QuantumCircuit(1) + equiv.z(0) + eq_lib.add_equivalence(base_gate, equiv) + + pass_ = UnrollCustomDefinitions(eq_lib, basis_gates=["h", "z", "cx"]) + + qubit = Qubit() + clbit = Clbit() + + for_body = QuantumCircuit(1) + for_body.append(TestGate(), [0], []) + + while_body = QuantumCircuit(1) + while_body.append(TestCompositeGate(), [0], []) + + true_body = QuantumCircuit([qubit, clbit]) + true_body.while_loop((clbit, True), while_body, [0], [0]) + + test = QuantumCircuit([qubit, clbit]) + test.for_loop(range(2), None, for_body, [0], [0]) + test.if_else((clbit, True), true_body, None, [0], [0]) + + expected_if_body = QuantumCircuit([qubit, clbit]) + expected_if_body.while_loop((clbit, True), pass_(while_body), [0], [0]) + expected = QuantumCircuit([qubit, clbit]) + expected.for_loop(range(2), None, pass_(for_body), [0], [0]) + expected.if_else(range(2), pass_(expected_if_body), None, [0], [0]) + + self.assertEqual(pass_(test), expected) From 8bb1c01a8be4009642f7ee1e02adf1aae1bc6833 Mon Sep 17 00:00:00 2001 From: dlasecki Date: Fri, 16 Sep 2022 00:39:30 +0200 Subject: [PATCH 17/56] Removes old VarQTE algorithm code (without primitives). (#8750) * Removed old VarQTE and tests. * Removed reno * Updated init. * Updated init. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/algorithms/__init__.py | 17 - .../evolvers/variational/__init__.py | 139 -------- .../evolvers/variational/solvers/__init__.py | 44 --- .../variational/solvers/ode/__init__.py | 13 - .../solvers/ode/abstract_ode_function.py | 52 --- .../solvers/ode/forward_euler_solver.py | 73 ----- .../variational/solvers/ode/ode_function.py | 43 --- .../solvers/ode/ode_function_factory.py | 83 ----- .../solvers/ode/var_qte_ode_solver.py | 83 ----- .../solvers/var_qte_linear_solver.py | 160 --------- .../evolvers/variational/var_qite.py | 125 -------- .../evolvers/variational/var_qrte.py | 126 -------- .../evolvers/variational/var_qte.py | 303 ------------------ .../variational_principles/__init__.py | 25 -- .../imaginary_mc_lachlan_principle.py | 76 ----- .../imaginary_variational_principle.py | 24 -- .../real_mc_lachlan_principle.py | 150 --------- .../real_variational_principle.py | 42 --- .../variational_principle.py | 129 -------- ...antum-time-evolution-112ffeaf62782fea.yaml | 50 --- .../evolvers/variational/__init__.py | 11 - .../evolvers/variational/solvers/__init__.py | 11 - .../solvers/expected_results/__init__.py | 12 - .../test_varqte_linear_solver_expected_1.py | 182 ----------- .../variational/solvers/ode/__init__.py | 11 - .../solvers/ode/test_forward_euler_solver.py | 47 --- .../solvers/ode/test_ode_function.py | 165 ---------- .../solvers/ode/test_var_qte_ode_solver.py | 136 -------- .../solvers/test_varqte_linear_solver.py | 115 ------- .../evolvers/variational/test_var_qite.py | 287 ----------------- .../evolvers/variational/test_var_qrte.py | 234 -------------- .../evolvers/variational/test_var_qte.py | 78 ----- .../variational_principles/__init__.py | 11 - .../expected_results/__init__.py | 12 - ...lachlan_variational_principle_expected1.py | 182 ----------- ...lachlan_variational_principle_expected2.py | 182 ----------- ...lachlan_variational_principle_expected3.py | 182 ----------- .../imaginary/__init__.py | 11 - .../test_imaginary_mc_lachlan_principle.py | 111 ------- .../variational_principles/real/__init__.py | 11 - .../real/test_real_mc_lachlan_principle.py | 114 ------- 41 files changed, 3862 deletions(-) delete mode 100644 qiskit/algorithms/evolvers/variational/__init__.py delete mode 100644 qiskit/algorithms/evolvers/variational/solvers/__init__.py delete mode 100644 qiskit/algorithms/evolvers/variational/solvers/ode/__init__.py delete mode 100644 qiskit/algorithms/evolvers/variational/solvers/ode/abstract_ode_function.py delete mode 100644 qiskit/algorithms/evolvers/variational/solvers/ode/forward_euler_solver.py delete mode 100644 qiskit/algorithms/evolvers/variational/solvers/ode/ode_function.py delete mode 100644 qiskit/algorithms/evolvers/variational/solvers/ode/ode_function_factory.py delete mode 100644 qiskit/algorithms/evolvers/variational/solvers/ode/var_qte_ode_solver.py delete mode 100644 qiskit/algorithms/evolvers/variational/solvers/var_qte_linear_solver.py delete mode 100644 qiskit/algorithms/evolvers/variational/var_qite.py delete mode 100644 qiskit/algorithms/evolvers/variational/var_qrte.py delete mode 100644 qiskit/algorithms/evolvers/variational/var_qte.py delete mode 100644 qiskit/algorithms/evolvers/variational/variational_principles/__init__.py delete mode 100644 qiskit/algorithms/evolvers/variational/variational_principles/imaginary_mc_lachlan_principle.py delete mode 100644 qiskit/algorithms/evolvers/variational/variational_principles/imaginary_variational_principle.py delete mode 100644 qiskit/algorithms/evolvers/variational/variational_principles/real_mc_lachlan_principle.py delete mode 100644 qiskit/algorithms/evolvers/variational/variational_principles/real_variational_principle.py delete mode 100644 qiskit/algorithms/evolvers/variational/variational_principles/variational_principle.py delete mode 100644 releasenotes/notes/add-variational-quantum-time-evolution-112ffeaf62782fea.yaml delete mode 100644 test/python/algorithms/evolvers/variational/__init__.py delete mode 100644 test/python/algorithms/evolvers/variational/solvers/__init__.py delete mode 100644 test/python/algorithms/evolvers/variational/solvers/expected_results/__init__.py delete mode 100644 test/python/algorithms/evolvers/variational/solvers/expected_results/test_varqte_linear_solver_expected_1.py delete mode 100644 test/python/algorithms/evolvers/variational/solvers/ode/__init__.py delete mode 100644 test/python/algorithms/evolvers/variational/solvers/ode/test_forward_euler_solver.py delete mode 100644 test/python/algorithms/evolvers/variational/solvers/ode/test_ode_function.py delete mode 100644 test/python/algorithms/evolvers/variational/solvers/ode/test_var_qte_ode_solver.py delete mode 100644 test/python/algorithms/evolvers/variational/solvers/test_varqte_linear_solver.py delete mode 100644 test/python/algorithms/evolvers/variational/test_var_qite.py delete mode 100644 test/python/algorithms/evolvers/variational/test_var_qrte.py delete mode 100644 test/python/algorithms/evolvers/variational/test_var_qte.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/__init__.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/expected_results/__init__.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected1.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected2.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected3.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/imaginary/__init__.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/imaginary/test_imaginary_mc_lachlan_principle.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/real/__init__.py delete mode 100644 test/python/algorithms/evolvers/variational/variational_principles/real/test_real_mc_lachlan_principle.py diff --git a/qiskit/algorithms/__init__.py b/qiskit/algorithms/__init__.py index 4bf66e001622..987951253ee3 100644 --- a/qiskit/algorithms/__init__.py +++ b/qiskit/algorithms/__init__.py @@ -94,17 +94,6 @@ VQD -Variational Quantum Time Evolution ----------------------------------- - -Classes used by variational quantum time evolution algorithms - VarQITE and VarQRTE. - -.. autosummary:: - :toctree: ../stubs/ - - evolvers.variational - - Evolvers -------- @@ -124,8 +113,6 @@ RealEvolver ImaginaryEvolver TrotterQRTE - VarQITE - VarQRTE PVQD PVQDResult EvolutionResult @@ -322,8 +309,6 @@ from .aux_ops_evaluator import eval_observables from .observables_evaluator import estimate_observables from .evolvers.trotterization import TrotterQRTE -from .evolvers.variational.var_qite import VarQITE -from .evolvers.variational.var_qrte import VarQRTE from .evolvers.pvqd import PVQD, PVQDResult @@ -353,8 +338,6 @@ "RealTimeEvolver", "ImaginaryTimeEvolver", "TrotterQRTE", - "VarQITE", - "VarQRTE", "EvolutionResult", "EvolutionProblem", "TimeEvolutionResult", diff --git a/qiskit/algorithms/evolvers/variational/__init__.py b/qiskit/algorithms/evolvers/variational/__init__.py deleted file mode 100644 index 8936d9030853..000000000000 --- a/qiskit/algorithms/evolvers/variational/__init__.py +++ /dev/null @@ -1,139 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -""" -Variational Quantum Time Evolutions (:mod:`qiskit.algorithms.evolvers.variational`) -=================================================================================== - -Algorithms for performing Variational Quantum Time Evolution of quantum states, -which can be tailored to near-term devices. -:class:`~qiskit.algorithms.evolvers.variational.VarQTE` base class exposes an interface, compliant -with the Quantum Time Evolution Framework in Qiskit Terra, that is implemented by -:class:`~qiskit.algorithms.VarQRTE` and :class:`~qiskit.algorithms.VarQITE` classes for real and -imaginary time evolution respectively. The variational approach is taken according to a variational -principle chosen by a user. - -Examples: - -.. code-block:: - - from qiskit import BasicAer - from qiskit.circuit.library import EfficientSU2 - from qiskit.opflow import SummedOp, I, Z, Y, X - from qiskit.algorithms.evolvers.variational import ( - ImaginaryMcLachlanPrinciple, - ) - from qiskit.algorithms import EvolutionProblem - from qiskit.algorithms import VarQITE - - # define a Hamiltonian - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ).reduce() - - # define a parametrized initial state to be evolved - - ansatz = EfficientSU2(observable.num_qubits, reps=1) - parameters = ansatz.parameters - - # define values of initial parameters - init_param_values = np.zeros(len(ansatz.parameters)) - for i in range(len(ansatz.parameters)): - init_param_values[i] = np.pi / 2 - param_dict = dict(zip(parameters, init_param_values)) - - # define a variational principle - var_principle = ImaginaryMcLachlanPrinciple() - - # optionally define a backend - backend = BasicAer.get_backend("statevector_simulator") - - # define evolution time - time = 1 - - # define evolution problem - evolution_problem = EvolutionProblem(observable, time) - - # instantiate the algorithm - var_qite = VarQITE(ansatz, var_principle, param_dict, quantum_instance=backend) - - # run the algorithm/evolve the state - evolution_result = var_qite.evolve(evolution_problem) - -.. currentmodule:: qiskit.algorithms.evolvers.variational - -Variational Principles ----------------------- - -Variational principles can be used to simulate quantum time evolution by propagating the parameters -of a parameterized quantum circuit. - -They can be divided into two categories: - - 1) Variational Quantum Imaginary Time Evolution - Given a Hamiltonian, a time and a variational ansatz, the variational principle describes a - variational principle according to the normalized Wick-rotated Schroedinger equation. - - 2) Variational Quantum Real Time Evolution - Given a Hamiltonian, a time and a variational ansatz, the variational principle describes a - variational principle according to the Schroedinger equation. - -.. autosummary:: - :toctree: ../stubs/ - :template: autosummary/class_no_inherited_members.rst - - VariationalPrinciple - RealVariationalPrinciple - ImaginaryVariationalPrinciple - RealMcLachlanPrinciple - ImaginaryMcLachlanPrinciple - -ODE solvers ------------ -ODE solvers that implement the SciPy ODE Solver interface. The Forward Euler Solver is -a preferred choice in the presence of noise. One might also use solvers provided by SciPy directly, -e.g. RK45. - -.. autosummary:: - :toctree: ../stubs/ - :template: autosummary/class_no_inherited_members.rst - - ForwardEulerSolver - -""" -from .solvers.ode.forward_euler_solver import ForwardEulerSolver -from .var_qte import VarQTE -from .variational_principles.variational_principle import VariationalPrinciple -from .variational_principles import RealVariationalPrinciple, ImaginaryVariationalPrinciple -from .variational_principles.imaginary_mc_lachlan_principle import ( - ImaginaryMcLachlanPrinciple, -) -from .variational_principles.real_mc_lachlan_principle import ( - RealMcLachlanPrinciple, -) - - -__all__ = [ - "ForwardEulerSolver", - "VarQTE", - "VariationalPrinciple", - "RealVariationalPrinciple", - "ImaginaryVariationalPrinciple", - "RealMcLachlanPrinciple", - "ImaginaryMcLachlanPrinciple", -] diff --git a/qiskit/algorithms/evolvers/variational/solvers/__init__.py b/qiskit/algorithms/evolvers/variational/solvers/__init__.py deleted file mode 100644 index 6d273c0618c9..000000000000 --- a/qiskit/algorithms/evolvers/variational/solvers/__init__.py +++ /dev/null @@ -1,44 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -""" -Solvers (:mod:`qiskit.algorithms.evolvers.variational.solvers`) -=============================================================== - -This package contains the necessary classes to solve systems of equations arising in the -Variational Quantum Time Evolution. They include ordinary differential equations (ODE) which -describe ansatz parameter propagation and systems of linear equations. - - -Systems of Linear Equations Solver ----------------------------------- - -.. autosummary:: - :toctree: ../stubs/ - :template: autosummary/class_no_inherited_members.rst - - VarQTELinearSolver - - -ODE Solver ----------- -.. autosummary:: - :toctree: ../stubs/ - :template: autosummary/class_no_inherited_members.rst - - VarQTEOdeSolver -""" - -from qiskit.algorithms.evolvers.variational.solvers.ode.var_qte_ode_solver import VarQTEOdeSolver -from qiskit.algorithms.evolvers.variational.solvers.var_qte_linear_solver import VarQTELinearSolver - -__all__ = ["VarQTELinearSolver", "VarQTEOdeSolver"] diff --git a/qiskit/algorithms/evolvers/variational/solvers/ode/__init__.py b/qiskit/algorithms/evolvers/variational/solvers/ode/__init__.py deleted file mode 100644 index 8fbaef6f85d1..000000000000 --- a/qiskit/algorithms/evolvers/variational/solvers/ode/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""ODE Solvers""" diff --git a/qiskit/algorithms/evolvers/variational/solvers/ode/abstract_ode_function.py b/qiskit/algorithms/evolvers/variational/solvers/ode/abstract_ode_function.py deleted file mode 100644 index a443a26d1888..000000000000 --- a/qiskit/algorithms/evolvers/variational/solvers/ode/abstract_ode_function.py +++ /dev/null @@ -1,52 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Abstract class for generating ODE functions.""" - -from abc import ABC, abstractmethod -from typing import Iterable, Dict, Optional -from qiskit.circuit import Parameter -from ..var_qte_linear_solver import ( - VarQTELinearSolver, -) - - -class AbstractOdeFunction(ABC): - """Abstract class for generating ODE functions.""" - - def __init__( - self, - varqte_linear_solver: VarQTELinearSolver, - error_calculator, - param_dict: Dict[Parameter, complex], - t_param: Optional[Parameter] = None, - ) -> None: - - self._varqte_linear_solver = varqte_linear_solver - self._error_calculator = error_calculator - self._param_dict = param_dict - self._t_param = t_param - - @abstractmethod - def var_qte_ode_function(self, time: float, parameters_values: Iterable) -> Iterable: - """ - Evaluates an ODE function for a given time and parameter values. It is used by an ODE - solver. - - Args: - time: Current time of evolution. - parameters_values: Current values of parameters. - - Returns: - ODE gradient arising from solving a system of linear equations. - """ - pass diff --git a/qiskit/algorithms/evolvers/variational/solvers/ode/forward_euler_solver.py b/qiskit/algorithms/evolvers/variational/solvers/ode/forward_euler_solver.py deleted file mode 100644 index 284b3106fa8a..000000000000 --- a/qiskit/algorithms/evolvers/variational/solvers/ode/forward_euler_solver.py +++ /dev/null @@ -1,73 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -"""Forward Euler ODE solver.""" - -from typing import Sequence - -import numpy as np -from scipy.integrate import OdeSolver -from scipy.integrate._ivp.base import ConstantDenseOutput - - -class ForwardEulerSolver(OdeSolver): - """Forward Euler ODE solver.""" - - def __init__( - self, - function: callable, - t0: float, - y0: Sequence, - t_bound: float, - vectorized: bool = False, - support_complex: bool = False, - num_t_steps: int = 15, - ): - """ - Forward Euler ODE solver that implements an interface from SciPy. - - Args: - function: Right-hand side of the system. The calling signature is ``fun(t, y)``. Here - ``t`` is a scalar, and there are two options for the ndarray ``y``: - It can either have shape (n,); then ``fun`` must return array_like with - shape (n,). Alternatively it can have shape (n, k); then ``fun`` - must return an array_like with shape (n, k), i.e., each column - corresponds to a single column in ``y``. The choice between the two - options is determined by `vectorized` argument (see below). The - vectorized implementation allows a faster approximation of the Jacobian - by finite differences (required for this solver). - t0: Initial time. - y0: Initial state. - t_bound: Boundary time - the integration won't continue beyond it. It also determines - the direction of the integration. - vectorized: Whether ``fun`` is implemented in a vectorized fashion. Default is False. - support_complex: Whether integration in a complex domain should be supported. - Generally determined by a derived solver class capabilities. Default is False. - num_t_steps: Number of time steps for the forward Euler method. - """ - self.y_old = None - self.step_length = (t_bound - t0) / num_t_steps - super().__init__(function, t0, y0, t_bound, vectorized, support_complex) - - def _step_impl(self): - """ - Takes an Euler step. - """ - try: - self.y_old = self.y - self.y = list(np.add(self.y, self.step_length * self.fun(self.t, self.y))) - self.t += self.step_length - return True, None - except Exception as ex: # pylint: disable=broad-except - return False, f"Unknown ODE solver error: {str(ex)}." - - def _dense_output_impl(self): - return ConstantDenseOutput(self.t_old, self.t, self.y_old) diff --git a/qiskit/algorithms/evolvers/variational/solvers/ode/ode_function.py b/qiskit/algorithms/evolvers/variational/solvers/ode/ode_function.py deleted file mode 100644 index 0d142262868c..000000000000 --- a/qiskit/algorithms/evolvers/variational/solvers/ode/ode_function.py +++ /dev/null @@ -1,43 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Class for generating ODE functions based on ODE gradients.""" -from typing import Iterable - -from ..ode.abstract_ode_function import ( - AbstractOdeFunction, -) - - -class OdeFunction(AbstractOdeFunction): - """Class for generating ODE functions based on ODE gradients.""" - - def var_qte_ode_function(self, time: float, parameters_values: Iterable) -> Iterable: - """ - Evaluates an ODE function for a given time and parameter values. It is used by an ODE - solver. - - Args: - time: Current time of evolution. - parameters_values: Current values of parameters. - - Returns: - ODE gradient arising from solving a system of linear equations. - """ - current_param_dict = dict(zip(self._param_dict.keys(), parameters_values)) - - ode_grad_res, _, _ = self._varqte_linear_solver.solve_lse( - current_param_dict, - time, - ) - - return ode_grad_res diff --git a/qiskit/algorithms/evolvers/variational/solvers/ode/ode_function_factory.py b/qiskit/algorithms/evolvers/variational/solvers/ode/ode_function_factory.py deleted file mode 100644 index 2dce88a817b1..000000000000 --- a/qiskit/algorithms/evolvers/variational/solvers/ode/ode_function_factory.py +++ /dev/null @@ -1,83 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Abstract class for generating ODE functions.""" - -from abc import ABC -from enum import Enum -from typing import Dict, Any, Optional, Callable - -import numpy as np - -from qiskit.circuit import Parameter -from .abstract_ode_function import AbstractOdeFunction -from .ode_function import OdeFunction -from ..var_qte_linear_solver import ( - VarQTELinearSolver, -) - - -class OdeFunctionType(Enum): - """Types of ODE functions for VatQTE algorithms.""" - - # more will be supported in the near future - STANDARD_ODE = "STANDARD_ODE" - - -class OdeFunctionFactory(ABC): - """Factory for building ODE functions.""" - - def __init__( - self, - ode_function_type: OdeFunctionType = OdeFunctionType.STANDARD_ODE, - lse_solver: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, - ) -> None: - """ - Args: - ode_function_type: An Enum that defines a type of an ODE function to be built. If - not provided, a default ``STANDARD_ODE`` is used. - lse_solver: Linear system of equations solver callable. It accepts ``A`` and ``b`` to - solve ``Ax=b`` and returns ``x``. If ``None``, the default ``np.linalg.lstsq`` - solver is used. - """ - self.ode_function_type = ode_function_type - self.lse_solver = lse_solver - - def _build( - self, - varqte_linear_solver: VarQTELinearSolver, - error_calculator: Any, - param_dict: Dict[Parameter, complex], - t_param: Optional[Parameter] = None, - ) -> AbstractOdeFunction: - """ - Initializes an ODE function specified in the class. - - Args: - varqte_linear_solver: Solver of LSE for the VarQTE algorithm. - error_calculator: Calculator of errors for error-based ODE functions. - param_dict: Dictionary which relates parameter values to the parameters in the ansatz. - t_param: Time parameter in case of a time-dependent Hamiltonian. - - Returns: - An ODE function. - - Raises: - ValueError: If unsupported ODE function provided. - - """ - if self.ode_function_type == OdeFunctionType.STANDARD_ODE: - return OdeFunction(varqte_linear_solver, error_calculator, param_dict, t_param) - raise ValueError( - f"Unsupported ODE function provided: {self.ode_function_type}." - f" Only {[tp.value for tp in OdeFunctionType]} are supported." - ) diff --git a/qiskit/algorithms/evolvers/variational/solvers/ode/var_qte_ode_solver.py b/qiskit/algorithms/evolvers/variational/solvers/ode/var_qte_ode_solver.py deleted file mode 100644 index 525769ddc96c..000000000000 --- a/qiskit/algorithms/evolvers/variational/solvers/ode/var_qte_ode_solver.py +++ /dev/null @@ -1,83 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Class for solving ODEs for Quantum Time Evolution.""" -from functools import partial -from typing import List, Union, Type, Optional - -import numpy as np -from scipy.integrate import OdeSolver, solve_ivp - -from .abstract_ode_function import ( - AbstractOdeFunction, -) -from .forward_euler_solver import ForwardEulerSolver - - -class VarQTEOdeSolver: - """Class for solving ODEs for Quantum Time Evolution.""" - - def __init__( - self, - init_params: List[complex], - ode_function: AbstractOdeFunction, - ode_solver: Union[Type[OdeSolver], str] = ForwardEulerSolver, - num_timesteps: Optional[int] = None, - ) -> None: - """ - Initialize ODE Solver. - - Args: - init_params: Set of initial parameters for time 0. - ode_function: Generates the ODE function. - ode_solver: ODE solver callable that implements a SciPy ``OdeSolver`` interface or a - string indicating a valid method offered by SciPy. - num_timesteps: The number of timesteps to take. If None, it is - automatically selected to achieve a timestep of approximately 0.01. Only - relevant in case of the ``ForwardEulerSolver``. - """ - self._init_params = init_params - self._ode_function = ode_function.var_qte_ode_function - self._ode_solver = ode_solver - self._num_timesteps = num_timesteps - - def run(self, evolution_time: float) -> List[complex]: - """ - Finds numerical solution with ODE Solver. - - Args: - evolution_time: Evolution time. - - Returns: - List of parameters found by an ODE solver for a given ODE function callable. - """ - # determine the number of timesteps and set the timestep - num_timesteps = ( - int(np.ceil(evolution_time / 0.01)) - if self._num_timesteps is None - else self._num_timesteps - ) - - if self._ode_solver == ForwardEulerSolver: - solve = partial(solve_ivp, num_t_steps=num_timesteps) - else: - solve = solve_ivp - - sol = solve( - self._ode_function, - (0, evolution_time), - self._init_params, - method=self._ode_solver, - ) - final_params_vals = [lst[-1] for lst in sol.y] - - return final_params_vals diff --git a/qiskit/algorithms/evolvers/variational/solvers/var_qte_linear_solver.py b/qiskit/algorithms/evolvers/variational/solvers/var_qte_linear_solver.py deleted file mode 100644 index 1c4a61963374..000000000000 --- a/qiskit/algorithms/evolvers/variational/solvers/var_qte_linear_solver.py +++ /dev/null @@ -1,160 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Class for solving linear equations for Quantum Time Evolution.""" - -from typing import Union, List, Dict, Optional, Callable - -import numpy as np - -from qiskit import QuantumCircuit -from qiskit.algorithms.evolvers.variational.variational_principles.variational_principle import ( - VariationalPrinciple, -) -from qiskit.circuit import Parameter -from qiskit.opflow import ( - CircuitSampler, - OperatorBase, - ExpectationBase, -) -from qiskit.providers import Backend -from qiskit.utils import QuantumInstance -from qiskit.utils.backend_utils import is_aer_provider - - -class VarQTELinearSolver: - """Class for solving linear equations for Quantum Time Evolution.""" - - def __init__( - self, - var_principle: VariationalPrinciple, - hamiltonian: OperatorBase, - ansatz: QuantumCircuit, - gradient_params: List[Parameter], - t_param: Optional[Parameter] = None, - lse_solver: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, - imag_part_tol: float = 1e-7, - expectation: Optional[ExpectationBase] = None, - quantum_instance: Optional[QuantumInstance] = None, - ) -> None: - """ - Args: - var_principle: Variational Principle to be used. - hamiltonian: - Operator used for Variational Quantum Time Evolution. - The operator may be given either as a composed op consisting of a Hermitian - observable and a ``CircuitStateFn`` or a ``ListOp`` of a ``CircuitStateFn`` with a - ``ComboFn``. - The latter case enables the evaluation of a Quantum Natural Gradient. - ansatz: Quantum state in the form of a parametrized quantum circuit. - gradient_params: List of parameters with respect to which gradients should be computed. - t_param: Time parameter in case of a time-dependent Hamiltonian. - lse_solver: Linear system of equations solver callable. It accepts ``A`` and ``b`` to - solve ``Ax=b`` and returns ``x``. If ``None``, the default ``np.linalg.lstsq`` - solver is used. - imag_part_tol: Allowed value of an imaginary part that can be neglected if no - imaginary part is expected. - expectation: An instance of ``ExpectationBase`` used for calculating a metric tensor - and an evolution gradient. If ``None`` provided, a ``PauliExpectation`` is used. - quantum_instance: Backend used to evaluate the quantum circuit outputs. If ``None`` - provided, everything will be evaluated based on matrix multiplication (which is - slow). - """ - self._var_principle = var_principle - self._hamiltonian = hamiltonian - self._ansatz = ansatz - self._gradient_params = gradient_params - self._bind_params = gradient_params + [t_param] if t_param else gradient_params - self._time_param = t_param - self.lse_solver = lse_solver - self._quantum_instance = None - self._circuit_sampler = None - self._imag_part_tol = imag_part_tol - self._expectation = expectation - if quantum_instance is not None: - self.quantum_instance = quantum_instance - - @property - def lse_solver(self) -> Callable[[np.ndarray, np.ndarray], np.ndarray]: - """Returns an LSE solver callable.""" - return self._lse_solver - - @lse_solver.setter - def lse_solver( - self, lse_solver: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] - ) -> None: - """Sets an LSE solver. Uses a ``np.linalg.lstsq`` callable if ``None`` provided.""" - if lse_solver is None: - lse_solver = lambda a, b: np.linalg.lstsq(a, b, rcond=1e-2)[0] - - self._lse_solver = lse_solver - - @property - def quantum_instance(self) -> Optional[QuantumInstance]: - """Returns quantum instance.""" - return self._quantum_instance - - @quantum_instance.setter - def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None: - """Sets quantum_instance""" - if not isinstance(quantum_instance, QuantumInstance): - quantum_instance = QuantumInstance(quantum_instance) - - self._quantum_instance = quantum_instance - self._circuit_sampler = CircuitSampler( - quantum_instance, param_qobj=is_aer_provider(quantum_instance.backend) - ) - - def solve_lse( - self, - param_dict: Dict[Parameter, complex], - time_value: Optional[float] = None, - ) -> (Union[List, np.ndarray], Union[List, np.ndarray], np.ndarray): - """ - Solve the system of linear equations underlying McLachlan's variational principle for the - calculation without error bounds. - - Args: - param_dict: Dictionary which relates parameter values to the parameters in the ansatz. - time_value: Time value that will be bound to ``t_param``. It is required if ``t_param`` - is not ``None``. - - Returns: - Solution to the LSE, A from Ax=b, b from Ax=b. - """ - param_values = list(param_dict.values()) - if self._time_param is not None: - param_values.append(time_value) - - metric_tensor_lse_lhs = self._var_principle.metric_tensor( - self._ansatz, - self._bind_params, - self._gradient_params, - param_values, - self._expectation, - self._quantum_instance, - ) - evolution_grad_lse_rhs = self._var_principle.evolution_grad( - self._hamiltonian, - self._ansatz, - self._circuit_sampler, - param_dict, - self._bind_params, - self._gradient_params, - param_values, - self._expectation, - self._quantum_instance, - ) - - x = self._lse_solver(metric_tensor_lse_lhs, evolution_grad_lse_rhs) - - return np.real(x), metric_tensor_lse_lhs, evolution_grad_lse_rhs diff --git a/qiskit/algorithms/evolvers/variational/var_qite.py b/qiskit/algorithms/evolvers/variational/var_qite.py deleted file mode 100644 index 5d53cc1eef63..000000000000 --- a/qiskit/algorithms/evolvers/variational/var_qite.py +++ /dev/null @@ -1,125 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Variational Quantum Imaginary Time Evolution algorithm.""" -from typing import Optional, Union, Type, Callable, List, Dict - -import numpy as np -from scipy.integrate import OdeSolver - -from qiskit import QuantumCircuit -from qiskit.circuit import Parameter -from qiskit.opflow import ExpectationBase, OperatorBase -from qiskit.algorithms.evolvers.imaginary_evolver import ImaginaryEvolver -from qiskit.utils import QuantumInstance -from . import ImaginaryMcLachlanPrinciple -from .solvers.ode.forward_euler_solver import ForwardEulerSolver -from .variational_principles import ImaginaryVariationalPrinciple -from .var_qte import VarQTE - - -class VarQITE(VarQTE, ImaginaryEvolver): - """Variational Quantum Imaginary Time Evolution algorithm. - - .. code-block::python - - from qiskit.algorithms import EvolutionProblem - from qiskit.algorithms import VarQITE - from qiskit import BasicAer - from qiskit.circuit.library import EfficientSU2 - from qiskit.opflow import SummedOp, I, Z, Y, X - from qiskit.algorithms.evolvers.variational import ( - ImaginaryMcLachlanPrinciple, - ) - from qiskit.algorithms import EvolutionProblem - import numpy as np - - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ).reduce() - - ansatz = EfficientSU2(observable.num_qubits, reps=1) - parameters = ansatz.parameters - init_param_values = np.zeros(len(ansatz.parameters)) - for i in range(len(ansatz.ordered_parameters)): - init_param_values[i] = np.pi / 2 - param_dict = dict(zip(parameters, init_param_values)) - var_principle = ImaginaryMcLachlanPrinciple() - backend = BasicAer.get_backend("statevector_simulator") - time = 1 - evolution_problem = EvolutionProblem(observable, time) - var_qite = VarQITE(ansatz, var_principle, param_dict, quantum_instance=backend) - evolution_result = var_qite.evolve(evolution_problem) - """ - - def __init__( - self, - ansatz: Union[OperatorBase, QuantumCircuit], - variational_principle: Optional[ImaginaryVariationalPrinciple] = None, - initial_parameters: Optional[ - Union[Dict[Parameter, complex], List[complex], np.ndarray] - ] = None, - ode_solver: Union[Type[OdeSolver], str] = ForwardEulerSolver, - lse_solver: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, - num_timesteps: Optional[int] = None, - expectation: Optional[ExpectationBase] = None, - imag_part_tol: float = 1e-7, - num_instability_tol: float = 1e-7, - quantum_instance: Optional[QuantumInstance] = None, - ) -> None: - r""" - Args: - ansatz: Ansatz to be used for variational time evolution. - variational_principle: Variational Principle to be used. Defaults to - ``ImaginaryMcLachlanPrinciple``. - initial_parameters: Initial parameter values for an ansatz. If ``None`` provided, - they are initialized uniformly at random. - ode_solver: ODE solver callable that implements a SciPy ``OdeSolver`` interface or a - string indicating a valid method offered by SciPy. - lse_solver: Linear system of equations solver callable. It accepts ``A`` and ``b`` to - solve ``Ax=b`` and returns ``x``. If ``None``, the default ``np.linalg.lstsq`` - solver is used. - num_timesteps: The number of timesteps to take. If None, it is - automatically selected to achieve a timestep of approximately 0.01. Only - relevant in case of the ``ForwardEulerSolver``. - expectation: An instance of ``ExpectationBase`` which defines a method for calculating - a metric tensor and an evolution gradient and, if provided, expectation values of - ``EvolutionProblem.aux_operators``. - imag_part_tol: Allowed value of an imaginary part that can be neglected if no - imaginary part is expected. - num_instability_tol: The amount of negative value that is allowed to be - rounded up to 0 for quantities that are expected to be non-negative. - quantum_instance: Backend used to evaluate the quantum circuit outputs. If ``None`` - provided, everything will be evaluated based on NumPy matrix multiplication - (which might be slow for larger numbers of qubits). - """ - if variational_principle is None: - variational_principle = ImaginaryMcLachlanPrinciple() - super().__init__( - ansatz, - variational_principle, - initial_parameters, - ode_solver, - lse_solver=lse_solver, - num_timesteps=num_timesteps, - expectation=expectation, - imag_part_tol=imag_part_tol, - num_instability_tol=num_instability_tol, - quantum_instance=quantum_instance, - ) diff --git a/qiskit/algorithms/evolvers/variational/var_qrte.py b/qiskit/algorithms/evolvers/variational/var_qrte.py deleted file mode 100644 index c0846a7159b7..000000000000 --- a/qiskit/algorithms/evolvers/variational/var_qrte.py +++ /dev/null @@ -1,126 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Variational Quantum Real Time Evolution algorithm.""" -from typing import Optional, Union, Type, Callable, List, Dict - -import numpy as np -from scipy.integrate import OdeSolver - -from qiskit import QuantumCircuit -from qiskit.algorithms.evolvers.real_evolver import RealEvolver -from qiskit.circuit import Parameter -from qiskit.opflow import ExpectationBase, OperatorBase -from qiskit.utils import QuantumInstance -from . import RealMcLachlanPrinciple -from .solvers.ode.forward_euler_solver import ForwardEulerSolver -from .variational_principles import RealVariationalPrinciple -from .var_qte import VarQTE - - -class VarQRTE(VarQTE, RealEvolver): - """Variational Quantum Real Time Evolution algorithm. - - .. code-block::python - - from qiskit.algorithms import EvolutionProblem - from qiskit.algorithms import VarQITE - from qiskit import BasicAer - from qiskit.circuit.library import EfficientSU2 - from qiskit.opflow import SummedOp, I, Z, Y, X - from qiskit.algorithms.evolvers.variational import ( - RealMcLachlanPrinciple, - ) - from qiskit.algorithms import EvolutionProblem - import numpy as np - - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ).reduce() - - ansatz = EfficientSU2(observable.num_qubits, reps=1) - parameters = ansatz.parameters - init_param_values = np.zeros(len(ansatz.parameters)) - for i in range(len(ansatz.parameters)): - init_param_values[i] = np.pi / 2 - param_dict = dict(zip(parameters, init_param_values)) - var_principle = RealMcLachlanPrinciple() - backend = BasicAer.get_backend("statevector_simulator") - time = 1 - evolution_problem = EvolutionProblem(observable, time) - var_qrte = VarQRTE(ansatz, var_principle, param_dict, quantum_instance=backend) - evolution_result = var_qite.evolve(evolution_problem) - """ - - def __init__( - self, - ansatz: Union[OperatorBase, QuantumCircuit], - variational_principle: Optional[RealVariationalPrinciple] = None, - initial_parameters: Optional[ - Union[Dict[Parameter, complex], List[complex], np.ndarray] - ] = None, - ode_solver: Union[Type[OdeSolver], str] = ForwardEulerSolver, - lse_solver: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, - num_timesteps: Optional[int] = None, - expectation: Optional[ExpectationBase] = None, - imag_part_tol: float = 1e-7, - num_instability_tol: float = 1e-7, - quantum_instance: Optional[QuantumInstance] = None, - ) -> None: - r""" - Args: - ansatz: Ansatz to be used for variational time evolution. - variational_principle: Variational Principle to be used. Defaults to - ``RealMcLachlanPrinciple``. - initial_parameters: Initial parameter values for an ansatz. If ``None`` provided, - they are initialized uniformly at random. - ode_solver: ODE solver callable that implements a SciPy ``OdeSolver`` interface or a - string indicating a valid method offered by SciPy. - lse_solver: Linear system of equations solver callable. It accepts ``A`` and ``b`` to - solve ``Ax=b`` and returns ``x``. If ``None``, the default ``np.linalg.lstsq`` - solver is used. - num_timesteps: The number of timesteps to take. If None, it is - automatically selected to achieve a timestep of approximately 0.01. Only - relevant in case of the ``ForwardEulerSolver``. - expectation: An instance of ``ExpectationBase`` which defines a method for calculating - a metric tensor and an evolution gradient and, if provided, expectation values of - ``EvolutionProblem.aux_operators``. - imag_part_tol: Allowed value of an imaginary part that can be neglected if no - imaginary part is expected. - num_instability_tol: The amount of negative value that is allowed to be - rounded up to 0 for quantities that are expected to be - non-negative. - quantum_instance: Backend used to evaluate the quantum circuit outputs. If ``None`` - provided, everything will be evaluated based on matrix multiplication (which is - slow). - """ - if variational_principle is None: - variational_principle = RealMcLachlanPrinciple() - super().__init__( - ansatz, - variational_principle, - initial_parameters, - ode_solver, - lse_solver=lse_solver, - num_timesteps=num_timesteps, - expectation=expectation, - imag_part_tol=imag_part_tol, - num_instability_tol=num_instability_tol, - quantum_instance=quantum_instance, - ) diff --git a/qiskit/algorithms/evolvers/variational/var_qte.py b/qiskit/algorithms/evolvers/variational/var_qte.py deleted file mode 100644 index 7edc898037e0..000000000000 --- a/qiskit/algorithms/evolvers/variational/var_qte.py +++ /dev/null @@ -1,303 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""The Variational Quantum Time Evolution Interface""" -from abc import ABC -from typing import Optional, Union, Dict, List, Any, Type, Callable - -import numpy as np -from scipy.integrate import OdeSolver - -from qiskit import QuantumCircuit -from qiskit.algorithms.aux_ops_evaluator import eval_observables -from qiskit.algorithms.evolvers.evolution_problem import EvolutionProblem -from qiskit.algorithms.evolvers.evolution_result import EvolutionResult -from qiskit.circuit import Parameter -from qiskit.providers import Backend -from qiskit.utils import QuantumInstance -from qiskit.opflow import ( - CircuitSampler, - OperatorBase, - ExpectationBase, -) -from qiskit.utils.backend_utils import is_aer_provider -from .solvers.ode.forward_euler_solver import ForwardEulerSolver -from .solvers.ode.ode_function_factory import OdeFunctionFactory -from .solvers.var_qte_linear_solver import ( - VarQTELinearSolver, -) -from .variational_principles.variational_principle import ( - VariationalPrinciple, -) -from .solvers.ode.var_qte_ode_solver import ( - VarQTEOdeSolver, -) - - -class VarQTE(ABC): - """Variational Quantum Time Evolution. - - Algorithms that use variational principles to compute a time evolution for a given - Hermitian operator (Hamiltonian) and a quantum state prepared by a parameterized quantum circuit. - - References: - - [1] Benjamin, Simon C. et al. (2019). - Theory of variational quantum simulation. ``_ - """ - - def __init__( - self, - ansatz: Union[OperatorBase, QuantumCircuit], - variational_principle: VariationalPrinciple, - initial_parameters: Optional[ - Union[Dict[Parameter, complex], List[complex], np.ndarray] - ] = None, - ode_solver: Union[Type[OdeSolver], str] = ForwardEulerSolver, - lse_solver: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, - num_timesteps: Optional[int] = None, - expectation: Optional[ExpectationBase] = None, - imag_part_tol: float = 1e-7, - num_instability_tol: float = 1e-7, - quantum_instance: Optional[QuantumInstance] = None, - ) -> None: - r""" - Args: - ansatz: Ansatz to be used for variational time evolution. - variational_principle: Variational Principle to be used. - initial_parameters: Initial parameter values for an ansatz. If ``None`` provided, - they are initialized uniformly at random. - ode_solver: ODE solver callable that implements a SciPy ``OdeSolver`` interface or a - string indicating a valid method offered by SciPy. - lse_solver: Linear system of equations solver callable. It accepts ``A`` and ``b`` to - solve ``Ax=b`` and returns ``x``. If ``None``, the default ``np.linalg.lstsq`` - solver is used. - num_timesteps: The number of timesteps to take. If None, it is - automatically selected to achieve a timestep of approximately 0.01. Only - relevant in case of the ``ForwardEulerSolver``. - expectation: An instance of ``ExpectationBase`` which defines a method for calculating - a metric tensor and an evolution gradient and, if provided, expectation values of - ``EvolutionProblem.aux_operators``. - imag_part_tol: Allowed value of an imaginary part that can be neglected if no - imaginary part is expected. - num_instability_tol: The amount of negative value that is allowed to be - rounded up to 0 for quantities that are expected to be - non-negative. - quantum_instance: Backend used to evaluate the quantum circuit outputs. If ``None`` - provided, everything will be evaluated based on matrix multiplication (which is - slow). - """ - super().__init__() - self.ansatz = ansatz - self.variational_principle = variational_principle - self.initial_parameters = initial_parameters - self._quantum_instance = None - if quantum_instance is not None: - self.quantum_instance = quantum_instance - self.expectation = expectation - self.num_timesteps = num_timesteps - self.lse_solver = lse_solver - # OdeFunction abstraction kept for potential extensions - unclear at the moment; - # currently hidden from the user - self._ode_function_factory = OdeFunctionFactory(lse_solver=lse_solver) - self.ode_solver = ode_solver - self.imag_part_tol = imag_part_tol - self.num_instability_tol = num_instability_tol - - @property - def quantum_instance(self) -> Optional[QuantumInstance]: - """Returns quantum instance.""" - return self._quantum_instance - - @quantum_instance.setter - def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None: - """Sets quantum_instance""" - if not isinstance(quantum_instance, QuantumInstance): - quantum_instance = QuantumInstance(quantum_instance) - - self._quantum_instance = quantum_instance - self._circuit_sampler = CircuitSampler( - quantum_instance, param_qobj=is_aer_provider(quantum_instance.backend) - ) - - def evolve(self, evolution_problem: EvolutionProblem) -> EvolutionResult: - """ - Apply Variational Quantum Imaginary Time Evolution (VarQITE) w.r.t. the given - operator. - - Args: - evolution_problem: Instance defining an evolution problem. - Returns: - Result of the evolution which includes a quantum circuit with bound parameters as an - evolved state and, if provided, observables evaluated on the evolved state using - a ``quantum_instance`` and ``expectation`` provided. - - Raises: - ValueError: If no ``initial_state`` is included in the ``evolution_problem``. - """ - self._validate_aux_ops(evolution_problem) - - if evolution_problem.initial_state is not None: - raise ValueError("initial_state provided but not applicable to VarQTE.") - - init_state_param_dict = self._create_init_state_param_dict( - self.initial_parameters, self.ansatz.parameters - ) - - error_calculator = None # TODO will be supported in another PR - - evolved_state = self._evolve( - init_state_param_dict, - evolution_problem.hamiltonian, - evolution_problem.time, - evolution_problem.t_param, - error_calculator, - ) - - evaluated_aux_ops = None - if evolution_problem.aux_operators is not None: - evaluated_aux_ops = eval_observables( - self.quantum_instance, - evolved_state, - evolution_problem.aux_operators, - self.expectation, - ) - - return EvolutionResult(evolved_state, evaluated_aux_ops) - - def _evolve( - self, - init_state_param_dict: Dict[Parameter, complex], - hamiltonian: OperatorBase, - time: float, - t_param: Optional[Parameter] = None, - error_calculator: Any = None, - ) -> OperatorBase: - r""" - Helper method for performing time evolution. Works both for imaginary and real case. - - Args: - init_state_param_dict: Parameter dictionary with initial values for a given - parametrized state/ansatz. If no initial parameter values are provided, they are - initialized uniformly at random. - hamiltonian: - Operator used for Variational Quantum Imaginary Time Evolution (VarQTE). - The operator may be given either as a composed op consisting of a Hermitian - observable and a ``CircuitStateFn`` or a ``ListOp`` of a ``CircuitStateFn`` with a - ``ComboFn``. - The latter case enables the evaluation of a Quantum Natural Gradient. - time: Total time of evolution. - t_param: Time parameter in case of a time-dependent Hamiltonian. - error_calculator: Not yet supported. Calculator of errors for error-based ODE functions. - - Returns: - Result of the evolution which is a quantum circuit with bound parameters as an - evolved state. - """ - - init_state_parameters = list(init_state_param_dict.keys()) - init_state_parameters_values = list(init_state_param_dict.values()) - - linear_solver = VarQTELinearSolver( - self.variational_principle, - hamiltonian, - self.ansatz, - init_state_parameters, - t_param, - self._ode_function_factory.lse_solver, - self.imag_part_tol, - self.expectation, - self._quantum_instance, - ) - - # Convert the operator that holds the Hamiltonian and ansatz into a NaturalGradient operator - ode_function = self._ode_function_factory._build( - linear_solver, error_calculator, init_state_param_dict, t_param - ) - - ode_solver = VarQTEOdeSolver( - init_state_parameters_values, ode_function, self.ode_solver, self.num_timesteps - ) - parameter_values = ode_solver.run(time) - param_dict_from_ode = dict(zip(init_state_parameters, parameter_values)) - - return self.ansatz.assign_parameters(param_dict_from_ode) - - @staticmethod - def _create_init_state_param_dict( - param_values: Union[Dict[Parameter, complex], List[complex], np.ndarray], - init_state_parameters: List[Parameter], - ) -> Dict[Parameter, complex]: - r""" - If ``param_values`` is a dictionary, it looks for parameters present in an initial state - (an ansatz) in a ``param_values``. Based on that, it creates a new dictionary containing - only parameters present in an initial state and their respective values. - If ``param_values`` is a list of values, it creates a new dictionary containing - parameters present in an initial state and their respective values. - If no ``param_values`` is provided, parameter values are chosen uniformly at random. - - Args: - param_values: Dictionary which relates parameter values to the parameters or a list of - values. - init_state_parameters: Parameters present in a quantum state. - - Returns: - Dictionary that maps parameters of an initial state to some values. - - Raises: - ValueError: If the dictionary with parameter values provided does not include all - parameters present in the initial state or if the list of values provided is not the - same length as the list of parameters. - TypeError: If an unsupported type of ``param_values`` provided. - """ - if param_values is None: - init_state_parameter_values = np.random.random(len(init_state_parameters)) - elif isinstance(param_values, dict): - init_state_parameter_values = [] - for param in init_state_parameters: - if param in param_values.keys(): - init_state_parameter_values.append(param_values[param]) - else: - raise ValueError( - f"The dictionary with parameter values provided does not " - f"include all parameters present in the initial state." - f"Parameters present in the state: {init_state_parameters}, " - f"parameters in the dictionary: " - f"{list(param_values.keys())}." - ) - elif isinstance(param_values, (list, np.ndarray)): - if len(init_state_parameters) != len(param_values): - raise ValueError( - f"Initial state has {len(init_state_parameters)} parameters and the" - f" list of values has {len(param_values)} elements. They should be" - f"equal in length." - ) - init_state_parameter_values = param_values - else: - raise TypeError(f"Unsupported type of param_values provided: {type(param_values)}.") - - init_state_param_dict = dict(zip(init_state_parameters, init_state_parameter_values)) - return init_state_param_dict - - def _validate_aux_ops(self, evolution_problem: EvolutionProblem) -> None: - if evolution_problem.aux_operators is not None: - if self.quantum_instance is None: - raise ValueError( - "aux_operators where provided for evaluations but no ``quantum_instance`` " - "was provided." - ) - - if self.expectation is None: - raise ValueError( - "aux_operators where provided for evaluations but no ``expectation`` " - "was provided." - ) diff --git a/qiskit/algorithms/evolvers/variational/variational_principles/__init__.py b/qiskit/algorithms/evolvers/variational/variational_principles/__init__.py deleted file mode 100644 index 7c508f3921de..000000000000 --- a/qiskit/algorithms/evolvers/variational/variational_principles/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Variational Principles""" - -from .imaginary_mc_lachlan_principle import ImaginaryMcLachlanPrinciple -from .imaginary_variational_principle import ImaginaryVariationalPrinciple -from .real_mc_lachlan_principle import RealMcLachlanPrinciple -from .real_variational_principle import RealVariationalPrinciple - -__all__ = [ - "ImaginaryMcLachlanPrinciple", - "ImaginaryVariationalPrinciple", - "RealMcLachlanPrinciple", - "RealVariationalPrinciple", -] diff --git a/qiskit/algorithms/evolvers/variational/variational_principles/imaginary_mc_lachlan_principle.py b/qiskit/algorithms/evolvers/variational/variational_principles/imaginary_mc_lachlan_principle.py deleted file mode 100644 index 7a0c46b794f2..000000000000 --- a/qiskit/algorithms/evolvers/variational/variational_principles/imaginary_mc_lachlan_principle.py +++ /dev/null @@ -1,76 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Class for an Imaginary McLachlan's Variational Principle.""" -from typing import Dict, List, Optional - -import numpy as np - -from qiskit import QuantumCircuit -from qiskit.circuit import Parameter -from qiskit.opflow import StateFn, OperatorBase, CircuitSampler, ExpectationBase -from qiskit.utils import QuantumInstance -from .imaginary_variational_principle import ( - ImaginaryVariationalPrinciple, -) - - -class ImaginaryMcLachlanPrinciple(ImaginaryVariationalPrinciple): - """Class for an Imaginary McLachlan's Variational Principle. It aims to minimize the distance - between both sides of the Wick-rotated Schrödinger equation with a quantum state given as a - parametrized trial state. The principle leads to a system of linear equations handled by a - linear solver. The imaginary variant means that we consider imaginary time dynamics. - """ - - def evolution_grad( - self, - hamiltonian: OperatorBase, - ansatz: QuantumCircuit, - circuit_sampler: CircuitSampler, - param_dict: Dict[Parameter, complex], - bind_params: List[Parameter], - gradient_params: List[Parameter], - param_values: List[complex], - expectation: Optional[ExpectationBase] = None, - quantum_instance: Optional[QuantumInstance] = None, - ) -> np.ndarray: - """ - Calculates an evolution gradient according to the rules of this variational principle. - - Args: - hamiltonian: Operator used for Variational Quantum Time Evolution. The operator may be - given either as a composed op consisting of a Hermitian observable and a - ``CircuitStateFn`` or a ``ListOp`` of a ``CircuitStateFn`` with a ``ComboFn``. The - latter case enables the evaluation of a Quantum Natural Gradient. - ansatz: Quantum state in the form of a parametrized quantum circuit. - circuit_sampler: A circuit sampler. - param_dict: Dictionary which relates parameter values to the parameters in the ansatz. - bind_params: List of parameters that are supposed to be bound. - gradient_params: List of parameters with respect to which gradients should be computed. - param_values: Values of parameters to be bound. - expectation: An instance of ``ExpectationBase`` used for calculating an evolution - gradient. If ``None`` provided, a ``PauliExpectation`` is used. - quantum_instance: Backend used to evaluate the quantum circuit outputs. If ``None`` - provided, everything will be evaluated based on matrix multiplication (which is - slow). - - Returns: - An evolution gradient. - """ - if self._evolution_gradient_callable is None: - operator = StateFn(hamiltonian, is_measurement=True) @ StateFn(ansatz) - self._evolution_gradient_callable = self._evolution_gradient.gradient_wrapper( - operator, bind_params, gradient_params, quantum_instance, expectation - ) - evolution_grad_lse_rhs = -0.5 * self._evolution_gradient_callable(param_values) - - return evolution_grad_lse_rhs diff --git a/qiskit/algorithms/evolvers/variational/variational_principles/imaginary_variational_principle.py b/qiskit/algorithms/evolvers/variational/variational_principles/imaginary_variational_principle.py deleted file mode 100644 index bcd60241942a..000000000000 --- a/qiskit/algorithms/evolvers/variational/variational_principles/imaginary_variational_principle.py +++ /dev/null @@ -1,24 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Abstract class for an Imaginary Variational Principle.""" - -from abc import ABC - -from ..variational_principles.variational_principle import ( - VariationalPrinciple, -) - - -class ImaginaryVariationalPrinciple(VariationalPrinciple, ABC): - """Abstract class for an Imaginary Variational Principle. The imaginary variant means that we - consider imaginary time dynamics.""" diff --git a/qiskit/algorithms/evolvers/variational/variational_principles/real_mc_lachlan_principle.py b/qiskit/algorithms/evolvers/variational/variational_principles/real_mc_lachlan_principle.py deleted file mode 100644 index ddc6a17ed879..000000000000 --- a/qiskit/algorithms/evolvers/variational/variational_principles/real_mc_lachlan_principle.py +++ /dev/null @@ -1,150 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Class for a Real McLachlan's Variational Principle.""" -from typing import Union, Dict, List, Optional - -import numpy as np -from numpy import real - -from qiskit import QuantumCircuit -from qiskit.circuit import Parameter -from qiskit.opflow import ( - StateFn, - SummedOp, - Y, - I, - PauliExpectation, - CircuitQFI, - CircuitSampler, - OperatorBase, - ExpectationBase, -) -from qiskit.opflow.gradients.circuit_gradients import LinComb -from qiskit.utils import QuantumInstance -from .real_variational_principle import ( - RealVariationalPrinciple, -) - - -class RealMcLachlanPrinciple(RealVariationalPrinciple): - """Class for a Real McLachlan's Variational Principle. It aims to minimize the distance - between both sides of the Schrödinger equation with a quantum state given as a parametrized - trial state. The principle leads to a system of linear equations handled by a linear solver. - The real variant means that we consider real time dynamics. - """ - - def __init__( - self, - qfi_method: Union[str, CircuitQFI] = "lin_comb_full", - ) -> None: - """ - Args: - qfi_method: The method used to compute the QFI. Can be either - ``'lin_comb_full'`` or ``'overlap_block_diag'`` or ``'overlap_diag'`` or - ``CircuitQFI``. - """ - self._grad_method = LinComb(aux_meas_op=-Y) - self._energy_param = None - self._energy = None - - super().__init__(qfi_method) - - def evolution_grad( - self, - hamiltonian: OperatorBase, - ansatz: QuantumCircuit, - circuit_sampler: CircuitSampler, - param_dict: Dict[Parameter, complex], - bind_params: List[Parameter], - gradient_params: List[Parameter], - param_values: List[complex], - expectation: Optional[ExpectationBase] = None, - quantum_instance: Optional[QuantumInstance] = None, - ) -> np.ndarray: - """ - Calculates an evolution gradient according to the rules of this variational principle. - - Args: - hamiltonian: Operator used for Variational Quantum Time Evolution. The operator may be - given either as a composed op consisting of a Hermitian observable and a - ``CircuitStateFn`` or a ``ListOp`` of a ``CircuitStateFn`` with a ``ComboFn``. The - latter case enables the evaluation of a Quantum Natural Gradient. - ansatz: Quantum state in the form of a parametrized quantum circuit. - circuit_sampler: A circuit sampler. - param_dict: Dictionary which relates parameter values to the parameters in the ansatz. - bind_params: List of parameters that are supposed to be bound. - gradient_params: List of parameters with respect to which gradients should be computed. - param_values: Values of parameters to be bound. - expectation: An instance of ``ExpectationBase`` used for calculating an evolution - gradient. If ``None`` provided, a ``PauliExpectation`` is used. - quantum_instance: Backend used to evaluate the quantum circuit outputs. If ``None`` - provided, everything will be evaluated based on matrix multiplication (which is - slow). - - Returns: - An evolution gradient. - """ - if self._evolution_gradient_callable is None: - self._energy_param = Parameter("alpha") - modified_hamiltonian = self._construct_expectation( - hamiltonian, ansatz, self._energy_param - ) - - self._evolution_gradient_callable = self._evolution_gradient.gradient_wrapper( - modified_hamiltonian, - bind_params + [self._energy_param], - gradient_params, - quantum_instance, - expectation, - ) - - energy = StateFn(hamiltonian, is_measurement=True) @ StateFn(ansatz) - if expectation is None: - expectation = PauliExpectation() - self._energy = expectation.convert(energy) - - if circuit_sampler is not None: - energy = circuit_sampler.convert(self._energy, param_dict).eval() - else: - energy = self._energy.assign_parameters(param_dict).eval() - - param_values.append(real(energy)) - evolution_grad = 0.5 * self._evolution_gradient_callable(param_values) - - # quick fix due to an error on opflow; to be addressed in a separate PR - evolution_grad = (-1) * evolution_grad - return evolution_grad - - @staticmethod - def _construct_expectation( - hamiltonian: OperatorBase, ansatz: QuantumCircuit, energy_param: Parameter - ) -> OperatorBase: - """ - Modifies a Hamiltonian according to the rules of this variational principle. - - Args: - hamiltonian: Operator used for Variational Quantum Time Evolution. The operator may be - given either as a composed op consisting of a Hermitian observable and a - ``CircuitStateFn`` or a ``ListOp`` of a ``CircuitStateFn`` with a ``ComboFn``. The - latter case enables the evaluation of a Quantum Natural Gradient. - ansatz: Quantum state in the form of a parametrized quantum circuit. - energy_param: Parameter for energy correction. - - Returns: - An modified Hamiltonian composed with an ansatz. - """ - energy_term = I ^ hamiltonian.num_qubits - energy_term *= -1 - energy_term *= energy_param - modified_hamiltonian = SummedOp([hamiltonian, energy_term]).reduce() - return StateFn(modified_hamiltonian, is_measurement=True) @ StateFn(ansatz) diff --git a/qiskit/algorithms/evolvers/variational/variational_principles/real_variational_principle.py b/qiskit/algorithms/evolvers/variational/variational_principles/real_variational_principle.py deleted file mode 100644 index 881e1f3827c7..000000000000 --- a/qiskit/algorithms/evolvers/variational/variational_principles/real_variational_principle.py +++ /dev/null @@ -1,42 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Class for a Real Variational Principle.""" - -from abc import ABC -from typing import Union - -from qiskit.opflow import ( - CircuitQFI, -) -from .variational_principle import ( - VariationalPrinciple, -) - - -class RealVariationalPrinciple(VariationalPrinciple, ABC): - """Class for a Real Variational Principle. The real variant means that we consider real time - dynamics.""" - - def __init__( - self, - qfi_method: Union[str, CircuitQFI] = "lin_comb_full", - ) -> None: - """ - Args: - qfi_method: The method used to compute the QFI. Can be either ``'lin_comb_full'`` or - ``'overlap_block_diag'`` or ``'overlap_diag'`` or ``CircuitQFI``. - """ - super().__init__( - qfi_method, - self._grad_method, - ) diff --git a/qiskit/algorithms/evolvers/variational/variational_principles/variational_principle.py b/qiskit/algorithms/evolvers/variational/variational_principles/variational_principle.py deleted file mode 100644 index d3d6cbc20b67..000000000000 --- a/qiskit/algorithms/evolvers/variational/variational_principles/variational_principle.py +++ /dev/null @@ -1,129 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Class for a Variational Principle.""" - -from abc import ABC, abstractmethod -from typing import Union, List, Optional, Dict - -import numpy as np - -from qiskit import QuantumCircuit -from qiskit.circuit import Parameter -from qiskit.opflow import ( - CircuitQFI, - CircuitGradient, - QFI, - Gradient, - CircuitStateFn, - CircuitSampler, - OperatorBase, - ExpectationBase, -) -from qiskit.utils import QuantumInstance - - -class VariationalPrinciple(ABC): - """A Variational Principle class. It determines the time propagation of parameters in a - quantum state provided as a parametrized quantum circuit (ansatz).""" - - def __init__( - self, - qfi_method: Union[str, CircuitQFI] = "lin_comb_full", - grad_method: Union[str, CircuitGradient] = "lin_comb", - ) -> None: - """ - Args: - grad_method: The method used to compute the state gradient. Can be either - ``'param_shift'`` or ``'lin_comb'`` or ``'fin_diff'`` or ``CircuitGradient``. - qfi_method: The method used to compute the QFI. Can be either - ``'lin_comb_full'`` or ``'overlap_block_diag'`` or ``'overlap_diag'`` or - ``CircuitQFI``. - """ - self._qfi_method = qfi_method - self.qfi = QFI(qfi_method) - self._grad_method = grad_method - self._evolution_gradient = Gradient(self._grad_method) - self._qfi_gradient_callable = None - self._evolution_gradient_callable = None - - def metric_tensor( - self, - ansatz: QuantumCircuit, - bind_params: List[Parameter], - gradient_params: List[Parameter], - param_values: List[complex], - expectation: Optional[ExpectationBase] = None, - quantum_instance: Optional[QuantumInstance] = None, - ) -> np.ndarray: - """ - Calculates a metric tensor according to the rules of this variational principle. - - Args: - ansatz: Quantum state in the form of a parametrized quantum circuit. - bind_params: List of parameters that are supposed to be bound. - gradient_params: List of parameters with respect to which gradients should be computed. - param_values: Values of parameters to be bound. - expectation: An instance of ``ExpectationBase`` used for calculating a metric tensor. - If ``None`` provided, a ``PauliExpectation`` is used. - quantum_instance: Backend used to evaluate the quantum circuit outputs. If ``None`` - provided, everything will be evaluated based on matrix multiplication (which is - slow). - - Returns: - Metric tensor. - """ - if self._qfi_gradient_callable is None: - self._qfi_gradient_callable = self.qfi.gradient_wrapper( - CircuitStateFn(ansatz), bind_params, gradient_params, quantum_instance, expectation - ) - metric_tensor = 0.25 * self._qfi_gradient_callable(param_values) - - return metric_tensor - - @abstractmethod - def evolution_grad( - self, - hamiltonian: OperatorBase, - ansatz: QuantumCircuit, - circuit_sampler: CircuitSampler, - param_dict: Dict[Parameter, complex], - bind_params: List[Parameter], - gradient_params: List[Parameter], - param_values: List[complex], - expectation: Optional[ExpectationBase] = None, - quantum_instance: Optional[QuantumInstance] = None, - ) -> np.ndarray: - """ - Calculates an evolution gradient according to the rules of this variational principle. - - Args: - hamiltonian: Operator used for Variational Quantum Time Evolution. The operator may be - given either as a composed op consisting of a Hermitian observable and a - ``CircuitStateFn`` or a ``ListOp`` of a ``CircuitStateFn`` with a ``ComboFn``. The - latter case enables the evaluation of a Quantum Natural Gradient. - ansatz: Quantum state in the form of a parametrized quantum circuit. - circuit_sampler: A circuit sampler. - param_dict: Dictionary which relates parameter values to the parameters in the ansatz. - bind_params: List of parameters that are supposed to be bound. - gradient_params: List of parameters with respect to which gradients should be computed. - param_values: Values of parameters to be bound. - expectation: An instance of ``ExpectationBase`` used for calculating an evolution - gradient. If ``None`` provided, a ``PauliExpectation`` is used. - quantum_instance: Backend used to evaluate the quantum circuit outputs. If ``None`` - provided, everything will be evaluated based on matrix multiplication (which is - slow). - - Returns: - An evolution gradient. - """ - pass diff --git a/releasenotes/notes/add-variational-quantum-time-evolution-112ffeaf62782fea.yaml b/releasenotes/notes/add-variational-quantum-time-evolution-112ffeaf62782fea.yaml deleted file mode 100644 index fc4d0fb891d3..000000000000 --- a/releasenotes/notes/add-variational-quantum-time-evolution-112ffeaf62782fea.yaml +++ /dev/null @@ -1,50 +0,0 @@ ---- -features: - - | - Add algorithms for Variational Quantum Time Evolution that implement a new interface for - Quantum Time Evolution. The feature supports real (:class:`qiskit.algorithms.VarQRTE`.) and - imaginary (:class:`qiskit.algorithms.VarQITE`.) quantum time evolution according to a - variational principle passed. Each algorithm accepts a variational principle and the following - are provided: - :class:`qiskit.algorithms.evolvers.variational.ImaginaryMcLachlanPrinciple`, - :class:`qiskit.algorithms.evolvers.variational.RealMcLachlanPrinciple`, - :class:`qiskit.algorithms.evolvers.variational.RealTimeDependentPrinciple`. - Both algorithms require solving ODE equations and linear equations which is handled by classes - implemented in `qiskit.algorithms.evolvers.variational.solvers` module. - - .. code-block:: python - - from qiskit.algorithms import EvolutionProblem - from qiskit.algorithms import VarQITE - from qiskit import BasicAer - from qiskit.circuit.library import EfficientSU2 - from qiskit.opflow import SummedOp, I, Z, Y, X - from qiskit.algorithms.evolvers.variational import ( - ImaginaryMcLachlanPrinciple, - ) - from qiskit.algorithms import EvolutionProblem - import numpy as np - - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ).reduce() - - ansatz = EfficientSU2(observable.num_qubits, reps=1) - parameters = ansatz.parameters - init_param_values = np.zeros(len(ansatz.parameters)) - for i in range(len(ansatz.parameters)): - init_param_values[i] = np.pi / 2 - param_dict = dict(zip(parameters, init_param_values)) - var_principle = ImaginaryMcLachlanPrinciple() - backend = BasicAer.get_backend("statevector_simulator") - time = 1 - evolution_problem = EvolutionProblem(observable, time) - var_qite = VarQITE(ansatz, var_principle, param_dict, quantum_instance=backend) - evolution_result = var_qite.evolve(evolution_problem) diff --git a/test/python/algorithms/evolvers/variational/__init__.py b/test/python/algorithms/evolvers/variational/__init__.py deleted file mode 100644 index b3ac36d2a6d9..000000000000 --- a/test/python/algorithms/evolvers/variational/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. diff --git a/test/python/algorithms/evolvers/variational/solvers/__init__.py b/test/python/algorithms/evolvers/variational/solvers/__init__.py deleted file mode 100644 index b3ac36d2a6d9..000000000000 --- a/test/python/algorithms/evolvers/variational/solvers/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. diff --git a/test/python/algorithms/evolvers/variational/solvers/expected_results/__init__.py b/test/python/algorithms/evolvers/variational/solvers/expected_results/__init__.py deleted file mode 100644 index 9c3165f57a2a..000000000000 --- a/test/python/algorithms/evolvers/variational/solvers/expected_results/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -"""Stores expected results that are lengthy.""" diff --git a/test/python/algorithms/evolvers/variational/solvers/expected_results/test_varqte_linear_solver_expected_1.py b/test/python/algorithms/evolvers/variational/solvers/expected_results/test_varqte_linear_solver_expected_1.py deleted file mode 100644 index c6dcf903673f..000000000000 --- a/test/python/algorithms/evolvers/variational/solvers/expected_results/test_varqte_linear_solver_expected_1.py +++ /dev/null @@ -1,182 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -"""Stores expected results that are lengthy.""" -expected_metric_res_1 = [ - [ - 2.50000000e-01 + 0.0j, - -3.85185989e-33 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - -3.85185989e-33 + 0.0j, - -3.85185989e-33 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 2.50000000e-01 + 0.0j, - -2.77500000e-17 + 0.0j, - 4.85000000e-17 + 0.0j, - 4.77630626e-32 + 0.0j, - ], - [ - -3.85185989e-33 + 0.0j, - 2.50000000e-01 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - -3.85185989e-33 + 0.0j, - 2.50000000e-01 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - -3.85185989e-33 + 0.0j, - 2.50000000e-01 + 0.0j, - 4.85334346e-32 + 0.0j, - 4.17500000e-17 + 0.0j, - ], - [ - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 0.00000000e00 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 0.00000000e00 + 0.0j, - -1.38777878e-17 + 0.0j, - -7.00000000e-18 + 0.0j, - 1.38006319e-17 + 0.0j, - -1.39493681e-17 + 0.0j, - ], - [ - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 0.00000000e00 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 0.00000000e00 + 0.0j, - -1.38777878e-17 + 0.0j, - -7.00000000e-18 + 0.0j, - 1.38006319e-17 + 0.0j, - -1.39493681e-17 + 0.0j, - ], - [ - -3.85185989e-33 + 0.0j, - -3.85185989e-33 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 2.50000000e-01 + 0.0j, - -3.85185989e-33 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - -3.85185989e-33 + 0.0j, - 0.00000000e00 + 0.0j, - 4.85334346e-32 + 0.0j, - -7.00000000e-18 + 0.0j, - ], - [ - -3.85185989e-33 + 0.0j, - 2.50000000e-01 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - -3.85185989e-33 + 0.0j, - 2.50000000e-01 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - -3.85185989e-33 + 0.0j, - 2.50000000e-01 + 0.0j, - 4.85334346e-32 + 0.0j, - 4.17500000e-17 + 0.0j, - ], - [ - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 0.00000000e00 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 0.00000000e00 + 0.0j, - -1.38777878e-17 + 0.0j, - -7.00000000e-18 + 0.0j, - 1.38006319e-17 + 0.0j, - -1.39493681e-17 + 0.0j, - ], - [ - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 0.00000000e00 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 0.00000000e00 + 0.0j, - -1.38777878e-17 + 0.0j, - -7.00000000e-18 + 0.0j, - 1.38006319e-17 + 0.0j, - -1.39493681e-17 + 0.0j, - ], - [ - 2.50000000e-01 + 0.0j, - -3.85185989e-33 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - -3.85185989e-33 + 0.0j, - -3.85185989e-33 + 0.0j, - -1.38777878e-17 + 0.0j, - -1.38777878e-17 + 0.0j, - 2.50000000e-01 + 0.0j, - -2.77500000e-17 + 0.0j, - 4.85000000e-17 + 0.0j, - -7.00000000e-18 + 0.0j, - ], - [ - -2.77500000e-17 + 0.0j, - 2.50000000e-01 + 0.0j, - -7.00000000e-18 + 0.0j, - -7.00000000e-18 + 0.0j, - 0.00000000e00 + 0.0j, - 2.50000000e-01 + 0.0j, - -7.00000000e-18 + 0.0j, - -7.00000000e-18 + 0.0j, - -2.77500000e-17 + 0.0j, - 2.50000000e-01 + 0.0j, - 0.00000000e00 + 0.0j, - 4.17500000e-17 + 0.0j, - ], - [ - 4.85000000e-17 + 0.0j, - 4.85334346e-32 + 0.0j, - 1.38006319e-17 + 0.0j, - 1.38006319e-17 + 0.0j, - 4.85334346e-32 + 0.0j, - 4.85334346e-32 + 0.0j, - 1.38006319e-17 + 0.0j, - 1.38006319e-17 + 0.0j, - 4.85000000e-17 + 0.0j, - 0.00000000e00 + 0.0j, - 2.50000000e-01 + 0.0j, - -2.77500000e-17 + 0.0j, - ], - [ - 4.77630626e-32 + 0.0j, - 4.17500000e-17 + 0.0j, - -1.39493681e-17 + 0.0j, - -1.39493681e-17 + 0.0j, - -7.00000000e-18 + 0.0j, - 4.17500000e-17 + 0.0j, - -1.39493681e-17 + 0.0j, - -1.39493681e-17 + 0.0j, - -7.00000000e-18 + 0.0j, - 4.17500000e-17 + 0.0j, - -2.77500000e-17 + 0.0j, - 2.50000000e-01 + 0.0j, - ], -] diff --git a/test/python/algorithms/evolvers/variational/solvers/ode/__init__.py b/test/python/algorithms/evolvers/variational/solvers/ode/__init__.py deleted file mode 100644 index b3ac36d2a6d9..000000000000 --- a/test/python/algorithms/evolvers/variational/solvers/ode/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. diff --git a/test/python/algorithms/evolvers/variational/solvers/ode/test_forward_euler_solver.py b/test/python/algorithms/evolvers/variational/solvers/ode/test_forward_euler_solver.py deleted file mode 100644 index 08d13233c76e..000000000000 --- a/test/python/algorithms/evolvers/variational/solvers/ode/test_forward_euler_solver.py +++ /dev/null @@ -1,47 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Test Forward Euler solver.""" - -import unittest -from test.python.algorithms import QiskitAlgorithmsTestCase -import numpy as np -from ddt import ddt, data, unpack -from scipy.integrate import solve_ivp - -from qiskit.algorithms.evolvers.variational.solvers.ode.forward_euler_solver import ( - ForwardEulerSolver, -) - - -@ddt -class TestForwardEulerSolver(QiskitAlgorithmsTestCase): - """Test Forward Euler solver.""" - - @unpack - @data((4, 16), (16, 35.52713678800501), (320, 53.261108839604795)) - def test_solve(self, timesteps, expected_result): - """Test Forward Euler solver for a simple ODE.""" - - y0 = [1] - - # pylint: disable=unused-argument - def func(time, y): - return y - - t_span = [0.0, 4.0] - sol1 = solve_ivp(func, t_span, y0, method=ForwardEulerSolver, num_t_steps=timesteps) - np.testing.assert_equal(sol1.y[-1][-1], expected_result) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/algorithms/evolvers/variational/solvers/ode/test_ode_function.py b/test/python/algorithms/evolvers/variational/solvers/ode/test_ode_function.py deleted file mode 100644 index 1ef84204f2cc..000000000000 --- a/test/python/algorithms/evolvers/variational/solvers/ode/test_ode_function.py +++ /dev/null @@ -1,165 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Test ODE function generator.""" - -import unittest - -from test.python.algorithms import QiskitAlgorithmsTestCase -import numpy as np -from qiskit.algorithms.evolvers.variational.solvers.var_qte_linear_solver import ( - VarQTELinearSolver, -) -from qiskit.algorithms.evolvers.variational.solvers.ode.ode_function import ( - OdeFunction, -) -from qiskit import BasicAer -from qiskit.algorithms.evolvers.variational import ( - ImaginaryMcLachlanPrinciple, -) -from qiskit.circuit import Parameter -from qiskit.circuit.library import EfficientSU2 -from qiskit.opflow import ( - SummedOp, - X, - Y, - I, - Z, -) - - -class TestOdeFunctionGenerator(QiskitAlgorithmsTestCase): - """Test ODE function generator.""" - - def test_var_qte_ode_function(self): - """Test ODE function generator.""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - # Define a set of initial parameters - parameters = list(ansatz.parameters) - - param_dict = {param: np.pi / 4 for param in parameters} - backend = BasicAer.get_backend("statevector_simulator") - - var_principle = ImaginaryMcLachlanPrinciple() - - t_param = None - linear_solver = None - linear_solver = VarQTELinearSolver( - var_principle, - observable, - ansatz, - parameters, - t_param, - linear_solver, - quantum_instance=backend, - ) - - time = 2 - ode_function_generator = OdeFunction( - linear_solver, error_calculator=None, t_param=None, param_dict=param_dict - ) - - qte_ode_function = ode_function_generator.var_qte_ode_function(time, param_dict.values()) - - expected_qte_ode_function = [ - 0.442145, - -0.022081, - 0.106223, - -0.117468, - 0.251233, - 0.321256, - -0.062728, - -0.036209, - -0.509219, - -0.183459, - -0.050739, - -0.093163, - ] - - np.testing.assert_array_almost_equal(expected_qte_ode_function, qte_ode_function) - - def test_var_qte_ode_function_time_param(self): - """Test ODE function generator with time param.""" - t_param = Parameter("t") - observable = SummedOp( - [ - 0.2252 * t_param * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - # Define a set of initial parameters - parameters = list(ansatz.parameters) - - param_dict = {param: np.pi / 4 for param in parameters} - backend = BasicAer.get_backend("statevector_simulator") - - var_principle = ImaginaryMcLachlanPrinciple() - - time = 2 - - linear_solver = None - linear_solver = VarQTELinearSolver( - var_principle, - observable, - ansatz, - parameters, - t_param, - linear_solver, - quantum_instance=backend, - ) - ode_function_generator = OdeFunction( - linear_solver, error_calculator=None, t_param=t_param, param_dict=param_dict - ) - - qte_ode_function = ode_function_generator.var_qte_ode_function(time, param_dict.values()) - - expected_qte_ode_function = [ - 0.442145, - -0.022081, - 0.106223, - -0.117468, - 0.251233, - 0.321256, - -0.062728, - -0.036209, - -0.509219, - -0.183459, - -0.050739, - -0.093163, - ] - - np.testing.assert_array_almost_equal(expected_qte_ode_function, qte_ode_function, decimal=5) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/algorithms/evolvers/variational/solvers/ode/test_var_qte_ode_solver.py b/test/python/algorithms/evolvers/variational/solvers/ode/test_var_qte_ode_solver.py deleted file mode 100644 index 5b39229ba502..000000000000 --- a/test/python/algorithms/evolvers/variational/solvers/ode/test_var_qte_ode_solver.py +++ /dev/null @@ -1,136 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Test solver of ODEs.""" - -import unittest -from test.python.algorithms import QiskitAlgorithmsTestCase -from ddt import ddt, data, unpack -import numpy as np -from qiskit.algorithms.evolvers.variational.solvers.ode.forward_euler_solver import ( - ForwardEulerSolver, -) -from qiskit.algorithms.evolvers.variational.solvers.var_qte_linear_solver import ( - VarQTELinearSolver, -) -from qiskit.algorithms.evolvers.variational.solvers.ode.var_qte_ode_solver import ( - VarQTEOdeSolver, -) -from qiskit.algorithms.evolvers.variational.solvers.ode.ode_function import ( - OdeFunction, -) -from qiskit import BasicAer -from qiskit.algorithms.evolvers.variational import ( - ImaginaryMcLachlanPrinciple, -) -from qiskit.circuit.library import EfficientSU2 -from qiskit.opflow import ( - SummedOp, - X, - Y, - I, - Z, -) - - -@ddt -class TestVarQTEOdeSolver(QiskitAlgorithmsTestCase): - """Test solver of ODEs.""" - - @data( - ( - "RK45", - [ - -0.30076755873631345, - -0.8032811383782005, - 1.1674108371914734e-15, - 3.2293849116821145e-16, - 2.541585055586039, - 1.155475184255733, - -2.966331417968169e-16, - 9.604292449638343e-17, - ], - ), - ( - ForwardEulerSolver, - [ - -3.2707e-01, - -8.0960e-01, - 3.4323e-16, - 8.9034e-17, - 2.5290e00, - 1.1563e00, - 3.0227e-16, - -2.2769e-16, - ], - ), - ) - @unpack - def test_run_no_backend(self, ode_solver, expected_result): - """Test ODE solver with no backend.""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 1 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - # Define a set of initial parameters - parameters = list(ansatz.parameters) - - init_param_values = np.zeros(len(parameters)) - for i in range(ansatz.num_qubits): - init_param_values[-(ansatz.num_qubits + i + 1)] = np.pi / 2 - - param_dict = dict(zip(parameters, init_param_values)) - - backend = BasicAer.get_backend("statevector_simulator") - - var_principle = ImaginaryMcLachlanPrinciple() - - time = 1 - - t_param = None - - linear_solver = None - linear_solver = VarQTELinearSolver( - var_principle, - observable, - ansatz, - parameters, - t_param, - linear_solver, - quantum_instance=backend, - ) - ode_function_generator = OdeFunction(linear_solver, None, param_dict, t_param) - - var_qte_ode_solver = VarQTEOdeSolver( - list(param_dict.values()), - ode_function_generator, - ode_solver=ode_solver, - num_timesteps=25, - ) - - result = var_qte_ode_solver.run(time) - - np.testing.assert_array_almost_equal(result, expected_result, decimal=4) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/algorithms/evolvers/variational/solvers/test_varqte_linear_solver.py b/test/python/algorithms/evolvers/variational/solvers/test_varqte_linear_solver.py deleted file mode 100644 index c5442447bf9c..000000000000 --- a/test/python/algorithms/evolvers/variational/solvers/test_varqte_linear_solver.py +++ /dev/null @@ -1,115 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Test solver of linear equations.""" - -import unittest - -from test.python.algorithms import QiskitAlgorithmsTestCase -from ddt import ddt, data -import numpy as np - -from qiskit import BasicAer -from qiskit.algorithms.evolvers.variational import ( - ImaginaryMcLachlanPrinciple, -) -from qiskit.algorithms.evolvers.variational.solvers.var_qte_linear_solver import ( - VarQTELinearSolver, -) -from qiskit.circuit.library import EfficientSU2 -from qiskit.opflow import SummedOp, X, Y, I, Z -from .expected_results.test_varqte_linear_solver_expected_1 import ( - expected_metric_res_1, -) - - -@ddt -class TestVarQTELinearSolver(QiskitAlgorithmsTestCase): - """Test solver of linear equations.""" - - @data(BasicAer.get_backend("statevector_simulator"), None) - def test_solve_lse(self, backend): - """Test SLE solver.""" - - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - parameters = list(ansatz.parameters) - init_param_values = np.zeros(len(parameters)) - for i in range(ansatz.num_qubits): - init_param_values[-(ansatz.num_qubits + i + 1)] = np.pi / 2 - - param_dict = dict(zip(parameters, init_param_values)) - - var_principle = ImaginaryMcLachlanPrinciple() - t_param = None - linear_solver = None - linear_solver = VarQTELinearSolver( - var_principle, - observable, - ansatz, - parameters, - t_param, - linear_solver, - quantum_instance=backend, - ) - - nat_grad_res, metric_res, grad_res = linear_solver.solve_lse(param_dict) - - expected_nat_grad_res = [ - 3.43500000e-01, - -2.89800000e-01, - 2.43575264e-16, - 1.31792695e-16, - -9.61200000e-01, - -2.89800000e-01, - 1.27493709e-17, - 1.12587456e-16, - 3.43500000e-01, - -2.89800000e-01, - 3.69914720e-17, - 1.95052083e-17, - ] - - expected_grad_res = [ - (0.17174999999999926 - 0j), - (-0.21735000000000085 + 0j), - (4.114902862895087e-17 - 0j), - (4.114902862895087e-17 - 0j), - (-0.24030000000000012 + 0j), - (-0.21735000000000085 + 0j), - (4.114902862895087e-17 - 0j), - (4.114902862895087e-17 - 0j), - (0.17174999999999918 - 0j), - (-0.21735000000000076 + 0j), - (1.7789936190837538e-17 - 0j), - (-8.319872568662832e-17 + 0j), - ] - - np.testing.assert_array_almost_equal(nat_grad_res, expected_nat_grad_res, decimal=4) - np.testing.assert_array_almost_equal(grad_res, expected_grad_res, decimal=4) - np.testing.assert_array_almost_equal(metric_res, expected_metric_res_1, decimal=4) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/algorithms/evolvers/variational/test_var_qite.py b/test/python/algorithms/evolvers/variational/test_var_qite.py deleted file mode 100644 index 6c4a26e13f8c..000000000000 --- a/test/python/algorithms/evolvers/variational/test_var_qite.py +++ /dev/null @@ -1,287 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Test Variational Quantum Imaginary Time Evolution algorithm.""" - -import unittest - -from test.python.algorithms import QiskitAlgorithmsTestCase -from ddt import data, ddt -import numpy as np -from qiskit.test import slow_test -from qiskit.utils import algorithm_globals, QuantumInstance -from qiskit import BasicAer -from qiskit.algorithms import EvolutionProblem, VarQITE -from qiskit.algorithms.evolvers.variational import ( - ImaginaryMcLachlanPrinciple, -) -from qiskit.circuit.library import EfficientSU2 -from qiskit.opflow import ( - SummedOp, - X, - Y, - I, - Z, - ExpectationFactory, -) - - -@ddt -class TestVarQITE(QiskitAlgorithmsTestCase): - """Test Variational Quantum Imaginary Time Evolution algorithm.""" - - def setUp(self): - super().setUp() - self.seed = 11 - np.random.seed(self.seed) - backend_statevector = BasicAer.get_backend("statevector_simulator") - backend_qasm = BasicAer.get_backend("qasm_simulator") - self.quantum_instance = QuantumInstance( - backend=backend_statevector, - shots=1, - seed_simulator=self.seed, - seed_transpiler=self.seed, - ) - self.quantum_instance_qasm = QuantumInstance( - backend=backend_qasm, - shots=4000, - seed_simulator=self.seed, - seed_transpiler=self.seed, - ) - self.backends_dict = { - "qi_sv": self.quantum_instance, - "qi_qasm": self.quantum_instance_qasm, - "b_sv": backend_statevector, - } - - self.backends_names = ["qi_qasm", "b_sv", "qi_sv"] - - @slow_test - def test_run_d_1_with_aux_ops(self): - """Test VarQITE for d = 1 and t = 1 with evaluating auxiliary operator and the Forward - Euler solver..""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - aux_ops = [X ^ X, Y ^ Z] - d = 1 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - parameters = list(ansatz.parameters) - init_param_values = np.zeros(len(parameters)) - for i in range(len(parameters)): - init_param_values[i] = np.pi / 2 - init_param_values[0] = 1 - var_principle = ImaginaryMcLachlanPrinciple() - - param_dict = dict(zip(parameters, init_param_values)) - - time = 1 - - evolution_problem = EvolutionProblem(observable, time, aux_operators=aux_ops) - - thetas_expected_sv = [ - 1.03612467538419, - 1.91891042963193, - 2.81129500883365, - 2.78938736703301, - 2.2215151699331, - 1.61953721158502, - 2.23490753161058, - 1.97145113701782, - ] - - thetas_expected_qasm = [ - 1.03612467538419, - 1.91891042963193, - 2.81129500883365, - 2.78938736703301, - 2.2215151699331, - 1.61953721158502, - 2.23490753161058, - 1.97145113701782, - ] - - expected_aux_ops_evaluated_sv = [(-0.160899, 0.0), (0.26207, 0.0)] - expected_aux_ops_evaluated_qasm = [ - (-0.1765, 0.015563), - (0.2555, 0.015287), - ] - - for backend_name in self.backends_names: - with self.subTest(msg=f"Test {backend_name} backend."): - algorithm_globals.random_seed = self.seed - backend = self.backends_dict[backend_name] - expectation = ExpectationFactory.build( - operator=observable, - backend=backend, - ) - var_qite = VarQITE( - ansatz, - var_principle, - param_dict, - expectation=expectation, - num_timesteps=25, - quantum_instance=backend, - ) - evolution_result = var_qite.evolve(evolution_problem) - - evolved_state = evolution_result.evolved_state - aux_ops = evolution_result.aux_ops_evaluated - - parameter_values = evolved_state.data[0][0].params - - if backend_name == "qi_qasm": - thetas_expected = thetas_expected_qasm - expected_aux_ops = expected_aux_ops_evaluated_qasm - else: - thetas_expected = thetas_expected_sv - expected_aux_ops = expected_aux_ops_evaluated_sv - - for i, parameter_value in enumerate(parameter_values): - np.testing.assert_almost_equal( - float(parameter_value), thetas_expected[i], decimal=3 - ) - - np.testing.assert_array_almost_equal(aux_ops, expected_aux_ops) - - def test_run_d_1_t_7(self): - """Test VarQITE for d = 1 and t = 7 with RK45 ODE solver.""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 1 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - parameters = list(ansatz.parameters) - init_param_values = np.zeros(len(parameters)) - for i in range(len(parameters)): - init_param_values[i] = np.pi / 2 - init_param_values[0] = 1 - var_principle = ImaginaryMcLachlanPrinciple() - - backend = BasicAer.get_backend("statevector_simulator") - - time = 7 - var_qite = VarQITE( - ansatz, - var_principle, - init_param_values, - ode_solver="RK45", - num_timesteps=25, - quantum_instance=backend, - ) - - thetas_expected = [ - 0.828917365718767, - 1.88481074798033, - 3.14111335991238, - 3.14125849601269, - 2.33768562678401, - 1.78670990729437, - 2.04214275514208, - 2.04009918594422, - ] - - self._test_helper(observable, thetas_expected, time, var_qite, 2) - - @slow_test - @data( - SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ), - 0.2252 * (I ^ I) - + 0.5716 * (Z ^ Z) - + 0.3435 * (I ^ Z) - + -0.4347 * (Z ^ I) - + 0.091 * (Y ^ Y) - + 0.091 * (X ^ X), - ) - def test_run_d_2(self, observable): - """Test VarQITE for d = 2 and t = 1 with RK45 ODE solver.""" - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - parameters = list(ansatz.parameters) - init_param_values = np.zeros(len(parameters)) - for i in range(len(parameters)): - init_param_values[i] = np.pi / 4 - - var_principle = ImaginaryMcLachlanPrinciple() - - param_dict = dict(zip(parameters, init_param_values)) - - backend = BasicAer.get_backend("statevector_simulator") - - time = 1 - var_qite = VarQITE( - ansatz, - var_principle, - param_dict, - ode_solver="RK45", - num_timesteps=25, - quantum_instance=backend, - ) - - thetas_expected = [ - 1.29495364023786, - 1.08970061333559, - 0.667488228710748, - 0.500122687902944, - 1.4377736672043, - 1.22881086103085, - 0.729773048146251, - 1.01698854755226, - 0.050807780587492, - 0.294828474947149, - 0.839305697704923, - 0.663689581255428, - ] - - self._test_helper(observable, thetas_expected, time, var_qite, 4) - - def _test_helper(self, observable, thetas_expected, time, var_qite, decimal): - evolution_problem = EvolutionProblem(observable, time) - evolution_result = var_qite.evolve(evolution_problem) - evolved_state = evolution_result.evolved_state - - parameter_values = evolved_state.data[0][0].params - for i, parameter_value in enumerate(parameter_values): - np.testing.assert_almost_equal( - float(parameter_value), thetas_expected[i], decimal=decimal - ) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/algorithms/evolvers/variational/test_var_qrte.py b/test/python/algorithms/evolvers/variational/test_var_qrte.py deleted file mode 100644 index 22ab25394e14..000000000000 --- a/test/python/algorithms/evolvers/variational/test_var_qrte.py +++ /dev/null @@ -1,234 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Test Variational Quantum Real Time Evolution algorithm.""" - -import unittest - -from test.python.algorithms import QiskitAlgorithmsTestCase -from ddt import data, ddt -import numpy as np -from qiskit.test import slow_test -from qiskit.utils import QuantumInstance, algorithm_globals -from qiskit.algorithms import EvolutionProblem, VarQRTE -from qiskit.algorithms.evolvers.variational import ( - RealMcLachlanPrinciple, -) -from qiskit import BasicAer -from qiskit.circuit.library import EfficientSU2 -from qiskit.opflow import ( - SummedOp, - X, - Y, - I, - Z, - ExpectationFactory, -) - - -@ddt -class TestVarQRTE(QiskitAlgorithmsTestCase): - """Test Variational Quantum Real Time Evolution algorithm.""" - - def setUp(self): - super().setUp() - self.seed = 11 - np.random.seed(self.seed) - backend_statevector = BasicAer.get_backend("statevector_simulator") - backend_qasm = BasicAer.get_backend("qasm_simulator") - self.quantum_instance = QuantumInstance( - backend=backend_statevector, - shots=1, - seed_simulator=self.seed, - seed_transpiler=self.seed, - ) - self.quantum_instance_qasm = QuantumInstance( - backend=backend_qasm, - shots=4000, - seed_simulator=self.seed, - seed_transpiler=self.seed, - ) - self.backends_dict = { - "qi_sv": self.quantum_instance, - "qi_qasm": self.quantum_instance_qasm, - "b_sv": backend_statevector, - } - - self.backends_names = ["qi_qasm", "b_sv", "qi_sv"] - - @slow_test - def test_run_d_1_with_aux_ops(self): - """Test VarQRTE for d = 1 and t = 0.1 with evaluating auxiliary operators and the Forward - Euler solver.""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - aux_ops = [X ^ X, Y ^ Z] - d = 1 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - parameters = list(ansatz.parameters) - init_param_values = np.zeros(len(parameters)) - for i in range(len(parameters)): - init_param_values[i] = np.pi / 2 - init_param_values[0] = 1 - var_principle = RealMcLachlanPrinciple() - - time = 0.1 - - evolution_problem = EvolutionProblem(observable, time, aux_operators=aux_ops) - - thetas_expected_sv = [ - 0.88967020378258, - 1.53740751016451, - 1.57076759018861, - 1.58893301221363, - 1.60100970594142, - 1.57008242207638, - 1.63791241090936, - 1.53741371076912, - ] - - thetas_expected_qasm = [ - 0.88967811203145, - 1.53745130248168, - 1.57206794045495, - 1.58901347342829, - 1.60101431615503, - 1.57138020823337, - 1.63796000651177, - 1.53742227084076, - ] - - expected_aux_ops_evaluated_sv = [(0.06675, 0.0), (0.772636, 0.0)] - - expected_aux_ops_evaluated_qasm = [ - (0.06450000000000006, 0.01577846435810532), - (0.7895000000000001, 0.009704248425303218), - ] - - for backend_name in self.backends_names: - with self.subTest(msg=f"Test {backend_name} backend."): - algorithm_globals.random_seed = self.seed - backend = self.backends_dict[backend_name] - expectation = ExpectationFactory.build( - operator=observable, - backend=backend, - ) - var_qrte = VarQRTE( - ansatz, - var_principle, - init_param_values, - expectation=expectation, - num_timesteps=25, - quantum_instance=backend, - ) - evolution_result = var_qrte.evolve(evolution_problem) - - evolved_state = evolution_result.evolved_state - aux_ops = evolution_result.aux_ops_evaluated - - parameter_values = evolved_state.data[0][0].params - if backend_name == "qi_qasm": - thetas_expected = thetas_expected_qasm - expected_aux_ops = expected_aux_ops_evaluated_qasm - else: - thetas_expected = thetas_expected_sv - expected_aux_ops = expected_aux_ops_evaluated_sv - - for i, parameter_value in enumerate(parameter_values): - np.testing.assert_almost_equal( - float(parameter_value), thetas_expected[i], decimal=3 - ) - np.testing.assert_array_almost_equal(aux_ops, expected_aux_ops) - - @slow_test - @data( - SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ), - 0.2252 * (I ^ I) - + 0.5716 * (Z ^ Z) - + 0.3435 * (I ^ Z) - + -0.4347 * (Z ^ I) - + 0.091 * (Y ^ Y) - + 0.091 * (X ^ X), - ) - def test_run_d_2(self, observable): - """Test VarQRTE for d = 2 and t = 1 with RK45 ODE solver.""" - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - parameters = list(ansatz.parameters) - init_param_values = np.zeros(len(parameters)) - for i in range(len(parameters)): - init_param_values[i] = np.pi / 4 - - var_principle = RealMcLachlanPrinciple() - - param_dict = dict(zip(parameters, init_param_values)) - - backend = BasicAer.get_backend("statevector_simulator") - - time = 1 - var_qrte = VarQRTE( - ansatz, - var_principle, - param_dict, - ode_solver="RK45", - num_timesteps=25, - quantum_instance=backend, - ) - - thetas_expected = [ - 0.348407744196573, - 0.919404626262464, - 1.18189219371626, - 0.771011177789998, - 0.734384256533924, - 0.965289520781899, - 1.14441687204195, - 1.17231927568571, - 1.03014771379412, - 0.867266309056347, - 0.699606368428206, - 0.610788576398685, - ] - - self._test_helper(observable, thetas_expected, time, var_qrte) - - def _test_helper(self, observable, thetas_expected, time, var_qrte): - evolution_problem = EvolutionProblem(observable, time) - evolution_result = var_qrte.evolve(evolution_problem) - evolved_state = evolution_result.evolved_state - - parameter_values = evolved_state.data[0][0].params - for i, parameter_value in enumerate(parameter_values): - np.testing.assert_almost_equal(float(parameter_value), thetas_expected[i], decimal=4) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/algorithms/evolvers/variational/test_var_qte.py b/test/python/algorithms/evolvers/variational/test_var_qte.py deleted file mode 100644 index 1083a1564f68..000000000000 --- a/test/python/algorithms/evolvers/variational/test_var_qte.py +++ /dev/null @@ -1,78 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -"""Test Variational Quantum Real Time Evolution algorithm.""" - -import unittest - -from test.python.algorithms import QiskitAlgorithmsTestCase -from numpy.testing import assert_raises -from ddt import data, ddt -import numpy as np - -from qiskit.algorithms.evolvers.variational.var_qte import VarQTE -from qiskit.circuit import Parameter - - -@ddt -class TestVarQTE(QiskitAlgorithmsTestCase): - """Test Variational Quantum Time Evolution class methods.""" - - def setUp(self): - super().setUp() - self._parameters1 = [Parameter("a"), Parameter("b"), Parameter("c")] - - @data([1.4, 2, 3], np.asarray([1.4, 2, 3])) - def test_create_init_state_param_dict(self, param_values): - """Tests if a correct dictionary is created.""" - expected = dict(zip(self._parameters1, param_values)) - with self.subTest("Parameters values given as a list test."): - result = VarQTE._create_init_state_param_dict(param_values, self._parameters1) - np.testing.assert_equal(result, expected) - with self.subTest("Parameters values given as a dictionary test."): - result = VarQTE._create_init_state_param_dict( - dict(zip(self._parameters1, param_values)), self._parameters1 - ) - np.testing.assert_equal(result, expected) - with self.subTest("Parameters values given as a superset dictionary test."): - expected = dict( - zip( - [self._parameters1[0], self._parameters1[2]], [param_values[0], param_values[2]] - ) - ) - result = VarQTE._create_init_state_param_dict( - dict(zip(self._parameters1, param_values)), - [self._parameters1[0], self._parameters1[2]], - ) - np.testing.assert_equal(result, expected) - - @data([1.4, 2], np.asarray([1.4, 3]), {}, []) - def test_create_init_state_param_dict_errors_list(self, param_values): - """Tests if an error is raised.""" - with assert_raises(ValueError): - _ = VarQTE._create_init_state_param_dict(param_values, self._parameters1) - - @data([1.4, 2], np.asarray([1.4, 3])) - def test_create_init_state_param_dict_errors_subset(self, param_values): - """Tests if an error is raised if subset of parameters provided.""" - param_values_dict = dict(zip([self._parameters1[0], self._parameters1[2]], param_values)) - with assert_raises(ValueError): - _ = VarQTE._create_init_state_param_dict(param_values_dict, self._parameters1) - - @data(5, "s", Parameter("x")) - def test_create_init_state_param_dict_errors_type(self, param_values): - """Tests if an error is raised if wrong input type.""" - with assert_raises(TypeError): - _ = VarQTE._create_init_state_param_dict(param_values, self._parameters1) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/algorithms/evolvers/variational/variational_principles/__init__.py b/test/python/algorithms/evolvers/variational/variational_principles/__init__.py deleted file mode 100644 index b3ac36d2a6d9..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. diff --git a/test/python/algorithms/evolvers/variational/variational_principles/expected_results/__init__.py b/test/python/algorithms/evolvers/variational/variational_principles/expected_results/__init__.py deleted file mode 100644 index 9c3165f57a2a..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/expected_results/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -"""Stores expected results that are lengthy.""" diff --git a/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected1.py b/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected1.py deleted file mode 100644 index 231cbac4dba4..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected1.py +++ /dev/null @@ -1,182 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -"""Stores expected results that are lengthy.""" -expected_bound_metric_tensor_1 = [ - [ - 2.50000000e-01 + 0.0j, - 1.59600000e-33 + 0.0j, - 5.90075760e-18 + 0.0j, - -8.49242405e-19 + 0.0j, - 8.83883476e-02 + 0.0j, - 1.33253788e-17 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.40000000e-17 + 0.0j, - -1.41735435e-01 + 0.0j, - 3.12500000e-02 + 0.0j, - 1.00222087e-01 + 0.0j, - -3.12500000e-02 + 0.0j, - ], - [ - 1.59600000e-33 + 0.0j, - 2.50000000e-01 + 0.0j, - 1.34350288e-17 + 0.0j, - 6.43502884e-18 + 0.0j, - -8.83883476e-02 + 0.0j, - 1.25000000e-01 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.25000000e-01 + 0.0j, - -8.45970869e-02 + 0.0j, - 7.54441738e-02 + 0.0j, - 1.48207521e-01 + 0.0j, - 2.00444174e-01 + 0.0j, - ], - [ - 5.90075760e-18 + 0.0j, - 1.34350288e-17 + 0.0j, - 1.25000000e-01 + 0.0j, - -1.38777878e-17 + 0.0j, - -4.41941738e-02 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.19638348e-01 + 0.0j, - 6.25000000e-02 + 0.0j, - -5.14514565e-02 + 0.0j, - 6.89720869e-02 + 0.0j, - 1.04933262e-02 + 0.0j, - -6.89720869e-02 + 0.0j, - ], - [ - -8.49242405e-19 + 0.0j, - 6.43502884e-18 + 0.0j, - -1.38777878e-17 + 0.0j, - 1.25000000e-01 + 0.0j, - -4.41941738e-02 + 0.0j, - -6.25000000e-02 + 0.0j, - 3.12500000e-02 + 0.0j, - 1.25000000e-01 + 0.0j, - 5.14514565e-02 + 0.0j, - -6.89720869e-02 + 0.0j, - 7.81250000e-03 + 0.0j, - 1.94162607e-02 + 0.0j, - ], - [ - 8.83883476e-02 + 0.0j, - -8.83883476e-02 + 0.0j, - -4.41941738e-02 + 0.0j, - -4.41941738e-02 + 0.0j, - 2.34375000e-01 + 0.0j, - -1.10485435e-01 + 0.0j, - -2.02014565e-02 + 0.0j, - -4.41941738e-02 + 0.0j, - 1.49547935e-02 + 0.0j, - -2.24896848e-02 + 0.0j, - -1.42172278e-03 + 0.0j, - -1.23822206e-01 + 0.0j, - ], - [ - 1.33253788e-17 + 0.0j, - 1.25000000e-01 + 0.0j, - 6.25000000e-02 + 0.0j, - -6.25000000e-02 + 0.0j, - -1.10485435e-01 + 0.0j, - 2.18750000e-01 + 0.0j, - -2.68082618e-03 + 0.0j, - -1.59099026e-17 + 0.0j, - -1.57197815e-01 + 0.0j, - 2.53331304e-02 + 0.0j, - 9.82311963e-03 + 0.0j, - 1.06138957e-01 + 0.0j, - ], - [ - 6.25000000e-02 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.19638348e-01 + 0.0j, - 3.12500000e-02 + 0.0j, - -2.02014565e-02 + 0.0j, - -2.68082618e-03 + 0.0j, - 2.23881674e-01 + 0.0j, - 1.37944174e-01 + 0.0j, - -3.78033966e-02 + 0.0j, - 1.58423239e-01 + 0.0j, - 1.34535646e-01 + 0.0j, - -5.49651086e-02 + 0.0j, - ], - [ - 1.40000000e-17 + 0.0j, - 1.25000000e-01 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.25000000e-01 + 0.0j, - -4.41941738e-02 + 0.0j, - -1.59099026e-17 + 0.0j, - 1.37944174e-01 + 0.0j, - 2.50000000e-01 + 0.0j, - -2.10523539e-17 + 0.0j, - 1.15574269e-17 + 0.0j, - 9.75412607e-02 + 0.0j, - 5.71383476e-02 + 0.0j, - ], - [ - -1.41735435e-01 + 0.0j, - -8.45970869e-02 + 0.0j, - -5.14514565e-02 + 0.0j, - 5.14514565e-02 + 0.0j, - 1.49547935e-02 + 0.0j, - -1.57197815e-01 + 0.0j, - -3.78033966e-02 + 0.0j, - -2.10523539e-17 + 0.0j, - 1.95283753e-01 + 0.0j, - -3.82941440e-02 + 0.0j, - -6.11392595e-02 + 0.0j, - -4.51588288e-02 + 0.0j, - ], - [ - 3.12500000e-02 + 0.0j, - 7.54441738e-02 + 0.0j, - 6.89720869e-02 + 0.0j, - -6.89720869e-02 + 0.0j, - -2.24896848e-02 + 0.0j, - 2.53331304e-02 + 0.0j, - 1.58423239e-01 + 0.0j, - 1.15574269e-17 + 0.0j, - -3.82941440e-02 + 0.0j, - 2.17629701e-01 + 0.0j, - 1.32431810e-01 + 0.0j, - -1.91961467e-02 + 0.0j, - ], - [ - 1.00222087e-01 + 0.0j, - 1.48207521e-01 + 0.0j, - 1.04933262e-02 + 0.0j, - 7.81250000e-03 + 0.0j, - -1.42172278e-03 + 0.0j, - 9.82311963e-03 + 0.0j, - 1.34535646e-01 + 0.0j, - 9.75412607e-02 + 0.0j, - -6.11392595e-02 + 0.0j, - 1.32431810e-01 + 0.0j, - 1.81683746e-01 + 0.0j, - 7.28902444e-02 + 0.0j, - ], - [ - -3.12500000e-02 + 0.0j, - 2.00444174e-01 + 0.0j, - -6.89720869e-02 + 0.0j, - 1.94162607e-02 + 0.0j, - -1.23822206e-01 + 0.0j, - 1.06138957e-01 + 0.0j, - -5.49651086e-02 + 0.0j, - 5.71383476e-02 + 0.0j, - -4.51588288e-02 + 0.0j, - -1.91961467e-02 + 0.0j, - 7.28902444e-02 + 0.0j, - 2.38616353e-01 + 0.0j, - ], -] diff --git a/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected2.py b/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected2.py deleted file mode 100644 index 386e3196ea4e..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected2.py +++ /dev/null @@ -1,182 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -"""Stores expected results that are lengthy.""" -expected_bound_metric_tensor_2 = [ - [ - 2.50000000e-01 + 0.0j, - 1.59600000e-33 + 0.0j, - 5.90075760e-18 + 0.0j, - -8.49242405e-19 + 0.0j, - 8.83883476e-02 + 0.0j, - 1.33253788e-17 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.40000000e-17 + 0.0j, - -1.41735435e-01 + 0.0j, - 3.12500000e-02 + 0.0j, - 1.00222087e-01 + 0.0j, - -3.12500000e-02 + 0.0j, - ], - [ - 1.59600000e-33 + 0.0j, - 2.50000000e-01 + 0.0j, - 1.34350288e-17 + 0.0j, - 6.43502884e-18 + 0.0j, - -8.83883476e-02 + 0.0j, - 1.25000000e-01 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.25000000e-01 + 0.0j, - -8.45970869e-02 + 0.0j, - 7.54441738e-02 + 0.0j, - 1.48207521e-01 + 0.0j, - 2.00444174e-01 + 0.0j, - ], - [ - 5.90075760e-18 + 0.0j, - 1.34350288e-17 + 0.0j, - 1.25000000e-01 + 0.0j, - -1.38777878e-17 + 0.0j, - -4.41941738e-02 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.19638348e-01 + 0.0j, - 6.25000000e-02 + 0.0j, - -5.14514565e-02 + 0.0j, - 6.89720869e-02 + 0.0j, - 1.04933262e-02 + 0.0j, - -6.89720869e-02 + 0.0j, - ], - [ - -8.49242405e-19 + 0.0j, - 6.43502884e-18 + 0.0j, - -1.38777878e-17 + 0.0j, - 1.25000000e-01 + 0.0j, - -4.41941738e-02 + 0.0j, - -6.25000000e-02 + 0.0j, - 3.12500000e-02 + 0.0j, - 1.25000000e-01 + 0.0j, - 5.14514565e-02 + 0.0j, - -6.89720869e-02 + 0.0j, - 7.81250000e-03 + 0.0j, - 1.94162607e-02 + 0.0j, - ], - [ - 8.83883476e-02 + 0.0j, - -8.83883476e-02 + 0.0j, - -4.41941738e-02 + 0.0j, - -4.41941738e-02 + 0.0j, - 2.34375000e-01 + 0.0j, - -1.10485435e-01 + 0.0j, - -2.02014565e-02 + 0.0j, - -4.41941738e-02 + 0.0j, - 1.49547935e-02 + 0.0j, - -2.24896848e-02 + 0.0j, - -1.42172278e-03 + 0.0j, - -1.23822206e-01 + 0.0j, - ], - [ - 1.33253788e-17 + 0.0j, - 1.25000000e-01 + 0.0j, - 6.25000000e-02 + 0.0j, - -6.25000000e-02 + 0.0j, - -1.10485435e-01 + 0.0j, - 2.18750000e-01 + 0.0j, - -2.68082618e-03 + 0.0j, - -1.59099026e-17 + 0.0j, - -1.57197815e-01 + 0.0j, - 2.53331304e-02 + 0.0j, - 9.82311963e-03 + 0.0j, - 1.06138957e-01 + 0.0j, - ], - [ - 6.25000000e-02 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.19638348e-01 + 0.0j, - 3.12500000e-02 + 0.0j, - -2.02014565e-02 + 0.0j, - -2.68082618e-03 + 0.0j, - 2.23881674e-01 + 0.0j, - 1.37944174e-01 + 0.0j, - -3.78033966e-02 + 0.0j, - 1.58423239e-01 + 0.0j, - 1.34535646e-01 + 0.0j, - -5.49651086e-02 + 0.0j, - ], - [ - 1.40000000e-17 + 0.0j, - 1.25000000e-01 + 0.0j, - 6.25000000e-02 + 0.0j, - 1.25000000e-01 + 0.0j, - -4.41941738e-02 + 0.0j, - -1.59099026e-17 + 0.0j, - 1.37944174e-01 + 0.0j, - 2.50000000e-01 + 0.0j, - -2.10523539e-17 + 0.0j, - 1.15574269e-17 + 0.0j, - 9.75412607e-02 + 0.0j, - 5.71383476e-02 + 0.0j, - ], - [ - -1.41735435e-01 + 0.0j, - -8.45970869e-02 + 0.0j, - -5.14514565e-02 + 0.0j, - 5.14514565e-02 + 0.0j, - 1.49547935e-02 + 0.0j, - -1.57197815e-01 + 0.0j, - -3.78033966e-02 + 0.0j, - -2.10523539e-17 + 0.0j, - 1.95283753e-01 + 0.0j, - -3.82941440e-02 + 0.0j, - -6.11392595e-02 + 0.0j, - -4.51588288e-02 + 0.0j, - ], - [ - 3.12500000e-02 + 0.0j, - 7.54441738e-02 + 0.0j, - 6.89720869e-02 + 0.0j, - -6.89720869e-02 + 0.0j, - -2.24896848e-02 + 0.0j, - 2.53331304e-02 + 0.0j, - 1.58423239e-01 + 0.0j, - 1.15574269e-17 + 0.0j, - -3.82941440e-02 + 0.0j, - 2.17629701e-01 + 0.0j, - 1.32431810e-01 + 0.0j, - -1.91961467e-02 + 0.0j, - ], - [ - 1.00222087e-01 + 0.0j, - 1.48207521e-01 + 0.0j, - 1.04933262e-02 + 0.0j, - 7.81250000e-03 + 0.0j, - -1.42172278e-03 + 0.0j, - 9.82311963e-03 + 0.0j, - 1.34535646e-01 + 0.0j, - 9.75412607e-02 + 0.0j, - -6.11392595e-02 + 0.0j, - 1.32431810e-01 + 0.0j, - 1.81683746e-01 + 0.0j, - 7.28902444e-02 + 0.0j, - ], - [ - -3.12500000e-02 + 0.0j, - 2.00444174e-01 + 0.0j, - -6.89720869e-02 + 0.0j, - 1.94162607e-02 + 0.0j, - -1.23822206e-01 + 0.0j, - 1.06138957e-01 + 0.0j, - -5.49651086e-02 + 0.0j, - 5.71383476e-02 + 0.0j, - -4.51588288e-02 + 0.0j, - -1.91961467e-02 + 0.0j, - 7.28902444e-02 + 0.0j, - 2.38616353e-01 + 0.0j, - ], -] diff --git a/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected3.py b/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected3.py deleted file mode 100644 index 5c295c0c6f2a..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/expected_results/test_imaginary_mc_lachlan_variational_principle_expected3.py +++ /dev/null @@ -1,182 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. -"""Stores expected results that are lengthy.""" -expected_bound_metric_tensor_3 = [ - [ - -1.21000000e-34 + 0.00e00j, - 1.21000000e-34 + 2.50e-19j, - 1.76776695e-01 - 1.00e-18j, - -1.40000000e-17 + 0.00e00j, - -6.25000000e-02 + 0.00e00j, - 8.83883476e-02 - 1.25e-18j, - 1.69194174e-01 + 2.25e-18j, - 8.83883476e-02 - 2.50e-19j, - -7.27633476e-02 + 0.00e00j, - 9.75412607e-02 + 7.50e-19j, - 1.48398042e-02 - 1.75e-18j, - -9.75412607e-02 + 3.75e-18j, - ], - [ - 1.21000000e-34 + 2.50e-19j, - -1.21000000e-34 + 0.00e00j, - 1.10000000e-34 + 2.75e-18j, - 1.76776695e-01 - 2.25e-18j, - -6.25000000e-02 + 0.00e00j, - -8.83883476e-02 + 4.00e-18j, - 4.41941738e-02 - 1.25e-18j, - 1.76776695e-01 - 2.50e-19j, - 7.27633476e-02 - 7.50e-19j, - -9.75412607e-02 - 7.50e-19j, - 1.10485435e-02 - 7.50e-19j, - 2.74587393e-02 + 2.50e-19j, - ], - [ - 1.76776695e-01 - 1.00e-18j, - 1.10000000e-34 + 2.75e-18j, - -1.25000000e-01 + 0.00e00j, - -1.25000000e-01 + 0.00e00j, - -1.06694174e-01 + 1.25e-18j, - -6.25000000e-02 + 1.75e-18j, - -1.01332521e-01 + 7.50e-19j, - 4.67500000e-17 - 7.50e-19j, - 1.75206304e-02 + 5.00e-19j, - -8.57075215e-02 - 1.00e-18j, - -1.63277304e-01 + 1.00e-18j, - -1.56250000e-02 + 0.00e00j, - ], - [ - -1.40000000e-17 + 0.00e00j, - 1.76776695e-01 - 2.25e-18j, - -1.25000000e-01 + 0.00e00j, - -1.25000000e-01 + 0.00e00j, - 1.83058262e-02 - 1.50e-18j, - -1.50888348e-01 - 1.50e-18j, - -1.01332521e-01 + 2.50e-19j, - -8.83883476e-02 - 1.00e-18j, - -2.28822827e-02 - 1.00e-18j, - -1.16957521e-01 + 1.00e-18j, - -1.97208130e-01 + 0.00e00j, - -1.79457521e-01 + 1.25e-18j, - ], - [ - -6.25000000e-02 + 0.00e00j, - -6.25000000e-02 + 0.00e00j, - -1.06694174e-01 + 1.25e-18j, - 1.83058262e-02 - 1.50e-18j, - -1.56250000e-02 + 0.00e00j, - -2.20970869e-02 - 2.00e-18j, - 1.48992717e-01 - 1.00e-18j, - 2.60000000e-17 - 1.50e-18j, - -6.69614673e-02 - 5.00e-19j, - 2.00051576e-01 + 5.00e-19j, - 1.13640168e-01 + 1.25e-18j, - -4.83780325e-02 - 1.00e-18j, - ], - [ - 8.83883476e-02 - 1.25e-18j, - -8.83883476e-02 + 4.00e-18j, - -6.25000000e-02 + 1.75e-18j, - -1.50888348e-01 - 1.50e-18j, - -2.20970869e-02 - 2.00e-18j, - -3.12500000e-02 + 0.00e00j, - -2.85691738e-02 + 4.25e-18j, - 1.76776695e-01 + 0.00e00j, - 5.52427173e-03 + 1.00e-18j, - -1.29346478e-01 + 5.00e-19j, - -4.81004238e-02 + 4.25e-18j, - 5.27918696e-02 + 2.50e-19j, - ], - [ - 1.69194174e-01 + 2.25e-18j, - 4.41941738e-02 - 1.25e-18j, - -1.01332521e-01 + 7.50e-19j, - -1.01332521e-01 + 2.50e-19j, - 1.48992717e-01 - 1.00e-18j, - -2.85691738e-02 + 4.25e-18j, - -2.61183262e-02 + 0.00e00j, - -6.88900000e-33 + 0.00e00j, - 6.62099510e-02 - 1.00e-18j, - -2.90767610e-02 + 1.75e-18j, - -1.24942505e-01 + 0.00e00j, - -1.72430217e-02 + 2.50e-19j, - ], - [ - 8.83883476e-02 - 2.50e-19j, - 1.76776695e-01 - 2.50e-19j, - 4.67500000e-17 - 7.50e-19j, - -8.83883476e-02 - 1.00e-18j, - 2.60000000e-17 - 1.50e-18j, - 1.76776695e-01 + 0.00e00j, - -6.88900000e-33 + 0.00e00j, - -6.88900000e-33 + 0.00e00j, - 1.79457521e-01 - 1.75e-18j, - -5.33470869e-02 + 2.00e-18j, - -9.56456304e-02 + 3.00e-18j, - -1.32582521e-01 + 2.50e-19j, - ], - [ - -7.27633476e-02 + 0.00e00j, - 7.27633476e-02 - 7.50e-19j, - 1.75206304e-02 + 5.00e-19j, - -2.28822827e-02 - 1.00e-18j, - -6.69614673e-02 - 5.00e-19j, - 5.52427173e-03 + 1.00e-18j, - 6.62099510e-02 - 1.00e-18j, - 1.79457521e-01 - 1.75e-18j, - -5.47162473e-02 + 0.00e00j, - -4.20854047e-02 + 4.00e-18j, - -7.75494553e-02 - 2.50e-18j, - -2.49573723e-02 + 7.50e-19j, - ], - [ - 9.75412607e-02 + 7.50e-19j, - -9.75412607e-02 - 7.50e-19j, - -8.57075215e-02 - 1.00e-18j, - -1.16957521e-01 + 1.00e-18j, - 2.00051576e-01 + 5.00e-19j, - -1.29346478e-01 + 5.00e-19j, - -2.90767610e-02 + 1.75e-18j, - -5.33470869e-02 + 2.00e-18j, - -4.20854047e-02 + 4.00e-18j, - -3.23702991e-02 + 0.00e00j, - -4.70257118e-02 + 0.00e00j, - 1.22539288e-01 - 2.25e-18j, - ], - [ - 1.48398042e-02 - 1.75e-18j, - 1.10485435e-02 - 7.50e-19j, - -1.63277304e-01 + 1.00e-18j, - -1.97208130e-01 + 0.00e00j, - 1.13640168e-01 + 1.25e-18j, - -4.81004238e-02 + 4.25e-18j, - -1.24942505e-01 + 0.00e00j, - -9.56456304e-02 + 3.00e-18j, - -7.75494553e-02 - 2.50e-18j, - -4.70257118e-02 + 0.00e00j, - -6.83162540e-02 + 0.00e00j, - -2.78870598e-02 + 0.00e00j, - ], - [ - -9.75412607e-02 + 3.75e-18j, - 2.74587393e-02 + 2.50e-19j, - -1.56250000e-02 + 0.00e00j, - -1.79457521e-01 + 1.25e-18j, - -4.83780325e-02 - 1.00e-18j, - 5.27918696e-02 + 2.50e-19j, - -1.72430217e-02 + 2.50e-19j, - -1.32582521e-01 + 2.50e-19j, - -2.49573723e-02 + 7.50e-19j, - 1.22539288e-01 - 2.25e-18j, - -2.78870598e-02 + 0.00e00j, - -1.13836467e-02 + 0.00e00j, - ], -] diff --git a/test/python/algorithms/evolvers/variational/variational_principles/imaginary/__init__.py b/test/python/algorithms/evolvers/variational/variational_principles/imaginary/__init__.py deleted file mode 100644 index b3ac36d2a6d9..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/imaginary/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. diff --git a/test/python/algorithms/evolvers/variational/variational_principles/imaginary/test_imaginary_mc_lachlan_principle.py b/test/python/algorithms/evolvers/variational/variational_principles/imaginary/test_imaginary_mc_lachlan_principle.py deleted file mode 100644 index 5118a9a699a4..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/imaginary/test_imaginary_mc_lachlan_principle.py +++ /dev/null @@ -1,111 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Test imaginary McLachlan's variational principle.""" - -import unittest -from test.python.algorithms import QiskitAlgorithmsTestCase -import numpy as np - -from qiskit.algorithms.evolvers.variational import ( - ImaginaryMcLachlanPrinciple, -) -from qiskit.circuit.library import EfficientSU2 -from qiskit.opflow import SummedOp, X, Y, I, Z -from ..expected_results.test_imaginary_mc_lachlan_variational_principle_expected1 import ( - expected_bound_metric_tensor_1, -) - - -class TestImaginaryMcLachlanPrinciple(QiskitAlgorithmsTestCase): - """Test imaginary McLachlan's variational principle.""" - - def test_calc_metric_tensor(self): - """Test calculating a metric tensor.""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - # Define a set of initial parameters - parameters = list(ansatz.parameters) - param_dict = {param: np.pi / 4 for param in parameters} - var_principle = ImaginaryMcLachlanPrinciple() - - bound_metric_tensor = var_principle.metric_tensor( - ansatz, parameters, parameters, param_dict.values(), None, None - ) - - np.testing.assert_almost_equal(bound_metric_tensor, expected_bound_metric_tensor_1) - - def test_calc_calc_evolution_grad(self): - """Test calculating evolution gradient.""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - # Define a set of initial parameters - parameters = list(ansatz.parameters) - param_dict = {param: np.pi / 4 for param in parameters} - var_principle = ImaginaryMcLachlanPrinciple() - - bound_evolution_grad = var_principle.evolution_grad( - observable, - ansatz, - None, - param_dict, - parameters, - parameters, - param_dict.values(), - None, - None, - ) - - expected_bound_evolution_grad = [ - (0.19308934095957098 - 1.4e-17j), - (0.007027674650099142 - 0j), - (0.03192524520091862 - 0j), - (-0.06810314606309673 - 1e-18j), - (0.07590371669521798 - 7e-18j), - (0.11891968269385343 + 1.5e-18j), - (-0.0012030273438232639 + 0j), - (-0.049885258804562266 + 1.8500000000000002e-17j), - (-0.20178860797540302 - 5e-19j), - (-0.0052269232310933195 + 1e-18j), - (0.022892905637005266 - 3e-18j), - (-0.022892905637005294 + 3.5e-18j), - ] - - np.testing.assert_almost_equal(bound_evolution_grad, expected_bound_evolution_grad) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/algorithms/evolvers/variational/variational_principles/real/__init__.py b/test/python/algorithms/evolvers/variational/variational_principles/real/__init__.py deleted file mode 100644 index b3ac36d2a6d9..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/real/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. diff --git a/test/python/algorithms/evolvers/variational/variational_principles/real/test_real_mc_lachlan_principle.py b/test/python/algorithms/evolvers/variational/variational_principles/real/test_real_mc_lachlan_principle.py deleted file mode 100644 index 13c126928bdb..000000000000 --- a/test/python/algorithms/evolvers/variational/variational_principles/real/test_real_mc_lachlan_principle.py +++ /dev/null @@ -1,114 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021, 2022. -# -# This code is licensed under the Apache License, Version 2.0. You may -# obtain a copy of this license in the LICENSE.txt file in the root directory -# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. -# -# Any modifications or derivative works of this code must retain this -# copyright notice, and modified files need to carry a notice indicating -# that they have been altered from the originals. - -"""Test real McLachlan's variational principle.""" - -import unittest -from test.python.algorithms import QiskitAlgorithmsTestCase -import numpy as np -from qiskit.algorithms.evolvers.variational import ( - RealMcLachlanPrinciple, -) -from qiskit.circuit.library import EfficientSU2 -from qiskit.opflow import SummedOp, X, Y, I, Z -from ..expected_results.test_imaginary_mc_lachlan_variational_principle_expected2 import ( - expected_bound_metric_tensor_2, -) - - -class TestRealMcLachlanPrinciple(QiskitAlgorithmsTestCase): - """Test real McLachlan's variational principle.""" - - def test_calc_calc_metric_tensor(self): - """Test calculating a metric tensor.""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - # Define a set of initial parameters - parameters = list(ansatz.parameters) - param_dict = {param: np.pi / 4 for param in parameters} - var_principle = RealMcLachlanPrinciple() - - bound_metric_tensor = var_principle.metric_tensor( - ansatz, parameters, parameters, list(param_dict.values()), None, None - ) - - np.testing.assert_almost_equal( - bound_metric_tensor, expected_bound_metric_tensor_2, decimal=5 - ) - - def test_calc_evolution_grad(self): - """Test calculating evolution gradient.""" - observable = SummedOp( - [ - 0.2252 * (I ^ I), - 0.5716 * (Z ^ Z), - 0.3435 * (I ^ Z), - -0.4347 * (Z ^ I), - 0.091 * (Y ^ Y), - 0.091 * (X ^ X), - ] - ) - - d = 2 - ansatz = EfficientSU2(observable.num_qubits, reps=d) - - # Define a set of initial parameters - parameters = list(ansatz.parameters) - param_dict = {param: np.pi / 4 for param in parameters} - var_principle = RealMcLachlanPrinciple() - - bound_evolution_grad = var_principle.evolution_grad( - observable, - ansatz, - None, - param_dict, - parameters, - parameters, - list(param_dict.values()), - None, - None, - ) - - expected_bound_evolution_grad = [ - (-0.04514911474522546 + 4e-18j), - (0.0963123928027075 - 1.5e-18j), - (0.1365347823673539 - 7e-18j), - (0.004969316401057883 - 4.9999999999999996e-18j), - (-0.003843833929692342 - 4.999999999999998e-19j), - (0.07036988622493834 - 7e-18j), - (0.16560609099860682 - 3.5e-18j), - (0.16674183768051887 + 1e-18j), - (-0.03843296670360974 - 6e-18j), - (0.08891074158680243 - 6e-18j), - (0.06425681697616654 + 7e-18j), - (-0.03172376682078948 - 7e-18j), - ] - - np.testing.assert_almost_equal( - bound_evolution_grad, expected_bound_evolution_grad, decimal=5 - ) - - -if __name__ == "__main__": - unittest.main() From 7c04319a8c7a2e9fea3a1268f3f46ac0fc2744c9 Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Fri, 16 Sep 2022 00:54:59 +0100 Subject: [PATCH 18/56] Add internal routine for canonicalisation of control-flow builders (#8627) * Add canonical form for control-flow builders This adds an internal function for use in tests that puts circuits constructed with the control-flow builders into a canonical form. There are several non-determinstic components to the control-flow builders, since they internally track their resources with hashmaps, and at the end pick an arbitrary order to sequence their arguments in. The order is not likely to be the same between a circuit constructed manually and one constructed by a builder, even though they describe the same dynamics. For-loops with automatically generated loop variables (the `with qc.for_loop(indices) as param: ...` form) will also vary between circuits, as a unique parameter is constructed each time a new one is requested to avoid collisions. The canonicalisation routine uses a shared iterable of parameters that always returns the exact instances in the same order. Replacing the loop variable with a new name has no effect, since it is logically scoped to the loop only and the operation is effectively lambda-calculus-like alpha conversion. This canonicalisation routine is very slow and inefficient, so is only intended for ease in writing tests. Making the builders always output a canonical order would add unnecessary overhead to them for most cases, and the loop-parameter canonicalisation would potentially cause problems if one control-flow built circuit was nested somehow within another (such as by `QuantumCircuit.compose`), as the loop variables could clash (and would violate the canonical form anyway). * Fix non-deterministic DAGCircuit.__eq__ The bits-in-registers equality check previously constructed a sequence of `(name, bit_indices)` tuples using the `dict.items()` iterator. This is unnecessarily insertion-order dependent for registers (in CPython, non-deterministic in general). Instead, we can compare two dictionaries, which will correctly check key-by-key without needing the creation order to match. * Use canonicalisation instead of custom equivalence in builder tests The builder tests previously used a custom circuit-equality checker, which somewhat separated them from other circuit-equality tests. Using the control-flow aware canonicalisation routine first lets us rewrite the circuit using simple rules that clearly don't change the semantics of the circuit, and then use the regular equality checkers. This swap over turned up a bug in the previous iteration of the tests (in the "expected" results!), where the bits of two block bodies were not ordered the same as the arguments to those operations. This commit also corrects those. * Make initial recursive call clearer Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/dagcircuit/dagcircuit.py | 28 ++- qiskit/test/_canonical.py | 125 +++++++++++++ ...nistic-dagcircuit-eq-7caa9041093c6e4c.yaml | 8 + .../circuit/test_control_flow_builders.py | 170 ++++++------------ 4 files changed, 196 insertions(+), 135 deletions(-) create mode 100644 qiskit/test/_canonical.py create mode 100644 releasenotes/notes/fix-nondeterministic-dagcircuit-eq-7caa9041093c6e4c.yaml diff --git a/qiskit/dagcircuit/dagcircuit.py b/qiskit/dagcircuit/dagcircuit.py index 3f0fa48be8dc..0736f2b58901 100644 --- a/qiskit/dagcircuit/dagcircuit.py +++ b/qiskit/dagcircuit/dagcircuit.py @@ -985,21 +985,19 @@ def __eq__(self, other): self_bit_indices = {bit: idx for idx, bit in enumerate(self.qubits + self.clbits)} other_bit_indices = {bit: idx for idx, bit in enumerate(other.qubits + other.clbits)} - self_qreg_indices = [ - (regname, [self_bit_indices[bit] for bit in reg]) for regname, reg in self.qregs.items() - ] - self_creg_indices = [ - (regname, [self_bit_indices[bit] for bit in reg]) for regname, reg in self.cregs.items() - ] - - other_qreg_indices = [ - (regname, [other_bit_indices[bit] for bit in reg]) - for regname, reg in other.qregs.items() - ] - other_creg_indices = [ - (regname, [other_bit_indices[bit] for bit in reg]) - for regname, reg in other.cregs.items() - ] + self_qreg_indices = { + regname: [self_bit_indices[bit] for bit in reg] for regname, reg in self.qregs.items() + } + self_creg_indices = { + regname: [self_bit_indices[bit] for bit in reg] for regname, reg in self.cregs.items() + } + + other_qreg_indices = { + regname: [other_bit_indices[bit] for bit in reg] for regname, reg in other.qregs.items() + } + other_creg_indices = { + regname: [other_bit_indices[bit] for bit in reg] for regname, reg in other.cregs.items() + } if self_qreg_indices != other_qreg_indices or self_creg_indices != other_creg_indices: return False diff --git a/qiskit/test/_canonical.py b/qiskit/test/_canonical.py new file mode 100644 index 000000000000..ea8e7cfce3b4 --- /dev/null +++ b/qiskit/test/_canonical.py @@ -0,0 +1,125 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 20022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Utility methods for canonicalising various Qiskit objects, to help with testing.""" + +import threading + +from qiskit.circuit import ( + BreakLoopOp, + CircuitInstruction, + ContinueLoopOp, + ControlFlowOp, + ForLoopOp, + Parameter, + QuantumCircuit, +) + + +class _CanonicalParametersIterator: + """An object that, when iterated through, will produce the same sequence of parameters as every + other instance of this iterator.""" + + __parameters = [] + __mutex = threading.Lock() + + def __init__(self): + self._counter = 0 + + def __iter__(self): + return self + + def __next__(self): + with self.__mutex: + if len(self.__parameters) >= self._counter: + param = Parameter(f"_canonicalization_loop_{self._counter}") + self.__parameters.append(param) + out = self.__parameters[self._counter] + self._counter += 1 + return out + + +def canonicalize_control_flow(circuit: QuantumCircuit) -> QuantumCircuit: + """Canonicalize all control-flow operations in a circuit. + + This is not an efficient operation, and does not affect any properties of the circuit. Its + intent is to normalise parts of circuits that have a non-deterministic construction. These are + the ordering of bit arguments in control-flow blocks output by the builder interface, and + automatically generated ``for``-loop variables. + + The canonical form sorts the bits in the arguments of these operations so that they always + appear in the order they were originally added to the outer-most circuit. For-loop variables + are re-bound into new, cached auto-generated ones.""" + params = iter(_CanonicalParametersIterator()) + base_bit_order = {bit: i for i, bit in enumerate(circuit.qubits)} + base_bit_order.update((bit, i) for i, bit in enumerate(circuit.clbits)) + + def worker(circuit, bit_map=None): + if bit_map is None: + bit_map = {bit: bit for bits in (circuit.qubits, circuit.clbits) for bit in bits} + + def bit_key(bit): + return base_bit_order[bit_map[bit]] + + # This isn't quite QuantumCircuit.copy_empty_like because of the bit reordering. + out = QuantumCircuit( + sorted(circuit.qubits, key=bit_key), + sorted(circuit.clbits, key=bit_key), + *circuit.qregs, + *circuit.cregs, + name=circuit.name, + global_phase=circuit.global_phase, + metadata=circuit.metadata, + ) + for instruction in circuit.data: + new_instruction = instruction + # Control-flow operations associated bits in the instruction arguments with bits in the + # circuit blocks just by sequencing. All blocks must have the same width. + if isinstance(new_instruction.operation, ControlFlowOp): + op = new_instruction.operation + first_block = op.blocks[0] + inner_bit_map = dict( + zip(first_block.qubits, (bit_map[bit] for bit in new_instruction.qubits)) + ) + inner_bit_map.update( + zip(first_block.clbits, (bit_map[bit] for bit in new_instruction.clbits)) + ) + new_instruction = CircuitInstruction( + operation=op.replace_blocks( + [worker(block, inner_bit_map) for block in op.blocks] + ), + qubits=sorted(new_instruction.qubits, key=bit_key), + clbits=sorted(new_instruction.clbits, key=bit_key), + ) + elif isinstance(new_instruction.operation, (BreakLoopOp, ContinueLoopOp)): + new_instruction = new_instruction.replace( + qubits=sorted(new_instruction.qubits, key=bit_key), + clbits=sorted(new_instruction.clbits, key=bit_key), + ) + # For for loops specifically, the control-flow builders generate a loop parameter if one + # is needed but not explicitly supplied. We want the parameters to compare equal, so we + # replace them with those from a shared list. + if isinstance(new_instruction.operation, ForLoopOp): + old_op = new_instruction.operation + indexset, loop_param, body = old_op.params + if loop_param is not None: + new_loop_param = next(params) + new_op = ForLoopOp( + indexset, + new_loop_param, + body.assign_parameters({loop_param: new_loop_param}), + ) + new_instruction = new_instruction.replace(operation=new_op) + out._append(new_instruction) + return out + + return worker(circuit) diff --git a/releasenotes/notes/fix-nondeterministic-dagcircuit-eq-7caa9041093c6e4c.yaml b/releasenotes/notes/fix-nondeterministic-dagcircuit-eq-7caa9041093c6e4c.yaml new file mode 100644 index 000000000000..551fca109857 --- /dev/null +++ b/releasenotes/notes/fix-nondeterministic-dagcircuit-eq-7caa9041093c6e4c.yaml @@ -0,0 +1,8 @@ +--- +fixes: + - | + Comparing :class:`.QuantumCircuit` and :class:`.DAGCircuit`\ s for equality + was previously non-deterministic if the circuits contained more than one + register of the same type (*e.g.* two or more :class:`.QuantumRegister`\ s), + sometimes returning ``False`` even if the registers were identical. It will + now correctly compare circuits with multiple registers. diff --git a/test/python/circuit/test_control_flow_builders.py b/test/python/circuit/test_control_flow_builders.py index 0452ef8a701e..58da7c84ee2b 100644 --- a/test/python/circuit/test_control_flow_builders.py +++ b/test/python/circuit/test_control_flow_builders.py @@ -26,11 +26,12 @@ QuantumRegister, Qubit, ) -from qiskit.circuit.controlflow import ForLoopOp, IfElseOp, WhileLoopOp, BreakLoopOp, ContinueLoopOp +from qiskit.circuit.controlflow import ForLoopOp, IfElseOp, WhileLoopOp from qiskit.circuit.controlflow.builder import ControlFlowBuilderBlock from qiskit.circuit.controlflow.if_else import IfElsePlaceholder from qiskit.circuit.exceptions import CircuitError from qiskit.test import QiskitTestCase +from qiskit.test._canonical import canonicalize_control_flow class SentinelException(Exception): @@ -41,77 +42,6 @@ class SentinelException(Exception): class TestControlFlowBuilders(QiskitTestCase): """Test that the control-flow builder interfaces work, and manage resources correctly.""" - def assertCircuitsEquivalent(self, a, b): - """Assert that two circuits (``a`` and ``b``) contain all the same qubits and clbits, and - then have the same instructions in order, recursing into nested control-flow constructs. - - Relying on ``QuantumCircuit.__eq__`` doesn't work reliably in all cases here, because we - don't care about the order that the builder interface chooses for resources in the inner - blocks. This order is non-deterministic, because internally it uses sets for efficiency, - and the order of iteration through a set is dependent on the hash seed. Instead, we just - need to be a bit more explicit about what we care about. This isn't a full method for - comparing if two circuits are equivalent, but for the restricted cases used in these tests, - where we deliberately construct the expected result to be equal in the good case, it should - test all that is needed. - """ - - self.assertIsInstance(a, QuantumCircuit) - self.assertIsInstance(b, QuantumCircuit) - - # For our purposes here, we don't care about the order bits were added. - self.assertEqual(set(a.qubits), set(b.qubits)) - self.assertEqual(set(a.clbits), set(b.clbits)) - self.assertEqual(set(a.qregs), set(b.qregs)) - self.assertEqual(set(a.cregs), set(b.cregs)) - self.assertEqual(len(a.data), len(b.data)) - - for a_i, b_i in zip(a.data, b.data): - # Make sure that the operations are the same. - self.assertEqual(type(a_i.operation), type(b_i.operation)) - self.assertEqual( - hasattr(a_i.operation, "condition"), hasattr(b_i.operation, "condition") - ) - if hasattr(a_i.operation, "condition") and not isinstance( - a_i.operation, (IfElseOp, WhileLoopOp) - ): - self.assertEqual(a_i.operation.condition, b_i.operation.condition) - self.assertEqual(hasattr(a_i.operation, "label"), hasattr(b_i.operation, "label")) - if hasattr(a_i.operation, "condition"): - self.assertEqual(a_i.operation.label, b_i.operation.label) - # If it's a block op, we don't care what order the resources are specified in. - if isinstance(a_i.operation, WhileLoopOp): - self.assertEqual(set(a_i.qubits), set(b_i.qubits)) - self.assertEqual(set(a_i.clbits), set(b_i.clbits)) - self.assertEqual(a_i.operation.condition, b_i.operation.condition) - self.assertCircuitsEquivalent(a_i.operation.blocks[0], b_i.operation.blocks[0]) - elif isinstance(a_i.operation, ForLoopOp): - self.assertEqual(set(a_i.qubits), set(b_i.qubits)) - self.assertEqual(set(a_i.clbits), set(b_i.clbits)) - a_indexset, a_loop_parameter, a_body = a_i.operation.params - b_indexset, b_loop_parameter, b_body = b_i.operation.params - self.assertEqual(a_loop_parameter is None, b_loop_parameter is None) - self.assertEqual(a_indexset, b_indexset) - if a_loop_parameter is not None: - a_body = a_body.assign_parameters({a_loop_parameter: b_loop_parameter}) - self.assertCircuitsEquivalent(a_body, b_body) - elif isinstance(a_i.operation, IfElseOp): - self.assertEqual(set(a_i.qubits), set(b_i.qubits)) - self.assertEqual(set(a_i.clbits), set(b_i.clbits)) - self.assertEqual(a_i.operation.condition, b_i.operation.condition) - self.assertEqual(len(a_i.operation.blocks), len(b_i.operation.blocks)) - self.assertCircuitsEquivalent(a_i.operation.blocks[0], b_i.operation.blocks[0]) - if len(a_i.operation.blocks) > 1: - self.assertCircuitsEquivalent(a_i.operation.blocks[1], b_i.operation.blocks[1]) - elif isinstance(a_i.operation, (BreakLoopOp, ContinueLoopOp)): - self.assertEqual(set(a_i.qubits), set(b_i.qubits)) - self.assertEqual(set(a_i.clbits), set(b_i.clbits)) - else: - # For any other op, we care that the resources are the same, and in the same order, - # but we don't mind what sort of iterable they're contained in. - self.assertEqual(tuple(a_i.qubits), tuple(b_i.qubits)) - self.assertEqual(tuple(a_i.clbits), tuple(b_i.clbits)) - self.assertEqual(a_i.operation, b_i.operation) - def test_if_simple(self): """Test a simple if statement builds correctly, in the midst of other instructions.""" qubits = [Qubit(), Qubit()] @@ -143,7 +73,7 @@ def test_if_simple(self): expected.measure(qubits[0], clbits[1]) expected.if_test((clbits[1], 0), if_true1, [qubits[0], qubits[1]], [clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_if_register(self): """Test a simple if statement builds correctly, when using a register as the condition. @@ -163,7 +93,7 @@ def test_if_register(self): expected.measure(qr, cr) expected.if_test((cr, 0), if_true0, [qr[0]], [cr[:]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_register_condition_in_nested_block(self): """Test that nested blocks can use registers of the outermost circuits as conditions, and @@ -202,7 +132,7 @@ def test_register_condition_in_nested_block(self): expected = QuantumCircuit(qr, clbits, cr1, cr2, cr3, cr4) expected.for_loop(range(3), None, for_body, [qr[0]], clbits + list(cr1)) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("for/while"): test = QuantumCircuit(qr, clbits, cr1, cr2, cr3, cr4) @@ -229,7 +159,7 @@ def test_register_condition_in_nested_block(self): expected = QuantumCircuit(qr, clbits, cr1, cr2, cr3, cr4) expected.for_loop(range(3), None, for_body, [qr[0]], clbits + list(cr1)) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("if/c_if"): test = QuantumCircuit(qr, clbits, cr1, cr2, cr3, cr4) @@ -237,14 +167,14 @@ def test_register_condition_in_nested_block(self): test.x(0).c_if(cr2, 0) test.z(0).c_if(cr3, 0) - true_body = QuantumCircuit([qr[0]], cr1, cr2, cr3) + true_body = QuantumCircuit([qr[0]], clbits, cr1, cr2, cr3) true_body.x(0).c_if(cr2, 0) true_body.z(0).c_if(cr3, 0) expected = QuantumCircuit(qr, clbits, cr1, cr2, cr3, cr4) expected.if_test((cr1, 0), true_body, [qr[0]], clbits + list(cr1)) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while/else/c_if"): test = QuantumCircuit(qr, clbits, cr1, cr2, cr3, cr4) @@ -259,13 +189,13 @@ def test_register_condition_in_nested_block(self): false_body = QuantumCircuit([qr[0]], cr2, cr3, cr4) false_body.z(0).c_if(cr4, 0) - while_body = QuantumCircuit([qr[0]], cr1, cr2, cr3, cr4) + while_body = QuantumCircuit([qr[0]], clbits, cr1, cr2, cr3, cr4) while_body.if_else((cr2, 0), true_body, false_body, [qr[0]], clbits) expected = QuantumCircuit(qr, clbits, cr1, cr2, cr3, cr4) expected.while_loop((cr1, 0), while_body, [qr[0]], clbits + list(cr1)) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_if_else_simple(self): """Test a simple if/else statement builds correctly, in the midst of other instructions. @@ -310,7 +240,7 @@ def test_if_else_simple(self): expected.measure(qubits[0], clbits[1]) expected.if_else((clbits[1], 0), if_true1, if_false1, [qubits[0], qubits[1]], [clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_if_else_resources_expand_true_superset_false(self): """Test that the resources of the if and else bodies come out correctly if the true body @@ -340,7 +270,7 @@ def test_if_else_resources_expand_true_superset_false(self): expected.measure(qubits[0], clbits[0]) expected.if_else((clbits[0], 0), if_true0, if_false0, qubits, clbits) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_if_else_resources_expand_false_superset_true(self): """Test that the resources of the if and else bodies come out correctly if the false body @@ -371,7 +301,7 @@ def test_if_else_resources_expand_false_superset_true(self): expected.measure(qubits[0], clbits[0]) expected.if_else((clbits[0], 0), if_true0, if_false0, qubits, clbits) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_if_else_resources_expand_true_false_symmetric_difference(self): """Test that the resources of the if and else bodies come out correctly if the sets of @@ -400,7 +330,7 @@ def test_if_else_resources_expand_true_false_symmetric_difference(self): expected.measure(qubits[0], clbits[0]) expected.if_else((clbits[0], 0), if_true0, if_false0, qubits, [clbits[0]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_if_else_empty_branches(self): """Test that the context managers can cope with a body being empty.""" @@ -439,7 +369,7 @@ def test_if_else_empty_branches(self): expected.if_else(cond, empty_with_qubit, only_x, [qubits[0]], [clbits[0]]) expected.if_else(cond, empty, empty, [], [clbits[0]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_if_else_tracks_registers(self): """Test that classical registers used in both branches of if statements are tracked @@ -466,7 +396,7 @@ def test_if_else_tracks_registers(self): (cr[0], 0), true_body, false_body, [qr[0]], list(cr[0]) + list(cr[1]) + list(cr[2]) ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_if_else_nested(self): """Test that the if and else context managers can be nested, and don't interfere with each @@ -497,7 +427,7 @@ def test_if_else_nested(self): expected.if_else( outer_cond, outer_true, outer_false, [qubits[0], qubits[1]], [clbits[0], clbits[2]] ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("if (if else) else"): test = QuantumCircuit(qubits, clbits) @@ -523,7 +453,7 @@ def test_if_else_nested(self): expected = QuantumCircuit(qubits, clbits) expected.if_else(outer_cond, outer_true, outer_false, qubits, [clbits[0], clbits[2]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_break_continue_expand_to_match_arguments_simple(self): """Test that ``break`` and ``continue`` statements expand to include all resources in the @@ -548,7 +478,7 @@ def test_break_continue_expand_to_match_arguments_simple(self): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, body, qubits, [clbits[0]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while"): cond = (clbits[0], 0) @@ -568,7 +498,7 @@ def test_break_continue_expand_to_match_arguments_simple(self): expected = QuantumCircuit(qubits, clbits) expected.while_loop(cond, body, qubits, [clbits[0]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) @ddt.data(QuantumCircuit.break_loop, QuantumCircuit.continue_loop) def test_break_continue_accept_c_if(self, loop_operation): @@ -590,7 +520,7 @@ def test_break_continue_accept_c_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, body, [qubits[0]], [clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while"): cond = (clbits[0], 0) @@ -606,7 +536,7 @@ def test_break_continue_accept_c_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.while_loop(cond, body, [qubits[0]], clbits) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) @ddt.data(QuantumCircuit.break_loop, QuantumCircuit.continue_loop) def test_break_continue_only_expand_to_nearest_loop(self, loop_operation): @@ -638,7 +568,7 @@ def test_break_continue_only_expand_to_nearest_loop(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, outer_body, [qubits[0], qubits[1]], [clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("for while"): test = QuantumCircuit(qubits, clbits) @@ -663,7 +593,7 @@ def test_break_continue_only_expand_to_nearest_loop(self, loop_operation): range(2), None, outer_body, [qubits[0], qubits[1]], [clbits[0], clbits[1]] ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while for"): test = QuantumCircuit(qubits, clbits) @@ -686,7 +616,7 @@ def test_break_continue_only_expand_to_nearest_loop(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.while_loop(cond_outer, outer_body, [qubits[0], qubits[1]], [clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while while"): test = QuantumCircuit(qubits, clbits) @@ -711,7 +641,7 @@ def test_break_continue_only_expand_to_nearest_loop(self, loop_operation): cond_outer, outer_body, [qubits[0], qubits[1]], [clbits[0], clbits[1]] ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("for (for, for)"): # This test is specifically to check that multiple inner loops with different numbers of @@ -744,7 +674,7 @@ def test_break_continue_only_expand_to_nearest_loop(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, outer_body, qubits, [clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) @ddt.data(QuantumCircuit.break_loop, QuantumCircuit.continue_loop) def test_break_continue_nested_in_if(self, loop_operation): @@ -790,7 +720,7 @@ def test_break_continue_nested_in_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, loop_body, [qubits[0]], [clbits[0], clbits[2]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("for/else"): test = QuantumCircuit(qubits, clbits) @@ -825,7 +755,7 @@ def test_break_continue_nested_in_if(self, loop_operation): range(2), None, loop_body, [qubits[0], qubits[1]], [clbits[0], clbits[2]] ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while/if"): test = QuantumCircuit(qubits, clbits) @@ -853,7 +783,7 @@ def test_break_continue_nested_in_if(self, loop_operation): cond_outer, loop_body, [qubits[0]], [clbits[0], clbits[1], clbits[2]] ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while/else"): test = QuantumCircuit(qubits, clbits) @@ -892,7 +822,7 @@ def test_break_continue_nested_in_if(self, loop_operation): cond_outer, loop_body, [qubits[0], qubits[1]], [clbits[0], clbits[1], clbits[2]] ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) @ddt.data(QuantumCircuit.break_loop, QuantumCircuit.continue_loop) def test_break_continue_deeply_nested_in_if(self, loop_operation): @@ -961,7 +891,7 @@ def test_break_continue_deeply_nested_in_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, loop_body, qubits[:4], clbits[:2] + clbits[3:7]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("for/if/else"): test = QuantumCircuit(qubits, clbits) @@ -1028,7 +958,7 @@ def test_break_continue_deeply_nested_in_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, loop_body, qubits[:7], clbits[:2] + clbits[3:11]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("for/else/else"): # Look on my works, ye Mighty, and despair! @@ -1183,7 +1113,7 @@ def test_break_continue_deeply_nested_in_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, loop_body, loop_qubits, loop_clbits) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) # And now we repeat everything for "while" loops... Trying to parameterize the test over # 'for/while' mostly just ends up in it being a bit illegible, because so many parameters @@ -1232,7 +1162,7 @@ def test_break_continue_deeply_nested_in_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.while_loop(cond_loop, loop_body, qubits[:4], clbits[:7]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while/if/else"): test = QuantumCircuit(qubits, clbits) @@ -1297,7 +1227,7 @@ def test_break_continue_deeply_nested_in_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.while_loop(cond_loop, loop_body, qubits[:7], clbits[:11]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while/else/else"): test = QuantumCircuit(qubits, clbits) @@ -1448,7 +1378,7 @@ def test_break_continue_deeply_nested_in_if(self, loop_operation): expected = QuantumCircuit(qubits, clbits) expected.while_loop(cond_loop, loop_body, loop_qubits, loop_clbits) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_for_handles_iterables_correctly(self): """Test that the ``indexset`` in ``for`` loops is handled the way we expect. In general, @@ -1614,7 +1544,7 @@ def test_access_of_resources_from_direct_append(self): expected = QuantumCircuit(qubits, clbits) expected.if_test(cond, true_body, [qubits[1]], clbits) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("else"): test = QuantumCircuit(qubits, clbits) @@ -1629,7 +1559,7 @@ def test_access_of_resources_from_direct_append(self): expected = QuantumCircuit(qubits, clbits) expected.if_else(cond, true_body, false_body, [qubits[1]], clbits) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("for"): test = QuantumCircuit(qubits, clbits) @@ -1641,7 +1571,7 @@ def test_access_of_resources_from_direct_append(self): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, body, [qubits[1]], [clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while"): test = QuantumCircuit(qubits, clbits) @@ -1653,7 +1583,7 @@ def test_access_of_resources_from_direct_append(self): expected = QuantumCircuit(qubits, clbits) expected.while_loop(cond, body, [qubits[1]], clbits) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_access_of_clbit_from_c_if(self): """Test that resources added from a call to :meth:`.InstructionSet.c_if` propagate through @@ -1803,7 +1733,7 @@ def test_accept_broadcast_gates(self): expected = QuantumCircuit(qubits, clbits) expected.if_test(cond, body, [qubits[0], qubits[1]], [clbits[0], clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("else"): test = QuantumCircuit(qubits, clbits) @@ -1822,7 +1752,7 @@ def test_accept_broadcast_gates(self): cond, true_body, false_body, [qubits[0], qubits[1]], [clbits[0], clbits[1]] ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("for"): test = QuantumCircuit(qubits, clbits) @@ -1836,7 +1766,7 @@ def test_accept_broadcast_gates(self): expected = QuantumCircuit(qubits, clbits) expected.for_loop(range(2), None, body, [qubits[0], qubits[1]], [clbits[0], clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("while"): test = QuantumCircuit(qubits, clbits) @@ -1850,7 +1780,7 @@ def test_accept_broadcast_gates(self): expected = QuantumCircuit(qubits, clbits) expected.while_loop(cond, body, [qubits[0], qubits[1]], [clbits[0], clbits[1]]) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) with self.subTest("if inside for"): test = QuantumCircuit(qubits, clbits) @@ -1870,7 +1800,7 @@ def test_accept_broadcast_gates(self): range(2), None, for_body, [qubits[0], qubits[1]], [clbits[0], clbits[1]] ) - self.assertCircuitsEquivalent(test, expected) + self.assertEqual(canonicalize_control_flow(test), canonicalize_control_flow(expected)) def test_labels_propagated_to_instruction(self): """Test that labels given to the circuit-builder interface are passed through.""" @@ -2081,7 +2011,7 @@ def test_inplace_compose_within_builder(self): with expected.if_test((expected.clbits[0], 1)): expected.x(0) - self.assertCircuitsEquivalent(outer, expected) + self.assertEqual(canonicalize_control_flow(outer), canonicalize_control_flow(expected)) with self.subTest("else"): outer = base.copy() @@ -2096,7 +2026,7 @@ def test_inplace_compose_within_builder(self): with else_: expected.x(0) - self.assertCircuitsEquivalent(outer, expected) + self.assertEqual(canonicalize_control_flow(outer), canonicalize_control_flow(expected)) with self.subTest("for"): outer = base.copy() @@ -2107,7 +2037,7 @@ def test_inplace_compose_within_builder(self): with expected.for_loop(range(3)): expected.x(0) - self.assertCircuitsEquivalent(outer, expected) + self.assertEqual(canonicalize_control_flow(outer), canonicalize_control_flow(expected)) with self.subTest("while"): outer = base.copy() @@ -2118,7 +2048,7 @@ def test_inplace_compose_within_builder(self): with expected.while_loop((outer.clbits[0], 0)): expected.x(0) - self.assertCircuitsEquivalent(outer, expected) + self.assertEqual(canonicalize_control_flow(outer), canonicalize_control_flow(expected)) @ddt.ddt From bdec5b288e8662676e7fd8bc5afbf1da52dab16f Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Thu, 15 Sep 2022 21:03:11 -0400 Subject: [PATCH 19/56] Fix handling of conditions in SabreDAG creation (#8727) * Fix handling of conditions in SabreDAG creation In #8388 we moved all of the SabreSwap pass's processing into rust. To facilitate that we had to create a rust DAG data structure to represent the data flow graph solely in Rust to enable analyzing the DAG structure in rust code without having to callback to python. To do this the DAGCircuit (which has a nearly identical representation in python) would export a list of nodes and the bits (both quantum and classical) that they operated on. This information is then used to create the SabreDAG used in the rust code. However, in this process an edge case was missed with classical condtions. If a condition was specified solely as a property of the operation and not in cargs list the SabreDAG would not know about the classical bit dependency between any subsequent operations involving that classical bit. This would cause incorrect output because the ndoes would not get processed as they were in the circuit. This commit fixes this issue by explicitly checking if there is a condition on the operation and there are no cargs and if so adding the carg bits to the SabreDAG directly. This fixes the incorrect representation in SabreDAG. Fixes #8675 * Fix handling of instructions with condition and cargs This commit fixes the logic for handling instructions that have both cargs and conditions set. The previous commit fixed the behavior only if cargs was mutually exclusive with having classical arguments. However, the same bug this PR is fixing would persist for instructions with clbit arguments and a condition. This fixes the behavior to correctly represent the data dependency in SabreDAG for these cases. * Improve efficiency of condition handling This commit improves the efficiency of the condition handling on SabreDAG creation that was added in the previous commit. Previously, it was potentially expensive to loop over the list of cargs and condition bits as for instructions with a large number of both the repeated duplicate searches would get quite expensive. This commit fixes that by converting the cargs data structure to be a set to prevent adding duplicates. Since the order isn't significant for the cargs in sabre as it's only used to represent data dependency between instructions we can convert it to internally use a set in python and a HashSet in rust. This also removes storing of cargs for each node in the SabreDAG as this was never used and just wasted memory by storing the list and never using it. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../transpiler/passes/routing/sabre_swap.py | 7 ++- src/sabre_swap/sabre_dag.rs | 10 ++--- test/python/transpiler/test_sabre_swap.py | 45 +++++++++++++++++++ 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/qiskit/transpiler/passes/routing/sabre_swap.py b/qiskit/transpiler/passes/routing/sabre_swap.py index 0e37bc8b4b7d..114f6d577898 100644 --- a/qiskit/transpiler/passes/routing/sabre_swap.py +++ b/qiskit/transpiler/passes/routing/sabre_swap.py @@ -210,11 +210,16 @@ def run(self, dag): dag_list = [] for node in dag.topological_op_nodes(): + cargs = {self._clbit_indices[x] for x in node.cargs} + if node.op.condition is not None: + for clbit in dag._bits_in_condition(node.op.condition): + cargs.add(self._clbit_indices[clbit]) + dag_list.append( ( node._node_id, [self._qubit_indices[x] for x in node.qargs], - [self._clbit_indices[x] for x in node.cargs], + cargs, ) ) front_layer = np.asarray([x._node_id for x in dag.front_layer()], dtype=np.uintp) diff --git a/src/sabre_swap/sabre_dag.rs b/src/sabre_swap/sabre_dag.rs index ae349d30020a..480dbb00323e 100644 --- a/src/sabre_swap/sabre_dag.rs +++ b/src/sabre_swap/sabre_dag.rs @@ -10,7 +10,7 @@ // copyright notice, and modified files need to carry a notice indicating // that they have been altered from the originals. -use hashbrown::HashMap; +use hashbrown::{HashMap, HashSet}; use numpy::PyReadonlyArray1; use pyo3::prelude::*; use retworkx_core::petgraph::prelude::*; @@ -23,7 +23,7 @@ use retworkx_core::petgraph::prelude::*; #[pyo3(text_signature = "(num_qubits, num_clbits, nodes, front_layer, /)")] #[derive(Clone, Debug)] pub struct SabreDAG { - pub dag: DiGraph<(usize, Vec, Vec), ()>, + pub dag: DiGraph<(usize, Vec), ()>, pub first_layer: Vec, } @@ -33,18 +33,18 @@ impl SabreDAG { pub fn new( num_qubits: usize, num_clbits: usize, - nodes: Vec<(usize, Vec, Vec)>, + nodes: Vec<(usize, Vec, HashSet)>, front_layer: PyReadonlyArray1, ) -> PyResult { let mut qubit_pos: Vec = vec![usize::MAX; num_qubits]; let mut clbit_pos: Vec = vec![usize::MAX; num_clbits]; let mut reverse_index_map: HashMap = HashMap::with_capacity(nodes.len()); - let mut dag: DiGraph<(usize, Vec, Vec), ()> = + let mut dag: DiGraph<(usize, Vec), ()> = Graph::with_capacity(nodes.len(), 2 * nodes.len()); for node in &nodes { let qargs = &node.1; let cargs = &node.2; - let gate_index = dag.add_node(node.clone()); + let gate_index = dag.add_node((node.0, qargs.clone())); reverse_index_map.insert(node.0, gate_index); for x in qargs { if qubit_pos[*x] != usize::MAX { diff --git a/test/python/transpiler/test_sabre_swap.py b/test/python/transpiler/test_sabre_swap.py index 76c14535433f..44c369fbe154 100644 --- a/test/python/transpiler/test_sabre_swap.py +++ b/test/python/transpiler/test_sabre_swap.py @@ -262,6 +262,51 @@ def test_classical_condition(self): actual = PassManager([TrivialLayout(cm), SabreSwap(cm)]).run(qc) self.assertEqual(expected, actual) + def test_classical_condition_cargs(self): + """Test that classical conditions are preserved even if missing from cargs DAGNode field. + + Created from reproduction in https://github.com/Qiskit/qiskit-terra/issues/8675 + """ + with self.subTest("missing measurement"): + qc = QuantumCircuit(3, 1) + qc.cx(0, 2).c_if(0, 0) + qc.measure(1, 0) + qc.h(2).c_if(0, 0) + expected = QuantumCircuit(3, 1) + expected.swap(1, 2) + expected.cx(0, 1).c_if(0, 0) + expected.measure(2, 0) + expected.h(1).c_if(0, 0) + result = SabreSwap(CouplingMap.from_line(3), seed=12345)(qc) + self.assertEqual(result, expected) + with self.subTest("reordered measurement"): + qc = QuantumCircuit(3, 1) + qc.cx(0, 1).c_if(0, 0) + qc.measure(1, 0) + qc.h(0).c_if(0, 0) + expected = QuantumCircuit(3, 1) + expected.cx(0, 1).c_if(0, 0) + expected.measure(1, 0) + expected.h(0).c_if(0, 0) + result = SabreSwap(CouplingMap.from_line(3), seed=12345)(qc) + self.assertEqual(result, expected) + + def test_conditional_measurement(self): + """Test that instructions with cargs and conditions are handled correctly.""" + qc = QuantumCircuit(3, 2) + qc.cx(0, 2).c_if(0, 0) + qc.measure(2, 0).c_if(1, 0) + qc.h(2).c_if(0, 0) + qc.measure(1, 1) + expected = QuantumCircuit(3, 2) + expected.swap(1, 2) + expected.cx(0, 1).c_if(0, 0) + expected.measure(1, 0).c_if(1, 0) + expected.h(1).c_if(0, 0) + expected.measure(2, 1) + result = SabreSwap(CouplingMap.from_line(3), seed=12345)(qc) + self.assertEqual(result, expected) + if __name__ == "__main__": unittest.main() From 02d2d6e705fb389076472116f7425fe63533f401 Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Fri, 16 Sep 2022 03:07:45 +0100 Subject: [PATCH 20/56] Allow DAG-node substitution without overriding conditions (#8615) * Allow DAG-node substitution without overriding conditions Currently, `DAGCircuit.substitute_node_with_dag` forcibly copies any condition on the `node` onto all the operations in the replacement DAG. This style was because the method was originally used by the basis-translation passes (`Decompose`, `BasisTranslator`, etc), which did not want to have to worry about the condition. This model of the condition being a "addition" to a node is now too restrictive with the move to more dynamic circuits; one cannot replace an (old-style) conditioned node with a custom instruction or an `IfElseBlock` that implements the condition internally, for example by taking the condition bits in the `clbits` field and using the condition on only a subset of the definition nodes. This commit does not add any such option to `DAGCircuit.substitute_node`; a new interface for wire-reordering in the arguments did not appear quite as clear to me, and this commit can stand alone. * Inline helper functions for clearer tracebacks on error * Slightly improve wire-mapping error messages Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/dagcircuit/dagcircuit.py | 302 +++++++----------- ...titute_node_with_dag-3a44d16b1a82df41.yaml | 16 + test/python/dagcircuit/test_dagcircuit.py | 190 ++++++++++- 3 files changed, 323 insertions(+), 185 deletions(-) create mode 100644 releasenotes/notes/update-DAGCircuit.substitute_node_with_dag-3a44d16b1a82df41.yaml diff --git a/qiskit/dagcircuit/dagcircuit.py b/qiskit/dagcircuit/dagcircuit.py index 0736f2b58901..c58cd1b01672 100644 --- a/qiskit/dagcircuit/dagcircuit.py +++ b/qiskit/dagcircuit/dagcircuit.py @@ -604,75 +604,6 @@ def apply_operation_front(self, op, qargs=(), cargs=()): ) return self._multi_graph[node_index] - def _check_edgemap_registers(self, inbound_wires, inbound_regs): - """Check that wiremap neither fragments nor leaves duplicate registers. - - 1. There are no fragmented registers. A register in keyregs - is fragmented if not all of its (qu)bits are renamed by edge_map. - 2. There are no duplicate registers. A register is duplicate if - it appears in both self and keyregs but not in edge_map. - - Args: - inbound_wires (list): a list of wires being mapped from the inbound dag - inbound_regs (list): a list from registers from the inbound dag - - Returns: - set(Register): the set of regs to add to self - - Raises: - DAGCircuitError: if the wiremap fragments, or duplicates exist - """ - add_regs = set() - reg_frag_chk = {} - - for inbound_reg in inbound_regs: - reg_frag_chk[inbound_reg] = {reg_bit: False for reg_bit in inbound_reg} - - for inbound_bit in inbound_wires: - for inbound_reg in inbound_regs: - if inbound_bit in inbound_reg: - reg_frag_chk[inbound_reg][inbound_bit] = True - break - - for inbound_reg, v in reg_frag_chk.items(): - s = set(v.values()) - if len(s) == 2: - raise DAGCircuitError("inbound_wires fragments reg %s" % inbound_reg) - if s == {False}: - if inbound_reg.name in self.qregs or inbound_reg.name in self.cregs: - raise DAGCircuitError("unmapped duplicate reg %s" % inbound_reg) - - # Add registers that appear only in inbound_regs - add_regs.add(inbound_reg) - - return add_regs - - def _check_wiremap_validity(self, wire_map, keymap, valmap): - """Check that the wiremap is consistent. - - Check that the wiremap refers to valid wires and that - those wires have consistent types. - - Args: - wire_map (dict): map from Bit in keymap to Bit in valmap - keymap (list): a list of wire_map keys - valmap (dict): a map whose keys are wire_map values - - Raises: - DAGCircuitError: if wire_map not valid - """ - for k, v in wire_map.items(): - - if k not in keymap: - raise DAGCircuitError("invalid wire mapping key %s" % k) - if v not in valmap: - raise DAGCircuitError("invalid wire mapping value %s" % v) - # TODO Support mapping from AncillaQubit to Qubit, since AncillaQubits are mapped to - # Qubits upon being converted to an Instruction. Until this translation is fixed - # and Instructions have a concept of ancilla qubits, this fix is required. - if not (isinstance(k, type(v)) or isinstance(v, type(k))): - raise DAGCircuitError(f"inconsistent wire_map at ({k},{v})") - @staticmethod def _map_condition(wire_map, condition, target_cregs): """Use the wire_map dict to change the condition tuple's creg name. @@ -742,6 +673,39 @@ def _map_condition(wire_map, condition, target_cregs): new_condition = (new_creg, new_cond_val) return new_condition + def _map_condition_with_import(self, op, wire_map, creg_map): + """Map the condition in ``op`` to its counterpart in ``self`` using ``wire_map`` and + ``creg_map`` as lookup caches. All single-bit conditions should have a cache hit in the + ``wire_map``, but registers may involve a full linear search the first time they are + encountered. ``creg_map`` is mutated by this function. ``wire_map`` is not; it is an error + if a wire is not in the map. + + This is different to ``_map_condition`` because it always succeeds; since the mapping for + all wires in the condition is assumed to exist, there can be no fragmented registers. If + there is no matching register (has the same bits in the same order) in ``self``, a new + register alias is added to represent the condition. This does not change the bits available + to ``self``, it just adds a new aliased grouping of them.""" + op_condition = getattr(op, "condition", None) + if op_condition is None: + return op + new_op = copy.copy(op) + target, value = op_condition + if isinstance(target, Clbit): + new_op.condition = (wire_map[target], value) + else: + if target.name not in creg_map: + mapped_bits = [wire_map[bit] for bit in target] + for our_creg in self.cregs.values(): + if mapped_bits == list(our_creg): + new_target = our_creg + break + else: + new_target = ClassicalRegister(bits=[wire_map[bit] for bit in target]) + self.add_creg(new_target) + creg_map[target.name] = new_target + new_op.condition = (creg_map[target.name], value) + return new_op + def compose(self, other, qubits=None, clbits=None, front=False, inplace=True): """Compose the ``other`` circuit onto the output of this circuit. @@ -940,31 +904,6 @@ def num_tensor_factors(self): """Compute how many components the circuit can decompose into.""" return rx.number_weakly_connected_components(self._multi_graph) - def _check_wires_list(self, wires, node): - """Check that a list of wires is compatible with a node to be replaced. - - - no duplicate names - - correct length for operation - Raise an exception otherwise. - - Args: - wires (list[Bit]): gives an order for (qu)bits - in the input circuit that is replacing the node. - node (DAGOpNode): a node in the dag - - Raises: - DAGCircuitError: if check doesn't pass. - """ - if len(set(wires)) != len(wires): - raise DAGCircuitError("duplicate wires") - - wire_tot = len(node.qargs) + len(node.cargs) - if getattr(node.op, "condition", None) is not None: - wire_tot += getattr(node.op, "condition", None)[0].size - - if len(wires) != wire_tot: - raise DAGCircuitError("expected %d wires, got %d" % (wire_tot, len(wires))) - def __eq__(self, other): # Try to convert to float, but in case of unbound ParameterExpressions # a TypeError will be raise, fallback to normal equality in those @@ -1110,15 +1049,21 @@ def replace_block_with_op(self, node_block, op, wire_pos_map, cycle_check=True): for nd in node_block: self._decrement_op(nd.op) - def substitute_node_with_dag(self, node, input_dag, wires=None): + def substitute_node_with_dag(self, node, input_dag, wires=None, propagate_condition=True): """Replace one node with dag. Args: node (DAGOpNode): node to substitute input_dag (DAGCircuit): circuit that will substitute the node - wires (list[Bit]): gives an order for (qu)bits - in the input circuit. This order gets matched to the node wires - by qargs first, then cargs, then conditions. + wires (list[Bit] | Dict[Bit, Bit]): gives an order for (qu)bits + in the input circuit. If a list, then the bits refer to those in the ``input_dag``, + and the order gets matched to the node wires by qargs first, then cargs, then + conditions. If a dictionary, then a mapping of bits in the ``input_dag`` to those + that the ``node`` acts on. + propagate_condition (bool): If ``True`` (default), then any ``condition`` attribute on + the operation within ``node`` is propagated to each node in the ``input_dag``. If + ``False``, then the ``input_dag`` is assumed to faithfully implement suitable + conditional logic already. Returns: dict: maps node IDs from `input_dag` to their new node incarnations in `self`. @@ -1126,77 +1071,84 @@ def substitute_node_with_dag(self, node, input_dag, wires=None): Raises: DAGCircuitError: if met with unexpected predecessor/successors """ - in_dag = input_dag - - # the dag must be amended if used in a - # conditional context. delete the op nodes and replay - # them with the condition. - if getattr(node.op, "condition", None): - in_dag = copy.deepcopy(input_dag) - in_dag.add_creg(getattr(node.op, "condition", None)[0]) - to_replay = [] - for sorted_node in in_dag.topological_nodes(): - if isinstance(sorted_node, DAGOpNode): - if getattr(node.op, "condition", None) and not isinstance( - sorted_node.op, Instruction - ): - raise DAGCircuitError("Cannot add a condition on a generic Operation.") - sorted_node.op.condition = getattr(node.op, "condition", None) - to_replay.append(sorted_node) - for input_node in in_dag.op_nodes(): - in_dag.remove_op_node(input_node) - for replay_node in to_replay: - in_dag.apply_operation_back(replay_node.op, replay_node.qargs, replay_node.cargs) - - if in_dag.global_phase: - self.global_phase += in_dag.global_phase - - if wires is None: - wires = in_dag.wires - wire_set = set(wires) - self._check_wires_list(wires, node) - - # Create a proxy wire_map to identify fragments and duplicates - # and determine what registers need to be added to self - add_qregs = self._check_edgemap_registers(wires, in_dag.qregs.values()) - for qreg in add_qregs: - self.add_qreg(qreg) - - add_cregs = self._check_edgemap_registers(wires, in_dag.cregs.values()) - for creg in add_cregs: - self.add_creg(creg) - - # Replace the node by iterating through the input_circuit. - # Constructing and checking the validity of the wire_map. - # If a gate is conditioned, we expect the replacement subcircuit - # to depend on those condition bits as well. if not isinstance(node, DAGOpNode): - raise DAGCircuitError("expected node DAGOpNode, got %s" % type(node)) - - condition_bit_list = self._bits_in_condition(getattr(node.op, "condition", None)) - - new_wires = list(node.qargs) + list(node.cargs) + list(condition_bit_list) + raise DAGCircuitError(f"expected node DAGOpNode, got {type(node)}") - wire_map = {} - reverse_wire_map = {} - for wire, new_wire in zip(wires, new_wires): - wire_map[wire] = new_wire - reverse_wire_map[new_wire] = wire - self._check_wiremap_validity(wire_map, wires, self.input_map) - - if condition_bit_list: - # If we are replacing a conditional node, map input dag through - # wire_map to verify that it will not modify any of the conditioning - # bits. - condition_bits = set(condition_bit_list) - - for op_node in in_dag.op_nodes(): - mapped_cargs = {wire_map[carg] for carg in op_node.cargs} + if isinstance(wires, dict): + wire_map = wires + else: + wires = input_dag.wires if wires is None else wires + node_cargs = set(node.cargs) + node_wire_order = list(node.qargs) + list(node.cargs) + # If we're not propagating it, the number of wires in the input DAG should include the + # condition as well. + if not propagate_condition: + node_wire_order += [ + bit + for bit in self._bits_in_condition(getattr(node.op, "condition", None)) + if bit not in node_cargs + ] + if len(wires) != len(node_wire_order): + raise DAGCircuitError( + f"bit mapping invalid: expected {len(node_wire_order)}, got {len(wires)}" + ) + wire_map = dict(zip(wires, node_wire_order)) + if len(wire_map) != len(node_wire_order): + raise DAGCircuitError("bit mapping invalid: some bits have duplicate entries") + for input_dag_wire, our_wire in wire_map.items(): + if our_wire not in self.input_map: + raise DAGCircuitError(f"bit mapping invalid: {our_wire} is not in this DAG") + # Support mapping indiscriminately between Qubit and AncillaQubit, etc. + check_type = Qubit if isinstance(our_wire, Qubit) else Clbit + if not isinstance(input_dag_wire, check_type): + raise DAGCircuitError( + f"bit mapping invalid: {input_dag_wire} and {our_wire} are different bit types" + ) - if condition_bits & mapped_cargs: + reverse_wire_map = {b: a for a, b in wire_map.items()} + creg_map = {} + op_condition = getattr(node.op, "condition", None) + if propagate_condition and op_condition is not None: + in_dag = input_dag.copy_empty_like() + target, value = op_condition + if isinstance(target, Clbit): + new_target = reverse_wire_map.get(target, Clbit()) + if new_target not in wire_map: + in_dag.add_clbits([new_target]) + wire_map[new_target], reverse_wire_map[target] = target, new_target + target_cargs = {new_target} + else: # ClassicalRegister + mapped_bits = [reverse_wire_map.get(bit, Clbit()) for bit in target] + for ours, theirs in zip(target, mapped_bits): + # Update to any new dummy bits we just created to the wire maps. + wire_map[theirs], reverse_wire_map[ours] = ours, theirs + new_target = ClassicalRegister(bits=mapped_bits) + creg_map[new_target.name] = target + in_dag.add_creg(new_target) + target_cargs = set(new_target) + new_condition = (new_target, value) + for in_node in input_dag.topological_op_nodes(): + if getattr(in_node.op, "condition", None) is not None: + raise DAGCircuitError( + "cannot propagate a condition to an element that already has one" + ) + if target_cargs.intersection(in_node.cargs): + # This is for backwards compatibility with early versions of the method, as it is + # a tested part of the API. In the newer model of a condition being an integral + # part of the operation (not a separate property to be copied over), this error + # is overzealous, because it forbids a custom instruction from implementing the + # condition within its definition rather than at the top level. raise DAGCircuitError( - "Mapped DAG would alter clbits on which it would be conditioned." + "cannot propagate a condition to an element that acts on those bits" ) + new_op = copy.copy(in_node.op) + new_op.condition = new_condition + in_dag.apply_operation_back(new_op, in_node.qargs, in_node.cargs) + else: + in_dag = input_dag + + if in_dag.global_phase: + self.global_phase += in_dag.global_phase # Add wire from pred to succ if no ops on mapped wire on ``in_dag`` # retworkx's substitute_node_with_subgraph lacks the DAGCircuit @@ -1205,11 +1157,10 @@ def substitute_node_with_dag(self, node, input_dag, wires=None): # edges prior to calling substitute_node_with_subgraph and set the # edge_map_fn callback kwarg to skip these edges when they're # encountered. - for wire in wires: - input_node = in_dag.input_map[wire] - output_node = in_dag.output_map[wire] + for in_dag_wire, self_wire in wire_map.items(): + input_node = in_dag.input_map[in_dag_wire] + output_node = in_dag.output_map[in_dag_wire] if in_dag._multi_graph.has_edge(input_node._node_id, output_node._node_id): - self_wire = wire_map[wire] pred = self._multi_graph.find_predecessors_by_edge( node._node_id, lambda edge, wire=self_wire: edge == wire )[0] @@ -1224,7 +1175,7 @@ def filter_fn(node): if not isinstance(node, DAGOpNode): return False for qarg in node.qargs: - if qarg not in wire_set: + if qarg not in wire_map: return False return True @@ -1265,16 +1216,11 @@ def edge_weight_map(wire): for old_node_index, new_node_index in node_map.items(): # update node attributes old_node = in_dag._multi_graph[old_node_index] - condition = self._map_condition( - wire_map, getattr(old_node.op, "condition", None), self.cregs.values() - ) - m_qargs = [wire_map.get(x, x) for x in old_node.qargs] - m_cargs = [wire_map.get(x, x) for x in old_node.cargs] - new_node = DAGOpNode(old_node.op, qargs=m_qargs, cargs=m_cargs) + m_op = self._map_condition_with_import(old_node.op, wire_map, creg_map) + m_qargs = [wire_map[x] for x in old_node.qargs] + m_cargs = [wire_map[x] for x in old_node.cargs] + new_node = DAGOpNode(m_op, qargs=m_qargs, cargs=m_cargs) new_node._node_id = new_node_index - if condition and not isinstance(new_node.op, Instruction): - raise DAGCircuitError("Cannot add a condition on a generic Operation.") - new_node.op.condition = condition self._multi_graph[new_node_index] = new_node self._increment_op(new_node.op) diff --git a/releasenotes/notes/update-DAGCircuit.substitute_node_with_dag-3a44d16b1a82df41.yaml b/releasenotes/notes/update-DAGCircuit.substitute_node_with_dag-3a44d16b1a82df41.yaml new file mode 100644 index 000000000000..37a1e108d5b7 --- /dev/null +++ b/releasenotes/notes/update-DAGCircuit.substitute_node_with_dag-3a44d16b1a82df41.yaml @@ -0,0 +1,16 @@ +--- +features: + - | + :meth:`.DAGCircuit.substitute_node_with_dag` now takes ``propagate_condition`` + as a keyword argument. This defaults to ``True``, which was the previous + behavior, and copies any condition on the node to be replaced onto every + operation node in the replacement. If set to ``False``, the condition will + not be copied, which allows replacement of a conditional node with a sub-DAG + that already faithfully implements the condition. + - | + :meth:`.DAGCircuit.substitute_node_with_dag` can now take a mapping for its + ``wires`` parameter as well as a sequence. The mapping should map bits in + the replacement DAG to the bits in the DAG it is being inserted into. This + permits an easier style of construction for callers when the input node has + both classical bits and a condition, and the replacement DAG may use these + out-of-order. diff --git a/test/python/dagcircuit/test_dagcircuit.py b/test/python/dagcircuit/test_dagcircuit.py index 8885dcf31a40..8cce41aed1e5 100644 --- a/test/python/dagcircuit/test_dagcircuit.py +++ b/test/python/dagcircuit/test_dagcircuit.py @@ -1480,12 +1480,12 @@ def test_substitute_circuit_one_back(self): def test_raise_if_substituting_dag_modifies_its_conditional(self): """Verify that we raise if the input dag modifies any of the bits in node.op.condition.""" - # Our unroller's rely on substitute_node_with_dag carrying the condition - # from the node over to the input dag, which it does by making every - # node in the input dag conditioned over the same bits. However, if the - # input dag e.g. measures to one of those bits, the behavior of the - # remainder of the DAG would be different, so detect and raise in that - # case. + # The `propagate_condition=True` argument (and behaviour of `substitute_node_with_dag` + # before the parameter was added) treats the replacement DAG as implementing only the + # un-controlled operation. The original contract considers it an error to replace a node + # with an operation that may modify one of the condition bits in case this affects + # subsequent operations, so when `propagate_condition=True`, this error behaviour is + # maintained. instr = Instruction("opaque", 1, 1, []) instr.condition = self.condition @@ -1499,9 +1499,185 @@ def test_raise_if_substituting_dag_modifies_its_conditional(self): sub_dag.apply_operation_back(Measure(), [sub_qr[0]], [sub_cr[0]]) - with self.assertRaises(DAGCircuitError): + msg = "cannot propagate a condition to an element to acts on those bits" + with self.assertRaises(DAGCircuitError, msg=msg): self.dag.substitute_node_with_dag(instr_node, sub_dag) + def test_substitute_without_propagating_bit_conditional(self): + """Test that `substitute_node_with_dag` functions when the condition is not propagated + through to a DAG that implements the conditional logical by other means.""" + base_qubits = [Qubit(), Qubit()] + base_clbits = [Clbit()] + base = DAGCircuit() + base.add_qubits(base_qubits) + base.add_clbits(base_clbits) + base.apply_operation_back(HGate(), [base_qubits[0]], []) + conditioned = CZGate() + conditioned.condition = (base_clbits[0], True) + target = base.apply_operation_back(conditioned, base_qubits, []) + base.apply_operation_back(XGate(), [base_qubits[1]], []) + + sub = QuantumCircuit(2, 1) + sub.h(0) + sub.cx(0, 1).c_if(0, True) + sub.h(0) + + expected = DAGCircuit() + expected.add_qubits(base_qubits) + expected.add_clbits(base_clbits) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + cx = CXGate() + cx.condition = (base_clbits[0], True) + expected.apply_operation_back(cx, base_qubits, []) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + expected.apply_operation_back(XGate(), [base_qubits[1]], []) + + base.substitute_node_with_dag(target, circuit_to_dag(sub), propagate_condition=False) + self.assertEqual(base, expected) + + def test_substitute_without_propagating_register_conditional(self): + """Test that `substitute_node_with_dag` functions when the condition is not propagated + through to a DAG that implements the conditional logical by other means.""" + base_qubits = [Qubit(), Qubit()] + base_creg = ClassicalRegister(2) + base = DAGCircuit() + base.add_qubits(base_qubits) + base.add_creg(base_creg) + base.apply_operation_back(HGate(), [base_qubits[0]], []) + conditioned = CZGate() + conditioned.condition = (base_creg, 3) + target = base.apply_operation_back(conditioned, base_qubits, []) + base.apply_operation_back(XGate(), [base_qubits[1]], []) + + sub = QuantumCircuit(QuantumRegister(2), ClassicalRegister(2)) + sub.h(0) + sub.cx(0, 1).c_if(sub.cregs[0], 3) + sub.h(0) + + expected = DAGCircuit() + expected.add_qubits(base_qubits) + expected.add_creg(base_creg) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + cx = CXGate() + cx.condition = (base_creg, 3) + expected.apply_operation_back(cx, base_qubits, []) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + expected.apply_operation_back(XGate(), [base_qubits[1]], []) + + base.substitute_node_with_dag(target, circuit_to_dag(sub), propagate_condition=False) + self.assertEqual(base, expected) + + def test_substitute_with_provided_wire_map_propagate_condition(self): + """Test that the ``wires`` argument can be a direct mapping while propagating the + condition.""" + base_qubits = [Qubit(), Qubit()] + base_clbits = [Clbit()] + base = DAGCircuit() + base.add_qubits(base_qubits) + base.add_clbits(base_clbits) + base.apply_operation_back(HGate(), [base_qubits[0]], []) + conditioned_cz = CZGate() + conditioned_cz.condition = (base_clbits[0], True) + target = base.apply_operation_back(conditioned_cz, base_qubits, []) + base.apply_operation_back(XGate(), [base_qubits[1]], []) + + # Note that `sub` here doesn't have any classical bits at all. + sub = QuantumCircuit(2) + sub.h(0) + sub.cx(0, 1) + sub.h(0) + + conditioned_h = HGate() + conditioned_h.condition = conditioned_cz.condition + conditioned_cx = CXGate() + conditioned_cx.condition = conditioned_cz.condition + + expected = DAGCircuit() + expected.add_qubits(base_qubits) + expected.add_clbits(base_clbits) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + expected.apply_operation_back(conditioned_h.copy(), [base_qubits[0]], []) + expected.apply_operation_back(conditioned_cx, base_qubits, []) + expected.apply_operation_back(conditioned_h.copy(), [base_qubits[0]], []) + expected.apply_operation_back(XGate(), [base_qubits[1]], []) + + wire_map = dict(zip(sub.qubits, base_qubits)) + base.substitute_node_with_dag( + target, circuit_to_dag(sub), propagate_condition=True, wires=wire_map + ) + self.assertEqual(base, expected) + + def test_substitute_with_provided_wire_map_no_propagate_condition(self): + """Test that the ``wires`` argument can be a direct mapping while not propagating the + condition.""" + base_qubits = [Qubit(), Qubit()] + base_clbits = [Clbit()] + base = DAGCircuit() + base.add_qubits(base_qubits) + base.add_clbits(base_clbits) + base.apply_operation_back(HGate(), [base_qubits[0]], []) + conditioned_cz = CZGate() + conditioned_cz.condition = (base_clbits[0], True) + target = base.apply_operation_back(conditioned_cz, base_qubits, []) + base.apply_operation_back(XGate(), [base_qubits[1]], []) + + sub = QuantumCircuit(2, 1) + sub.h(0) + sub.cx(0, 1).c_if(0, True) + sub.h(0) + + conditioned_cx = CXGate() + conditioned_cx.condition = conditioned_cz.condition + + expected = DAGCircuit() + expected.add_qubits(base_qubits) + expected.add_clbits(base_clbits) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + expected.apply_operation_back(conditioned_cx, base_qubits, []) + expected.apply_operation_back(HGate(), [base_qubits[0]], []) + expected.apply_operation_back(XGate(), [base_qubits[1]], []) + + wire_map = dict(zip(sub.qubits, base_qubits)) + wire_map[sub.clbits[0]] = base_clbits[0] + base.substitute_node_with_dag( + target, circuit_to_dag(sub), propagate_condition=False, wires=wire_map + ) + self.assertEqual(base, expected) + + def test_creates_additional_alias_register(self): + """Test that a sub-condition that has no associated register in the main DAG will be + translated faithfully by adding a new aliasing register.""" + base_qreg = QuantumRegister(2) + base_creg = ClassicalRegister(3) + base = DAGCircuit() + base.add_qreg(base_qreg) + base.add_creg(base_creg) + target = base.apply_operation_back(Instruction("dummy", 2, 2, []), base_qreg, base_creg[:2]) + + sub = QuantumCircuit(QuantumRegister(2), ClassicalRegister(2)) + sub.cx(0, 1).c_if(sub.cregs[0], 3) + + base.substitute_node_with_dag(target, circuit_to_dag(sub)) + + # Check that a new register was added, and retrieve it to verify the bits in it. + self.assertEqual(len(base.cregs), 2) + cregs = base.cregs.copy() + cregs.pop(base_creg.name) + added_creg = tuple(cregs.values())[0] + self.assertEqual(list(added_creg), list(base_creg[:2])) + + expected = DAGCircuit() + expected.add_qreg(base_qreg) + expected.add_creg(base_creg) + expected.add_creg(added_creg) + cx = CXGate() + cx.condition = (added_creg, 3) + expected.apply_operation_back(cx, base_qreg, []) + self.assertEqual(base, expected) + @ddt class TestDagSubstituteNode(QiskitTestCase): From 3ae23373e05819e6051a1af1ab3e93582185c27e Mon Sep 17 00:00:00 2001 From: Iman Elsayed <86818179+amyels@users.noreply.github.com> Date: Fri, 16 Sep 2022 09:50:02 -0700 Subject: [PATCH 21/56] Fix printing an empty PauliList (#7712) * add num.qubits check to be _truncated_str in pauli_list.py - Resolved Issue #7359 * new file: fix-empty-string-pauli-list-init-4d978fb0eaf1bc70.yaml modified: ../../test/python/quantum_info/operators/symplectic/test_pauli_list.py * Added test to test_array_init to test array initialization for empty array * Run black on test_pauli_list.py * Update releasenotes/notes/fix-empty-string-pauli-list-init-4d978fb0eaf1bc70.yaml Co-authored-by: Matthew Treinish Co-authored-by: John Lapeyre Co-authored-by: Matthew Treinish Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../quantum_info/operators/symplectic/pauli_list.py | 2 +- ...empty-string-pauli-list-init-4d978fb0eaf1bc70.yaml | 11 +++++++++++ .../operators/symplectic/test_pauli_list.py | 8 ++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/fix-empty-string-pauli-list-init-4d978fb0eaf1bc70.yaml diff --git a/qiskit/quantum_info/operators/symplectic/pauli_list.py b/qiskit/quantum_info/operators/symplectic/pauli_list.py index 97b484e5bbf6..188711e4bacb 100644 --- a/qiskit/quantum_info/operators/symplectic/pauli_list.py +++ b/qiskit/quantum_info/operators/symplectic/pauli_list.py @@ -192,7 +192,7 @@ def __str__(self): def _truncated_str(self, show_class): stop = self._num_paulis - if self.__truncate__: + if self.__truncate__ and self.num_qubits > 0: max_paulis = self.__truncate__ // self.num_qubits if self._num_paulis > max_paulis: stop = max_paulis diff --git a/releasenotes/notes/fix-empty-string-pauli-list-init-4d978fb0eaf1bc70.yaml b/releasenotes/notes/fix-empty-string-pauli-list-init-4d978fb0eaf1bc70.yaml new file mode 100644 index 000000000000..144f1e2b9cbe --- /dev/null +++ b/releasenotes/notes/fix-empty-string-pauli-list-init-4d978fb0eaf1bc70.yaml @@ -0,0 +1,11 @@ +--- +fixes: + - | + Fixed initialization of empty symplectic matrix in :meth:'PauliList.from_symplectic' in :class:'.PauliList' class + For example:: + + from qiskit.quantum_info.operators import PauliList + + x = np.array([], dtype=bool).reshape((1,0)) + z = np.array([], dtype=bool).reshape((1,0)) + pauli_list = PauliList.from_symplectic(x, z) diff --git a/test/python/quantum_info/operators/symplectic/test_pauli_list.py b/test/python/quantum_info/operators/symplectic/test_pauli_list.py index a580da6cf0ab..70b4bc267308 100644 --- a/test/python/quantum_info/operators/symplectic/test_pauli_list.py +++ b/test/python/quantum_info/operators/symplectic/test_pauli_list.py @@ -80,6 +80,14 @@ class TestPauliListInit(QiskitTestCase): def test_array_init(self): """Test array initialization.""" # Matrix array initialization + + with self.subTest(msg="Empty array"): + x = np.array([], dtype=bool).reshape((1, 0)) + z = np.array([], dtype=bool).reshape((1, 0)) + pauli_list = PauliList.from_symplectic(x, z) + np.testing.assert_equal(pauli_list.z, z) + np.testing.assert_equal(pauli_list.x, x) + with self.subTest(msg="bool array"): z = np.array([[False], [True]]) x = np.array([[False], [True]]) From e76ab71562abe740005fb19d68f17c61140938b5 Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Fri, 16 Sep 2022 20:58:00 +0100 Subject: [PATCH 22/56] Prepare for removal of `tweedledum` as a requirement (#8738) * Prepare for removal of `tweedledum` as a requirement This adds the necessary optional-functionality checker (`HAS_TWEEDLEDUM`), converts all Terra uses of `tweedledum`-dependent functionality to be gated on lazy checker, and deprecates the implicit import of `tweedledum`-specific functionality in `qiskit.circuit`. This commit does not remove `tweedledum` as a requirement just yet; we are waiting one Terra release to give downstream users a chance to adjust. * Fix lint * Fix import paths * Fix straggler release note * Update releasenotes/notes/begin-tweedledum-removal-25bb68fc72804f00.yaml Co-authored-by: Matthew Treinish Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/circuit/__init__.py | 28 +++++++++++++++++-- qiskit/circuit/classicalfunction/__init__.py | 3 +- qiskit/circuit/library/phase_oracle.py | 18 ++++++++++-- qiskit/utils/optionals.py | 7 +++++ qiskit/visualization/circuit/_utils.py | 13 ++++++--- ...funciton_compliation-c5d75e0aaf04c8f1.yaml | 8 +++--- ...pression_phaseoracle-1802be3016c83fa8.yaml | 14 ++++++---- ...n-tweedledum-removal-25bb68fc72804f00.yaml | 15 ++++++++++ requirements.txt | 4 ++- .../bad_examples.py | 2 +- .../classical_function_compiler/examples.py | 2 +- 11 files changed, 91 insertions(+), 23 deletions(-) create mode 100644 releasenotes/notes/begin-tweedledum-removal-25bb68fc72804f00.yaml diff --git a/qiskit/circuit/__init__.py b/qiskit/circuit/__init__.py index bea6c844ebf7..b12f0a4a2277 100644 --- a/qiskit/circuit/__init__.py +++ b/qiskit/circuit/__init__.py @@ -243,8 +243,7 @@ from .parameterexpression import ParameterExpression from .quantumcircuitdata import CircuitInstruction from .equivalence import EquivalenceLibrary -from .classicalfunction.types import Int1, Int2 -from .classicalfunction import classical_function, BooleanExpression +from . import library from .commutation_checker import CommutationChecker from .controlflow import ( @@ -255,3 +254,28 @@ BreakLoopOp, ContinueLoopOp, ) + + +_DEPRECATED_NAMES = { + "Int1": "qiskit.circuit.classicalfunction.types", + "Int2": "qiskit.circuit.classicalfunction.types", + "classical_function": "qiskit.circuit.classicalfunction", + "BooleanExpression": "qiskit.circuit.classicalfunction", +} + + +def __getattr__(name): + if name in _DEPRECATED_NAMES: + import importlib + import warnings + + module_name = _DEPRECATED_NAMES[name] + warnings.warn( + f"Accessing '{name}' from '{__name__}' is deprecated since Qiskit Terra 0.22 " + f"and will be removed in 0.23. Import from '{module_name}' instead. " + "This will require installing 'tweedledum' as an optional dependency from Terra 0.23.", + DeprecationWarning, + stacklevel=2, + ) + return getattr(importlib.import_module(module_name), name) + raise AttributeError(f"module '{__name__}' has no attribute '{name}'") diff --git a/qiskit/circuit/classicalfunction/__init__.py b/qiskit/circuit/classicalfunction/__init__.py index ed5f7749f2cc..0e51e3ad547c 100644 --- a/qiskit/circuit/classicalfunction/__init__.py +++ b/qiskit/circuit/classicalfunction/__init__.py @@ -26,7 +26,8 @@ .. jupyter-execute:: - from qiskit.circuit import classical_function, Int1 + from qiskit.circuit.classicalfunction import classical_function + from qiskit.circuit.classicalfunction.types import Int1 @classical_function def grover_oracle(a: Int1, b: Int1, c: Int1, d: Int1) -> Int1: diff --git a/qiskit/circuit/library/phase_oracle.py b/qiskit/circuit/library/phase_oracle.py index 3ba10f5138f1..91d85e7670a5 100644 --- a/qiskit/circuit/library/phase_oracle.py +++ b/qiskit/circuit/library/phase_oracle.py @@ -12,13 +12,20 @@ """Phase Oracle object.""" -from typing import Union, Callable, Optional +# Needed to avoid type hints from erroring when `classicalfunction` might not be available. +from __future__ import annotations + +from typing import Union, Callable, Optional, TYPE_CHECKING from qiskit.circuit import QuantumCircuit -from qiskit.circuit.classicalfunction.boolean_expression import BooleanExpression -from qiskit.circuit.classicalfunction.classical_element import ClassicalElement +from qiskit.utils import optionals as _optionals + +if TYPE_CHECKING: + from qiskit.circuit.classicalfunction.boolean_expression import BooleanExpression + from qiskit.circuit.classicalfunction.classical_element import ClassicalElement +@_optionals.HAS_TWEEDLEDUM.require_in_instance class PhaseOracle(QuantumCircuit): r"""Phase Oracle. @@ -53,6 +60,9 @@ def __init__( synthesizer: Optional. A function to convert a BooleanExpression into a QuantumCircuit If None is provided, Tweedledum's `pkrm_synth` with `phase_esop` will be used. """ + from qiskit.circuit.classicalfunction.boolean_expression import BooleanExpression + from qiskit.circuit.classicalfunction.classical_element import ClassicalElement + if not isinstance(expression, ClassicalElement): expression = BooleanExpression(expression) @@ -134,5 +144,7 @@ def from_dimacs_file(cls, filename: str): Returns: PhaseOracle: A quantum circuit with a phase oracle. """ + from qiskit.circuit.classicalfunction.boolean_expression import BooleanExpression + expr = BooleanExpression.from_dimacs_file(filename) return cls(expr) diff --git a/qiskit/utils/optionals.py b/qiskit/utils/optionals.py index 5017a9599924..98c6018d09c4 100644 --- a/qiskit/utils/optionals.py +++ b/qiskit/utils/optionals.py @@ -146,6 +146,12 @@ `testtools `__ library is installed. This is generally only needed for Qiskit developers. + * - .. py:data:: HAS_TWEEDLEDUM + - `Tweedledum `__ is an extension library for + synthesis and optimization of circuits that may involve classical oracles. Qiskit Terra's + :class:`.PhaseOracle` uses this, which is used in turn by amplification algorithms via + the :class:`.AmplificationProblem`. + * - .. py:data:: HAS_Z3 - `Z3 `__ is a theorem prover, used in the :class:`.CrosstalkAdaptiveSchedule` and :class:`.HoareOptimizer` transpiler passes. @@ -291,6 +297,7 @@ def _nlopt_callback(available): HAS_SQSNOBFIT = _LazyImportTester("SQSnobFit", install="pip install SQSnobFit") HAS_SYMENGINE = _LazyImportTester("symengine", install="pip install symengine") HAS_TESTTOOLS = _LazyImportTester("testtools", install="pip install testtools") +HAS_TWEEDLEDUM = _LazyImportTester("tweedledum", install="pip install tweedledum") HAS_Z3 = _LazyImportTester("z3", install="pip install z3-solver") HAS_GRAPHVIZ = _LazySubprocessTester( diff --git a/qiskit/visualization/circuit/_utils.py b/qiskit/visualization/circuit/_utils.py index 63dc01caa09b..47cd0b0d30d4 100644 --- a/qiskit/visualization/circuit/_utils.py +++ b/qiskit/visualization/circuit/_utils.py @@ -19,7 +19,6 @@ import numpy as np from qiskit.circuit import ( - BooleanExpression, Clbit, ControlledGate, Delay, @@ -37,6 +36,14 @@ from ..exceptions import VisualizationError +def _is_boolean_expression(gate_text, op): + if not _optionals.HAS_TWEEDLEDUM: + return False + from qiskit.circuit.classicalfunction import BooleanExpression + + return isinstance(op, BooleanExpression) and gate_text == op.name + + def get_gate_ctrl_text(op, drawer, style=None, calibrations=None): """Load the gate_text and ctrl_text strings based on names and labels""" op_label = getattr(op, "label", None) @@ -76,9 +83,7 @@ def get_gate_ctrl_text(op, drawer, style=None, calibrations=None): elif drawer == "latex": # Special formatting for Booleans in latex (due to '~' causing crash) - if (gate_text == op.name and op_type is BooleanExpression) or ( - gate_text == base_name and base_type is BooleanExpression - ): + if _is_boolean_expression(gate_text, op): gate_text = gate_text.replace("~", "$\\neg$").replace("&", "\\&") gate_text = f"$\\texttt{{{gate_text}}}$" # Capitalize if not a user-created gate or instruction diff --git a/releasenotes/notes/0.16/classical_funciton_compliation-c5d75e0aaf04c8f1.yaml b/releasenotes/notes/0.16/classical_funciton_compliation-c5d75e0aaf04c8f1.yaml index a4a2db3b349b..db74122bdbce 100644 --- a/releasenotes/notes/0.16/classical_funciton_compliation-c5d75e0aaf04c8f1.yaml +++ b/releasenotes/notes/0.16/classical_funciton_compliation-c5d75e0aaf04c8f1.yaml @@ -7,7 +7,7 @@ features: ``Int1`` at the moment) into :class:`~qiskit.circuit.QuantumCircuit` objects. For example: - .. jupyter-execute:: + .. code-block:: python from qiskit.circuit import classical_function, Int1 @@ -26,7 +26,7 @@ features: :meth:`~qiskit.circuit.classicalfunction.ClassicalFunction.synth` creates a circuit with registers refering to the parameter names. For example: - .. jupyter-execute:: + .. code-block:: python quantum_circuit = grover_oracle.synth(registerless=False) quantum_circuit.draw() @@ -34,7 +34,7 @@ features: A decorated classical function can be used the same way as any other quantum gate when appending it to a circuit. - .. jupyter-execute:: + .. code-block:: python circuit = QuantumCircuit(5) circuit.append(grover_oracle, range(5)) @@ -42,7 +42,7 @@ features: The ``GROVER_ORACLE`` gate is synthesized when its decomposition is required. - .. jupyter-execute:: + .. code-block:: python circuit.decompose().draw() diff --git a/releasenotes/notes/0.17/bool_expression_phaseoracle-1802be3016c83fa8.yaml b/releasenotes/notes/0.17/bool_expression_phaseoracle-1802be3016c83fa8.yaml index 6b9166e75290..135444615a3a 100644 --- a/releasenotes/notes/0.17/bool_expression_phaseoracle-1802be3016c83fa8.yaml +++ b/releasenotes/notes/0.17/bool_expression_phaseoracle-1802be3016c83fa8.yaml @@ -6,16 +6,17 @@ features: added to the :mod:`qiskit.circuit.classicalfunction` module. This class allows for creating an oracle from a Python boolean expression. For example: - .. jupyter-execute:: + .. code-block:: - from qiskit.circuit import BooleanExpression, QuantumCircuit + from qiskit.circuit import QuantumCircuit + from qiskit.circuit.classicalfunction import BooleanExpression expression = BooleanExpression('~x & (y | z)') circuit = QuantumCircuit(4) circuit.append(expression, [0, 1, 2, 3]) circuit.draw('mpl') - .. jupyter-execute:: + .. code-block:: circuit.decompose().draw('mpl') @@ -28,7 +29,8 @@ features: .. code-block:: - from qiskit.circuit import BooleanExpression, QuantumCircuit + from qiskit.circuit import QuantumCircuit + from qiskit.circuit.classicalfunction import BooleanExpression boolean_exp = BooleanExpression.from_dimacs_file("simple_v3_c2.cnf") circuit = QuantumCircuit(boolean_exp.num_qubits) @@ -67,7 +69,7 @@ features: added to the :mod:`qiskit.circuit.library` module. This class enables the construction of phase oracle circuits from Python boolean expressions. - .. jupyter-execute:: + .. code-block:: from qiskit.circuit.library.phase_oracle import PhaseOracle @@ -77,7 +79,7 @@ features: These phase oracles can be used as part of a larger algorithm, for example with :class:`qiskit.algorithms.AmplificationProblem`: - .. jupyter-execute:: + .. code-block:: from qiskit.algorithms import AmplificationProblem, Grover from qiskit import BasicAer diff --git a/releasenotes/notes/begin-tweedledum-removal-25bb68fc72804f00.yaml b/releasenotes/notes/begin-tweedledum-removal-25bb68fc72804f00.yaml new file mode 100644 index 000000000000..f52628d346bf --- /dev/null +++ b/releasenotes/notes/begin-tweedledum-removal-25bb68fc72804f00.yaml @@ -0,0 +1,15 @@ +--- +upgrade: + - | + Starting in the following release of Qiskit Terra, 0.23, the ``tweedledum`` + package will become an optional dependency, instead of a requirement. This + is currently used by some classical phase-oracle functions. If your + application or library needs this functionality, you may want to prepare by + adding ``tweedledum`` to your package's dependencies immediately. +deprecations: + - | + Importing the names ``Int1``, ``Int2``, ``classical_function`` and + ``BooleanExpression`` directly from :mod:`qiskit.circuit` is deprecated. + This is part of the move to make ``tweedledum`` an optional dependency rather + than a full requirement. Instead, you should import these names from + :mod:`qiskit.circuit.classicalfunction`. diff --git a/requirements.txt b/requirements.txt index 19852678af97..ba89c34d1729 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,6 +8,8 @@ dill>=0.3 python-dateutil>=2.8.0 stevedore>=3.0.0 symengine>=0.9 ; platform_machine == 'x86_64' or platform_machine == 'aarch64' or platform_machine == 'ppc64le' or platform_machine == 'amd64' or platform_machine == 'arm64' -tweedledum>=1.1,<2.0 shared-memory38;python_version<'3.8' typing-extensions; python_version < '3.8' + +# To be removed as a requirement in Terra 0.23. +tweedledum>=1.1,<2.0 diff --git a/test/python/classical_function_compiler/bad_examples.py b/test/python/classical_function_compiler/bad_examples.py index a2c51c1d801d..8ecd84efcfc3 100644 --- a/test/python/classical_function_compiler/bad_examples.py +++ b/test/python/classical_function_compiler/bad_examples.py @@ -14,7 +14,7 @@ """These are bad examples and raise errors in in the classicalfunction compiler""" -from qiskit.circuit import Int1, Int2 +from qiskit.circuit.classicalfunction.types import Int1, Int2 def id_no_type_arg(a) -> Int1: diff --git a/test/python/classical_function_compiler/examples.py b/test/python/classical_function_compiler/examples.py index 429104d198ed..8001a27b0868 100644 --- a/test/python/classical_function_compiler/examples.py +++ b/test/python/classical_function_compiler/examples.py @@ -14,7 +14,7 @@ """These examples should be handle by the classicalfunction compiler""" -from qiskit.circuit import Int1 +from qiskit.circuit.classicalfunction.types import Int1 def identity(a: Int1) -> Int1: From e4381c37601c3656ddc8b7819ea732ac11403e87 Mon Sep 17 00:00:00 2001 From: Paul Nation Date: Fri, 16 Sep 2022 17:14:03 -0400 Subject: [PATCH 23/56] Default set to turn off approximation_degree (#8595) * Default set to turn off approximation_degree * Add a release note * spelling * convert to upgrade note * Update releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml Co-authored-by: Matthew Treinish * Update releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml Co-authored-by: Matthew Treinish * Update releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml Co-authored-by: Matthew Treinish * Update releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml Co-authored-by: Matthew Treinish * Update releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml Co-authored-by: Matthew Treinish Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/compiler/transpiler.py | 2 +- .../turn-off-approx-degree-df3d39eb69f7f09f.yaml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml diff --git a/qiskit/compiler/transpiler.py b/qiskit/compiler/transpiler.py index d5545e9fdda6..3e2b7127a6f5 100644 --- a/qiskit/compiler/transpiler.py +++ b/qiskit/compiler/transpiler.py @@ -71,7 +71,7 @@ def transpile( scheduling_method: Optional[str] = None, instruction_durations: Optional[InstructionDurationsType] = None, dt: Optional[float] = None, - approximation_degree: Optional[float] = None, + approximation_degree: Optional[float] = 1.0, timing_constraints: Optional[Dict[str, int]] = None, seed_transpiler: Optional[int] = None, optimization_level: Optional[int] = None, diff --git a/releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml b/releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml new file mode 100644 index 000000000000..b5cf69942984 --- /dev/null +++ b/releasenotes/notes/turn-off-approx-degree-df3d39eb69f7f09f.yaml @@ -0,0 +1,16 @@ +--- +upgrade: + - | + The implicit use of ``approximation_degree!=1.0`` by default in + in the :func:`~.transpile` function when ``optimization_level=3`` is set has been disabled. The transpiler should, by default, + preserve unitarity of the input up to known transformations such as one-sided permutations + and similarity transformations. This was broken by the previous use of ``approximation_degree=None`` + leading to incorrect results in cases such as Trotterized evolution with many time steps where + unitaries were being overly approximated leading to incorrect results. It was decided that + transformations that break unitary equivalence should be explicitly activated by the user. + If you desire the previous default behavior where synthesized :class:`~UnitaryGate` instructions + are approximated up to the error rates of the target backend's native instructions you can explicitly + set ``approximation_degree=None` when calling :func:`~.transpile` with ``optimization_level=3``, for + example:: + + transpile(circuit, backend, approximation_degree=None, optimization_level=3) From cdfd66ef2ea575d8c88606eaf4580714fba84d18 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Sat, 17 Sep 2022 00:45:42 +0200 Subject: [PATCH 24/56] adding FakePerth (#8344) * adding FakePerth * Update releasenotes/notes/ibm_perth-5b1e9308dc302e2e.yaml * Mock over Fake * remove V1 * removing v2 Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/providers/fake_provider/__init__.py | 1 + .../fake_provider/backends/__init__.py | 1 + .../fake_provider/backends/perth/__init__.py | 15 ++++++++++ .../backends/perth/conf_perth.json | 1 + .../backends/perth/defs_perth.json | 1 + .../backends/perth/fake_perth.py | 29 +++++++++++++++++++ .../backends/perth/props_perth.json | 1 + .../providers/fake_provider/fake_provider.py | 1 + .../notes/ibm_perth-5b1e9308dc302e2e.yaml | 5 ++++ 9 files changed, 55 insertions(+) create mode 100644 qiskit/providers/fake_provider/backends/perth/__init__.py create mode 100644 qiskit/providers/fake_provider/backends/perth/conf_perth.json create mode 100644 qiskit/providers/fake_provider/backends/perth/defs_perth.json create mode 100644 qiskit/providers/fake_provider/backends/perth/fake_perth.py create mode 100644 qiskit/providers/fake_provider/backends/perth/props_perth.json create mode 100644 releasenotes/notes/ibm_perth-5b1e9308dc302e2e.yaml diff --git a/qiskit/providers/fake_provider/__init__.py b/qiskit/providers/fake_provider/__init__.py index 680583677a60..4e7eec90ef5d 100644 --- a/qiskit/providers/fake_provider/__init__.py +++ b/qiskit/providers/fake_provider/__init__.py @@ -136,6 +136,7 @@ FakeNairobiV2 FakeOurenseV2 FakeParisV2 + FakePerth FakePoughkeepsieV2 FakeQuitoV2 FakeRochesterV2 diff --git a/qiskit/providers/fake_provider/backends/__init__.py b/qiskit/providers/fake_provider/backends/__init__.py index 2b85aac04439..db12f58adc0c 100644 --- a/qiskit/providers/fake_provider/backends/__init__.py +++ b/qiskit/providers/fake_provider/backends/__init__.py @@ -44,6 +44,7 @@ from .nairobi import FakeNairobiV2 from .ourense import FakeOurenseV2 from .paris import FakeParisV2 +from .perth import FakePerth from .poughkeepsie import FakePoughkeepsieV2 from .quito import FakeQuitoV2 from .rochester import FakeRochesterV2 diff --git a/qiskit/providers/fake_provider/backends/perth/__init__.py b/qiskit/providers/fake_provider/backends/perth/__init__.py new file mode 100644 index 000000000000..f364ba2d39a2 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/perth/__init__.py @@ -0,0 +1,15 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Fake Perth device (7 qubits)""" + +from .fake_perth import FakePerth diff --git a/qiskit/providers/fake_provider/backends/perth/conf_perth.json b/qiskit/providers/fake_provider/backends/perth/conf_perth.json new file mode 100644 index 000000000000..c00963d66d0d --- /dev/null +++ b/qiskit/providers/fake_provider/backends/perth/conf_perth.json @@ -0,0 +1 @@ +{"backend_name": "ibm_perth", "backend_version": "1.1.26", "n_qubits": 7, "basis_gates": ["id", "rz", "sx", "x", "cx", "reset"], "gates": [{"name": "id", "parameters": [], "qasm_def": "gate id q { U(0, 0, 0) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 5], [4, 5], [5, 3], [5, 4], [5, 6], [6, 5]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": true, "memory": true, "max_shots": 100000, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 5], [4, 5], [5, 3], [5, 4], [5, 6], [6, 5]], "dynamic_reprate_enabled": true, "supported_instructions": ["reset", "u2", "acquire", "shiftf", "rz", "x", "u3", "setf", "id", "u1", "play", "cx", "delay", "sx", "measure"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 300, "sample_name": "family: Falcon, revision: 5.11, segment: H", "n_registers": 1, "credits_required": true, "online_date": "2021-07-22T04:00:00+00:00", "description": "7 qubit device", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Falcon", "revision": "5.11", "segment": "H"}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "clops": 2891, "measure_esp_enabled": true, "multi_meas_enabled": true, "parallel_compilation": false, "quantum_volume": 32, "qubit_channel_mapping": [["u0", "d0", "u1", "m0"], ["u0", "u2", "m1", "u4", "u5", "u3", "u1", "d1"], ["d2", "u4", "u2", "m2"], ["u6", "u8", "u5", "u3", "m3", "d3"], ["u9", "m4", "u7", "d4"], ["d5", "u6", "u8", "u7", "u11", "u10", "m5", "u9"], ["u10", "d6", "m6", "u11"]], "supported_features": ["qobj", "qasm3"], "timing_constraints": {"acquire_alignment": 16, "granularity": 16, "min_length": 64, "pulse_alignment": 16}, "uchannels_enabled": true, "url": "None", "input_allowed": ["job", "runtime", "qasm3"], "allow_object_storage": true, "pulse_num_channels": 9, "pulse_num_qubits": 3, "live_data": false, "n_uchannels": 12, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 6, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.657546043297998, 5.657546043297998], [4.533691457253806, 5.533691457253806], [4.362635459406973, 5.362635459406973], [4.625269059177807, 5.625269059177807], [4.659221243756982, 5.659221243756982], [4.478609543928158, 5.478609543928158], [4.656651195298073, 5.656651195298073]], "meas_lo_range": [[6.663115502, 7.663115502], [6.6164476510000005, 7.6164476510000005], [6.84928468, 7.84928468], [6.719581694, 7.719581694], [6.637153809000001, 7.637153809000001], [6.78180398, 7.78180398], [6.6522457170000004, 7.6522457170000004]], "meas_kernels": ["hw_qmfk"], "discriminators": ["quadratic_discriminator", "hw_qmfk", "linear_discriminator"], "rep_times": [1000.0], "meas_map": [[0, 1, 2, 3, 4, 5, 6]], "acquisition_latency": [], "conditional_latency": [], "hamiltonian": {"description": "Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\n\n$(\\mathbb{I}-\\sigma_{i}^z)/2 \\rightarrow O_i \\equiv b^\\dagger_{i} b_{i}$,\n\n$\\sigma_{+} \\rightarrow b^\\dagger$,\n\n$\\sigma_{-} \\rightarrow b$,\n\n$\\sigma_{i}^X \\rightarrow b^\\dagger_{i} + b_{i}$.\n\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\n\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\n\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\n", "h_latex": "\\begin{align} \\mathcal{H}/\\hbar = & \\sum_{i=0}^{6}\\left(\\frac{\\omega_{q,i}}{2}(\\mathbb{I}-\\sigma_i^{z})+\\frac{\\Delta_{i}}{2}(O_i^2-O_i)+\\Omega_{d,i}D_i(t)\\sigma_i^{X}\\right) \\\\ & + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) + J_{4,5}(\\sigma_{4}^{+}\\sigma_{5}^{-}+\\sigma_{4}^{-}\\sigma_{5}^{+}) + J_{5,6}(\\sigma_{5}^{+}\\sigma_{6}^{-}+\\sigma_{5}^{-}\\sigma_{6}^{+}) \\\\ & + J_{1,3}(\\sigma_{1}^{+}\\sigma_{3}^{-}+\\sigma_{1}^{-}\\sigma_{3}^{+}) + J_{3,5}(\\sigma_{3}^{+}\\sigma_{5}^{-}+\\sigma_{3}^{-}\\sigma_{5}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,3)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{5}^{(3,1)}(t)+U_{6}^{(3,5)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{7}^{(4,5)}(t))\\sigma_{4}^{X} + \\Omega_{d,5}(U_{8}^{(5,3)}(t)+U_{10}^{(5,6)}(t)+U_{9}^{(5,4)}(t))\\sigma_{5}^{X} \\\\ & + \\Omega_{d,6}(U_{11}^{(6,5)}(t))\\sigma_{6}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,6,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,6,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,6,-delta{i}/2*O{i}]", "_SUM[i,0,6,omegad{i}*X{i}||D{i}]", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "jq4q5*Sp4*Sm5", "jq4q5*Sm4*Sp5", "jq5q6*Sp5*Sm6", "jq5q6*Sm5*Sp6", "jq1q3*Sp1*Sm3", "jq1q3*Sm1*Sp3", "jq3q5*Sp3*Sm5", "jq3q5*Sm3*Sp5", "omegad1*X0||U0", "omegad0*X1||U1", "omegad3*X1||U3", "omegad2*X1||U2", "omegad1*X2||U4", "omegad1*X3||U5", "omegad5*X3||U6", "omegad5*X4||U7", "omegad3*X5||U8", "omegad6*X5||U10", "omegad4*X5||U9", "omegad5*X6||U11"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3, "5": 3, "6": 3}, "vars": {"delta0": -2.145861830262288, "delta1": -2.1637323700183813, "delta2": -2.1819772957619166, "delta3": -2.1390595390914435, "delta4": -2.094603727927117, "delta5": -2.1741205452449366, "delta6": -2.1391380255788, "jq0q1": 0.0002985095697687125, "jq1q2": 0.009124660333764169, "jq1q3": 0.00034451952437060125, "jq3q5": 0.013805491337781944, "jq4q5": 0.019157791111464737, "jq5q6": 0.01878865253626694, "omegad0": 1.17768084688185, "omegad1": 0.8944154423214405, "omegad2": 1.2751647891733031, "omegad3": 1.1539312808524558, "omegad4": 1.0470469563014095, "omegad5": 1.0320368101206865, "omegad6": 1.002098104679006, "wq0": 32.40581752035219, "wq1": 31.62761620509251, "wq2": 30.552839672716356, "wq3": 32.20301524796814, "wq4": 32.416343115262656, "wq5": 31.281526336593462, "wq6": 32.4001950245469}}, "channels": {"acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, "acquire2": {"operates": {"qubits": [2]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "acquire5": {"operates": {"qubits": [5]}, "purpose": "acquire", "type": "acquire"}, "acquire6": {"operates": {"qubits": [6]}, "purpose": "acquire", "type": "acquire"}, "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, "d2": {"operates": {"qubits": [2]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "d5": {"operates": {"qubits": [5]}, "purpose": "drive", "type": "drive"}, "d6": {"operates": {"qubits": [6]}, "purpose": "drive", "type": "drive"}, "m0": {"operates": {"qubits": [0]}, "purpose": "measure", "type": "measure"}, "m1": {"operates": {"qubits": [1]}, "purpose": "measure", "type": "measure"}, "m2": {"operates": {"qubits": [2]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "m5": {"operates": {"qubits": [5]}, "purpose": "measure", "type": "measure"}, "m6": {"operates": {"qubits": [6]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u10": {"operates": {"qubits": [5, 6]}, "purpose": "cross-resonance", "type": "control"}, "u11": {"operates": {"qubits": [6, 5]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 3]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [3, 1]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 5]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [4, 5]}, "purpose": "cross-resonance", "type": "control"}, "u8": {"operates": {"qubits": [5, 3]}, "purpose": "cross-resonance", "type": "control"}, "u9": {"operates": {"qubits": [5, 4]}, "purpose": "cross-resonance", "type": "control"}}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends/perth/defs_perth.json b/qiskit/providers/fake_provider/backends/perth/defs_perth.json new file mode 100644 index 000000000000..a45f79ac4caf --- /dev/null +++ b/qiskit/providers/fake_provider/backends/perth/defs_perth.json @@ -0,0 +1 @@ +{"qubit_freq_est": [5.157546043297998, 5.033691457253806, 4.862635459406973, 5.125269059177807, 5.159221243756982, 4.978609543928158, 5.156651195298073], "meas_freq_est": [7.163115502, 7.1164476510000005, 7.34928468, 7.219581694, 7.137153809000001, 7.28180398, 7.1522457170000004], "buffer": 0, "pulse_library": [{"name": "QId_d0", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d1", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d2", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d3", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d4", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d5", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d6", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}], "cmd_def": [{"name": "cx", "qubits": [0, 1], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Ym_d0", "pulse_shape": "drag", "parameters": {"amp": [-2.956501982921238e-17, -0.1609444717709449], "beta": -0.23759198781349172, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.1609444717709449, 0.0], "beta": -0.23759198781349172, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1063777054170297, -0.0002605979775954761], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04786373950320236, 0.002437715470054199], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d1", "label": "CR90m_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04786373950320236, -0.002437715470054193], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 160, "ch": "u0", "label": "CR90p_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03220264248993431, 0.1807958396610942], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u0", "label": "CR90m_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03220264248993429, -0.1807958396610942], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 0, "ch": "u1", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [1, 0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.08028684056150216, 0.0009441951251258224], "beta": -0.3176025535596349, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.1609444717709449, 0.0], "beta": -0.23759198781349172, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1760, "ch": "d0", "label": "Y90m_d0", "pulse_shape": "drag", "parameters": {"amp": [0.0009441951251257899, -0.08028684056150216], "beta": -0.3176025535596349, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00026059797759549197, 0.1063777054170297], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04786373950320236, 0.002437715470054199], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d1", "label": "CR90m_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04786373950320236, -0.002437715470054193], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1760, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1760, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1063777054170297, -0.0002605979775954761], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u0", "label": "CR90p_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03220264248993431, 0.1807958396610942], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u0", "label": "CR90m_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03220264248993429, -0.1807958396610942], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1760, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u1", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 1760, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 1760, "ch": "u5", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [1, 2], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00026059797759549197, 0.1063777054170297], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03829538731944919, 0.00107498675290073], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "d1", "label": "CR90m_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03829538731944919, -0.0010749867529007253], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1440, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1440, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1063777054170297, -0.0002605979775954761], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d2", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.07467637909447875, 0.0017349842744856267], "beta": -1.828679341512514, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 720, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.14864056467668044, 0.0], "beta": -1.6290667006162407, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d2", "label": "Y90m_d2", "pulse_shape": "drag", "parameters": {"amp": [0.0017349842744856139, -0.07467637909447875], "beta": -1.828679341512514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u4", "label": "CR90p_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4523672522947478, 0.31390990501924904], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "u4", "label": "CR90m_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4523672522947477, -0.3139099050192491], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1440, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u5", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [1, 3], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00026059797759549197, 0.1063777054170297], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.054915956156984386, 0.0031079363092648563], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d1", "label": "CR90m_d1_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.054915956156984386, -0.0031079363092648494], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1063777054170297, -0.0002605979775954761], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d3", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.08212218511603157, -0.0001240238976782344], "beta": 0.5360384031224531, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.16425693507037584, 0.0], "beta": 0.9110282451854017, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d3", "label": "Y90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.00012402389767825098, -0.08212218511603157], "beta": 0.5360384031224531, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u5", "label": "CR90p_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06341281641582253, 0.1085666712878434], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u5", "label": "CR90m_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06341281641582254, -0.10856667128784339], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u5", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [2, 1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1063777054170297, -0.0002605979775954761], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03829538731944919, 0.00107498675290073], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "d1", "label": "CR90m_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03829538731944919, -0.0010749867529007253], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 0, "ch": "d2", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Ym_d2", "pulse_shape": "drag", "parameters": {"amp": [-2.7304828763212774e-17, -0.14864056467668044], "beta": -1.6290667006162407, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 720, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.14864056467668044, 0.0], "beta": -1.6290667006162407, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u2", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u4", "label": "CR90p_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4523672522947478, 0.31390990501924904], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "u4", "label": "CR90m_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4523672522947477, -0.3139099050192491], "duration": 560, "sigma": 64, "width": 304}}]}, {"name": "cx", "qubits": [3, 1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1063777054170297, -0.0002605979775954761], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.054915956156984386, 0.0031079363092648563], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d1", "label": "CR90m_d1_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.054915956156984386, -0.0031079363092648494], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "d3", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Ym_d3", "pulse_shape": "drag", "parameters": {"amp": [-3.0173509465753556e-17, -0.16425693507037584], "beta": 0.9110282451854017, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.16425693507037584, 0.0], "beta": 0.9110282451854017, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u3", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u5", "label": "CR90p_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06341281641582253, 0.1085666712878434], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u5", "label": "CR90m_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06341281641582254, -0.10856667128784339], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u8", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [3, 5], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Ym_d3", "pulse_shape": "drag", "parameters": {"amp": [-3.0173509465753556e-17, -0.16425693507037584], "beta": 0.9110282451854017, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 640, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.16425693507037584, 0.0], "beta": 0.9110282451854017, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09203137046859432, 0.0001843340752095996], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07011826811810196, 0.002144166107561248], "duration": 480, "sigma": 64, "width": 224}}, {"name": "parametric_pulse", "t0": 800, "ch": "d5", "label": "CR90m_d5_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07011826811810196, -0.0021441661075612393], "duration": 480, "sigma": 64, "width": 224}}, {"name": "fc", "t0": 0, "ch": "u3", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u6", "label": "CR90p_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.41617212833958495, 0.1237508753602876], "duration": 480, "sigma": 64, "width": 224}}, {"name": "parametric_pulse", "t0": 800, "ch": "u6", "label": "CR90m_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.41617212833958495, -0.12375087536028766], "duration": 480, "sigma": 64, "width": 224}}, {"name": "fc", "t0": 0, "ch": "u8", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [4, 5], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Ym_d4", "pulse_shape": "drag", "parameters": {"amp": [-3.325367569130619e-17, -0.18102457902941863], "beta": -0.17543963993345119, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1328, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.18102457902941863, 0.0], "beta": -0.17543963993345119, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09203137046859432, 0.0001843340752095996], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02574838803192174, 0.0010471284828612551], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 1488, "ch": "d5", "label": "CR90m_d5_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02574838803192174, -0.0010471284828612519], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 160, "ch": "u7", "label": "CR90p_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08551869238252896, -0.029163331236200348], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 1488, "ch": "u7", "label": "CR90m_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08551869238252896, 0.029163331236200338], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "fc", "t0": 0, "ch": "u9", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [5, 3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.08212218511603157, -0.0001240238976782344], "beta": 0.5360384031224531, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 640, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.16425693507037584, 0.0], "beta": 0.9110282451854017, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d3", "label": "Y90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.00012402389767825098, -0.08212218511603157], "beta": 0.5360384031224531, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.00018433407520959663, 0.09203137046859432], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07011826811810196, 0.002144166107561248], "duration": 480, "sigma": 64, "width": 224}}, {"name": "parametric_pulse", "t0": 800, "ch": "d5", "label": "CR90m_d5_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07011826811810196, -0.0021441661075612393], "duration": 480, "sigma": 64, "width": 224}}, {"name": "fc", "t0": 1280, "ch": "d5", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1280, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09203137046859432, 0.0001843340752095996], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 1280, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u6", "label": "CR90p_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.41617212833958495, 0.1237508753602876], "duration": 480, "sigma": 64, "width": 224}}, {"name": "parametric_pulse", "t0": 800, "ch": "u6", "label": "CR90m_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.41617212833958495, -0.12375087536028766], "duration": 480, "sigma": 64, "width": 224}}, {"name": "fc", "t0": 1280, "ch": "u6", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 1280, "ch": "u7", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [5, 4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09052534800091389, 0.0005215139379359441], "beta": -0.22112444563867778, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1328, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.18102457902941863, 0.0], "beta": -0.17543963993345119, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2656, "ch": "d4", "label": "Y90m_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0005215139379359344, -0.09052534800091389], "beta": -0.22112444563867778, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.00018433407520959663, 0.09203137046859432], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02574838803192174, 0.0010471284828612551], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 1488, "ch": "d5", "label": "CR90m_d5_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02574838803192174, -0.0010471284828612519], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "fc", "t0": 2656, "ch": "d5", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2656, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09203137046859432, 0.0001843340752095996], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 2656, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 2656, "ch": "u6", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u7", "label": "CR90p_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08551869238252896, -0.029163331236200348], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 1488, "ch": "u7", "label": "CR90m_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08551869238252896, 0.029163331236200338], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "fc", "t0": 2656, "ch": "u7", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [5, 6], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.00018433407520959663, 0.09203137046859432], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024880319301125327, 0.0010948410676139308], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "parametric_pulse", "t0": 1520, "ch": "d5", "label": "CR90m_d5_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024880319301125327, -0.0010948410676139277], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "fc", "t0": 2720, "ch": "d5", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2720, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09203137046859432, 0.0001843340752095996], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d6", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.09482627631708003, -0.0001378628323857269], "beta": 0.0704083149311823, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1360, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.18914437866428077, 0.0], "beta": 0.2819848205131056, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2720, "ch": "d6", "label": "Y90m_d6", "pulse_shape": "drag", "parameters": {"amp": [-0.00013786283238571037, -0.09482627631708003], "beta": 0.0704083149311823, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u11", "label": "CR90p_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06753165054289072, 0.06211219028837627], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "parametric_pulse", "t0": 1520, "ch": "u11", "label": "CR90m_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06753165054289073, -0.062112190288376265], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "fc", "t0": 2720, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 2720, "ch": "u6", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 2720, "ch": "u7", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [6, 5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09203137046859432, 0.0001843340752095996], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024880319301125327, 0.0010948410676139308], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "parametric_pulse", "t0": 1520, "ch": "d5", "label": "CR90m_d5_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024880319301125327, -0.0010948410676139277], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "fc", "t0": 0, "ch": "d6", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Ym_d6", "pulse_shape": "drag", "parameters": {"amp": [-3.4745258686188956e-17, -0.18914437866428077], "beta": 0.2819848205131056, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1360, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.18914437866428077, 0.0], "beta": 0.2819848205131056, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u11", "label": "CR90p_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06753165054289072, 0.06211219028837627], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "parametric_pulse", "t0": 1520, "ch": "u11", "label": "CR90m_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06753165054289073, -0.062112190288376265], "duration": 1200, "sigma": 64, "width": 944}}]}, {"name": "id", "qubits": [0], "sequence": [{"name": "QId_d0", "t0": 0, "ch": "d0"}]}, {"name": "id", "qubits": [1], "sequence": [{"name": "QId_d1", "t0": 0, "ch": "d1"}]}, {"name": "id", "qubits": [2], "sequence": [{"name": "QId_d2", "t0": 0, "ch": "d2"}]}, {"name": "id", "qubits": [3], "sequence": [{"name": "QId_d3", "t0": 0, "ch": "d3"}]}, {"name": "id", "qubits": [4], "sequence": [{"name": "QId_d4", "t0": 0, "ch": "d4"}]}, {"name": "id", "qubits": [5], "sequence": [{"name": "QId_d5", "t0": 0, "ch": "d5"}]}, {"name": "id", "qubits": [6], "sequence": [{"name": "QId_d6", "t0": 0, "ch": "d6"}]}, {"name": "measure", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2326983516348827, -0.05874927358196432], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m0", "duration": 1568}, {"name": "acquire", "t0": 0, "duration": 1472, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [0, 1, 2, 3, 4, 5, 6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2326983516348827, -0.05874927358196432], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m0", "duration": 1568}, {"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1302787480423027, -0.29227974238480886], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m1", "duration": 1568}, {"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.28997605721581127, -0.07690179608807937], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m2", "duration": 1568}, {"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13094670048780593, -0.3245812096091775], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m3", "duration": 1568}, {"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.021172504598321786, 0.21897882328899762], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m4", "duration": 1568}, {"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.35999999548803524, 5.6996619325229516e-05], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m5", "duration": 1568}, {"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2333335606135327, -0.1885615270711681], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m6", "duration": 1568}, {"name": "acquire", "t0": 0, "duration": 1472, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1302787480423027, -0.29227974238480886], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m1", "duration": 1568}, {"name": "acquire", "t0": 0, "duration": 1472, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.28997605721581127, -0.07690179608807937], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m2", "duration": 1568}, {"name": "acquire", "t0": 0, "duration": 1472, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13094670048780593, -0.3245812096091775], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m3", "duration": 1568}, {"name": "acquire", "t0": 0, "duration": 1472, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.021172504598321786, 0.21897882328899762], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m4", "duration": 1568}, {"name": "acquire", "t0": 0, "duration": 1472, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.35999999548803524, 5.6996619325229516e-05], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m5", "duration": 1568}, {"name": "acquire", "t0": 0, "duration": 1472, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2333335606135327, -0.1885615270711681], "duration": 1472, "sigma": 64, "width": 1216}}, {"name": "delay", "t0": 1472, "ch": "m6", "duration": 1568}, {"name": "acquire", "t0": 0, "duration": 1472, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "rz", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}]}, {"name": "sx", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.08028684056150216, 0.0009441951251258224], "beta": -0.3176025535596349, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1063777054170297, -0.0002605979775954761], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.07467637909447875, 0.0017349842744856267], "beta": -1.828679341512514, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.08212218511603157, -0.0001240238976782344], "beta": 0.5360384031224531, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09052534800091389, 0.0005215139379359441], "beta": -0.22112444563867778, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09203137046859432, 0.0001843340752095996], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.09482627631708003, -0.0001378628323857269], "beta": 0.0704083149311823, "duration": 160, "sigma": 40}}]}, {"name": "u1", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [-0.0009441951251258176, 0.08028684056150216], "beta": -0.3176025535596349, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00026059797759549197, 0.1063777054170297], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u5", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.001734984274485623, 0.07467637909447875], "beta": -1.828679341512514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.00012402389767824092, 0.08212218511603157], "beta": 0.5360384031224531, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u8", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.0005215139379359454, 0.09052534800091389], "beta": -0.22112444563867778, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.00018433407520959663, 0.09203137046859432], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Y90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.00013786283238574086, 0.09482627631708003], "beta": 0.0704083149311823, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}]}, {"name": "u3", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.08028684056150216, 0.0009441951251258224], "beta": -0.3176025535596349, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d0", "label": "X90m_d0", "pulse_shape": "drag", "parameters": {"amp": [-0.08028684056150216, -0.0009441951251257948], "beta": -0.3176025535596349, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u1", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1063777054170297, -0.0002605979775954761], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d1", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "X90m_d1", "pulse_shape": "drag", "parameters": {"amp": [-0.1063777054170297, 0.00026059797759547484], "beta": -2.749977333902907, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d1", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u5", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u5", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.07467637909447875, 0.0017349842744856267], "beta": -1.828679341512514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "X90m_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.07467637909447875, -0.0017349842744856182], "beta": -1.828679341512514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d2", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u2", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.08212218511603157, -0.0001240238976782344], "beta": 0.5360384031224531, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "X90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.08212218511603157, 0.00012402389767824596], "beta": 0.5360384031224531, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d3", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u3", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u8", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u8", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09052534800091389, 0.0005215139379359441], "beta": -0.22112444563867778, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "X90m_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.09052534800091389, -0.0005215139379359399], "beta": -0.22112444563867778, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u9", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09203137046859432, 0.0001843340752095996], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "X90m_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.09203137046859432, -0.00018433407520959102], "beta": -1.332449795603768, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d5", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u6", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u7", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u7", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.09482627631708003, -0.0001378628323857269], "beta": 0.0704083149311823, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d6", "label": "X90m_d6", "pulse_shape": "drag", "parameters": {"amp": [-0.09482627631708003, 0.0001378628323857467], "beta": 0.0704083149311823, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d6", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u10", "phase": "-(P1)"}]}, {"name": "x", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.1609444717709449, 0.0], "beta": -0.23759198781349172, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.21191631695055452, 0.0], "beta": -2.3056886030954495, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.14864056467668044, 0.0], "beta": -1.6290667006162407, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.16425693507037584, 0.0], "beta": 0.9110282451854017, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.18102457902941863, 0.0], "beta": -0.17543963993345119, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.1836574130911915, 0.0], "beta": -0.8203876811875642, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.18914437866428077, 0.0], "beta": 0.2819848205131056, "duration": 160, "sigma": 40}}]}], "meas_kernel": {"name": "hw_qmfk", "params": {}}, "discriminator": {"name": "hw_qmfk", "params": {}}, "_data": {}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends/perth/fake_perth.py b/qiskit/providers/fake_provider/backends/perth/fake_perth.py new file mode 100644 index 000000000000..d9e7a6c8bdb9 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/perth/fake_perth.py @@ -0,0 +1,29 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + + +""" +Fake Perth device (7 qubits). +""" + +import os +from qiskit.providers.fake_provider import fake_backend + + +class FakePerth(fake_backend.FakeBackendV2): + """A fake 7 qubit backend.""" + + dirname = os.path.dirname(__file__) + conf_filename = "conf_perth.json" + props_filename = "props_perth.json" + defs_filename = "defs_perth.json" + backend_name = "fake_perth" diff --git a/qiskit/providers/fake_provider/backends/perth/props_perth.json b/qiskit/providers/fake_provider/backends/perth/props_perth.json new file mode 100644 index 000000000000..9fee32843672 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/perth/props_perth.json @@ -0,0 +1 @@ +{"backend_name": "ibm_perth", "backend_version": "1.1.26", "last_update_date": "2022-07-13T22:00:27+02:00", "qubits": [[{"date": "2022-07-13T21:11:10+02:00", "name": "T1", "unit": "us", "value": 200.89953443278273}, {"date": "2022-07-13T06:15:57+02:00", "name": "T2", "unit": "us", "value": 94.6383136187882}, {"date": "2022-07-13T22:00:27+02:00", "name": "frequency", "unit": "GHz", "value": 5.157546043297998}, {"date": "2022-07-13T22:00:27+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3415245174784648}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_error", "unit": "", "value": 0.023700000000000054}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.028800000000000048}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0186}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_length", "unit": "ns", "value": 675.5555555555555}], [{"date": "2022-07-13T21:12:22+02:00", "name": "T1", "unit": "us", "value": 166.2728847605733}, {"date": "2022-07-13T06:16:21+02:00", "name": "T2", "unit": "us", "value": 66.15410809090078}, {"date": "2022-07-13T22:00:27+02:00", "name": "frequency", "unit": "GHz", "value": 5.033691457253806}, {"date": "2022-07-13T22:00:27+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3443687022163673}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_error", "unit": "", "value": 0.01739999999999997}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.01959999999999995}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0152}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_length", "unit": "ns", "value": 675.5555555555555}], [{"date": "2022-07-13T21:11:10+02:00", "name": "T1", "unit": "us", "value": 263.42350263617857}, {"date": "2022-07-13T06:15:57+02:00", "name": "T2", "unit": "us", "value": 157.76719815467376}, {"date": "2022-07-13T22:00:27+02:00", "name": "frequency", "unit": "GHz", "value": 4.862635459406973}, {"date": "2022-07-13T22:00:27+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3472724723347956}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_error", "unit": "", "value": 0.014900000000000024}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.015000000000000013}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0148}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_length", "unit": "ns", "value": 675.5555555555555}], [{"date": "2022-07-13T21:11:10+02:00", "name": "T1", "unit": "us", "value": 100.68605678701991}, {"date": "2022-07-13T06:15:57+02:00", "name": "T2", "unit": "us", "value": 130.5117099541707}, {"date": "2022-07-13T22:00:27+02:00", "name": "frequency", "unit": "GHz", "value": 5.125269059177807}, {"date": "2022-07-13T22:00:27+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3404418992142746}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_error", "unit": "", "value": 0.012899999999999912}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0156}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.010199999999999987}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_length", "unit": "ns", "value": 675.5555555555555}], [{"date": "2022-07-13T21:11:10+02:00", "name": "T1", "unit": "us", "value": 82.20132528271266}, {"date": "2022-07-13T06:15:57+02:00", "name": "T2", "unit": "us", "value": 61.0443994686073}, {"date": "2022-07-13T22:00:27+02:00", "name": "frequency", "unit": "GHz", "value": 5.159221243756982}, {"date": "2022-07-13T22:00:27+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33336653711831216}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_error", "unit": "", "value": 0.02200000000000002}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.021}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.02300000000000002}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_length", "unit": "ns", "value": 675.5555555555555}], [{"date": "2022-07-13T21:12:22+02:00", "name": "T1", "unit": "us", "value": 147.38039983096064}, {"date": "2022-07-13T06:16:21+02:00", "name": "T2", "unit": "us", "value": 129.54620235583573}, {"date": "2022-07-13T22:00:27+02:00", "name": "frequency", "unit": "GHz", "value": 4.978609543928158}, {"date": "2022-07-13T22:00:27+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3460220316533784}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_error", "unit": "", "value": 0.020399999999999974}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.02859999999999996}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0122}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_length", "unit": "ns", "value": 675.5555555555555}], [{"date": "2022-07-13T21:11:10+02:00", "name": "T1", "unit": "us", "value": 189.41073451761088}, {"date": "2022-07-13T06:15:57+02:00", "name": "T2", "unit": "us", "value": 250.3269208865661}, {"date": "2022-07-13T22:00:27+02:00", "name": "frequency", "unit": "GHz", "value": 5.156651195298073}, {"date": "2022-07-13T22:00:27+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34045439072670325}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_error", "unit": "", "value": 0.006199999999999983}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.008199999999999985}, {"date": "2022-07-13T06:13:55+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0042}, {"date": "2022-07-13T06:13:55+02:00", "name": "readout_length", "unit": "ns", "value": 675.5555555555555}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2022-07-13T06:18:37+02:00", "name": "gate_error", "unit": "", "value": 0.00016177923123429183}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.0002861298613477165}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.0003127255716463821}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.00029484519077026874}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2022-07-13T06:18:37+02:00", "name": "gate_error", "unit": "", "value": 0.0006604332464016349}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [5], "gate": "id", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.000337102497347558}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id5"}, {"qubits": [6], "gate": "id", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.00037504932861693127}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id6"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [5], "gate": "rz", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz5"}, {"qubits": [6], "gate": "rz", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz6"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2022-07-13T06:18:37+02:00", "name": "gate_error", "unit": "", "value": 0.00016177923123429183}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.0002861298613477165}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.0003127255716463821}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.00029484519077026874}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2022-07-13T06:18:37+02:00", "name": "gate_error", "unit": "", "value": 0.0006604332464016349}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [5], "gate": "sx", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.000337102497347558}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx5"}, {"qubits": [6], "gate": "sx", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.00037504932861693127}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx6"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2022-07-13T06:18:37+02:00", "name": "gate_error", "unit": "", "value": 0.00016177923123429183}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.0002861298613477165}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.0003127255716463821}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.00029484519077026874}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2022-07-13T06:18:37+02:00", "name": "gate_error", "unit": "", "value": 0.0006604332464016349}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [5], "gate": "x", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.000337102497347558}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x5"}, {"qubits": [6], "gate": "x", "parameters": [{"date": "2022-07-13T06:16:45+02:00", "name": "gate_error", "unit": "", "value": 0.00037504932861693127}, {"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x6"}, {"qubits": [6, 5], "gate": "cx", "parameters": [{"date": "2022-07-13T06:42:01+02:00", "name": "gate_error", "unit": "", "value": 0.012708533536706618}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 604.4444444444445}], "name": "cx6_5"}, {"qubits": [5, 6], "gate": "cx", "parameters": [{"date": "2022-07-13T06:42:01+02:00", "name": "gate_error", "unit": "", "value": 0.012708533536706618}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 640}], "name": "cx5_6"}, {"qubits": [4, 5], "gate": "cx", "parameters": [{"date": "2022-07-13T06:38:20+02:00", "name": "gate_error", "unit": "", "value": 0.019482343465518498}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 590.2222222222222}], "name": "cx4_5"}, {"qubits": [5, 4], "gate": "cx", "parameters": [{"date": "2022-07-13T06:38:20+02:00", "name": "gate_error", "unit": "", "value": 0.019482343465518498}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 625.7777777777777}], "name": "cx5_4"}, {"qubits": [3, 5], "gate": "cx", "parameters": [{"date": "2022-07-13T06:34:40+02:00", "name": "gate_error", "unit": "", "value": 0.00901246494553054}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 284.44444444444446}], "name": "cx3_5"}, {"qubits": [5, 3], "gate": "cx", "parameters": [{"date": "2022-07-13T06:34:40+02:00", "name": "gate_error", "unit": "", "value": 0.00901246494553054}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 320}], "name": "cx5_3"}, {"qubits": [3, 1], "gate": "cx", "parameters": [{"date": "2022-07-13T06:30:58+02:00", "name": "gate_error", "unit": "", "value": 0.00846195409719605}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx3_1"}, {"qubits": [1, 3], "gate": "cx", "parameters": [{"date": "2022-07-13T06:30:58+02:00", "name": "gate_error", "unit": "", "value": 0.00846195409719605}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx1_3"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2022-07-13T06:27:00+02:00", "name": "gate_error", "unit": "", "value": 0.007935151064707213}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 320}], "name": "cx2_1"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2022-07-13T06:27:00+02:00", "name": "gate_error", "unit": "", "value": 0.007935151064707213}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx1_2"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2022-07-13T06:22:04+02:00", "name": "gate_error", "unit": "", "value": 0.007029932355712976}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2022-07-13T06:22:04+02:00", "name": "gate_error", "unit": "", "value": 0.007029932355712976}, {"date": "2022-07-10T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx1_0"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 796.4444444444443}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 768}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 888.8888888888888}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 796.4444444444443}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 796.4444444444443}], "name": "reset4"}, {"qubits": [5], "gate": "reset", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 796.4444444444443}], "name": "reset5"}, {"qubits": [6], "gate": "reset", "parameters": [{"date": "2022-07-13T22:00:27+02:00", "name": "gate_length", "unit": "ns", "value": 796.4444444444443}], "name": "reset6"}], "general": [{"date": "2022-07-13T22:00:27+02:00", "name": "jq_01", "unit": "GHz", "value": 4.750927358892559e-05}, {"date": "2022-07-13T22:00:27+02:00", "name": "zz_01", "unit": "GHz", "value": -1.0530821573059075e-07}, {"date": "2022-07-13T22:00:27+02:00", "name": "jq_12", "unit": "GHz", "value": 0.0014522347961531108}, {"date": "2022-07-13T22:00:27+02:00", "name": "zz_12", "unit": "GHz", "value": 0.0007376049216693799}, {"date": "2022-07-13T22:00:27+02:00", "name": "jq_45", "unit": "GHz", "value": 0.0030490571541115876}, {"date": "2022-07-13T22:00:27+02:00", "name": "zz_45", "unit": "GHz", "value": -0.00016199158325019491}, {"date": "2022-07-13T22:00:27+02:00", "name": "jq_56", "unit": "GHz", "value": 0.002990306925182959}, {"date": "2022-07-13T22:00:27+02:00", "name": "zz_56", "unit": "GHz", "value": -0.0001613397318471186}, {"date": "2022-07-13T22:00:27+02:00", "name": "jq_13", "unit": "GHz", "value": 5.4831985295249893e-05}, {"date": "2022-07-13T22:00:27+02:00", "name": "zz_13", "unit": "GHz", "value": -6.126956847263501e-09}, {"date": "2022-07-13T22:00:27+02:00", "name": "jq_35", "unit": "GHz", "value": 0.002197212188220339}, {"date": "2022-07-13T22:00:27+02:00", "name": "zz_35", "unit": "GHz", "value": -7.467037221625553e-05}]} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/fake_provider.py b/qiskit/providers/fake_provider/fake_provider.py index 41b69e4ae30a..ce75db248ddd 100644 --- a/qiskit/providers/fake_provider/fake_provider.py +++ b/qiskit/providers/fake_provider/fake_provider.py @@ -116,6 +116,7 @@ def __init__(self): FakeNairobiV2(), FakeOurenseV2(), FakeParisV2(), + FakePerth(), FakePoughkeepsieV2(), FakeQuitoV2(), FakeRochesterV2(), diff --git a/releasenotes/notes/ibm_perth-5b1e9308dc302e2e.yaml b/releasenotes/notes/ibm_perth-5b1e9308dc302e2e.yaml new file mode 100644 index 000000000000..9412705cd19e --- /dev/null +++ b/releasenotes/notes/ibm_perth-5b1e9308dc302e2e.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The fake backend :class:`~FakePerth` was added with the information + from IBM Quantum `ibm_perth` system. From 4b5a5bf45e1a75efd6eb299f60e4c44aec9e0a06 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Mon, 19 Sep 2022 14:01:23 +0200 Subject: [PATCH 25/56] Add FakeOslo backend to fake provider (#8358) * adding FakeOslo * Update releasenotes/notes/fake_oslo-7bba98d7269f959b.yaml * only v2 * put FakePerth back --- qiskit/providers/fake_provider/__init__.py | 1 + .../fake_provider/backends/__init__.py | 1 + .../fake_provider/backends/oslo/__init__.py | 15 ++++++++++ .../backends/oslo/conf_oslo.json | 1 + .../backends/oslo/defs_oslo.json | 1 + .../fake_provider/backends/oslo/fake_oslo.py | 29 +++++++++++++++++++ .../backends/oslo/props_oslo.json | 1 + .../providers/fake_provider/fake_provider.py | 1 + .../notes/fake_oslo-7bba98d7269f959b.yaml | 4 +++ 9 files changed, 54 insertions(+) create mode 100644 qiskit/providers/fake_provider/backends/oslo/__init__.py create mode 100644 qiskit/providers/fake_provider/backends/oslo/conf_oslo.json create mode 100644 qiskit/providers/fake_provider/backends/oslo/defs_oslo.json create mode 100644 qiskit/providers/fake_provider/backends/oslo/fake_oslo.py create mode 100644 qiskit/providers/fake_provider/backends/oslo/props_oslo.json create mode 100644 releasenotes/notes/fake_oslo-7bba98d7269f959b.yaml diff --git a/qiskit/providers/fake_provider/__init__.py b/qiskit/providers/fake_provider/__init__.py index 4e7eec90ef5d..b729849bafab 100644 --- a/qiskit/providers/fake_provider/__init__.py +++ b/qiskit/providers/fake_provider/__init__.py @@ -134,6 +134,7 @@ FakeMontrealV2 FakeMumbaiV2 FakeNairobiV2 + FakeOslo FakeOurenseV2 FakeParisV2 FakePerth diff --git a/qiskit/providers/fake_provider/backends/__init__.py b/qiskit/providers/fake_provider/backends/__init__.py index db12f58adc0c..4b7fb8df37fa 100644 --- a/qiskit/providers/fake_provider/backends/__init__.py +++ b/qiskit/providers/fake_provider/backends/__init__.py @@ -42,6 +42,7 @@ from .montreal import FakeMontrealV2 from .mumbai import FakeMumbaiV2 from .nairobi import FakeNairobiV2 +from .oslo import FakeOslo from .ourense import FakeOurenseV2 from .paris import FakeParisV2 from .perth import FakePerth diff --git a/qiskit/providers/fake_provider/backends/oslo/__init__.py b/qiskit/providers/fake_provider/backends/oslo/__init__.py new file mode 100644 index 000000000000..a8b829d3b5dd --- /dev/null +++ b/qiskit/providers/fake_provider/backends/oslo/__init__.py @@ -0,0 +1,15 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Fake Oslo device (7 qubits)""" + +from .fake_oslo import FakeOslo diff --git a/qiskit/providers/fake_provider/backends/oslo/conf_oslo.json b/qiskit/providers/fake_provider/backends/oslo/conf_oslo.json new file mode 100644 index 000000000000..1de5c9cfd60f --- /dev/null +++ b/qiskit/providers/fake_provider/backends/oslo/conf_oslo.json @@ -0,0 +1 @@ +{"backend_name": "ibm_oslo", "backend_version": "1.0.5", "n_qubits": 7, "basis_gates": ["id", "rz", "sx", "x", "cx", "reset"], "gates": [{"name": "id", "parameters": [], "qasm_def": "gate id q { U(0, 0, 0) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 5], [4, 5], [5, 3], [5, 4], [5, 6], [6, 5]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": false, "memory": true, "max_shots": 100000, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 5], [4, 5], [5, 3], [5, 4], [5, 6], [6, 5]], "dynamic_reprate_enabled": true, "supported_instructions": ["cx", "u1", "measure", "reset", "u2", "shiftf", "delay", "rz", "play", "id", "u3", "acquire", "x", "setf", "sx"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 300, "sample_name": "family: Falcon, revision: 5.11, segment: H", "n_registers": 1, "credits_required": true, "online_date": "2022-03-25T04:00:00+00:00", "description": "7 qubit device", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Falcon", "revision": "5.11", "segment": "H"}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "clops": 2645, "measure_esp_enabled": false, "multi_meas_enabled": true, "parallel_compilation": false, "quantum_volume": 32, "qubit_channel_mapping": [["u0", "d0", "u1", "m0"], ["u1", "u2", "d1", "u5", "u0", "u4", "m1", "u3"], ["d2", "u2", "u4", "m2"], ["d3", "m3", "u5", "u3", "u6", "u8"], ["u9", "d4", "u7", "m4"], ["u10", "u11", "u9", "d5", "u7", "u6", "u8", "m5"], ["m6", "d6", "u11", "u10"]], "supported_features": ["qobj"], "timing_constraints": {"acquire_alignment": 16, "granularity": 16, "min_length": 64, "pulse_alignment": 16}, "uchannels_enabled": true, "url": "None", "input_allowed": ["job", "runtime"], "allow_object_storage": true, "pulse_num_channels": 9, "pulse_num_qubits": 3, "live_data": false, "n_uchannels": 12, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 6, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.425043161619499, 5.425043161619499], [4.54627284903205, 5.54627284903205], [4.4619984906787, 5.4619984906787], [4.608098767473062, 5.608098767473062], [4.511074105950458, 5.511074105950458], [4.673290077743308, 5.673290077743308], [4.819311606468152, 5.819311606468152]], "meas_lo_range": [[6.729836446, 7.729836446], [6.604835349, 7.604835349000001], [6.8306589760000005, 7.8306589760000005], [6.632327716000001, 7.632327716000001], [6.713651857, 7.713651857], [6.812390622000001, 7.812390622000001], [6.7878388140000006, 7.7878388140000006]], "meas_kernels": ["hw_qmfk"], "discriminators": ["linear_discriminator", "hw_qmfk", "quadratic_discriminator"], "rep_times": [1000.0], "meas_map": [[0, 1, 2, 3, 4, 5, 6]], "acquisition_latency": [], "conditional_latency": [], "hamiltonian": {"description": "Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\n\n$(\\mathbb{I}-\\sigma_{i}^z)/2 \\rightarrow O_i \\equiv b^\\dagger_{i} b_{i}$,\n\n$\\sigma_{+} \\rightarrow b^\\dagger$,\n\n$\\sigma_{-} \\rightarrow b$,\n\n$\\sigma_{i}^X \\rightarrow b^\\dagger_{i} + b_{i}$.\n\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\n\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\n\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\n", "h_latex": "\\begin{align} \\mathcal{H}/\\hbar = & \\sum_{i=0}^{6}\\left(\\frac{\\omega_{q,i}}{2}(\\mathbb{I}-\\sigma_i^{z})+\\frac{\\Delta_{i}}{2}(O_i^2-O_i)+\\Omega_{d,i}D_i(t)\\sigma_i^{X}\\right) \\\\ & + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) + J_{4,5}(\\sigma_{4}^{+}\\sigma_{5}^{-}+\\sigma_{4}^{-}\\sigma_{5}^{+}) + J_{5,6}(\\sigma_{5}^{+}\\sigma_{6}^{-}+\\sigma_{5}^{-}\\sigma_{6}^{+}) \\\\ & + J_{1,3}(\\sigma_{1}^{+}\\sigma_{3}^{-}+\\sigma_{1}^{-}\\sigma_{3}^{+}) + J_{3,5}(\\sigma_{3}^{+}\\sigma_{5}^{-}+\\sigma_{3}^{-}\\sigma_{5}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,3)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{5}^{(3,1)}(t)+U_{6}^{(3,5)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{7}^{(4,5)}(t))\\sigma_{4}^{X} + \\Omega_{d,5}(U_{8}^{(5,3)}(t)+U_{10}^{(5,6)}(t)+U_{9}^{(5,4)}(t))\\sigma_{5}^{X} \\\\ & + \\Omega_{d,6}(U_{11}^{(6,5)}(t))\\sigma_{6}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,6,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,6,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,6,-delta{i}/2*O{i}]", "_SUM[i,0,6,omegad{i}*X{i}||D{i}]", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "jq4q5*Sp4*Sm5", "jq4q5*Sm4*Sp5", "jq5q6*Sp5*Sm6", "jq5q6*Sm5*Sp6", "jq1q3*Sp1*Sm3", "jq1q3*Sm1*Sp3", "jq3q5*Sp3*Sm5", "jq3q5*Sm3*Sp5", "omegad1*X0||U0", "omegad0*X1||U1", "omegad3*X1||U3", "omegad2*X1||U2", "omegad1*X2||U4", "omegad1*X3||U5", "omegad5*X3||U6", "omegad5*X4||U7", "omegad3*X5||U8", "omegad6*X5||U10", "omegad4*X5||U9", "omegad5*X6||U11"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3, "5": 3, "6": 3}, "vars": {"delta0": -2.1710731135187147, "delta1": -2.1542170061400743, "delta2": -2.163170672110012, "delta3": -2.1485510754736845, "delta4": -2.1651009023029526, "delta5": -2.154771444964597, "delta6": -2.128894839231473, "jq0q1": 0.01984891041244237, "jq1q2": 0.019839140193104857, "jq1q3": 0.014778217170848052, "jq3q5": 0.020747024193950764, "jq4q5": 0.020361306329770044, "jq5q6": 0.010931407400838719, "omegad0": 1.0653674870347911, "omegad1": 1.103779874643512, "omegad2": 0.9848018924014904, "omegad3": 0.9820860734963635, "omegad4": 0.9675082231273433, "omegad5": 1.0188554881910525, "omegad6": 1.1944151797596076, "wq0": 30.944958830312927, "wq1": 31.70666742105745, "wq2": 31.177156010879695, "wq3": 32.0951311234089, "wq4": 31.485507195696, "wq5": 32.504740206254695, "wq6": 33.42222053007053}}, "channels": {"acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, "acquire2": {"operates": {"qubits": [2]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "acquire5": {"operates": {"qubits": [5]}, "purpose": "acquire", "type": "acquire"}, "acquire6": {"operates": {"qubits": [6]}, "purpose": "acquire", "type": "acquire"}, "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, "d2": {"operates": {"qubits": [2]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "d5": {"operates": {"qubits": [5]}, "purpose": "drive", "type": "drive"}, "d6": {"operates": {"qubits": [6]}, "purpose": "drive", "type": "drive"}, "m0": {"operates": {"qubits": [0]}, "purpose": "measure", "type": "measure"}, "m1": {"operates": {"qubits": [1]}, "purpose": "measure", "type": "measure"}, "m2": {"operates": {"qubits": [2]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "m5": {"operates": {"qubits": [5]}, "purpose": "measure", "type": "measure"}, "m6": {"operates": {"qubits": [6]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u10": {"operates": {"qubits": [5, 6]}, "purpose": "cross-resonance", "type": "control"}, "u11": {"operates": {"qubits": [6, 5]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 3]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [3, 1]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 5]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [4, 5]}, "purpose": "cross-resonance", "type": "control"}, "u8": {"operates": {"qubits": [5, 3]}, "purpose": "cross-resonance", "type": "control"}, "u9": {"operates": {"qubits": [5, 4]}, "purpose": "cross-resonance", "type": "control"}}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends/oslo/defs_oslo.json b/qiskit/providers/fake_provider/backends/oslo/defs_oslo.json new file mode 100644 index 000000000000..8e330ef3e90b --- /dev/null +++ b/qiskit/providers/fake_provider/backends/oslo/defs_oslo.json @@ -0,0 +1 @@ +{"qubit_freq_est": [4.925043161619499, 5.04627284903205, 4.9619984906787, 5.108098767473062, 5.011074105950458, 5.173290077743308, 5.319311606468152], "meas_freq_est": [7.229836446, 7.104835349, 7.3306589760000005, 7.132327716000001, 7.213651857, 7.312390622000001, 7.2878388140000006], "buffer": 0, "pulse_library": [{"name": "CX_d1_u0", "samples": [[-7.307217310881242e-05, 5.839001460117288e-06], [-0.00014786572137381881, 1.1815553989436012e-05], [-0.00022439777967520058, 1.793102637748234e-05], [-0.0003026846970897168, 2.4186723749153316e-05], [-0.00038274205871857703, 3.058389120269567e-05], [-0.00046458456199616194, 3.712370744324289e-05], [-0.0005482261185534298, 4.3807278416352347e-05], [-0.0006336795631796122, 5.0635637308005244e-05], [-0.0007209570030681789, 5.760974090662785e-05], [-0.0008100693230517209, 6.473046960309148e-05], [-0.0009010264766402543, 7.199861283879727e-05], [-0.0009938373696058989, 7.941488001961261e-05], [-0.0010885096853598952, 8.697989687789232e-05], [-0.0011850501177832484, 9.4694180006627e-05], [-0.0012834640219807625, 0.00010255817323923111], [-0.0013837554724887013, 0.00011057218944188207], [-0.0014859273796901107, 0.00011873647599713877], [-0.0015899812569841743, 0.0001270511420443654], [-0.0016959173372015357, 0.00013551620941143483], [-0.0018037344561889768, 0.00014413159806281328], [-0.0019134300528094172, 0.0001528970751678571], [-0.0020249998196959496, 0.0001618123205844313], [-0.0021384384017437696, 0.00017087689775507897], [-0.002253738697618246, 0.00018009022460319102], [-0.00237089185975492, 0.0001894516171887517], [-0.0024898876436054707, 0.000198960246052593], [-0.0026107141748070717, 0.0002086151798721403], [-0.0027333577163517475, 0.000218415298149921], [-0.0028578033670783043, 0.0002283594076288864], [-0.0029840338975191116, 0.00023844615498092026], [-0.0031120306812226772, 0.00024867404135875404], [-0.003241772996261716, 0.0002590414078440517], [-0.003373238956555724, 0.00026954649365507066], [-0.003506404347717762, 0.0002801873779390007], [-0.00364124309271574, 0.0002909619943238795], [-0.0037777277175337076, 0.00030186810181476176], [-0.003915828187018633, 0.000312903372105211], [-0.00405551353469491, 0.00032406524405814707], [-0.004196750465780497, 0.0003353510983288288], [-0.00433950312435627, 0.0003467580827418715], [-0.0044837347231805325, 0.0003582832287065685], [-0.004629406146705151, 0.0003699234512168914], [-0.004776476416736841, 0.0003816754324361682], [-0.004924902692437172, 0.0003935357672162354], [-0.005074639804661274, 0.00040550087578594685], [-0.005225641652941704, 0.00041756703285500407], [-0.005377859342843294, 0.0004297303385101259], [-0.005531242582947016, 0.0004419867764227092], [-0.005685738753527403, 0.00045433215564116836], [-0.005841293837875128, 0.0004667621396947652], [-0.005997851490974426, 0.00047927224659360945], [-0.006155353970825672, 0.000491857819724828], [-0.00631374167278409, 0.0005045142024755478], [-0.006472953129559755, 0.0005172363598830998], [-0.006632925011217594, 0.0005300192860886455], [-0.006793592590838671, 0.0005428578006103635], [-0.006954888813197613, 0.0005557465483434498], [-0.007116745691746473, 0.0005686801159754395], [-0.007279093377292156, 0.000581652857363224], [-0.007441860157996416, 0.0005946591263636947], [-0.007604972925037146, 0.0006076930440030992], [-0.007768357638269663, 0.0006207486731000245], [-0.007931937463581562, 0.0006338199018500745], [-0.0080956369638443, 0.0006469006184488535], [-0.008259374648332596, 0.0006599845364689827], [-0.008423073217272758, 0.0006730651948601007], [-0.008586649782955647, 0.0006861361907795072], [-0.008750022388994694, 0.0006991908885538578], [-0.008913109079003334, 0.0007122226525098085], [-0.009075823239982128, 0.0007252247305586934], [-0.009238080121576786, 0.0007381902541965246], [-0.009399794042110443, 0.0007511124131269753], [-0.00956087838858366, 0.0007639841642230749], [-0.009721243754029274, 0.0007767985225655138], [-0.009880801662802696, 0.0007895483868196607], [-0.010039464570581913, 0.0008022267138585448], [-0.010197141207754612, 0.0008148262859322131], [-0.010353743098676205, 0.0008273398852907121], [-0.010509178042411804, 0.0008397602941840887], [-0.010663356631994247, 0.0008520802948623896], [-0.010816188529133797, 0.0008642926113680005], [-0.01096758060157299, 0.0008763900259509683], [-0.011117443442344666, 0.0008883651462383568], [-0.011265686713159084, 0.0009002108708955348], [-0.01141221821308136, 0.000911919807549566], [-0.011556949466466904, 0.0009234848548658192], [-0.011699788272380829, 0.0009348987368866801], [-0.011840646155178547, 0.0009461542940698564], [-0.01197943463921547, 0.0009572444832883775], [-0.012116063386201859, 0.000968162203207612], [-0.01225044671446085, 0.0009789004689082503], [-0.01238249707967043, 0.0009894522372633219], [-0.012512128800153732, 0.0009998107561841607], [-0.012639256194233894, 0.001009969157166779], [-0.012763796374201775, 0.0010199208045378327], [-0.012885666452348232, 0.0010296590626239777], [-0.013004784472286701, 0.0010391775285825133], [-0.013121071271598339, 0.0010484695667400956], [-0.013234446756541729, 0.0010575292399153113], [-0.013344836421310902, 0.00106635014526546], [-0.013452163897454739, 0.0010749263456091285], [-0.01355635467916727, 0.0010832520201802254], [-0.013657337985932827, 0.0010913212317973375], [-0.013755043968558311, 0.0010991287417709827], [-0.013849403709173203, 0.0011066687293350697], [-0.013940352946519852, 0.0011139361886307597], [-0.014027826488018036, 0.0011209259973838925], [-0.01411176286637783, 0.0011276332661509514], [-0.01419210433959961, 0.0011340531054884195], [-0.014268793165683746, 0.0011401809751987457], [-0.014341773465275764, 0.0011460126843303442], [-0.014410994946956635, 0.0011515440419316292], [-0.014476408250629902, 0.0011567709734663367], [-0.014537964947521687, 0.0011616898700594902], [-0.014595621265470982, 0.0011662970064207911], [-0.014649337157607079, 0.0011705892393365502], [-0.014699071645736694, 0.0011745634255930781], [-0.014744790270924568, 0.0011782166548073292], [-0.014786459505558014, 0.0011815463658422232], [-0.014824047684669495, 0.00118454999756068], [-0.014857529662549496, 0.0011872254544869065], [-0.014886880293488503, 0.001189570757560432], [-0.014912078157067299, 0.0011915841605514288], [-0.014933103695511818, 0.001193264382891357], [-0.01494994293898344, 0.0011946099111810327], [-0.014962583780288696, 0.0011956199305132031], [-0.014971015974879265, 0.0011962937423959374], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.014975760132074356, 0.0011966729070991278], [-0.01497290562838316, 0.0011963318102061749], [-0.014967833645641804, 0.001195725635625422], [-0.014960229396820068, 0.0011948170140385628], [-0.014950099401175976, 0.0011936065275222063], [-0.014937451109290123, 0.0011920949909836054], [-0.014922292903065681, 0.0011902836849913], [-0.014904635958373547, 0.0011881738901138306], [-0.014884494245052338, 0.0011857670033350587], [-0.014861881732940674, 0.0011830648873001337], [-0.014836815185844898, 0.0011800695210695267], [-0.014809312298893929, 0.0011767830001190305], [-0.014779392629861832, 0.0011732077691704035], [-0.014747079461812973, 0.0011693463893607259], [-0.014712394215166569, 0.0011652017710730433], [-0.014675363898277283, 0.0011607767082750797], [-0.014636012725532055, 0.0011560744605958462], [-0.014594371430575848, 0.0011510984040796757], [-0.0145504679530859, 0.0011458521476015449], [-0.014504333958029747, 0.0011403393000364304], [-0.014456002973020077, 0.0011345639359205961], [-0.01440550945699215, 0.001128530129790306], [-0.014352886937558651, 0.001122242072597146], [-0.01429817546159029, 0.0011157040717080235], [-0.014241410419344902, 0.0011089210165664554], [-0.014182633720338345, 0.001101897330954671], [-0.014121884480118752, 0.0010946381371468306], [-0.01405920647084713, 0.001087148324586451], [-0.013994641602039337, 0.0010794330155476928], [-0.01392823364585638, 0.0010714975651353598], [-0.013860030099749565, 0.0010633474448695779], [-0.013790074735879898, 0.001054988126270473], [-0.013718416914343834, 0.0010464253136888146], [-0.013645103201270103, 0.0010376645950600505], [-0.013570183888077736, 0.0010287120239809155], [-0.013493707403540611, 0.0010195733048021793], [-0.013415724039077759, 0.0010102547239512205], [-0.013336286880075932, 0.0010007622186094522], [-0.013255445286631584, 0.0009911019587889314], [-0.01317325234413147, 0.0009812802309170365], [-0.013089761137962341, 0.0009713034378364682], [-0.013005024753510952, 0.0009611777495592833], [-0.01291909720748663, 0.000950909685343504], [-0.012832030653953552, 0.0009405056480318308], [-0.012743881903588772, 0.0009299721568822861], [-0.012654702179133892, 0.0009193156147375703], [-0.012564549222588539, 0.0009085425990633667], [-0.012473475188016891, 0.0008976596873253584], [-0.012381535954773426, 0.0008866733405739069], [-0.012288786470890045, 0.0008755901362746954], [-0.012195280753076077, 0.0008644165354780853], [-0.012101073749363422, 0.0008531591738574207], [-0.01200621947646141, 0.0008418244542554021], [-0.011910772882401943, 0.0008304188959300518], [-0.011814787052571774, 0.0008189489599317312], [-0.011718315072357655, 0.0008074209908954799], [-0.011621411889791489, 0.0007958413916639984], [-0.01152412872761488, 0.0007842165068723261], [-0.011426519602537155, 0.000772552564740181], [-0.011328634805977345, 0.0007608557352796197], [-0.011230526491999626, 0.0007491321885026991], [-0.011132245883345604, 0.0007373880362138152], [-0.011033843271434307, 0.0007256292155943811], [-0.010935366153717041, 0.0007138617220334709], [-0.01083686575293541, 0.0007020912598818541], [-0.010738389566540718, 0.0006903237081132829], [-0.010639984160661697, 0.0006785646546632051], [-0.010541696101427078, 0.0006668196292594075], [-0.010443571954965591, 0.0006550941616296768], [-0.010345655493438244, 0.0006433936068788171], [-0.010247992351651192, 0.0006317231454886496], [-0.010150623507797718, 0.0006200879579409957], [-0.010053591802716255, 0.0006084931083023548], [-0.00995693914592266, 0.0005969434278085828], [-0.009860703721642494, 0.0005854437476955354], [-0.009764926508069038, 0.0005739987827837467], [-0.009669644758105278, 0.0005626129568554461], [-0.009574895724654198, 0.0005512908101081848], [-0.009480714797973633, 0.0005400365334935486], [-0.009387137368321419, 0.0005288543761707842], [-0.009294196963310242, 0.0005177483544684947], [-0.009201925247907639, 0.0005067223100923002], [-0.009110355749726295, 0.0004957800847478211], [-0.009019517339766026, 0.0004849252291023731], [-0.008929438889026642, 0.00047416126471944153], [-0.008840150199830532, 0.0004634915676433593], [-0.00875167641788721, 0.0004529193392954767], [-0.008664044551551342, 0.00044244766468182206], [-0.008577278815209866, 0.0004320794832892716], [-0.008491402491927147, 0.00042181764729321003], [-0.008406438864767551, 0.000411664746934548], [-0.008322407491505146, 0.00040162340155802667], [-0.008239329792559147, 0.0003916959394700825], [-0.008157224394381046, 0.0003818846889771521], [-0.008076108992099762, 0.00037219171645119786], [-0.007996000349521637, 0.00036261905916035175], [-0.00791691429913044, 0.00035316855064593256], [-0.00783886481076479, 0.00034384193713776767], [-0.007761865388602018, 0.0003346408193465322], [-0.007685928605496883, 0.0003255666815675795], [-0.00761106563732028, 0.00031662083347328007], [-0.007537286728620529, 0.00030780452652834356], [-0.0074646007269620895, 0.00029911883757449687], [-0.007393016014248133, 0.0002905647561419755], [-0.007322540041059256, 0.0002821431262418628], [-0.007253178395330906, 0.0002738547045737505], [-0.007184937130659819, 0.0002657001023180783], [-0.007117819506675005, 0.00025767984334379435], [-0.007051829714328051, 0.0002497943351045251], [-0.006986970081925392, 0.0002420438249828294], [-0.006923241540789604, 0.0002344285458093509], [-0.006860645487904549, 0.00022694857034366578], [-0.0067991819232702255, 0.000219603898585774], [-0.006738849449902773, 0.0002123943850165233], [-0.0066796462051570415, 0.00020531985501293093], [-0.006621569860726595, 0.00019837998843286186], [-0.006564617622643709, 0.00019157440692652017], [-0.0065087852999567986, 0.00018490264483261853], [-0.006454067770391703, 0.00017836413462646306], [-0.006400460377335548, 0.0001719582505756989], [-0.0063479566015303135, 0.00016568426508456469], [-0.006296550389379263, 0.00015954139234963804], [-0.0062462338246405125, 0.00015352877380792052], [-0.006196999456733465, 0.00014764547813683748], [-0.006148839369416237, 0.0001418905012542382], [-0.006101743783801794, 0.00013626280997414142], [-0.006055704317986965, 0.00013076125469524413], [-0.0060107107274234295, 0.0001253846858162433], [-0.005922794342041016, 0.0001148790106526576], [-0.005877800285816193, 0.00010950243449769914], [-0.005831760820001364, 0.00010400087921880186], [-0.005784665700048208, 9.837318066274747e-05], [-0.005736505147069693, 9.261821105610579e-05], [-0.005687270779162645, 8.673492266098037e-05], [-0.005636954680085182, 8.072229684330523e-05], [-0.005585548002272844, 7.45794313843362e-05], [-0.005533044226467609, 6.830544589320198e-05], [-0.005479436833411455, 6.189955456648022e-05], [-0.005424719303846359, 5.536104436032474e-05], [-0.005368886981159449, 4.86892786284443e-05], [-0.005311934743076563, 4.188370439806022e-05], [-0.005253858398646116, 3.494384145596996e-05], [-0.005194655619561672, 2.7869304176419973e-05], [-0.00513432314619422, 2.0659797883126885e-05], [-0.005072859115898609, 1.3315112482814584e-05], [-0.005010263063013554, 5.8351379266241565e-06], [-0.004946534987539053, -1.7801401099859504e-06], [-0.004881674889475107, -9.530636816634797e-06], [-0.004815685097128153, -1.741616324579809e-05], [-0.0047485679388046265, -2.543642585806083e-05], [-0.004680326208472252, -3.3591022656764835e-05], [-0.004610964562743902, -4.187944432487711e-05], [-0.004540488589555025, -5.030106331105344e-05], [-0.004468903876841068, -5.8855141105595976e-05], [-0.004396218340843916, -6.754082278348505e-05], [-0.004322438966482878, -7.635713700437918e-05], [-0.004247575998306274, -8.5302977822721e-05], [-0.0041716392152011395, -9.437713015358895e-05], [-0.004094639793038368, -0.0001035782479448244], [-0.004016590304672718, -0.00011290485417703167], [-0.0039375037886202335, -0.00012235535541549325], [-0.003857395378872752, -0.0001319280272582546], [-0.003776279976591468, -0.0001416209852322936], [-0.0036941745784133673, -0.00015143226482905447], [-0.0036110971122980118, -0.0001613597123650834], [-0.0035270662046968937, -0.00017140107229351997], [-0.003442102111876011, -0.00018155394354835153], [-0.003356226021423936, -0.00019181580864824355], [-0.003269460052251816, -0.0002021839754888788], [-0.003181828185915947, -0.0002126556501025334], [-0.003093354869633913, -0.00022322787845041603], [-0.003004065714776516, -0.00023389757552649826], [-0.0029139877296984196, -0.0002446615253575146], [-0.002823149086907506, -0.0002555163810029626], [-0.0027315791230648756, -0.00026645863545127213], [-0.0026393081061542034, -0.0002774846798274666], [-0.0025463674683123827, -0.0002885907015297562], [-0.002452789805829525, -0.0002997728588525206], [-0.00235860887914896, -0.0003110271063633263], [-0.002263859612867236, -0.00032234928221441805], [-0.0021685778629034758, -0.0003337350790388882], [-0.00207280064933002, -0.0003451800730545074], [-0.0019765659235417843, -0.00035667975316755474], [-0.0018799128010869026, -0.00036822943366132677], [-0.0017828813288360834, -0.00037982428329996765], [-0.0016855127178132534, -0.00039145947084762156], [-0.0015878488775342703, -0.00040312993223778903], [-0.0014899327652528882, -0.00041483048698864877], [-0.0013918085023760796, -0.0004265559546183795], [-0.001293520792387426, -0.00043830095091834664], [-0.0011951153865084052, -0.00045006003347225487], [-0.0010966387344524264, -0.000461827585240826], [-0.0009981382172554731, -0.00047359801828861237], [-0.0008996619144454598, -0.00048536554095335305], [-0.000801258604042232, -0.0004971243324689567], [-0.000702977878972888, -0.0005088685429655015], [-0.0006048698560334742, -0.0005205920315347612], [-0.0005069853505119681, -0.0005322888609953225], [-0.0004093758179806173, -0.0005439528031274676], [-0.00031209306325763464, -0.0005555777461268008], [-0.0002151895605493337, -0.0005671572871506214], [-0.00011871815513586625, -0.0005786852561868727], [-2.2732094294042327e-05, -0.0005901551921851933], [7.271499634953216e-05, -0.0006015607505105436], [0.0001675692037679255, -0.0006128954701125622], [0.00026177632389590144, -0.0006241528317332268], [0.00035528201260603964, -0.0006353264325298369], [0.0004480316711124033, -0.0006464096368290484], [0.0005399707006290555, -0.0006573959835804999], [0.0006310443277470767, -0.0006682789535261691], [0.0007211979245766997, -0.0006790519109927118], [0.0008103767177090049, -0.0006897084531374276], [0.0008985262829810381, -0.0007002420024946332], [0.0009855922544375062, -0.0007106460398063064], [0.001071520266123116, -0.0007209141040220857], [0.0011562566505745053, -0.0007310397340916097], [0.001239747740328312, -0.0007410165853798389], [0.0013219403335824609, -0.0007508383132517338], [0.0014027816941961646, -0.0007604985148645937], [0.0014822195516899228, -0.000769991020206362], [0.0015602023340761662, -0.0007793096592649817], [0.0016366788186132908, -0.000788448320236057], [0.0017115987138822675, -0.0007974009495228529], [0.0017849121941253543, -0.0008061616099439561], [0.001856570364907384, -0.0008147244807332754], [0.0019265251467004418, -0.0008230837993323803], [0.0019947292748838663, -0.0008312339195981622], [0.002061136532574892, -0.0008391693118028343], [0.0021257014013826847, -0.0008468845626339316], [0.0021883798763155937, -0.0008543744334019721], [0.0022491286508738995, -0.0008616336272098124], [0.0023079058155417442, -0.0008686573128215969], [0.002364670392125845, -0.000875440426170826], [0.002419382566586137, -0.0008819783106446266], [0.0024720043875277042, -0.0008882664260454476], [0.0025224986020475626, -0.0008943002903833985], [0.002570829587057233, -0.0009000756544992328], [0.0026169633492827415, -0.0009055884438566864], [0.002660866593942046, -0.0009108347003348172], [0.0027025083545595407, -0.0009158107568509877], [0.0027418588288128376, -0.0009205130045302212], [0.0027788898441940546, -0.0009249380091205239], [0.0028135746251791716, -0.0009290827438235283], [0.0028458882588893175, -0.000932944065425545], [0.0028758072294294834, -0.000936519296374172], [0.0029033103492110968, -0.0009398057591170073], [0.002928377129137516, -0.0009428011835552752], [0.00295098964124918, -0.0009455032995902002], [0.0029711315874010324, -0.0009479101281613111], [0.0029887878336012363, -0.0009500200394541025], [0.003003946039825678, -0.0009518313454464078], [0.003016594797372818, -0.0009533428237773478], [0.0030267247930169106, -0.0009545533102937043], [0.0030343288090080023, -0.0009554619900882244], [0.0030394012574106455, -0.0009560681064613163], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003042255761101842, -0.0009564092033542693], [0.003041291842237115, -0.0009561061742715538], [0.0030395789071917534, -0.0009555676952004433], [0.003037011018022895, -0.0009547604131512344], [0.003033590270206332, -0.0009536850266158581], [0.0030293187592178583, -0.0009523421758785844], [0.0030242002103477716, -0.0009507330250926316], [0.0030182376503944397, -0.0009488585637882352], [0.003011435968801379, -0.000946720305364579], [0.003003800055012107, -0.0009443197050131857], [0.002995335031300783, -0.0009416585671715438], [0.002986047649756074, -0.0009387388126924634], [0.002975944196805358, -0.0009355625370517373], [0.0029650323558598757, -0.000932132126763463], [0.002953319577500224, -0.0009284499101340771], [0.0029408144764602184, -0.0009245186811313033], [0.0029275263659656048, -0.0009203411755152047], [0.0029134643264114857, -0.0009159204200841486], [0.002898638369515538, -0.0009112595580518246], [0.002883059671148658, -0.0009063619654625654], [0.002866738708689809, -0.0009012310765683651], [0.0028496873565018177, -0.0008958705002442002], [0.0028319174889475107, -0.000890284136403352], [0.002813441678881645, -0.0008844757685437799], [0.002794272731989622, -0.0008784495876170695], [0.002774424385279417, -0.0008722097263671458], [0.0027539099100977182, -0.0008657605503685772], [0.002732743974775076, -0.0008591064834035933], [0.0027109410148113966, -0.000852252182085067], [0.002688515931367874, -0.0008452023030258715], [0.0026654840912669897, -0.0008379616774618626], [0.002641861094161868, -0.000830535136628896], [0.0026176627725362778, -0.0008229278028011322], [0.002592905657365918, -0.0008151447400450706], [0.0025676058139652014, -0.0008071911870501935], [0.002541780471801758, -0.0007990723242983222], [0.0025154463946819305, -0.0007907935651019216], [0.0024886210449039936, -0.0007823603227734566], [0.0024613216519355774, -0.0007737780688330531], [0.0024335659109055996, -0.0007650523912161589], [0.002405371982604265, -0.0007561888778582215], [0.0023767570964992046, -0.0007471931166946888], [0.002347740111872554, -0.0007380708702839911], [0.0023183387238532305, -0.000728827842976898], [0.002288571558892727, -0.0007194697391241789], [0.002258456777781248, -0.0007100023794919252], [0.0022280127741396427, -0.0007004315848462284], [0.0021972579415887594, -0.0006907630595378578], [0.002166211139410734, -0.0006810026825405657], [0.0021348902955651283, -0.0006711562164127827], [0.0021033145021647215, -0.0006612295401282609], [0.002071501687169075, -0.0006512283580377698], [0.0020394702441990376, -0.0006411584909074008], [0.0020072385668754578, -0.0006310257012955844], [0.0019748250488191843, -0.0006208356935530901], [0.0019422476179897785, -0.0006105941720306873], [0.0019095242023468018, -0.0006003067246638238], [0.0018766728462651372, -0.0005899790558032691], [0.0018437110120430589, -0.00057961669517681], [0.0018106562783941627, -0.0005692251143045723], [0.0017775262240320444, -0.0005588098429143429], [0.001744337729178369, -0.0005483762361109257], [0.0017111079068854451, -0.0005379295907914639], [0.0016778534045442939, -0.0005274752038531005], [0.001644590636715293, -0.000517018255777657], [0.0016113360179588199, -0.0005065638106316328], [0.001578105497173965, -0.0004961169324815273], [0.001544914674013853, -0.0004856825980823487], [0.0015117790317162871, -0.00047526558046229184], [0.0014787137042731047, -0.0004648706817533821], [0.0014457335928454995, -0.0004545025294646621], [0.0014128531329333782, -0.0004441657511051744], [0.0013800865272060037, -0.0004338647413533181], [0.001347447745501995, -0.0004236039239913225], [0.0013149501755833626, -0.00041338748997077346], [0.0012826070887967944, -0.0004032196302432567], [0.0012504314072430134, -0.0003931043902412057], [0.0012184354709461331, -0.0003830456698779017], [0.0011866315035149455, -0.0003730473108589649], [0.001155031262896955, -0.000363112980267033], [0.0011236460413783789, -0.00035324625787325203], [0.0010924870148301125, -0.0003434506361372769], [0.0010615646606311202, -0.0003337294328957796], [0.0010308893397450447, -0.0003240858786739409], [0.0010004709474742413, -0.00031452305847778916], [0.000970318797044456, -0.0003050439991056919], [0.0009404422016814351, -0.0002956515527330339], [0.0009108497179113328, -0.00028634839691221714], [0.0008815497276373208, -0.0002771372382994741], [0.000852550205308944, -0.00026802049251273274], [0.0008238586597144604, -0.0002590005751699209], [0.0007954821921885014, -0.0002500797563698143], [0.0007674277294427156, -0.00024126010248437524], [0.000739701499696821, -0.00023254367988556623], [0.0007123096147552133, -0.00022393236577045172], [0.0006852577207610011, -0.00021542792092077434], [0.0006585510564036667, -0.00020703200425487012], [0.000632194452919066, -0.00019874615827575326], [0.0006061925087124109, -0.00019057179451920092], [0.0005805494147352874, -0.00018251023720949888], [0.000555268838070333, -0.00017456266505178064], [0.0005303543875925243, -0.00016673016943968832], [0.0005058090318925679, -0.00015901372535154223], [0.00048163559404201806, -0.00015141420590225607], [0.0004578364605549723, -0.00014393235323950648], [0.0004344137851148844, -0.00013656883675139397], [0.0004113692557439208, -0.00012932422396261245], [0.00038870435673743486, -0.00012219895143061876], [0.00036642022314481437, -0.00011519336840137839], [0.0003445176698733121, -0.0001083077586372383], [0.00032299724989570677, -0.00010154226765735075], [0.000301859196042642, -9.489699004916474e-05], [0.0002811034501064569, -8.837190398480743e-05], [0.00026072972104884684, -8.196690760087222e-05], [0.0002407373976893723, -7.568182627437636e-05], [0.00022112566512078047, -6.951638351893052e-05], [0.00020189341739751399, -6.347024464048445e-05], [0.00018303931574337184, -5.754298763349652e-05], [0.00016456178855150938, -5.173411773284897e-05], [0.00014645903138443828, -4.6043063775869086e-05], [0.00012872903607785702, -4.046919639222324e-05], [0.00011136956891277805, -3.5011809814022854e-05], [9.437817789148539e-05, -2.967014370369725e-05], [7.775225822115317e-05, -2.4443368602078408e-05], [6.148897955426946e-05, -1.9330600480316207e-05], [4.558535874821246e-05, -1.4330898920889013e-05], [3.0038230761419982e-05, -9.443269846087787e-06], [1.4844269571767654e-05, -4.666667791752843e-06]]}, {"name": "CX_d3_u3", "samples": [[-0.00011155640822835267, 3.51699623024615e-06], [-0.00022574077593162656, 7.1168437898450065e-06], [-0.0003425792674534023, 1.080036599887535e-05], [-0.00046209682477638125, 1.456835070712259e-05], [-0.0005843171966262162, 1.8421545973978937e-05], [-0.0007092629675753415, 2.2360663933795877e-05], [-0.0008369552087970078, 2.6386367608211003e-05], [-0.0009674136526882648, 3.0499280910589732e-05], [-0.0011006565764546394, 3.469998046057299e-05], [-0.0012367009185254574, 3.8988997403066605e-05], [-0.0013755616964772344, 4.336680649430491e-05], [-0.0015172524144873023, 4.783383701578714e-05], [-0.0016617849469184875, 5.2390460041351616e-05], [-0.001809169421903789, 5.7036995713133365e-05], [-0.0019594139885157347, 6.177369505167007e-05], [-0.002112525049597025, 6.660076905973256e-05], [-0.0022685066796839237, 7.151834870455787e-05], [-0.002427361672744155, 7.652650674572214e-05], [-0.002589090261608362, 8.162526501109824e-05], [-0.0027536903508007526, 8.681455074111e-05], [-0.002921158215031028, 9.20942475204356e-05], [-0.003091487567871809, 9.746415162226185e-05], [-0.003264669794589281, 0.00010292400111211464], [-0.003440694184973836, 0.00010847345401998609], [-0.0036195472348481417, 0.0001141120883403346], [-0.0038012133445590734, 0.00011983940930804238], [-0.00398567458614707, 0.00012565484212245792], [-0.004172909539192915, 0.00013155773922335356], [-0.004362896084785461, 0.00013754735118709505], [-0.0045556072145700455, 0.00014362289221026003], [-0.004751014523208141, 0.0001497834309702739], [-0.004949087277054787, 0.00015602799248881638], [-0.005149791017174721, 0.00016235549992416054], [-0.005353089421987534, 0.00016876481822691858], [-0.005558942444622517, 0.0001752546668285504], [-0.005767308175563812, 0.00018182372150477022], [-0.005978140980005264, 0.0001884705707198009], [-0.006191393360495567, 0.00019519370107445866], [-0.00640701362863183, 0.00020199148275423795], [-0.0066249486990273, 0.00020886222773697227], [-0.0068451412953436375, 0.00021580416068900377], [-0.007067531812936068, 0.00022281538986135274], [-0.007292058318853378, 0.00022989395074546337], [-0.007518654689192772, 0.000237037762417458], [-0.0077472529374063015, 0.0002442447002977133], [-0.007977781817317009, 0.00025151247973553836], [-0.008210166357457638, 0.00025883878697641194], [-0.008444329723715782, 0.00026622117729857564], [-0.008680193684995174, 0.0002736571477726102], [-0.00891767255961895, 0.0002811440790537745], [-0.009156683459877968, 0.00028867926448583603], [-0.009397136978805065, 0.00029625993920490146], [-0.009638940915465355, 0.00030388322193175554], [-0.00988200306892395, 0.0003115461440756917], [-0.010126225650310516, 0.00031924564973451197], [-0.010371509939432144, 0.00032697865390218794], [-0.010617755353450775, 0.0003347419260535389], [-0.010864855721592903, 0.00034253214835189283], [-0.011112704873085022, 0.00035034603206440806], [-0.011361194774508476, 0.00035818005562759936], [-0.011610212735831738, 0.00036603075568564236], [-0.011859646067023277, 0.00037389452336356044], [-0.012109377421438694, 0.0003817677206825465], [-0.012359289452433586, 0.0003896466223523021], [-0.012609262019395828, 0.00039752741577103734], [-0.01285917405039072, 0.00040540628833696246], [-0.01310889981687069, 0.0004132793110329658], [-0.013358315452933311, 0.0004211425257381052], [-0.01360729243606329, 0.00042899191612377763], [-0.013855701312422752, 0.00043682343675754964], [-0.014103413559496403, 0.00044463295489549637], [-0.01435029599815607, 0.0004524163086898625], [-0.014596216380596161, 0.0004601693362928927], [-0.014841039665043354, 0.0004678877885453403], [-0.015084630809724331, 0.0004755674162879586], [-0.015326854772865772, 0.00048320391215384007], [-0.01556757465004921, 0.000490792968776077], [-0.0158066526055336, 0.0004983302787877619], [-0.016043948009610176, 0.0005058114766143262], [-0.016279326751828194, 0.0005132321384735405], [-0.01651264913380146, 0.0005205879569984972], [-0.016743773594498634, 0.0005278745666146278], [-0.016972564160823822, 0.0005350875435397029], [-0.01719888113439083, 0.0005422225221991539], [-0.01742258481681347, 0.0005492751952260733], [-0.017643539234995842, 0.0005562411388382316], [-0.017861606553196907, 0.0005631160456687212], [-0.01807664893567562, 0.0005698956083506346], [-0.01828853040933609, 0.0005765755195170641], [-0.01849711686372757, 0.000583151588216424], [-0.018702276051044464, 0.0005896195070818067], [-0.01890387199819088, 0.0005959751433692873], [-0.01910177432000637, 0.0006022143643349409], [-0.01929585449397564, 0.0006083330954425037], [-0.01948598586022854, 0.0006143272621557117], [-0.01967203989624977, 0.0006201929063536227], [-0.01985389180481434, 0.0006259260699152946], [-0.02003142237663269, 0.0006315230275504291], [-0.020204508677124977, 0.0006369798793457448], [-0.020373037084937096, 0.0006422929582186043], [-0.020536888390779495, 0.0006474586552940309], [-0.02069595269858837, 0.0006524734199047089], [-0.02085012011229992, 0.0006573337595909834], [-0.020999282598495483, 0.0006620364147238433], [-0.021143339574337006, 0.0006665780092589557], [-0.02128218673169613, 0.0006709553999826312], [-0.02141573093831539, 0.0006751655600965023], [-0.021543873474001884, 0.0006792054628022015], [-0.021666526794433594, 0.0006830723723396659], [-0.021783603355288506, 0.0006867633783258498], [-0.021895021200180054, 0.0006902759778313339], [-0.022000698372721672, 0.0006936076679266989], [-0.02210056222975254, 0.0006967560038901865], [-0.02219453826546669, 0.000699718773830682], [-0.022282561287283897, 0.0007024938240647316], [-0.02236456610262394, 0.0007050791173242033], [-0.02244049310684204, 0.0007074729073792696], [-0.022510290145874023, 0.0007096733315847814], [-0.02257390506565571, 0.0007116788765415549], [-0.022631291300058365, 0.0007134880870580673], [-0.02268240600824356, 0.0007150995661504567], [-0.02272721379995346, 0.0007165122078731656], [-0.022765683010220528, 0.0007177249644882977], [-0.022797781974077225, 0.0007187369628809392], [-0.02282349020242691, 0.0007195474463514984], [-0.022842787206172943, 0.0007201558328233659], [-0.022855659946799278, 0.0007205617148429155], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022862903773784637, 0.0007207900634966791], [-0.022858617827296257, 0.0007205370347946882], [-0.0228510033339262, 0.0007200873224064708], [-0.022839585319161415, 0.0007194132194854319], [-0.022824376821517944, 0.0007185151916928589], [-0.022805387154221535, 0.0007173938793130219], [-0.02278262935578823, 0.0007160500972531736], [-0.022756120190024376, 0.0007144848932512105], [-0.02272588014602661, 0.0007126993150450289], [-0.02269192971289158, 0.00071069470141083], [-0.022654294967651367, 0.0007084725075401366], [-0.022613003849983215, 0.0007060343632474542], [-0.022568082436919212, 0.0007033820147626102], [-0.022519567981362343, 0.0007005173829384148], [-0.022467494010925293, 0.0006974425632506609], [-0.022411895915865898, 0.0006941597675904632], [-0.02235281653702259, 0.0006906713242642581], [-0.022290296852588654, 0.000686979794409126], [-0.02222438156604767, 0.000683087739162147], [-0.022155119106173515, 0.000678997952491045], [-0.022082556039094925, 0.0006747134029865265], [-0.022006744518876076, 0.0006702370592392981], [-0.021927740424871445, 0.0006655721226707101], [-0.02184559777379036, 0.0006607218529097736], [-0.021760372444987297, 0.0006556896842084825], [-0.021672125905752182, 0.0006504790508188307], [-0.02158091962337494, 0.0006450936780311167], [-0.021486816927790642, 0.000639537232927978], [-0.021389879286289215, 0.000633813499007374], [-0.02129017747938633, 0.0006279264925979078], [-0.021187778562307358, 0.0006218801718205214], [-0.02108275145292282, 0.0006156786694191396], [-0.02097516506910324, 0.0006093261181376874], [-0.020865093916654587, 0.0006028268835507333], [-0.020752612501382828, 0.000596185214817524], [-0.020637791603803635, 0.0005894055357202888], [-0.020520711317658424, 0.0005824923282489181], [-0.020401446148753166, 0.0005754501326009631], [-0.02028007246553898, 0.0005682834889739752], [-0.02015667036175728, 0.0005609971121884882], [-0.020031319931149483, 0.0005535956006497145], [-0.01990409940481186, 0.0005460836691781878], [-0.019775088876485825, 0.0005384661490097642], [-0.019644372165203094, 0.0005307476967573166], [-0.019512025639414787, 0.0005229332018643618], [-0.019378134980797768, 0.0005150274955667555], [-0.0192427821457386, 0.0005070353508926928], [-0.019106047227978706, 0.0004989616572856903], [-0.018968012183904648, 0.000490811187773943], [-0.01882876083254814, 0.0004825889191124588], [-0.018688373267650604, 0.0004742995952256024], [-0.01854693330824375, 0.00046594810555689037], [-0.01840452291071415, 0.0004575392522383481], [-0.018261220306158066, 0.000449077837402001], [-0.018117111176252365, 0.00044056863407604396], [-0.017972271889448166, 0.00043201641528867185], [-0.017826782539486885, 0.0004234258958604187], [-0.01768072508275509, 0.0004148017324041575], [-0.017534177750349045, 0.0004061486106365919], [-0.01738721691071987, 0.000397471128962934], [-0.017239920794963837, 0.00038877379847690463], [-0.01709236390888691, 0.00038006118847988546], [-0.016944624483585358, 0.00037133769365027547], [-0.01679677516222, 0.0003626077377703041], [-0.01664888858795166, 0.0003538756282068789], [-0.016501039266586304, 0.00034514564322307706], [-0.016353296115994453, 0.00033642197377048433], [-0.01620572991669178, 0.0003277087234891951], [-0.016058409586548805, 0.0003190099960193038], [-0.015911400318145752, 0.0003103296912740916], [-0.015764771029353142, 0.00030167176737450063], [-0.015618585050106049, 0.0002930399787146598], [-0.015472904779016972, 0.0002844381087925285], [-0.01532779261469841, 0.0002758697955869138], [-0.01518330816179514, 0.00026733853155747056], [-0.015039511024951935, 0.00025884786737151444], [-0.014896458014845848, 0.0002504010917618871], [-0.014754204079508781, 0.00024200153711717576], [-0.014612804166972637, 0.00023365237575490028], [-0.01447230949997902, 0.00022535669268108904], [-0.014332770369946957, 0.00021711747103836387], [-0.014194237999618053, 0.0002089376066578552], [-0.014056757092475891, 0.0002008198935072869], [-0.013920375145971775, 0.0001927670236909762], [-0.013785134069621563, 0.00018478158744983375], [-0.013651078566908836, 0.0001768660731613636], [-0.013518246822059155, 0.0001690228673396632], [-0.013386678881943226, 0.00016125426918733865], [-0.01325641106814146, 0.00015356246149167418], [-0.013127479702234268, 0.00014594951062463224], [-0.012999916449189186, 0.0001384174101985991], [-0.012873755767941475, 0.00013096803741063923], [-0.012749024666845798, 0.0001236031821463257], [-0.012625754810869694, 0.00011632451059995219], [-0.0125039704144001, 0.00010913360893027857], [-0.012383697554469109, 0.00010203195415670052], [-0.012264959514141083, 9.502092143520713e-05], [-0.012147778645157814, 8.810180588625371e-05], [-0.012032173573970795, 8.127579349093139e-05], [-0.011918164789676666, 7.454396836692467e-05], [-0.011805767193436623, 6.79073273204267e-05], [-0.011694997549057007, 6.136678712209687e-05], [-0.011585868895053864, 5.492315540323034e-05], [-0.011478394269943237, 4.857715612160973e-05], [-0.011372582986950874, 4.232942228554748e-05], [-0.01126844622194767, 3.618050686782226e-05], [-0.011165990494191647, 3.0130868253763765e-05], [-0.011065222322940826, 2.4180890250136144e-05], [-0.010966147296130657, 1.8330867533222772e-05], [-0.010868768207728863, 1.2581021110236179e-05], [-0.010773088783025742, 6.931487405381631e-06], [-0.010679109022021294, 1.382331447530305e-06], [-0.010586828924715519, -4.06645722250687e-06], [-0.010496247559785843, -9.414961823495105e-06], [-0.010407361201941967, -1.466333560529165e-05], [-0.010320167988538742, -1.9811799575109035e-05], [-0.010234661400318146, -2.486064113327302e-05], [-0.01015083584934473, -2.981021134473849e-05], [-0.010068684816360474, -3.466092312010005e-05], [-0.009988199919462204, -3.941325121559203e-05], [-0.00990937277674675, -4.406772131915204e-05], [-0.009832192212343216, -4.862492278334685e-05], [-0.009756648913025856, -5.308549589244649e-05], [-0.009682729840278625, -5.74501245864667e-05], [-0.009610423818230629, -6.171955465106294e-05], [-0.009539715945720673, -6.589456461369991e-05], [-0.009470593184232712, -6.997599120950326e-05], [-0.009403041563928127, -7.396470027742907e-05], [-0.00927104614675045, -8.1758524174802e-05], [-0.009203493595123291, -8.574724051868543e-05], [-0.00913437083363533, -8.982866711448878e-05], [-0.009063663892447948, -9.400367707712576e-05], [-0.008991356939077377, -9.8273107141722e-05], [-0.008917438797652721, -0.0001026377358357422], [-0.008841894567012787, -0.00010709830530686304], [-0.008764714933931828, -0.00011165550677105784], [-0.008685886859893799, -0.00011630998051259667], [-0.00860540196299553, -0.00012106230860808864], [-0.008523250930011272, -0.0001259130222024396], [-0.008439426310360432, -0.00013086259423289448], [-0.008353919722139835, -0.00013591142487712204], [-0.008266725577414036, -0.00014105989248491824], [-0.008177840150892735, -0.0001463082735426724], [-0.008087258785963058, -0.00015165677177719772], [-0.007994978688657284, -0.00015710556181147695], [-0.007900998927652836, -0.00016265471640508622], [-0.007805319037288427, -0.00016830425010994077], [-0.00770794041454792, -0.00017405410471837968], [-0.007608864922076464, -0.00017990412015933543], [-0.007508097216486931, -0.00018585409270599484], [-0.00740564102306962, -0.00019190373132005334], [-0.0073015037924051285, -0.00019805265765171498], [-0.007195692975074053, -0.00020430039148777723], [-0.007088217884302139, -0.00021064637985546142], [-0.006979089695960283, -0.00021709001157432795], [-0.0068683200515806675, -0.0002236305590486154], [-0.006755922455340624, -0.00023026719281915575], [-0.006641913205385208, -0.00023699902521912009], [-0.006526308599859476, -0.0002438250376144424], [-0.006409127730876207, -0.00025074416771531105], [-0.0062903896905481815, -0.00025775519316084683], [-0.006170116830617189, -0.0002648568479344249], [-0.006048332899808884, -0.00027204773505218327], [-0.005925062112510204, -0.00027932639932259917], [-0.0058003319427371025, -0.0002866912691388279], [-0.005674170330166817, -0.00029414062737487257], [-0.005546607542783022, -0.0003016727278009057], [-0.005417675711214542, -0.00030928567866794765], [-0.005287408363074064, -0.00031697750091552734], [-0.005155840422958136, -0.0003247460990678519], [-0.005023008678108454, -0.00033258929033763707], [-0.00488895270973444, -0.0003405048046261072], [-0.004753712564706802, -0.0003484902554191649], [-0.004617330152541399, -0.00035654311068356037], [-0.004479849711060524, -0.0003646608383860439], [-0.004341316409409046, -0.00037284070276655257], [-0.004201778210699558, -0.0003810799098573625], [-0.00406128354370594, -0.00038937560748308897], [-0.003919883165508509, -0.00039772476884536445], [-0.003777629230171442, -0.000406124338041991], [-0.0036345759872347116, -0.0004145710845477879], [-0.003490778850391507, -0.0004230617778375745], [-0.0033462948631495237, -0.0004315930127631873], [-0.003201182698830962, -0.00044016135507263243], [-0.003055502427741885, -0.00044876322499476373], [-0.0029093159828335047, -0.0004573949845507741], [-0.002762686461210251, -0.0004660529375541955], [-0.002615678124129772, -0.00047473321319557726], [-0.00246835732832551, -0.00048343196976929903], [-0.002320790896192193, -0.0004921451909467578], [-0.0021730479784309864, -0.000500868889503181], [-0.002025197958573699, -0.0005095988744869828], [-0.0018773121992126107, -0.0005183309549465775], [-0.0017294627614319324, -0.0005270609399303794], [-0.0015817229868844151, -0.0005357844056561589], [-0.0014341671485453844, -0.0005444970447570086], [-0.0012868705671280622, -0.0005531943752430379], [-0.001139909727498889, -0.0005618718569166958], [-0.0009933615801855922, -0.000570524949580431], [-0.0008473041234537959, -0.0005791491130366921], [-0.0007018160540610552, -0.0005877396324649453], [-0.000556976709049195, -0.0005962918512523174], [-0.0004128660657443106, -0.0006048010545782745], [-0.0002695646253414452, -0.0006132624694146216], [-0.00012715329648926854, -0.0006216713227331638], [1.4286525583884213e-05, -0.0006300228415057063], [0.0001546731946291402, -0.0006383121362887323], [0.0002939248224720359, -0.0006465344340540469], [0.00043195937178097665, -0.0006546848453581333], [0.0005686946678906679, -0.0006627585971727967], [0.0007040485506877303, -0.0006707507418468595], [0.0008379390928894281, -0.0006786564481444657], [0.0009702842216938734, -0.0006864709430374205], [0.0011010024463757873, -0.0006941893370822072], [0.0012300123926252127, -0.0007018069154582918], [0.001357233035378158, -0.0007093188469298184], [0.001482584048062563, -0.0007167203584685922], [0.001605985569767654, -0.0007240067352540791], [0.0017273584380745888, -0.000731173378881067], [0.001846624189056456, -0.000738215574529022], [0.001963705290108919, -0.0007451287237927318], [0.0020785247907042503, -0.000751908402889967], [0.0021910073701292276, -0.0007585500716231763], [0.0023010780569165945, -0.0007650493644177914], [0.0024086635094136, -0.0007714018574915826], [0.0025136915501207113, -0.0007776033598929644], [0.002616091165691614, -0.0007836496806703508], [0.0027157929725944996, -0.000789536745287478], [0.0028127289842814207, -0.000795260421000421], [0.0029068326111882925, -0.0008008169243112206], [0.0029980388935655355, -0.0008062022970989347], [0.003086285199970007, -0.0008114129304885864], [0.0031715098302811384, -0.0008164450991898775], [0.0032536531798541546, -0.000821295368950814], [0.0033326579723507166, -0.000825960305519402], [0.003408468561246991, -0.0008304366492666304], [0.003481031395494938, -0.0008347211987711489], [0.0035502950195223093, -0.000838810985442251], [0.0036162103060632944, -0.00084270304068923], [0.0036787299904972315, -0.0008463945705443621], [0.0037378096021711826, -0.0008498830138705671], [0.003793406765908003, -0.0008531658095307648], [0.0038454814348369837, -0.0008562406292185187], [0.003893996123224497, -0.0008591052610427141], [0.003938915673643351, -0.0008617576095275581], [0.003980208188295364, -0.0008641957538202405], [0.0040178424678742886, -0.000866417889483273], [0.004051792435348034, -0.0008684225031174719], [0.004082032945007086, -0.0008702080813236535], [0.0041085416451096535, -0.0008717733435332775], [0.004131299443542957, -0.0008731171255931258], [0.0041502900421619415, -0.0008742384379729629], [0.0041654990054667, -0.0008751364657655358], [0.0041769156232476234, -0.0008758105686865747], [0.004184531047940254, -0.0008762602228671312], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.004188816528767347, -0.000876513309776783], [0.00418748939409852, -0.0008762356010265648], [0.004185130819678307, -0.0008757420582696795], [0.004181595519185066, -0.0008750022388994694], [0.0041768853552639484, -0.0008740166667848825], [0.004171004053205252, -0.00087278604041785], [0.004163956269621849, -0.0008713112329132855], [0.004155746661126614, -0.0008695934084244072], [0.004146381746977568, -0.0008676337311044335], [0.004135867580771446, -0.0008654337143525481], [0.004124212544411421, -0.0008629948715679348], [0.004111425019800663, -0.0008603190071880817], [0.004097513854503632, -0.0008574081002734601], [0.004082489293068647, -0.0008542642462998629], [0.004066362511366606, -0.0008508896571584046], [0.004049144219607115, -0.0008472867775708437], [0.004030847921967506, -0.0008434582850895822], [0.004011486191302538, -0.0008394067990593612], [0.0039910729974508286, -0.0008351353462785482], [0.003969622775912285, -0.0008306468371301889], [0.003947150893509388, -0.0008259445894509554], [0.003923673182725906, -0.0008210318628698587], [0.003899206407368183, -0.0008159120916388929], [0.0038737673312425613, -0.0008105890010483563], [0.003847374115139246, -0.0008050661999732256], [0.0038200451526790857, -0.000799347588326782], [0.00379179953597486, -0.0007934371824376285], [0.0037626565899699926, -0.0007873389986343682], [0.003732636570930481, -0.0007810572860762477], [0.0037017599679529667, -0.0007745962939225137], [0.0036700479686260223, -0.0007679605041630566], [0.0036375217605382204, -0.0007611543987877667], [0.0036042036954313517, -0.0007541825762018561], [0.003570116125047207, -0.000747049693018198], [0.003535281401127577, -0.0007397605222649872], [0.0034997230395674706, -0.0007323198951780796], [0.0034634643234312534, -0.0007247327012009919], [0.0034265287686139345, -0.0007170039461925626], [0.003388941055163741, -0.0007091386942192912], [0.003350724931806326, -0.0007011418929323554], [0.0033119048457592726, -0.0006930188392288983], [0.0032725059427320957, -0.0006847745389677584], [0.0032325529027730227, -0.0006764143472537398], [0.003192070871591568, -0.0006679434445686638], [0.0031510849948972464, -0.0006593671278096735], [0.003109620651230216, -0.0006506906356662512], [0.0030677029862999916, -0.0006419193232432008], [0.0030253573786467314, -0.0006330584874376655], [0.002982609672471881, -0.0006241134833544493], [0.002939484780654311, -0.0006150896078906953], [0.0028960085473954678, -0.0006059921579435468], [0.0028522061184048653, -0.0005968264304101467], [0.002808102872222662, -0.0005875978386029601], [0.0027637239545583725, -0.0005783115047961473], [0.002719094278290868, -0.0005689727258868515], [0.0026742389891296625, -0.0005595867405645549], [0.0026291829999536276, -0.0005501586711034179], [0.002583950525149703, -0.0005406937561929226], [0.0025385660119354725, -0.0005311970598995686], [0.0024930539075285196, -0.0005216735298745334], [0.0024474377278238535, -0.0005121283465996385], [0.0024017412215471268, -0.0005025662831030786], [0.002355987671762705, -0.0004929923452436924], [0.002310200361534953, -0.00048341130604967475], [0.0022644016426056623, -0.00047382788034155965], [0.002218614099547267, -0.00046424681204371154], [0.0021728596184402704, -0.0004546726413536817], [0.0021271598525345325, -0.0004451099375728518], [0.0020815362222492695, -0.0004355631535872817], [0.0020360092166811228, -0.00042603659676387906], [0.0019905995577573776, -0.0004165346035733819], [0.0019453271524980664, -0.0004070613067597151], [0.001900211558677256, -0.000397620809962973], [0.0018552718684077263, -0.00038821715861558914], [0.0018105267081409693, -0.0003788541944231838], [0.00176599423866719, -0.0003695357299875468], [0.0017216921551153064, -0.0003602654905989766], [0.0016776375705376267, -0.0003510470560286194], [0.001633847365155816, -0.00034188391873613], [0.0015903377206996083, -0.00033277945476584136], [0.0015471241204068065, -0.0003237369819544256], [0.0015042219310998917, -0.0003147596726194024], [0.0014616455882787704, -0.00030585055355913937], [0.0014194094110280275, -0.00029701259336434305], [0.0013775269035249949, -0.0002882486442103982], [0.001336011104285717, -0.00027956144185736775], [0.0012948747025802732, -0.00027095357654616237], [0.0012541294563561678, -0.00026242760941386223], [0.0012137868907302618, -0.00025398589787073433], [0.0011738580651581287, -0.0002456307702232152], [0.0011343533406034112, -0.00023736435105092824], [0.0010952823795378208, -0.00022918873582966626], [0.0010566547280177474, -0.0002211058745160699], [0.001018479117192328, -0.00021311758609954268], [0.0009807638125494123, -0.00020522563136182725], [0.0009435166721232235, -0.00019743162556551397], [0.0009067447972483933, -0.00018973708210978657], [0.0008704549982212484, -0.0001821434125304222], [0.0008346535032615066, -0.00017465192649979144], [0.0007993460167199373, -0.00016726380272302777], [0.0007645377772860229, -0.00015998014714568853], [0.0007302335579879582, -0.0001528019638499245], [0.0006964376079849899, -0.0001457301405025646], [0.0006631537107750773, -0.00013876544835511595], [0.0006303852424025536, -0.00013190861500333995], [0.0005981349968351424, -0.00012516023707576096], [0.0005664054770022631, -0.00011852081661345437], [0.0005351987201720476, -0.00011199076834600419], [0.0005045161233283579, -0.00010557041969150305], [0.0004743589961435646, -9.926001075655222e-05], [0.0004447279789019376, -9.30596943362616e-05], [0.00041562344995327294, -8.696954319020733e-05], [0.00038704529288224876, -8.098954276647419e-05], [0.00035899312933906913, -7.51196057535708e-05], [0.00033146614441648126, -6.935956480447203e-05], [0.0003044631739612669, -6.37091652606614e-05], [0.00027798270457424223, -5.8168108807876706e-05], [0.00025202290271408856, -5.2735998906427994e-05], [0.00022658160014543682, -4.741238444694318e-05], [0.00020165630849078298, -4.2196745198452845e-05], [0.0001772442483343184, -3.708850636030547e-05], [0.00015334236377384514, -3.208701673429459e-05], [0.00012994729331694543, -2.7191577828489244e-05], [0.00010705541353672743, -2.240143294329755e-05], [8.466286089969799e-05, -1.7715772628434934e-05], [6.276550266193226e-05, -1.313373286393471e-05], [4.135899507673457e-05, -8.654403245600406e-06], [2.0438756109797396e-05, -4.276826530258404e-06]]}, {"name": "CX_d3_u8", "samples": [[-0.0001311587548116222, 3.3683913898130413e-06], [-0.0002654072595760226, 6.816133009124314e-06], [-0.00040277623338624835, 1.0344013389840256e-05], [-0.0005432950565591455, 1.395278832205804e-05], [-0.0006869916687719524, 1.764317312336061e-05], [-0.0008338924963027239, 2.14158499147743e-05], [-0.00098402239382267, 2.527145443309564e-05], [-0.0011374045861884952, 2.9210583306849003e-05], [-0.0012940606102347374, 3.3233791327802464e-05], [-0.0014540102565661073, 3.734158235602081e-05], [-0.0016172711038962007, 4.153441477683373e-05], [-0.0017838593339547515, 4.581269604386762e-05], [-0.001953788800165057, 5.017678631702438e-05], [-0.0021270711440593004, 5.4626987548545e-05], [-0.0023037162609398365, 5.9163550758967176e-05], [-0.0024837313685566187, 6.378666148521006e-05], [-0.002667121822014451, 6.849645433248952e-05], [-0.0028538904152810574, 7.32930056983605e-05], [-0.0030440373811870813, 7.817631558282301e-05], [-0.00323756062425673, 8.314634033013135e-05], [-0.003434455255046487, 8.820294897304848e-05], [-0.003634714288637042, 9.334595961263403e-05], [-0.0038383277133107185, 9.857511759037152e-05], [-0.004045282490551472, 0.00010389008093625307], [-0.004255563020706177, 0.00010929046402452514], [-0.004469151142984629, 0.00011477578664198518], [-0.004686024971306324, 0.00012034549581585452], [-0.00490616075694561, 0.00012599898036569357], [-0.005129530560225248, 0.00013173551997169852], [-0.005356104578822851, 0.00013755433610640466], [-0.005585848353803158, 0.00014345457020681351], [-0.0058187260292470455, 0.00014943527639843524], [-0.006054696626961231, 0.00015549543604720384], [-0.00629371777176857, 0.00016163392865564674], [-0.006535742897540331, 0.00016784956096671522], [-0.006780721712857485, 0.00017414105241186917], [-0.007028601597994566, 0.00018050704966299236], [-0.007279325742274523, 0.00018694609752856195], [-0.00753283454105258, 0.00019345665350556374], [-0.007789064198732376, 0.00020003708777949214], [-0.008047948591411114, 0.00020668569777626544], [-0.00830941740423441, 0.00021340067905839533], [-0.008573396131396294, 0.0002201801398769021], [-0.008839810267090797, 0.00022702211572322994], [-0.00910857692360878, 0.0002339245256735012], [-0.0093796132132411, 0.00024088521604426205], [-0.009652831591665745, 0.0002479019749443978], [-0.009928141720592976, 0.00025497243041172624], [-0.010205450467765331, 0.0002620941959321499], [-0.010484659112989902, 0.00026926479768007994], [-0.010765668004751205, 0.0002764815872069448], [-0.011048372834920883, 0.00028374194516800344], [-0.011332666501402855, 0.00029104313580319285], [-0.011618438176810741, 0.0002983822487294674], [-0.011905575171113014, 0.0003057564317714423], [-0.012193960137665272, 0.0003131626872345805], [-0.012483474798500538, 0.00032059793011285365], [-0.012773994356393814, 0.00032805901719257236], [-0.013065395876765251, 0.00033554271794855595], [-0.013357548974454403, 0.0003430457436479628], [-0.013650324195623398, 0.00035056471824645996], [-0.013943586498498917, 0.0003580962074920535], [-0.014237199909985065, 0.0003656367480289191], [-0.014531025663018227, 0.0003731827309820801], [-0.014824923127889633, 0.0003807305183727294], [-0.015118748880922794, 0.0003882765013258904], [-0.015412355773150921, 0.0003958168381359428], [-0.015705598518252373, 0.0004033478326164186], [-0.015998324379324913, 0.0004108655557502061], [-0.01629038341343403, 0.00041836616583168507], [-0.016581622883677483, 0.00042584570473991334], [-0.01687188632786274, 0.0004333001852501184], [-0.017161019146442413, 0.0004407256201375276], [-0.01744886115193367, 0.0004481179639697075], [-0.017735255882143974, 0.00045547308400273323], [-0.018020043149590492, 0.00046278690570034087], [-0.01830306090414524, 0.000470055325422436], [-0.018584148958325386, 0.00047727415221743286], [-0.018863143399357796, 0.0004844392242375761], [-0.019139880314469337, 0.00049154635053128], [-0.019414201378822327, 0.0004985913983546197], [-0.019685938954353333, 0.0005055700894445181], [-0.019954930990934372, 0.0005124782910570502], [-0.020221015438437462, 0.0005193118122406304], [-0.02048402838408947, 0.0005260664620436728], [-0.020743807777762413, 0.0005327380495145917], [-0.021000193431973457, 0.0005393225001171231], [-0.02125302143394947, 0.0005458155646920204], [-0.021502135321497917, 0.0005522132851183414], [-0.021747374907135963, 0.0005585114704445004], [-0.021988581866025925, 0.0005647061043418944], [-0.022225601598620415, 0.0005707931704819202], [-0.022458279505372047, 0.0005767687689512968], [-0.022686464712023735, 0.000582628941629082], [-0.02291000448167324, 0.0005883698468096554], [-0.023128749802708626, 0.0005939876427873969], [-0.0233425572514534, 0.0005994786042720079], [-0.02355128340423107, 0.0006048390059731901], [-0.02375478483736515, 0.0006100652972236276], [-0.023952923715114594, 0.0006151539273560047], [-0.024145567789673805, 0.0006201013457030058], [-0.02433258295059204, 0.0006249041762202978], [-0.024513838812708855, 0.0006295592174865305], [-0.024689212441444397, 0.0006340631516650319], [-0.024858582764863968, 0.0006384128355421126], [-0.025021828711032867, 0.000642605300527066], [-0.025178836658596992, 0.0006466375198215246], [-0.02532949671149254, 0.0006505067576654255], [-0.025473702698946, 0.0006542102200910449], [-0.025611352175474167, 0.0006577452877536416], [-0.02574234828352928, 0.0006611095159314573], [-0.025866594165563583, 0.0006643004016950727], [-0.025984006002545357, 0.0006673156749457121], [-0.02609449438750744, 0.0006701532402075827], [-0.02619798481464386, 0.0006728110602125525], [-0.026294399052858353, 0.0006752871559001505], [-0.026383668184280396, 0.0006775797810405493], [-0.026465730741620064, 0.0006796872476115823], [-0.026540521532297134, 0.0006816080422140658], [-0.026607992127537727, 0.0006833407678641379], [-0.026668088510632515, 0.0006848842022009194], [-0.026720771566033363, 0.000686237181071192], [-0.02676599845290184, 0.0006873986567370594], [-0.02680373750627041, 0.0006883679307065904], [-0.02683396451175213, 0.0006891441298648715], [-0.02685665152966976, 0.0006897268467582762], [-0.026871787384152412, 0.0006901154993101954], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026880303397774696, 0.0006903342436999083], [-0.026873087510466576, 0.0006901824381202459], [-0.02686026319861412, 0.0006899125874042511], [-0.026841038838028908, 0.0006895081605762243], [-0.026815427467226982, 0.0006889693322591484], [-0.026783449575304985, 0.0006882965681143105], [-0.026745127514004707, 0.0006874902755953372], [-0.026700489223003387, 0.0006865511531941593], [-0.026649566367268562, 0.0006854798411950469], [-0.026592398062348366, 0.000684277038089931], [-0.02652902342379093, 0.000682943791616708], [-0.02645949088037014, 0.0006814809166826308], [-0.02638385072350502, 0.0006798895192332566], [-0.02630215510725975, 0.0006781707634218037], [-0.026214465498924255, 0.0006763258716091514], [-0.02612084522843361, 0.0006743561825715005], [-0.026021359488368034, 0.0006722631515003741], [-0.02591608092188835, 0.0006700482335872948], [-0.02580508589744568, 0.0006677130586467683], [-0.025688450783491135, 0.0006652591982856393], [-0.025566261261701584, 0.0006626885151490569], [-0.02543860301375389, 0.0006600026972591877], [-0.02530556544661522, 0.0006572037818841636], [-0.02516724169254303, 0.0006542936316691339], [-0.025023730471730232, 0.0006512743420898914], [-0.024875132367014885, 0.0006481480086222291], [-0.024721547961235046, 0.0006449167849496007], [-0.024563085287809372, 0.0006415829411707819], [-0.024399852380156517, 0.0006381487473845482], [-0.024231962859630585, 0.0006346165901049972], [-0.024059530347585678, 0.0006309887976385653], [-0.0238826721906662, 0.0006272679311223328], [-0.023701507598161697, 0.000623456435278058], [-0.023516157642006874, 0.0006195569294504821], [-0.023326745256781578, 0.0006155719747766852], [-0.023133398965001106, 0.0006115041906014085], [-0.022936243563890457, 0.0006073563126847148], [-0.022735411301255226, 0.0006031310185790062], [-0.02253102883696556, 0.0005988311022520065], [-0.022323230281472206, 0.0005944592994637787], [-0.022112149745225906, 0.0005900184623897076], [-0.021897921338677406, 0.000585511326789856], [-0.02168067917227745, 0.0005809408612549305], [-0.021460559219121933, 0.000576309859752655], [-0.021237701177597046, 0.0005716211744584143], [-0.021012241020798683, 0.0005668777739629149], [-0.020784316584467888, 0.0005620825104415417], [-0.020554065704345703, 0.0005572383524850011], [-0.020321626216173172, 0.000552348152268678], [-0.020087137818336487, 0.0005474148201756179], [-0.01985073834657669, 0.0005424412665888667], [-0.019612565636634827, 0.00053743040189147], [-0.01937275566160679, 0.0005323851364664733], [-0.01913144811987877, 0.0005273083224892616], [-0.018888777121901512, 0.0005222028703428805], [-0.01864488050341606, 0.0005170715739950538], [-0.018399890512228012, 0.0005119172856211662], [-0.01815394125878811, 0.0005067428573966026], [-0.017907166853547096, 0.0005015510250814259], [-0.01765969581902027, 0.0004963445826433599], [-0.01741166226565838, 0.0004911262658424675], [-0.017163189128041267, 0.0004858987231273204], [-0.016914408653974533, 0.00048066466115415096], [-0.016665441915392876, 0.00047542675747536123], [-0.016416413709521294, 0.0004701875150203705], [-0.016167446970939636, 0.0004649495822377503], [-0.015918659046292305, 0.0004597154329530895], [-0.015670171007514, 0.0004544875118881464], [-0.0154220936819911, 0.00044926832197234035], [-0.015174544416368008, 0.00044406019151210785], [-0.014927632175385952, 0.0004388654779177159], [-0.014681465923786163, 0.00043368645128794014], [-0.014436152763664722, 0.0004285253817215562], [-0.014191796071827412, 0.00042338442290201783], [-0.01394849643111229, 0.0004182657285127789], [-0.01370635349303484, 0.00041317136492580175], [-0.013465464115142822, 0.000408103340305388], [-0.013225920498371124, 0.00040306366281583905], [-0.012987813912332058, 0.0003980541951023042], [-0.012751232832670212, 0.00039307682891376317], [-0.012516261078417301, 0.00038813333958387375], [-0.012282982468605042, 0.0003832254733424634], [-0.01205147709697485, 0.0003783548891078681], [-0.01182182040065527, 0.00037352321669459343], [-0.01159408688545227, 0.00036873199860565364], [-0.011368347331881523, 0.000363982719136402], [-0.011144669726490974, 0.00035927683347836137], [-0.010923120193183422, 0.00035461573861539364], [-0.01070376019924879, 0.00035000068601220846], [-0.01048665028065443, 0.00034543295623734593], [-0.010271844454109669, 0.0003409137425478548], [-0.010059399530291557, 0.00033644415088929236], [-0.009849363937973976, 0.000332025287207216], [-0.009641786105930805, 0.00032765811192803085], [-0.0094367116689682, 0.00032334361458197236], [-0.00923418253660202, 0.0003190826391801238], [-0.009034237824380398, 0.0003148760588373989], [-0.008836913853883743, 0.0003107246302533895], [-0.008642245084047318, 0.00030662905192002654], [-0.008450263179838657, 0.0003025899932254106], [-0.008260995149612427, 0.0002986080653499812], [-0.00807446800172329, 0.00029468376305885613], [-0.007890705019235611, 0.0002908176102209836], [-0.007709725759923458, 0.0002870100433938205], [-0.007531548850238323, 0.00028326144092716277], [-0.007356190588325262, 0.0002795721229631454], [-0.007183663081377745, 0.0002759423805400729], [-0.007013977970927954, 0.0002723724173847586], [-0.006847143638879061, 0.0002688624372240156], [-0.006683166138827801, 0.00026541255647316575], [-0.006522049196064472, 0.00026202286244370043], [-0.006363795138895512, 0.00025869341334328055], [-0.006208403035998344, 0.00025542418006807566], [-0.006055871024727821, 0.00025221510441042483], [-0.005906194914132357, 0.0002490660990588367], [-0.005759367719292641, 0.00024597704759798944], [-0.0056153819896280766, 0.00024294776085298508], [-0.005474227014929056, 0.00023997804964892566], [-0.005335891153663397, 0.00023706765205133706], [-0.005200361832976341, 0.00023421627702191472], [-0.005067622754722834, 0.00023142361897043884], [-0.004937657620757818, 0.00022868932865094393], [-0.00481044827029109, 0.00022601299860980362], [-0.004685975145548582, 0.00022339425049722195], [-0.004564216826111078, 0.00022083261865191162], [-0.004445151425898075, 0.00021832763741258532], [-0.004328754730522633, 0.00021587879746221006], [-0.0042150020599365234, 0.00021348558948375285], [-0.003992733079940081, 0.00020880933152511716], [-0.003878980642184615, 0.00020641613809857517], [-0.0037625841796398163, 0.00020396729814819992], [-0.0036435185465961695, 0.00020146231690887362], [-0.0035217604599893093, 0.0001989006850635633], [-0.0033972871024161577, 0.0001962819223990664], [-0.003270077984780073, 0.0001936056069098413], [-0.0031401128508150578, 0.00019087130203843117], [-0.00300737377256155, 0.00018807864398695529], [-0.0028718439862132072, 0.00018522728350944817], [-0.0027335085906088352, 0.00018231687135994434], [-0.002592353615909815, 0.00017934716015588492], [-0.002448367653414607, 0.0001763178879627958], [-0.0023015406914055347, 0.00017322883650194854], [-0.0021518643479794264, 0.0001700798311503604], [-0.0019993323367089033, 0.00016687075549270958], [-0.0018439404666423798, 0.00016360152221750468], [-0.0016856862930580974, 0.00016027205856516957], [-0.0015245694667100906, 0.00015688236453570426], [-0.001360591733828187, 0.0001534324837848544], [-0.0011937572853639722, 0.00014992250362411141], [-0.0010240721749141812, 0.0001463525404687971], [-0.0008515449007973075, 0.00014272279804572463], [-0.0006761864060536027, 0.00013903348008170724], [-0.0004980097291991115, 0.00013528487761504948], [-0.0003170306154061109, 0.00013147731078788638], [-0.00013326718180906028, 0.00012761115795001388], [5.32599697180558e-05, 0.00012368687021080405], [0.00024252760340459645, 0.00011970492778345942], [0.00043450991506688297, 0.00011566586181288585], [0.0006291784229688346, 0.00011157029075548053], [0.0008265020442195237, 0.0001074188548955135], [0.001026446814648807, 0.00010321227455278859], [0.0012289761798456311, 9.895132097881287e-05], [0.0014340507332235575, 9.463681635679677e-05], [0.0016416283324360847, 9.026965562952682e-05], [0.001851663808338344, 8.585077739553526e-05], [0.0020641095470637083, 8.138120028888807e-05], [0.0022789144422858953, 7.68619793234393e-05], [0.0024960250593721867, 7.229424954857677e-05], [0.002715385053306818, 6.767920422134921e-05], [0.0029369345866143703, 6.301808025455102e-05], [0.0031606119591742754, 5.8312201872467995e-05], [0.003386351279914379, 5.356293695513159e-05], [0.0036140847951173782, 4.8771718866191804e-05], [0.0038437414914369583, 4.3940039176959544e-05], [0.004075247328728437, 3.906945130438544e-05], [0.004308525938540697, 3.416157778701745e-05], [0.004543496761471033, 2.9218088457128033e-05], [0.0047800783067941666, 2.4240720449597575e-05], [0.005018184892833233, 1.9231265468988568e-05], [0.005257728509604931, 1.4191577974997927e-05], [0.0054986183531582355, 9.123566997004673e-06], [0.005740760825574398, 4.029199317301391e-06], [0.005984060000628233, -1.089500756279449e-06], [0.006228417158126831, -6.230455710465321e-06], [0.006473730783909559, -1.1391533007554244e-05], [0.006719896569848061, -1.6570547813898884e-05], [0.006966808810830116, -2.176526322728023e-05], [0.007214358542114496, -2.697339004953392e-05], [0.007462434936314821, -3.21925945172552e-05], [0.007710924372076988, -3.742049011634663e-05], [0.007959711365401745, -4.2654650314943865e-05], [0.008208679035305977, -4.7892597649479285e-05], [0.008457706309854984, -5.313181463861838e-05], [0.008706672117114067, -5.8369743783259764e-05], [0.00895545445382595, -6.360378756653517e-05], [0.009203925728797913, -6.883131572976708e-05], [0.009451961144804955, -7.404965435853228e-05], [0.009699431248009205, -7.92561040725559e-05], [0.009946206584572792, -8.444793638773263e-05], [0.01019215490669012, -8.962237916421145e-05], [0.01043714489787817, -9.477664571022615e-05], [0.010681042447686195, -9.990793478209525e-05], [0.010923713445663452, -0.00010501340875634924], [0.011165020987391472, -0.00011009021545760334], [0.011404830031096935, -0.00011513548815855756], [0.0116430027410388, -0.00012014633830403909], [0.011879402212798595, -0.0001251198846148327], [0.01211389061063528, -0.00013005321670789272], [0.012346329167485237, -0.00013494341692421585], [0.012576580978929996, -0.0001397876039845869], [0.012804505415260792, -0.00014458285295404494], [0.013029965572059155, -0.0001493262534495443], [0.013252824544906616, -0.00015401490963995457], [0.013472942635416985, -0.00015864591114223003], [0.01369018480181694, -0.00016321640578098595], [0.013904414139688015, -0.0001677235122770071], [0.014115494675934315, -0.00017216437845490873], [0.01432329323142767, -0.00017653618124313653], [0.01452767476439476, -0.00018083611212205142], [0.01472850888967514, -0.0001850613916758448], [0.014925663359463215, -0.0001892092841444537], [0.015119010582566261, -0.0001932770392159], [0.015308421105146408, -0.00019726200844161212], [0.015493771061301231, -0.00020116152882110327], [0.015674935653805733, -0.0002049730101134628], [0.01585179567337036, -0.00020869389118161052], [0.016024228185415268, -0.00021232165454421192], [0.0161921177059412, -0.00021585382637567818], [0.016355348750948906, -0.00021928802016191185], [0.01651381142437458, -0.00022262187849264592], [0.01666739583015442, -0.0002258530876133591], [0.016815995797514915, -0.00022897942108102143], [0.016959507018327713, -0.0002319987106602639], [0.017097830772399902, -0.00023490884632337838], [0.017230868339538574, -0.00023770779080223292], [0.017358526587486267, -0.00024039356503635645], [0.017480716109275818, -0.00024296427727676928], [0.017597349360585213, -0.00024541810853406787], [0.017708346247673035, -0.0002477533125784248], [0.017813624814152718, -0.0002499682304915041], [0.017913108691573143, -0.000252061290666461], [0.01800673082470894, -0.00025403095060028136], [0.018094420433044434, -0.00025587581330910325], [0.018176114186644554, -0.0002575945691205561], [0.018251756206154823, -0.0002591859665699303], [0.018321288749575615, -0.0002606488415040076], [0.0183846615254879, -0.00026198214618489146], [0.018441829830408096, -0.00026318489108234644], [0.01849275268614292, -0.00026425623218528926], [0.01853739097714424, -0.00026519535458646715], [0.01857571490108967, -0.00026600161800161004], [0.018607692793011665, -0.00026667441125027835], [0.018633302301168442, -0.00026721321046352386], [0.018652526661753654, -0.0002676176663953811], [0.01866535097360611, -0.00026788748800754547], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.01867256872355938, -0.0002680392935872078], [0.018666651099920273, -0.00026795436860993505], [0.018656138330698013, -0.0002678034652490169], [0.01864037849009037, -0.00026757721207104623], [0.01861938089132309, -0.00026727584190666676], [0.018593166023492813, -0.00026689950027503073], [0.018561746925115585, -0.0002664485073182732], [0.018525151535868645, -0.00026592318317852914], [0.01848340593278408, -0.000265323935309425], [0.018436536192893982, -0.0002646511420607567], [0.018384581431746483, -0.0002639053564053029], [0.01832757703959942, -0.00026308707310818136], [0.01826556585729122, -0.0002621969033498317], [0.018198590725660324, -0.00026123548741452396], [0.018126701936125755, -0.00026020355289801955], [0.018049949780106544, -0.00025910179829224944], [0.01796838827431202, -0.00025793100940063596], [0.017882080748677254, -0.00025669208844192326], [0.017791083082556725, -0.00025538585032336414], [0.017695464193820953, -0.00025401325547136366], [0.017595291137695312, -0.00025257529341615736], [0.017490632832050323, -0.00025107298279181123], [0.017381567507982254, -0.00024950734223239124], [0.017268167808651924, -0.00024787953589111567], [0.01715051382780075, -0.00024619066971354187], [0.01702868938446045, -0.0002444419078528881], [0.016902778297662735, -0.00024263447267003357], [0.016772866249084473, -0.00024076964473351836], [0.016639046370983124, -0.00023884869005996734], [0.016501406207680702, -0.00023687291832175106], [0.016360042616724968, -0.00023484368284698576], [0.016215050593018532, -0.00023276236606761813], [0.016066528856754303, -0.0002306303649675101], [0.01591457426548004, -0.00022844910563435405], [0.015759291127324104, -0.00022622007236350328], [0.015600782819092274, -0.00022394470579456538], [0.015439150854945183, -0.00022162453387863934], [0.015274503268301487, -0.0002192610700149089], [0.015106947161257267, -0.0002168558567063883], [0.014936590567231178, -0.00021441042190417647], [0.01476354245096445, -0.00021192636631894857], [0.01458791270852089, -0.00020940526155754924], [0.014409814029932022, -0.00020684869377873838], [0.014229356311261654, -0.00020425827824510634], [0.014046652242541313, -0.00020163563021924347], [0.013861815445125103, -0.00019898235041182488], [0.013674957677721977, -0.00019630006863735616], [0.013486193493008614, -0.00019359040015842766], [0.01329563558101654, -0.0001908550038933754], [0.013103397563099861, -0.0001880954805528745], [0.012909593060612679, -0.00018531345995143056], [0.012714333832263947, -0.00018251058645546436], [0.012517733499407768, -0.0001796884462237358], [0.012319904752075672, -0.00017684866907075047], [0.012120959348976612, -0.00017399285570718348], [0.011921007186174393, -0.00017112260684370995], [0.011720159091055393, -0.00016823949408717453], [0.011518525891005993, -0.00016534510359633714], [0.011316214688122272, -0.0001624409924261272], [0.011113334447145462, -0.00015952868852764368], [0.010909990407526493, -0.00015660974895581603], [0.010706287808716297, -0.00015368565800599754], [0.010502331890165806, -0.00015075792907737195], [0.010298224166035652, -0.00014782803191337734], [0.01009406615048647, -0.00014489740715362132], [0.009889958426356316, -0.00014196749543771148], [0.009685997851192951, -0.00013903969374950975], [0.009482281282544136, -0.00013611539907287806], [0.009278903715312481, -0.00013319597928784788], [0.009075957350432873, -0.00013028274406678975], [0.008873534388840199, -0.00012737700308207422], [0.008671722374856472, -0.00012448006600607187], [0.008470609784126282, -0.00012159314792370424], [0.008270280435681343, -0.00011871748574776575], [0.008070819079875946, -0.00011585427273530513], [0.007872305810451508, -0.00011300467303954065], [0.00767481978982687, -0.0001101698144339025], [0.007478437386453152, -0.00010735080286394805], [0.007283233106136322, -0.00010454870061948895], [0.007089278660714626, -0.00010176454088650644], [0.006896644830703735, -9.899934229906648e-05], [0.0067053986713290215, -9.625405800761655e-05], [0.006515605840831995, -9.352963388664648e-05], [0.006327328737825155, -9.082697215490043e-05], [0.0061406283639371395, -8.81469386513345e-05], [0.005955562461167574, -8.549037738703191e-05], [0.00577218784019351, -8.285808144137263e-05], [0.005590557120740414, -8.025082206586376e-05], [0.005410721525549889, -7.766933413222432e-05], [0.005232729949057102, -7.51143234083429e-05], [0.005056628491729498, -7.258643745444715e-05], [0.00488246139138937, -7.008631655480713e-05], [0.004710270091891289, -6.76145646139048e-05], [0.0045400941744446754, -6.517173460451886e-05], [0.00437196996062994, -6.275835767155513e-05], [0.004205932375043631, -6.03749394940678e-05], [0.004042013548314571, -5.802193481940776e-05], [0.003880243981257081, -5.569977656705305e-05], [0.003720650915056467, -5.340886491467245e-05], [0.0035632599610835314, -5.114956366014667e-05], [0.003408094635233283, -4.892221113550477e-05], [0.0032551761250942945, -4.6727109292987734e-05], [0.003104523289948702, -4.45645309810061e-05], [0.002956152893602848, -4.243471994413994e-05], [0.0028100803028792143, -4.033788718516007e-05], [0.002666317857801914, -3.8274221878964454e-05], [0.0025248767342418432, -3.624387318268418e-05], [0.0023857655469328165, -3.4246972063556314e-05], [0.0022489912807941437, -3.2283620384987444e-05], [0.0021145592909306288, -3.0353885449585505e-05], [0.0019824723713099957, -2.8457818189053796e-05], [0.0018527326174080372, -2.6595438612275757e-05], [0.0017253393307328224, -2.4766744900261983e-05], [0.0016002906486392021, -2.297170794918202e-05], [0.0014775830786675215, -2.1210276827332564e-05], [0.0013572113821282983, -1.948237513715867e-05], [0.0012391688069328666, -1.7787910110200755e-05], [0.0011234473204240203, -1.6126761693158187e-05], [0.001010037143714726, -1.4498790733341593e-05], [0.0008989271591417491, -1.2903838978672866e-05], [0.0007901050848886371, -1.134172998717986e-05], [0.0006835571839474142, -9.812265489017591e-06], [0.0005792685551568866, -8.31523175293114e-06], [0.0004772229876834899, -6.850397767266259e-06], [0.0003774032520595938, -5.41751433047466e-06], [0.00027979098376818, -4.016318598587532e-06], [0.00018436678510624915, -2.6465318114787806e-06], [9.111023973673582e-05, -1.3078609981675982e-06]]}, {"name": "CX_d5_u11", "samples": [[-5.756465543527156e-05, 3.4775500807882054e-06], [-0.00011648538202280179, 7.0370219873439055e-06], [-0.00017677566211204976, 1.0679230399546213e-05], [-0.0002384483814239502, 1.4404953617486171e-05], [-0.000301515799947083, 1.8214932424598373e-05], [-0.0003659895446617156, 2.2109868950792588e-05], [-0.0004318805004004389, 2.60904216702329e-05], [-0.0004991989117115736, 3.0157205401337706e-05], [-0.0005679540918208659, 3.4310793125769123e-05], [-0.0006381548591889441, 3.855170143651776e-05], [-0.0007098088972270489, 4.2880412365775555e-05], [-0.0007829233072698116, 4.729734064312652e-05], [-0.0008575041429139674, 5.180285734240897e-05], [-0.0009335565264336765, 5.639727532980032e-05], [-0.0010110848816111684, 6.108084926381707e-05], [-0.0010900922352448106, 6.585378287127241e-05], [-0.0011705809738487005, 7.071621075738221e-05], [-0.0012525523779913783, 7.5668198405765e-05], [-0.0013360065640881658, 8.07097676442936e-05], [-0.0014209426008164883, 8.58408457133919e-05], [-0.0015073582762852311, 9.106133074965328e-05], [-0.0015952505636960268, 9.637100447434932e-05], [-0.001684615039266646, 0.00010176961950492114], [-0.001775445998646319, 0.00010725682659540325], [-0.0018677366897463799, 0.00011283221829216927], [-0.001961478963494301, 0.00011849529983010143], [-0.002056663390249014, 0.00012424551823642105], [-0.0021532794926315546, 0.00013008220412302762], [-0.0022513149306178093, 0.00013600464444607496], [-0.0023507566656917334, 0.0001420120388502255], [-0.0024515895638614893, 0.00014810347056481987], [-0.0025537977926433086, 0.0001542779937153682], [-0.0026573638897389174, 0.00016053454601205885], [-0.002762268530204892, 0.00016687196330167353], [-0.002868491690605879, 0.00017328902322333306], [-0.0029760112520307302, 0.0001797844161046669], [-0.003084803931415081, 0.00018635671585798264], [-0.00319484481588006, 0.00019300442363601178], [-0.003306108061224222, 0.00019972596783190966], [-0.003418565494939685, 0.00020651966042350978], [-0.0035321880131959915, 0.00021338372607715428], [-0.003646944649517536, 0.00022031631669960916], [-0.0037628035061061382, 0.00022731548233423382], [-0.0038797303568571806, 0.0002343791857128963], [-0.0039976900443434715, 0.00024150527315214276], [-0.004116646014153957, 0.00024869153276085854], [-0.004236559849232435, 0.00025593567988835275], [-0.004357391502708197, 0.00026323526981286705], [-0.004479100462049246, 0.00027058785781264305], [-0.004601643420755863, 0.0002779907954391092], [-0.0047249761410057545, 0.00028544149245135486], [-0.0048490529879927635, 0.0002929371257778257], [-0.0049738273955881596, 0.0003004749014507979], [-0.005099250935018063, 0.00030805187998339534], [-0.005225273314863443, 0.0003156650345772505], [-0.005351843312382698, 0.0003233113093301654], [-0.0054789092391729355, 0.0003309875028207898], [-0.005606416612863541, 0.0003386903554201126], [-0.005734310485422611, 0.00034641657839529216], [-0.005862534511834383, 0.00035416276659816504], [-0.00599103095009923, 0.00036192539846524596], [-0.0061197420582175255, 0.00036970098153688014], [-0.006248606834560633, 0.00037748587783426046], [-0.006377565208822489, 0.00038527639117091894], [-0.0065065547823905945, 0.0003930687962565571], [-0.006635512690991163, 0.00040085928048938513], [-0.006764374673366547, 0.0004086440021637827], [-0.006893076468259096, 0.0004164190322626382], [-0.007021551951766014, 0.00042418038356117904], [-0.0071497345343232155, 0.00043192406883463264], [-0.007277557160705328, 0.0004396459844429046], [-0.007404952310025692, 0.00044734205584973097], [-0.007531850133091211, 0.0004550081503111869], [-0.007658182643353939, 0.00046264001866802573], [-0.007783879525959492, 0.0004702335281763226], [-0.007908870466053486, 0.00047778437146916986], [-0.00803308468312025, 0.00048528832849115133], [-0.00815645232796669, 0.000492741062771529], [-0.008278900757431984, 0.000500138325151056], [-0.008400359191000462, 0.000507475808262825], [-0.008520755916833878, 0.0005147491465322673], [-0.008640020154416561, 0.0005219539743848145], [-0.008758078329265118, 0.0005290861008688807], [-0.008874861523509026, 0.0005361410439945757], [-0.00899029616266489, 0.0005431146128103137], [-0.009104311466217041, 0.0005500023835338652], [-0.009216836653649807, 0.0005568002234213054], [-0.009327801875770092, 0.0005635037086904049], [-0.00943713542073965, 0.0005701087065972388], [-0.009544769302010536, 0.0005766110261902213], [-0.009650633670389652, 0.0005830064183101058], [-0.009754660539329052, 0.0005892907502129674], [-0.009856780990958214, 0.0005954600055702031], [-0.009956929832696915, 0.0006015101098455489], [-0.010055039077997208, 0.0006074370467104018], [-0.010151045396924019, 0.0006132368580438197], [-0.0102448845282197, 0.0006189057603478432], [-0.010336492210626602, 0.000624439911916852], [-0.010425807908177376, 0.0006298355874605477], [-0.010512770153582096, 0.0006350890616886318], [-0.010597319342195988, 0.0006401968421414495], [-0.010679399594664574, 0.000645155378151685], [-0.010758951306343079, 0.0006499612354673445], [-0.010835922323167324, 0.000654611096251756], [-0.010910256765782833, 0.000659101759083569], [-0.010981904342770576, 0.0006634300807490945], [-0.011050814762711525, 0.0006675929762423038], [-0.01111693773418665, 0.0006715875933878124], [-0.011180229485034943, 0.0006754110800102353], [-0.0112406425178051, 0.0006790607585571706], [-0.011298134922981262, 0.0006825339514762163], [-0.011352666653692722, 0.000685828214045614], [-0.011404196731746197, 0.0006889412761665881], [-0.011452690698206425, 0.000691870809532702], [-0.011498111300170422, 0.0006946147186681628], [-0.01154042687267065, 0.0006971710827201605], [-0.011579606682062149, 0.0006995379808358848], [-0.011615622788667679, 0.0007017137249931693], [-0.011648448184132576, 0.0007036968017928302], [-0.01167806051671505, 0.0007054856978356838], [-0.011704436503350735, 0.00070707913255319], [-0.011727558448910713, 0.0007084759417921305], [-0.011747408658266068, 0.0007096750778146088], [-0.011763972230255604, 0.0007106757257133722], [-0.011777237989008427, 0.0007114771287888288], [-0.011787195689976215, 0.0007120786467567086], [-0.011793837882578373, 0.0007124799303710461], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.01179757621139288, 0.0007127057760953903], [-0.011794387362897396, 0.0007125428528524935], [-0.011788721196353436, 0.000712253269739449], [-0.011780226603150368, 0.0007118192734196782], [-0.011768910102546215, 0.0007112410385161638], [-0.011754780076444149, 0.0007105190306901932], [-0.011737847700715065, 0.0007096537738107145], [-0.011718123219907284, 0.0007086459663696587], [-0.011695623397827148, 0.0007074962486512959], [-0.011670363135635853, 0.0007062054937705398], [-0.011642360128462315, 0.0007047746330499649], [-0.011611636728048325, 0.0007032047724351287], [-0.011578214354813099, 0.0007014969596639276], [-0.011542117223143578, 0.0006996524753049016], [-0.011503370478749275, 0.0006976725999265909], [-0.01146200392395258, 0.0006955588469281793], [-0.011418045498430729, 0.0006933126715011895], [-0.011371527798473835, 0.000690935761667788], [-0.01132248342037201, 0.0006884296890348196], [-0.011270947754383087, 0.0006857963744550943], [-0.011216957122087479, 0.0006830375641584396], [-0.011160549707710743, 0.0006801552954129875], [-0.011101766489446163, 0.0006771516054868698], [-0.011040647514164448, 0.0006740285898558795], [-0.010977235622704029, 0.0006707884022034705], [-0.010911576449871063, 0.0006674333708360791], [-0.010843713767826557, 0.0006639657658524811], [-0.010773696005344391, 0.0006603880319744349], [-0.01070157065987587, 0.0006567026139236987], [-0.010627387091517448, 0.0006529120146296918], [-0.01055119652301073, 0.0006490189116448164], [-0.010473051108419895, 0.0006450258078984916], [-0.010393001139163971, 0.0006409354973584414], [-0.01031110342592001, 0.0006367507157847285], [-0.01022741012275219, 0.0006324741989374161], [-0.010141978971660137, 0.0006281088571995497], [-0.010054864920675755, 0.0006236575427465141], [-0.009966124780476093, 0.000619123165961355], [-0.009875817224383354, 0.000614508637227118], [-0.009783999994397163, 0.0006098170415498316], [-0.009690732695162296, 0.0006050512893125415], [-0.009596074000000954, 0.000600214465521276], [-0.009500083513557911, 0.0005953095969744027], [-0.009402822703123093, 0.0005903398268856108], [-0.009304351173341274, 0.000585308182053268], [-0.009204729460179806, 0.0005802177474834025], [-0.009104019030928612, 0.0005750717245973647], [-0.009002281352877617, 0.000569873140193522], [-0.008899576030671597, 0.0005646251956932247], [-0.008795966394245625, 0.0005593309761025012], [-0.008691511116921902, 0.0005539935664273798], [-0.008586272597312927, 0.0005486161098815501], [-0.008480311371386051, 0.0005432017496787012], [-0.008373687975108624, 0.0005377535708248615], [-0.00826646201312542, 0.0005322746001183987], [-0.00815869402140379, 0.000526767922565341], [-0.008050443604588509, 0.0005212366231717169], [-0.007941769436001778, 0.0005156836123205721], [-0.007832730188965797, 0.000510111975017935], [-0.007723383605480194, 0.0005045246216468513], [-0.007613787427544594, 0.0004989245207980275], [-0.007503998000174761, 0.0004933145828545094], [-0.007394072134047747, 0.0004876976599916816], [-0.007284064777195454, 0.00048207654617726803], [-0.0071740299463272095, 0.00047645403537899256], [-0.007064022123813629, 0.00047083289246074855], [-0.006954093463718891, 0.0004652158240787685], [-0.006844296585768461, 0.00045960547868162394], [-0.006734682247042656, 0.000454004475614056], [-0.0066253007389605045, 0.0004484153469093144], [-0.006516200490295887, 0.0004428405954968184], [-0.006407430395483971, 0.0004372826952021569], [-0.006299037020653486, 0.00043174406164325774], [-0.00619106600061059, 0.00042622702312655747], [-0.006083562504500151, 0.0004207338497508317], [-0.005976569838821888, 0.0004152668116148561], [-0.005870130844414234, 0.000409828033298254], [-0.00576428696513176, 0.0004044196684844792], [-0.005659077782183886, 0.0003990437544416636], [-0.005554542411118746, 0.0003937022411264479], [-0.0054507190361619, 0.0003883971075993031], [-0.005347643047571182, 0.0003831302165053785], [-0.0052453503012657166, 0.0003779033140745014], [-0.005143874790519476, 0.00037271814653649926], [-0.005043249111622572, 0.00036757643101736903], [-0.004943504463881254, 0.00036247973912395537], [-0.004844671115279198, 0.000357429584255442], [-0.0047467779368162155, 0.00035242747981101274], [-0.0046498519368469715, 0.00034747482277452946], [-0.0045539201237261295, 0.0003425729228183627], [-0.004459007177501917, 0.0003377231187187135], [-0.004365136381238699, 0.0003329265455249697], [-0.004272330552339554, 0.00032818439649417996], [-0.004180611111223698, 0.0003234977484680712], [-0.00408999715000391, 0.00031886762008070946], [-0.004000508226454258, 0.0003142949426546693], [-0.0039121611043810844, 0.0003097806475125253], [-0.003824972314760089, 0.00030532549135386944], [-0.0037389565259218216, 0.0003009303181897849], [-0.0036541277077049017, 0.0002965957683045417], [-0.0035704984329640865, 0.0002923225110862404], [-0.003488080110400915, 0.0002881111577153206], [-0.0034068827517330647, 0.00028396217385306954], [-0.003326915903016925, 0.00027987605426460505], [-0.0032481872476637363, 0.0002758532064035535], [-0.0031707037705928087, 0.0002718940086197108], [-0.0030944712925702333, 0.0002679987228475511], [-0.003019494703039527, 0.0002641676110215485], [-0.002945777727290988, 0.00026040084776468575], [-0.0028733229264616966, 0.0002566985785961151], [-0.002802132396027446, 0.0002530609199311584], [-0.0027322066016495228, 0.00024948790087364614], [-0.0026635455433279276, 0.00024597946321591735], [-0.002596148056909442, 0.0002425356360618025], [-0.0025300125125795603, 0.00023915627389214933], [-0.002465135883539915, 0.00023584124573972076], [-0.0024015146773308516, 0.00023259036242961884], [-0.0023391444701701403, 0.0002294033911311999], [-0.002278019906952977, 0.00022628006990998983], [-0.0022181349340826273, 0.00022322010772768408], [-0.002159483265131712, 0.00022022315533831716], [-0.0021020572166889906, 0.0002172888198401779], [-0.002045848872512579, 0.00021441672288347036], [-0.0019908493850380182, 0.000211606384254992], [-0.0019370497902855277, 0.00020885735284537077], [-0.0018844397272914648, 0.00020616910478565842], [-0.0018330090679228306, 0.00020354113075882196], [-0.0017827467527240515, 0.00020097284868825227], [-0.0016845355276018381, 0.00019595450430642813], [-0.0016342730959877372, 0.00019338622223585844], [-0.001582842436619103, 0.00019075823365710676], [-0.0015302324900403619, 0.00018807000014930964], [-0.0014764327788725495, 0.0001853209687396884], [-0.0014214332913979888, 0.00018251063011121005], [-0.0013652249472215772, 0.00017963851860258728], [-0.0013077990151941776, 0.00017670419765636325], [-0.0012491472298279405, 0.00017370724526699632], [-0.0011892624897882342, 0.00017064726853277534], [-0.0011281378101557493, 0.0001675239618634805], [-0.0010657674865797162, 0.00016433699056506157], [-0.0010021462803706527, 0.00016108610725495964], [-0.0009372697095386684, 0.00015777106455061585], [-0.0008711341070011258, 0.00015439170238096267], [-0.000803736736997962, 0.00015094787522684783], [-0.0007350757368840277, 0.0001474394666729495], [-0.0006651499425061047, 0.00014386643306352198], [-0.000593959295656532, 0.00014022875984665006], [-0.0005215045530349016, 0.00013652650522999465], [-0.00044778751907870173, 0.0001327597419731319], [-0.00037281090044416487, 0.0001289286301471293], [-0.0002965784806292504, 0.0001250333443749696], [-0.0002190950035583228, 0.00012107412476325408], [-0.00014036634820513427, 0.00011705129145411775], [-6.03994085395243e-05, 0.00011296517914161086], [2.0797817342099734e-05, 0.00010881620255531743], [0.00010321620356990024, 0.00010460482735652477], [0.00018684550013858825, 0.00010033157741418108], [0.00027167427469976246, 9.599703480489552e-05], [0.0003576900053303689, 9.160184708889574e-05], [0.00044487888226285577, 8.71467127581127e-05], [0.0005332259461283684, 8.263239578809589e-05], [0.0006227150443010032, 7.805972563801333e-05], [0.0007133287144824862, 7.342958997469395e-05], [0.0008050483884289861, 6.874294194858521e-05], [0.0008978541009128094, 6.40008001937531e-05], [0.0009917247807607055, 5.92042415519245e-05], [0.0010866379598155618, 5.4354415624402463e-05], [0.0011825698893517256, 4.945253022015095e-05], [0.001279495656490326, 4.4499865907710046e-05], [0.00137738895136863, 3.949775782530196e-05], [0.0014762224163860083, 3.444761750870384e-05], [0.001575967064127326, 2.9350912882364355e-05], [0.00167659274302423, 2.4209186449297704e-05], [0.0017780682537704706, 1.9024042558157817e-05], [0.0018803608836606145, 1.3797144674754236e-05], [0.0019834365230053663, 8.530229933967348e-06], [0.0020872603636235, 3.225095724701532e-06], [0.002191795501857996, -2.116396672136034e-06], [0.00229700468480587, -7.4923223110090476e-06], [0.0024028487969189882, -1.2900693036499433e-05], [0.002509287791326642, -1.833945862017572e-05], [0.002616280224174261, -2.3806509489077143e-05], [0.0027237837202847004, -2.9299671950866468e-05], [0.0028317547403275967, -3.4816719562513754e-05], [0.002940148115158081, -4.0355356759391725e-05], [0.003048918442800641, -4.591324977809563e-05], [0.003158018458634615, -5.1487986638676375e-05], [0.00326740019954741, -5.707711898139678e-05], [0.0033770145382732153, -6.267814023885876e-05], [0.003486811416223645, -6.828848563600332e-05], [0.0035967398434877396, -7.390555401798338e-05], [0.00370674766600132, -7.952668966026977e-05], [0.0038167822640389204, -8.514918590663001e-05], [0.003926789853721857, -9.077029972104356e-05], [0.004036715719848871, -9.638725168770179e-05], [0.004146505147218704, -0.00010199719690717757], [0.0042561013251543045, -0.00010759729048004374], [0.0043654474429786205, -0.00011318462202325463], [0.004474487155675888, -0.00011875626660184935], [0.004583161324262619, -0.00012430924107320607], [0.0046914117410779, -0.00012984058412257582], [0.00479917973279953, -0.0001353472616756335], [0.004906405694782734, -0.00014082623238209635], [0.005013029091060162, -0.00014627442578785121], [0.005118990316987038, -0.00015168878599070013], [0.005224228836596012, -0.00015706621343269944], [0.005328684113919735, -0.00016240360855590552], [0.005432294216006994, -0.00016769784269854426], [0.005534999072551727, -0.0001729458017507568], [0.0056367372162640095, -0.00017814435705076903], [0.005737447179853916, -0.00018329040904063731], [0.005837068893015385, -0.00018838081450667232], [0.005935540422797203, -0.00019341245933901519], [0.006032801698893309, -0.0001983822585316375], [0.006128791254013777, -0.0002032871125265956], [0.006223450414836407, -0.00020812393631786108], [0.006316717714071274, -0.00021288968855515122], [0.006408534944057465, -0.00021758131333626807], [0.006498842500150204, -0.00022219579841475934], [0.006587582174688578, -0.00022673018975183368], [0.006674696691334248, -0.0002311815187567845], [0.006760128308087587, -0.0002355468604946509], [0.00684382114559412, -0.0002398233482381329], [0.006925719324499369, -0.00024400814436376095], [0.007005768362432718, -0.0002480984549038112], [0.0070839147083461285, -0.00025209152954630554], [0.007160105276852846, -0.0002559846907388419], [0.00723428837954998, -0.00025977526092901826], [0.007306413725018501, -0.0002634607080835849], [0.007376431953161955, -0.0002670384419616312], [0.007444294169545174, -0.00027050604694522917], [0.007509953808039427, -0.0002738610783126205], [0.007573365233838558, -0.00027710123686119914], [0.007634484209120274, -0.00028022428159601986], [0.007693267893046141, -0.0002832279715221375], [0.007749674841761589, -0.0002861102402675897], [0.007803665474057198, -0.00028886902146041393], [0.00785520114004612, -0.00029150236514396966], [0.007904245518147945, -0.0002940084086731076], [0.00795076321810484, -0.0002963853476103395], [0.00799472164362669, -0.00029863149393349886], [0.008036088198423386, -0.00030074527603574097], [0.008074834942817688, -0.00030272509320639074], [0.00811093207448721, -0.0003045695775654167], [0.008144354447722435, -0.00030627739033661783], [0.008175078779459, -0.00030784730915911496], [0.008203080855309963, -0.00030927814077585936], [0.008228341117501259, -0.00031056886655278504], [0.008250840939581394, -0.00031171858427114785], [0.008270565420389175, -0.0003127264208160341], [0.00828749779611826, -0.00031359167769551277], [0.008301627822220325, -0.00031431365641765296], [0.008312944322824478, -0.00031489189132116735], [0.008321438916027546, -0.0003153259458485991], [0.008327105082571507, -0.0003156154998578131], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00833029393106699, -0.0003157784231007099], [0.00832765456289053, -0.00031567836413159966], [0.008322964422404766, -0.0003155005688313395], [0.00831593293696642, -0.0003152340359520167], [0.008306565694510937, -0.00031487896922044456], [0.008294870145618916, -0.0003144356014672667], [0.008280853740870953, -0.000313904311042279], [0.008264527656137943, -0.00031328541808761656], [0.008245903998613358, -0.0003125794173683971], [0.008224994875490665, -0.00031178680364973843], [0.008201816119253635, -0.0003109081881120801], [0.008176385425031185, -0.0003099441819358617], [0.008148720487952232, -0.00030889545450918376], [0.008118840865790844, -0.00030776282073929906], [0.00808676891028881, -0.0003065470664296299], [0.008052527904510498, -0.0003052490937989205], [0.008016142062842846, -0.000303869805065915], [0.007977637462317944, -0.0003024101897608489], [0.00793704204261303, -0.0003008713247254491], [0.007894383743405342, -0.0002992542868014425], [0.007849694229662418, -0.00029756021103821695], [0.007803003769367933, -0.0002957903197966516], [0.00775434635579586, -0.00029394583543762565], [0.007703755982220173, -0.0002920280967373401], [0.0076512680388987064, -0.0002900384133681655], [0.007596918847411871, -0.00028797821141779423], [0.007540746591985226, -0.00028584885876625776], [0.0074827903881669044, -0.0002836518979165703], [0.007423089351505041, -0.00028138881316408515], [0.007361685391515493, -0.0002790611470118165], [0.007298619486391544, -0.0002766705001704395], [0.007233934942632914, -0.0002742184733506292], [0.007167675066739321, -0.0002717067545745522], [0.007099885027855635, -0.0002691370318643749], [0.007030609529465437, -0.00026651096413843334], [0.006959894206374884, -0.0002638303558342159], [0.00688778655603528, -0.0002610969531815499], [0.0068143331445753574, -0.00025831256061792374], [0.006739582400768995, -0.00025547895347699523], [0.006663581822067499, -0.00025259796530008316], [0.006586380768567324, -0.0002496714878361672], [0.006508028134703636, -0.00024670138373039663], [0.0064285737462341785, -0.00024368947197217494], [0.006348067428916693, -0.00024063768796622753], [0.006266558542847633, -0.00023754792346153408], [0.006184098310768604, -0.00023442207020707428], [0.006100736558437347, -0.0002312620636075735], [0.006016524042934179, -0.00022806980996392667], [0.0059315115213394165, -0.0002248472155770287], [0.005845749285072088, -0.00022159621585160494], [0.005759288091212511, -0.0002183187025366351], [0.005672178231179714, -0.00021501661103684455], [0.005584470462054014, -0.00021169183310121298], [0.005496214143931866, -0.0002083462750306353], [0.005407459102571011, -0.0002049818285740912], [0.005318255629390478, -0.00020160037092864513], [0.005228652618825436, -0.00019820377929136157], [0.00513869896531105, -0.00019479387265164405], [0.0050484430976212025, -0.00019137252820655704], [0.0049579329788684845, -0.0001879415358416736], [0.004867216106504202, -0.00018450271454639733], [0.004776339512318373, -0.00018105782510247082], [0.004685349762439728, -0.00017760865739546716], [0.004594292026013136, -0.00017415692855138332], [0.004503212403506041, -0.000170704341144301], [0.004412154667079449, -0.00016725259774830192], [0.0043211630545556545, -0.0001638033427298069], [0.004230279941111803, -0.00016035822045523673], [0.004139548167586327, -0.00015691883163526654], [0.004049008712172508, -0.00015348673332482576], [0.003958702553063631, -0.00015006348257884383], [0.00386866950429976, -0.00014665056369267404], [0.003778948215767741, -0.0001432494755135849], [0.0036895766388624907, -0.00013986165868118405], [0.003600592026486993, -0.00013648849562741816], [0.0035120302345603704, -0.00013313136878423393], [0.0034239268861711025, -0.00012979160237591714], [0.003336315741762519, -0.00012647050607483834], [0.003249230096116662, -0.00012316933134570718], [0.0031627025455236435, -0.00011988930782536045], [0.003076763590797782, -0.00011663160694297403], [0.0029914439655840397, -0.00011339737829985097], [0.0029067727737128735, -0.00011018772056559101], [0.002822777722030878, -0.00010700369603000581], [0.002739486051723361, -0.00010384634515503421], [0.002656923606991768, -0.00010071662836708128], [0.0025751155335456133, -9.761551336850971e-05], [0.00249408558011055, -9.454388782614842e-05], [0.002413856564089656, -9.150262485491112e-05], [0.0023344499059021473, -8.849254663800821e-05], [0.0022558867931365967, -8.551443897886202e-05], [0.0021781865507364273, -8.256903674919158e-05], [0.0021013678051531315, -7.965704571688548e-05], [0.0020254480186849833, -7.677914254600182e-05], [0.001950443722307682, -7.393593114102259e-05], [0.001876370282843709, -7.112801540642977e-05], [0.0018032421357929707, -6.835592648712918e-05], [0.0017310726689174771, -6.562018097611144e-05], [0.001659874222241342, -6.292124453466386e-05], [0.0015896583208814263, -6.0259553720243275e-05], [0.0015204352093860507, -5.763549779658206e-05], [0.001452214433811605, -5.504943692358211e-05], [0.0013850044924765825, -5.2501691243378446e-05], [0.0013188128359615803, -4.999255179427564e-05], [0.0012536462163552642, -4.752226595883258e-05], [0.0011895103380084038, -4.509104837779887e-05], [0.0011264098575338721, -4.269908458809368e-05], [0.001064348965883255, -4.0346527384826913e-05], [0.001003330573439598, -3.803348954534158e-05], [0.0009433571249246597, -3.576006201910786e-05], [0.000884429959114641, -3.352629573782906e-05], [0.0008265497745014727, -3.133221616735682e-05], [0.0007697164546698332, -2.9177825126680546e-05], [0.0007139291847124696, -2.706308259803336e-05], [0.0006591862766072154, -2.4987930373754352e-05], [0.000605485518462956, -2.2952282961341552e-05], [0.0005528238252736628, -2.0956023945473135e-05], [0.0005011975881643593, -1.8999016901943833e-05], [0.00045060249976813793, -1.7081096302717924e-05], [0.00040103361243382096, -1.5202076610876247e-05], [0.00035248539643362164, -1.3361747733142693e-05], [0.0003049517690669745, -1.155987865786301e-05], [0.0002584260073490441, -9.796215636015404e-06], [0.0002129009662894532, -8.070486728684045e-06], [0.00016836891882121563, -6.3824004428170156e-06], [0.00012482167221605778, -4.7316448217316065e-06], [8.225057536037639e-05, -3.117891992587829e-06], [4.064652603119612e-05, -1.5407974842673866e-06]]}, {"name": "QId_d0", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d1", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d2", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d3", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d4", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d5", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d6", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}], "cmd_def": [{"name": "cx", "qubits": [0, 1], "sequence": [{"name": "fc", "t0": 1536, "ch": "d0", "phase": -1.8750369474434427}, {"name": "CX_d1_u0", "t0": 0, "ch": "d1"}, {"name": "fc", "t0": 1536, "ch": "d1", "phase": -0.027845207158829738}, {"name": "parametric_pulse", "t0": 0, "ch": "u0", "label": "CX_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14297109472488193, -0.17212078701403205], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 1536, "ch": "u0", "phase": -0.027845207158829738}, {"name": "fc", "t0": 1536, "ch": "u1", "phase": -1.8750369474434427}, {"name": "fc", "t0": 1536, "ch": "u4", "phase": -0.027845207158829738}, {"name": "fc", "t0": 1536, "ch": "u5", "phase": -0.027845207158829738}]}, {"name": "cx", "qubits": [1, 0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.0006012669861576026, 0.08946691149801805], "beta": 0.25210261654843047, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1696, "ch": "d0", "phase": -1.8750369474434427}, {"name": "fc", "t0": 1696, "ch": "d0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1696, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.0006012669861576026, 0.08946691149801805], "beta": 0.25210261654843047, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00017242693036170322, 0.08609165698258295], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "CX_d1_u0", "t0": 160, "ch": "d1"}, {"name": "fc", "t0": 1696, "ch": "d1", "phase": -0.027845207158829738}, {"name": "fc", "t0": 1696, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1696, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00017242693036170322, 0.08609165698258295], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u0", "label": "CX_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14297109472488193, -0.17212078701403205], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 1696, "ch": "u0", "phase": -0.027845207158829738}, {"name": "fc", "t0": 1696, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u1", "phase": -3.141592653589793}, {"name": "fc", "t0": 1696, "ch": "u1", "phase": -1.8750369474434427}, {"name": "fc", "t0": 1696, "ch": "u1", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 1696, "ch": "u4", "phase": -0.027845207158829738}, {"name": "fc", "t0": 1696, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 1696, "ch": "u5", "phase": -0.027845207158829738}, {"name": "fc", "t0": 1696, "ch": "u5", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [1, 2], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00017242693036170322, 0.08609165698258295], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0862436893436641, -0.0032901415303890026], "duration": 320, "sigma": 64, "width": 64}}, {"name": "parametric_pulse", "t0": 640, "ch": "d1", "label": "CR90m_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0862436893436641, 0.003290141530389013], "duration": 320, "sigma": 64, "width": 64}}, {"name": "fc", "t0": 960, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 960, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.08609165698258295, -0.00017242693036170073], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d2", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.09671414353299662, 0.001892418687104633], "beta": -1.7521753200289991, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 480, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.19246634180374358, 0.0], "beta": -1.747165110510683, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d2", "label": "Y90m_d2", "pulse_shape": "drag", "parameters": {"amp": [0.0018924186871046263, -0.09671414353299662], "beta": -1.7521753200289991, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 960, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u4", "label": "CR90p_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.8253860473271264, 0.10811216727128682], "duration": 320, "sigma": 64, "width": 64}}, {"name": "parametric_pulse", "t0": 640, "ch": "u4", "label": "CR90m_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.8253860473271264, -0.10811216727128692], "duration": 320, "sigma": 64, "width": 64}}, {"name": "fc", "t0": 960, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 960, "ch": "u5", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [1, 3], "sequence": [{"name": "fc", "t0": 1184, "ch": "d1", "phase": 2.076766052335569}, {"name": "CX_d3_u3", "t0": 0, "ch": "d3"}, {"name": "fc", "t0": 1184, "ch": "d3", "phase": -0.027196709087550414}, {"name": "fc", "t0": 1184, "ch": "u0", "phase": 2.076766052335569}, {"name": "parametric_pulse", "t0": 0, "ch": "u3", "label": "CX_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17142256125188243, -0.07353323702846441], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "fc", "t0": 1184, "ch": "u3", "phase": -0.027196709087550414}, {"name": "fc", "t0": 1184, "ch": "u4", "phase": 2.076766052335569}, {"name": "fc", "t0": 1184, "ch": "u5", "phase": 2.076766052335569}, {"name": "fc", "t0": 1184, "ch": "u8", "phase": -0.027196709087550414}]}, {"name": "cx", "qubits": [2, 1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.08609165698258295, -0.00017242693036170073], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0862436893436641, -0.0032901415303890026], "duration": 320, "sigma": 64, "width": 64}}, {"name": "parametric_pulse", "t0": 640, "ch": "d1", "label": "CR90m_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0862436893436641, 0.003290141530389013], "duration": 320, "sigma": 64, "width": 64}}, {"name": "fc", "t0": 0, "ch": "d2", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Ym_d2", "pulse_shape": "drag", "parameters": {"amp": [-3.535549341503325e-17, -0.19246634180374358], "beta": -1.747165110510683, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 480, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.19246634180374358, 0.0], "beta": -1.747165110510683, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u2", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u4", "label": "CR90p_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.8253860473271264, 0.10811216727128682], "duration": 320, "sigma": 64, "width": 64}}, {"name": "parametric_pulse", "t0": 640, "ch": "u4", "label": "CR90m_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.8253860473271264, -0.10811216727128692], "duration": 320, "sigma": 64, "width": 64}}]}, {"name": "cx", "qubits": [3, 1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00017242693036170322, 0.08609165698258295], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1344, "ch": "d1", "phase": 2.076766052335569}, {"name": "fc", "t0": 1344, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1344, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00017242693036170322, 0.08609165698258295], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.0001670663099105773, 0.09653082608263493], "beta": -0.4845695954465901, "duration": 160, "sigma": 40}}, {"name": "CX_d3_u3", "t0": 160, "ch": "d3"}, {"name": "fc", "t0": 1344, "ch": "d3", "phase": -0.027196709087550414}, {"name": "fc", "t0": 1344, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1344, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.0001670663099105773, 0.09653082608263493], "beta": -0.4845695954465901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 1344, "ch": "u0", "phase": 2.076766052335569}, {"name": "fc", "t0": 1344, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u3", "label": "CX_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17142256125188243, -0.07353323702846441], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "fc", "t0": 1344, "ch": "u3", "phase": -0.027196709087550414}, {"name": "fc", "t0": 1344, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 1344, "ch": "u4", "phase": 2.076766052335569}, {"name": "fc", "t0": 1344, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 1344, "ch": "u5", "phase": 2.076766052335569}, {"name": "fc", "t0": 1344, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 1344, "ch": "u8", "phase": -0.027196709087550414}, {"name": "fc", "t0": 1344, "ch": "u8", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [3, 5], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.0001670663099105773, 0.09653082608263493], "beta": -0.4845695954465901, "duration": 160, "sigma": 40}}, {"name": "CX_d3_u8", "t0": 160, "ch": "d3"}, {"name": "fc", "t0": 912, "ch": "d3", "phase": 0.09040667315521438}, {"name": "fc", "t0": 912, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 912, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.0001670663099105773, 0.09653082608263493], "beta": -0.4845695954465901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.002301628241176777, 0.09351282785575576], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 912, "ch": "d5", "phase": 2.214870709523857}, {"name": "fc", "t0": 912, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 912, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.002301628241176777, 0.09351282785575576], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 912, "ch": "u11", "phase": 2.214870709523857}, {"name": "fc", "t0": 912, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 912, "ch": "u3", "phase": 0.09040667315521438}, {"name": "fc", "t0": 912, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 912, "ch": "u6", "phase": 2.214870709523857}, {"name": "fc", "t0": 912, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 912, "ch": "u7", "phase": 2.214870709523857}, {"name": "fc", "t0": 912, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u8", "label": "CX_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10836859489818579, -0.17727820486214946], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 912, "ch": "u8", "phase": 0.09040667315521438}, {"name": "fc", "t0": 912, "ch": "u8", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [4, 5], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Ym_d4", "pulse_shape": "drag", "parameters": {"amp": [-3.598745310579333e-17, -0.19590657012753498], "beta": -0.9666494187533101, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 688, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.19590657012753498, 0.0], "beta": -0.9666494187533101, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09351282785575576, -0.002301628241176761], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.042042518042435424, -0.0033167259899327456], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 848, "ch": "d5", "label": "CR90m_d5_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.042042518042435424, 0.0033167259899327508], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 160, "ch": "u7", "label": "CR90p_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.6061709832131271, 0.3798162094852223], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 848, "ch": "u7", "label": "CR90m_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.6061709832131271, -0.37981620948522227], "duration": 528, "sigma": 64, "width": 272}}, {"name": "fc", "t0": 0, "ch": "u9", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [5, 3], "sequence": [{"name": "CX_d3_u8", "t0": 0, "ch": "d3"}, {"name": "fc", "t0": 752, "ch": "d3", "phase": 0.09040667315521438}, {"name": "fc", "t0": 752, "ch": "d5", "phase": 2.214870709523857}, {"name": "fc", "t0": 752, "ch": "u11", "phase": 2.214870709523857}, {"name": "fc", "t0": 752, "ch": "u3", "phase": 0.09040667315521438}, {"name": "fc", "t0": 752, "ch": "u6", "phase": 2.214870709523857}, {"name": "fc", "t0": 752, "ch": "u7", "phase": 2.214870709523857}, {"name": "parametric_pulse", "t0": 0, "ch": "u8", "label": "CX_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10836859489818579, -0.17727820486214946], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 752, "ch": "u8", "phase": 0.09040667315521438}]}, {"name": "cx", "qubits": [5, 4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09808602148580131, 0.00022049906309917452], "beta": -1.171101058049454, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 688, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.19590657012753498, 0.0], "beta": -0.9666494187533101, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d4", "label": "Y90m_d4", "pulse_shape": "drag", "parameters": {"amp": [0.00022049906309919222, -0.09808602148580131], "beta": -1.171101058049454, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.002301628241176777, 0.09351282785575576], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.042042518042435424, -0.0033167259899327456], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 848, "ch": "d5", "label": "CR90m_d5_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.042042518042435424, 0.0033167259899327508], "duration": 528, "sigma": 64, "width": 272}}, {"name": "fc", "t0": 1376, "ch": "d5", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1376, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09351282785575576, -0.002301628241176761], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 1376, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 1376, "ch": "u6", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u7", "label": "CR90p_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.6061709832131271, 0.3798162094852223], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 848, "ch": "u7", "label": "CR90m_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.6061709832131271, -0.37981620948522227], "duration": 528, "sigma": 64, "width": 272}}, {"name": "fc", "t0": 1376, "ch": "u7", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [5, 6], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.002301628241176777, 0.09351282785575576], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "CX_d5_u11", "t0": 160, "ch": "d5"}, {"name": "fc", "t0": 1664, "ch": "d5", "phase": 0.076686974024697}, {"name": "fc", "t0": 1664, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1664, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.002301628241176777, 0.09351282785575576], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d6", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Y90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.001992355232234488, 0.07967098932798254], "beta": 3.854894407786853, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1664, "ch": "d6", "phase": -1.4146936998119433}, {"name": "fc", "t0": 1664, "ch": "d6", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1664, "ch": "d6", "label": "Y90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.001992355232234488, 0.07967098932798254], "beta": 3.854894407786853, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u10", "phase": -1.4146936998119433}, {"name": "fc", "t0": 1664, "ch": "u10", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u11", "label": "CX_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.165388980791369, -0.1887379038133816], "duration": 1504, "sigma": 64, "width": 1248}}, {"name": "fc", "t0": 1664, "ch": "u11", "phase": 0.076686974024697}, {"name": "fc", "t0": 1664, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u6", "phase": 0.076686974024697}, {"name": "fc", "t0": 1664, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u7", "phase": 0.076686974024697}, {"name": "fc", "t0": 1664, "ch": "u7", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [6, 5], "sequence": [{"name": "CX_d5_u11", "t0": 0, "ch": "d5"}, {"name": "fc", "t0": 1504, "ch": "d5", "phase": 0.076686974024697}, {"name": "fc", "t0": 1504, "ch": "d6", "phase": -1.4146936998119433}, {"name": "fc", "t0": 1504, "ch": "u10", "phase": -1.4146936998119433}, {"name": "parametric_pulse", "t0": 0, "ch": "u11", "label": "CX_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.165388980791369, -0.1887379038133816], "duration": 1504, "sigma": 64, "width": 1248}}, {"name": "fc", "t0": 1504, "ch": "u11", "phase": 0.076686974024697}, {"name": "fc", "t0": 1504, "ch": "u6", "phase": 0.076686974024697}, {"name": "fc", "t0": 1504, "ch": "u7", "phase": 0.076686974024697}]}, {"name": "id", "qubits": [0], "sequence": [{"name": "QId_d0", "t0": 0, "ch": "d0"}]}, {"name": "id", "qubits": [1], "sequence": [{"name": "QId_d1", "t0": 0, "ch": "d1"}]}, {"name": "id", "qubits": [2], "sequence": [{"name": "QId_d2", "t0": 0, "ch": "d2"}]}, {"name": "id", "qubits": [3], "sequence": [{"name": "QId_d3", "t0": 0, "ch": "d3"}]}, {"name": "id", "qubits": [4], "sequence": [{"name": "QId_d4", "t0": 0, "ch": "d4"}]}, {"name": "id", "qubits": [5], "sequence": [{"name": "QId_d5", "t0": 0, "ch": "d5"}]}, {"name": "id", "qubits": [6], "sequence": [{"name": "QId_d6", "t0": 0, "ch": "d6"}]}, {"name": "measure", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18727804370820855, 0.165610791752308], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m0", "duration": 1856}, {"name": "acquire", "t0": 0, "duration": 2240, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [0, 1, 2, 3, 4, 5, 6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18727804370820855, 0.165610791752308], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m0", "duration": 1856}, {"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3499997930266485, -0.0003806327668397871], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m1", "duration": 1856}, {"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11452767199060827, -0.27727858256347826], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m2", "duration": 1856}, {"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15106528828492172, -0.2475465182049497], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m3", "duration": 1856}, {"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12190343658814644, -0.4601255830183753], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m4", "duration": 1856}, {"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3804085418453475, 0.22110934238764424], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m5", "duration": 1856}, {"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09112903361820612, -0.4671953544630039], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m6", "duration": 1856}, {"name": "acquire", "t0": 0, "duration": 2240, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3499997930266485, -0.0003806327668397871], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m1", "duration": 1856}, {"name": "acquire", "t0": 0, "duration": 2240, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11452767199060827, -0.27727858256347826], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m2", "duration": 1856}, {"name": "acquire", "t0": 0, "duration": 2240, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15106528828492172, -0.2475465182049497], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m3", "duration": 1856}, {"name": "acquire", "t0": 0, "duration": 2240, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12190343658814644, -0.4601255830183753], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m4", "duration": 1856}, {"name": "acquire", "t0": 0, "duration": 2240, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3804085418453475, 0.22110934238764424], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m5", "duration": 1856}, {"name": "acquire", "t0": 0, "duration": 2240, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "measure", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09112903361820612, -0.4671953544630039], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m6", "duration": 1856}, {"name": "acquire", "t0": 0, "duration": 2240, "qubits": [0, 1, 2, 3, 4, 5, 6], "memory_slot": [0, 1, 2, 3, 4, 5, 6]}]}, {"name": "rz", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}]}, {"name": "sx", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.08946691149801805, -0.0006012669861576055], "beta": 0.25210261654843047, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.08609165698258295, -0.00017242693036170073], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.09671414353299662, 0.001892418687104633], "beta": -1.7521753200289991, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.09653082608263493, -0.00016706630991058166], "beta": -0.4845695954465901, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09808602148580131, 0.00022049906309917452], "beta": -1.171101058049454, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09351282785575576, -0.002301628241176761], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.07967098932798254, -0.001992355232234487], "beta": 3.854894407786853, "duration": 160, "sigma": 40}}]}, {"name": "u1", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.0006012669861576026, 0.08946691149801805], "beta": 0.25210261654843047, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.00017242693036170322, 0.08609165698258295], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u5", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0018924186871046166, 0.09671414353299662], "beta": -1.7521753200289991, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.0001670663099105773, 0.09653082608263493], "beta": -0.4845695954465901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u8", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.00022049906309916067, 0.09808602148580131], "beta": -1.171101058049454, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.002301628241176777, 0.09351282785575576], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Y90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.001992355232234488, 0.07967098932798254], "beta": 3.854894407786853, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}]}, {"name": "u3", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.08946691149801805, -0.0006012669861576055], "beta": 0.25210261654843047, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d0", "label": "X90m_d0", "pulse_shape": "drag", "parameters": {"amp": [-0.08946691149801805, 0.000601266986157608], "beta": 0.25210261654843047, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u1", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.08609165698258295, -0.00017242693036170073], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d1", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "X90m_d1", "pulse_shape": "drag", "parameters": {"amp": [-0.08609165698258295, 0.00017242693036170848], "beta": -0.6816138281091626, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d1", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u5", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u5", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.09671414353299662, 0.001892418687104633], "beta": -1.7521753200289991, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "X90m_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.09671414353299662, -0.0018924186871046324], "beta": -1.7521753200289991, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d2", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u2", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.09653082608263493, -0.00016706630991058166], "beta": -0.4845695954465901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "X90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.09653082608263493, 0.00016706630991060464], "beta": -0.4845695954465901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d3", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u3", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u8", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u8", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09808602148580131, 0.00022049906309917452], "beta": -1.171101058049454, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "X90m_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.09808602148580131, -0.00022049906309915465], "beta": -1.171101058049454, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u9", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09351282785575576, -0.002301628241176761], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "X90m_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.09351282785575576, 0.0023016282411767825], "beta": 2.304928713275625, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d5", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u6", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u7", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u7", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.07967098932798254, -0.001992355232234487], "beta": 3.854894407786853, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d6", "label": "X90m_d6", "pulse_shape": "drag", "parameters": {"amp": [-0.07967098932798253, 0.0019923552322345106], "beta": 3.854894407786853, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d6", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u10", "phase": "-(P1)"}]}, {"name": "x", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.17791158187010278, 0.0], "beta": 0.25931866637047774, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.17172012521051147, 0.0], "beta": -0.5461967065159612, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.19246634180374358, 0.0], "beta": -1.747165110510683, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.19299857560450118, 0.0], "beta": -0.5387397003716026, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.19590657012753498, 0.0], "beta": -0.9666494187533101, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.18603346715209645, 0.0], "beta": 2.401542893863777, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.15868955309502078, 0.0], "beta": 3.784349150105813, "duration": 160, "sigma": 40}}]}], "meas_kernel": {"name": "hw_qmfk", "params": {}}, "discriminator": {"name": "hw_qmfk", "params": {}}, "_data": {}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends/oslo/fake_oslo.py b/qiskit/providers/fake_provider/backends/oslo/fake_oslo.py new file mode 100644 index 000000000000..f47552de21bc --- /dev/null +++ b/qiskit/providers/fake_provider/backends/oslo/fake_oslo.py @@ -0,0 +1,29 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + + +""" +Fake Oslo device (7 qubits). +""" + +import os +from qiskit.providers.fake_provider import fake_backend + + +class FakeOslo(fake_backend.FakeBackendV2): + """A fake 7 qubit backend.""" + + dirname = os.path.dirname(__file__) + conf_filename = "conf_oslo.json" + props_filename = "props_oslo.json" + defs_filename = "defs_oslo.json" + backend_name = "fake_oslo" diff --git a/qiskit/providers/fake_provider/backends/oslo/props_oslo.json b/qiskit/providers/fake_provider/backends/oslo/props_oslo.json new file mode 100644 index 000000000000..18d02087ebaf --- /dev/null +++ b/qiskit/providers/fake_provider/backends/oslo/props_oslo.json @@ -0,0 +1 @@ +{"backend_name": "ibm_oslo", "backend_version": "1.0.5", "last_update_date": "2022-07-17T22:01:55+02:00", "qubits": [[{"date": "2022-07-17T21:50:55+02:00", "name": "T1", "unit": "us", "value": 148.84747328441438}, {"date": "2022-07-17T06:53:09+02:00", "name": "T2", "unit": "us", "value": 73.69298024352507}, {"date": "2022-07-17T22:01:55+02:00", "name": "frequency", "unit": "GHz", "value": 4.925043161619499}, {"date": "2022-07-17T22:01:55+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34553701783041496}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_error", "unit": "", "value": 0.009800000000000031}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0102}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.009399999999999964}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_length", "unit": "ns", "value": 910.2222222222222}], [{"date": "2022-07-17T21:52:41+02:00", "name": "T1", "unit": "us", "value": 137.06651413337354}, {"date": "2022-07-17T06:55:13+02:00", "name": "T2", "unit": "us", "value": 37.0201555236948}, {"date": "2022-07-17T22:01:55+02:00", "name": "frequency", "unit": "GHz", "value": 5.04627284903205}, {"date": "2022-07-17T22:01:55+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34285428501981674}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_error", "unit": "", "value": 0.01429999999999998}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.016599999999999948}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_length", "unit": "ns", "value": 910.2222222222222}], [{"date": "2022-07-17T21:50:55+02:00", "name": "T1", "unit": "us", "value": 219.21703514896734}, {"date": "2022-07-17T06:53:09+02:00", "name": "T2", "unit": "us", "value": 46.69878652698784}, {"date": "2022-07-17T22:01:55+02:00", "name": "frequency", "unit": "GHz", "value": 4.9619984906787}, {"date": "2022-07-17T22:01:55+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34427930521772604}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_error", "unit": "", "value": 0.00770000000000004}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.009199999999999986}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0062}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_length", "unit": "ns", "value": 910.2222222222222}], [{"date": "2022-07-17T21:50:55+02:00", "name": "T1", "unit": "us", "value": 121.28335234199257}, {"date": "2022-07-17T06:53:09+02:00", "name": "T2", "unit": "us", "value": 46.487660104851436}, {"date": "2022-07-17T22:01:55+02:00", "name": "frequency", "unit": "GHz", "value": 5.108098767473062}, {"date": "2022-07-17T22:01:55+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3419525241470448}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_error", "unit": "", "value": 0.01539999999999997}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0124}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.018399999999999972}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_length", "unit": "ns", "value": 910.2222222222222}], [{"date": "2022-07-17T21:50:55+02:00", "name": "T1", "unit": "us", "value": 188.1384270262949}, {"date": "2022-07-17T06:53:09+02:00", "name": "T2", "unit": "us", "value": 184.3690321834765}, {"date": "2022-07-17T22:01:55+02:00", "name": "frequency", "unit": "GHz", "value": 5.011074105950458}, {"date": "2022-07-17T22:01:55+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34458651089423753}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_error", "unit": "", "value": 0.023700000000000054}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.021}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.02639999999999998}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_length", "unit": "ns", "value": 910.2222222222222}], [{"date": "2022-07-17T21:52:41+02:00", "name": "T1", "unit": "us", "value": 142.17817897014814}, {"date": "2022-07-17T06:55:13+02:00", "name": "T2", "unit": "us", "value": 41.13094933306526}, {"date": "2022-07-17T22:01:55+02:00", "name": "frequency", "unit": "GHz", "value": 5.173290077743308}, {"date": "2022-07-17T22:01:55+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34294252669938147}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_error", "unit": "", "value": 0.00990000000000002}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012599999999999945}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0072}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_length", "unit": "ns", "value": 910.2222222222222}], [{"date": "2022-07-17T21:50:55+02:00", "name": "T1", "unit": "us", "value": 103.0457879895173}, {"date": "2022-07-17T06:53:09+02:00", "name": "T2", "unit": "us", "value": 208.46324125703032}, {"date": "2022-07-17T22:01:55+02:00", "name": "frequency", "unit": "GHz", "value": 5.319311606468152}, {"date": "2022-07-17T22:01:55+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33882413698651476}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_error", "unit": "", "value": 0.02939999999999998}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.024599999999999955}, {"date": "2022-07-17T06:43:01+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0342}, {"date": "2022-07-17T06:43:01+02:00", "name": "readout_length", "unit": "ns", "value": 910.2222222222222}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.0002155730497444277}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2022-07-17T07:00:04+02:00", "name": "gate_error", "unit": "", "value": 0.0002993132781582579}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.00026007592653822426}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.0005817781152172266}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.00016640155546641838}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [5], "gate": "id", "parameters": [{"date": "2022-07-17T07:00:04+02:00", "name": "gate_error", "unit": "", "value": 0.00035485711216763524}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id5"}, {"qubits": [6], "gate": "id", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.000251929116208104}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id6"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [5], "gate": "rz", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz5"}, {"qubits": [6], "gate": "rz", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz6"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.0002155730497444277}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2022-07-17T07:00:04+02:00", "name": "gate_error", "unit": "", "value": 0.0002993132781582579}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.00026007592653822426}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.0005817781152172266}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.00016640155546641838}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [5], "gate": "sx", "parameters": [{"date": "2022-07-17T07:00:04+02:00", "name": "gate_error", "unit": "", "value": 0.00035485711216763524}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx5"}, {"qubits": [6], "gate": "sx", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.000251929116208104}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx6"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.0002155730497444277}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2022-07-17T07:00:04+02:00", "name": "gate_error", "unit": "", "value": 0.0002993132781582579}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.00026007592653822426}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.0005817781152172266}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.00016640155546641838}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [5], "gate": "x", "parameters": [{"date": "2022-07-17T07:00:04+02:00", "name": "gate_error", "unit": "", "value": 0.00035485711216763524}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x5"}, {"qubits": [6], "gate": "x", "parameters": [{"date": "2022-07-17T06:57:29+02:00", "name": "gate_error", "unit": "", "value": 0.000251929116208104}, {"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x6"}, {"qubits": [4, 5], "gate": "cx", "parameters": [{"date": "2022-07-17T08:06:39+02:00", "name": "gate_error", "unit": "", "value": 0.008562604964982262}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx4_5"}, {"qubits": [5, 4], "gate": "cx", "parameters": [{"date": "2022-07-17T08:06:39+02:00", "name": "gate_error", "unit": "", "value": 0.008562604964982262}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "cx5_4"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2022-07-17T07:58:48+02:00", "name": "gate_error", "unit": "", "value": 0.006700619069209907}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 213.33333333333331}], "name": "cx2_1"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2022-07-17T07:58:48+02:00", "name": "gate_error", "unit": "", "value": 0.006700619069209907}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 248.88888888888889}], "name": "cx1_2"}, {"qubits": [1, 3], "gate": "cx", "parameters": [{"date": "2022-07-17T07:50:30+02:00", "name": "gate_error", "unit": "", "value": 0.0090091804177925}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 263.1111111111111}], "name": "cx1_3"}, {"qubits": [3, 1], "gate": "cx", "parameters": [{"date": "2022-07-17T07:50:30+02:00", "name": "gate_error", "unit": "", "value": 0.0090091804177925}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx3_1"}, {"qubits": [5, 3], "gate": "cx", "parameters": [{"date": "2022-07-17T07:38:50+02:00", "name": "gate_error", "unit": "", "value": 0.006658667905034887}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 167.11111111111111}], "name": "cx5_3"}, {"qubits": [3, 5], "gate": "cx", "parameters": [{"date": "2022-07-17T07:38:50+02:00", "name": "gate_error", "unit": "", "value": 0.006658667905034887}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 238.2222222222222}], "name": "cx3_5"}, {"qubits": [6, 5], "gate": "cx", "parameters": [{"date": "2022-07-17T07:29:50+02:00", "name": "gate_error", "unit": "", "value": 0.009496172164203343}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx6_5"}, {"qubits": [5, 6], "gate": "cx", "parameters": [{"date": "2022-07-17T07:29:50+02:00", "name": "gate_error", "unit": "", "value": 0.009496172164203343}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx5_6"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2022-07-17T07:13:46+02:00", "name": "gate_error", "unit": "", "value": 0.008958756306646692}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2022-07-17T07:13:46+02:00", "name": "gate_error", "unit": "", "value": 0.008958756306646692}, {"date": "2022-07-14T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 412.4444444444444}], "name": "cx1_0"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 960}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 960}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 960}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 960}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 960}], "name": "reset4"}, {"qubits": [5], "gate": "reset", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 960}], "name": "reset5"}, {"qubits": [6], "gate": "reset", "parameters": [{"date": "2022-07-17T22:01:55+02:00", "name": "gate_length", "unit": "ns", "value": 960}], "name": "reset6"}], "general": [{"date": "2022-07-17T22:01:55+02:00", "name": "jq_01", "unit": "GHz", "value": 0.0031590522071283937}, {"date": "2022-07-17T22:01:55+02:00", "name": "zz_01", "unit": "GHz", "value": -0.00013270709743894927}, {"date": "2022-07-17T22:01:55+02:00", "name": "jq_12", "unit": "GHz", "value": 0.003157497228425737}, {"date": "2022-07-17T22:01:55+02:00", "name": "zz_12", "unit": "GHz", "value": -0.00012337868106558104}, {"date": "2022-07-17T22:01:55+02:00", "name": "jq_45", "unit": "GHz", "value": 0.0032406025501911994}, {"date": "2022-07-17T22:01:55+02:00", "name": "zz_45", "unit": "GHz", "value": -0.00015849331040112231}, {"date": "2022-07-17T22:01:55+02:00", "name": "jq_56", "unit": "GHz", "value": 0.0017397875227948098}, {"date": "2022-07-17T22:01:55+02:00", "name": "zz_56", "unit": "GHz", "value": -4.391095942778944e-05}, {"date": "2022-07-17T22:01:55+02:00", "name": "jq_13", "unit": "GHz", "value": 0.002352026312825992}, {"date": "2022-07-17T22:01:55+02:00", "name": "zz_13", "unit": "GHz", "value": -6.682142681307334e-05}, {"date": "2022-07-17T22:01:55+02:00", "name": "jq_35", "unit": "GHz", "value": 0.0033019914549144097}, {"date": "2022-07-17T22:01:55+02:00", "name": "zz_35", "unit": "GHz", "value": -0.00013245468115798164}]} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/fake_provider.py b/qiskit/providers/fake_provider/fake_provider.py index ce75db248ddd..19bac69c6a9b 100644 --- a/qiskit/providers/fake_provider/fake_provider.py +++ b/qiskit/providers/fake_provider/fake_provider.py @@ -114,6 +114,7 @@ def __init__(self): FakeMontrealV2(), FakeMumbaiV2(), FakeNairobiV2(), + FakeOslo(), FakeOurenseV2(), FakeParisV2(), FakePerth(), diff --git a/releasenotes/notes/fake_oslo-7bba98d7269f959b.yaml b/releasenotes/notes/fake_oslo-7bba98d7269f959b.yaml new file mode 100644 index 000000000000..08c09df96bb1 --- /dev/null +++ b/releasenotes/notes/fake_oslo-7bba98d7269f959b.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + The fake backend :class:`~FakeOslo` was added with the information from IBM Quantum `ibm_oslo` system. From b454a8dfcbe2435f1f50c754a328a91f19335299 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Mon, 19 Sep 2022 15:30:59 +0200 Subject: [PATCH 26/56] Add FakeAuckland backend to fake provider (#8467) * adding FakePerth * Update releasenotes/notes/ibm_perth-5b1e9308dc302e2e.yaml * adding FakeAuckland This PRs adds FakeAuckland based on ibm_auckland. * V1 removed * Mock over Fake * remove V1 * removing v2 * remove v2 name Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/providers/fake_provider/__init__.py | 1 + .../fake_provider/backends/__init__.py | 1 + .../backends/auckland/__init__.py | 15 ++++++++++ .../backends/auckland/conf_auckland.json | 1 + .../backends/auckland/defs_auckland.json | 1 + .../backends/auckland/fake_auckland.py | 29 +++++++++++++++++++ .../backends/auckland/props_auckland.json | 1 + .../providers/fake_provider/fake_provider.py | 1 + .../notes/fake_auckland-deadbeef.yaml | 5 ++++ 9 files changed, 55 insertions(+) create mode 100644 qiskit/providers/fake_provider/backends/auckland/__init__.py create mode 100644 qiskit/providers/fake_provider/backends/auckland/conf_auckland.json create mode 100644 qiskit/providers/fake_provider/backends/auckland/defs_auckland.json create mode 100644 qiskit/providers/fake_provider/backends/auckland/fake_auckland.py create mode 100644 qiskit/providers/fake_provider/backends/auckland/props_auckland.json create mode 100644 releasenotes/notes/fake_auckland-deadbeef.yaml diff --git a/qiskit/providers/fake_provider/__init__.py b/qiskit/providers/fake_provider/__init__.py index b729849bafab..72112970aa3a 100644 --- a/qiskit/providers/fake_provider/__init__.py +++ b/qiskit/providers/fake_provider/__init__.py @@ -111,6 +111,7 @@ FakeAlmadenV2 FakeArmonkV2 FakeAthensV2 + FakeAuckland FakeBelemV2 FakeBoeblingenV2 FakeBogotaV2 diff --git a/qiskit/providers/fake_provider/backends/__init__.py b/qiskit/providers/fake_provider/backends/__init__.py index 4b7fb8df37fa..66acc8624ff5 100644 --- a/qiskit/providers/fake_provider/backends/__init__.py +++ b/qiskit/providers/fake_provider/backends/__init__.py @@ -19,6 +19,7 @@ from .almaden import FakeAlmadenV2 from .armonk import FakeArmonkV2 from .athens import FakeAthensV2 +from .auckland import FakeAuckland from .belem import FakeBelemV2 from .boeblingen import FakeBoeblingenV2 from .bogota import FakeBogotaV2 diff --git a/qiskit/providers/fake_provider/backends/auckland/__init__.py b/qiskit/providers/fake_provider/backends/auckland/__init__.py new file mode 100644 index 000000000000..d2c4388d5b4d --- /dev/null +++ b/qiskit/providers/fake_provider/backends/auckland/__init__.py @@ -0,0 +1,15 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Fake Auckland device (27 qubits)""" + +from .fake_auckland import FakeAuckland diff --git a/qiskit/providers/fake_provider/backends/auckland/conf_auckland.json b/qiskit/providers/fake_provider/backends/auckland/conf_auckland.json new file mode 100644 index 000000000000..101694237071 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/auckland/conf_auckland.json @@ -0,0 +1 @@ +{"backend_name": "ibm_auckland", "backend_version": "1.2.13", "n_qubits": 27, "basis_gates": ["id", "rz", "sx", "x", "cx", "reset"], "gates": [{"name": "id", "parameters": [], "qasm_def": "gate id q { U(0, 0, 0) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 4], [2, 1], [2, 3], [3, 2], [3, 5], [4, 1], [4, 7], [5, 3], [5, 8], [6, 7], [7, 4], [7, 6], [7, 10], [8, 5], [8, 9], [8, 11], [9, 8], [10, 7], [10, 12], [11, 8], [11, 14], [12, 10], [12, 13], [12, 15], [13, 12], [13, 14], [14, 11], [14, 13], [14, 16], [15, 12], [15, 18], [16, 14], [16, 19], [17, 18], [18, 15], [18, 17], [18, 21], [19, 16], [19, 20], [19, 22], [20, 19], [21, 18], [21, 23], [22, 19], [22, 25], [23, 21], [23, 24], [24, 23], [24, 25], [25, 22], [25, 24], [25, 26], [26, 25]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": true, "memory": true, "max_shots": 100000, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 4], [2, 1], [2, 3], [3, 2], [3, 5], [4, 1], [4, 7], [5, 3], [5, 8], [6, 7], [7, 4], [7, 6], [7, 10], [8, 5], [8, 9], [8, 11], [9, 8], [10, 7], [10, 12], [11, 8], [11, 14], [12, 10], [12, 13], [12, 15], [13, 12], [13, 14], [14, 11], [14, 13], [14, 16], [15, 12], [15, 18], [16, 14], [16, 19], [17, 18], [18, 15], [18, 17], [18, 21], [19, 16], [19, 20], [19, 22], [20, 19], [21, 18], [21, 23], [22, 19], [22, 25], [23, 21], [23, 24], [24, 23], [24, 25], [25, 22], [25, 24], [25, 26], [26, 25]], "dynamic_reprate_enabled": true, "supported_instructions": ["play", "x", "acquire", "cx", "u1", "rz", "u2", "shiftf", "u3", "sx", "id", "setf", "measure", "reset", "delay"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 300, "sample_name": "family: Falcon, revision: 5.11", "n_registers": 1, "credits_required": true, "online_date": "2021-07-22T04:00:00+00:00", "description": "27 qubit device", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Falcon", "revision": "5.11"}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "clops": 2419, "measure_esp_enabled": false, "multi_meas_enabled": true, "parallel_compilation": false, "quantum_volume": 64, "qubit_channel_mapping": [["u1", "m0", "d0", "u0"], ["m1", "u0", "u4", "u1", "u2", "d1", "u3", "u8"], ["m2", "u4", "u6", "u5", "u2", "d2"], ["m3", "u6", "u5", "u10", "u7", "d3"], ["d4", "u13", "u9", "u3", "u8", "m4"], ["d5", "u11", "u10", "u16", "u7", "m5"], ["u12", "d6", "u14", "m6"], ["u12", "u20", "u15", "u13", "u9", "d7", "u14", "m7"], ["d8", "u19", "u11", "m8", "u16", "u18", "u17", "u22"], ["u19", "m9", "u17", "d9"], ["d10", "u20", "u15", "u21", "u24", "m10"], ["m11", "u29", "d11", "u18", "u22", "u23"], ["m12", "u21", "u26", "u24", "u32", "u27", "d12", "u25"], ["m13", "u30", "u28", "u27", "d13", "u25"], ["u29", "u30", "u34", "u28", "u31", "m14", "u23", "d14"], ["m15", "d15", "u26", "u33", "u32", "u37"], ["d16", "u40", "u34", "u35", "u31", "m16"], ["u38", "d17", "u36", "m17"], ["u38", "u33", "m18", "u36", "d18", "u44", "u39", "u37"], ["u42", "u40", "u43", "m19", "u46", "d19", "u35", "u41"], ["m20", "u41", "u43", "d20"], ["m21", "d21", "u45", "u44", "u48", "u39"], ["u52", "u42", "u47", "u46", "m22", "d22"], ["d23", "m23", "u45", "u48", "u49", "u50"], ["u53", "u51", "d24", "m24", "u49", "u50"], ["u52", "m25", "u53", "u54", "u51", "u47", "u55", "d25"], ["u54", "d26", "m26", "u55"]], "supported_features": ["qobj"], "timing_constraints": {"acquire_alignment": 16, "granularity": 16, "min_length": 64, "pulse_alignment": 16}, "uchannels_enabled": true, "url": "None", "input_allowed": ["job", "runtime"], "allow_object_storage": true, "pulse_num_channels": 9, "pulse_num_qubits": 3, "live_data": false, "n_uchannels": 56, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 6, "scale": [1.0, 0.0]}], [{"q": 10, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 9, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 10, "scale": [1.0, 0.0]}], [{"q": 13, "scale": [1.0, 0.0]}], [{"q": 15, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 13, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 19, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 15, "scale": [1.0, 0.0]}], [{"q": 17, "scale": [1.0, 0.0]}], [{"q": 21, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 20, "scale": [1.0, 0.0]}], [{"q": 22, "scale": [1.0, 0.0]}], [{"q": 19, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 23, "scale": [1.0, 0.0]}], [{"q": 19, "scale": [1.0, 0.0]}], [{"q": 25, "scale": [1.0, 0.0]}], [{"q": 21, "scale": [1.0, 0.0]}], [{"q": 24, "scale": [1.0, 0.0]}], [{"q": 23, "scale": [1.0, 0.0]}], [{"q": 25, "scale": [1.0, 0.0]}], [{"q": 22, "scale": [1.0, 0.0]}], [{"q": 24, "scale": [1.0, 0.0]}], [{"q": 26, "scale": [1.0, 0.0]}], [{"q": 25, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.432969834248503, 5.432969834248503], [4.573818830016074, 5.573818830016074], [4.505777359770017, 5.505777359770017], [4.397239837230424, 5.397239837230424], [4.420152233814071, 5.420152233814071], [4.492825135169386, 5.492825135169387], [4.5065195107816765, 5.5065195107816765], [4.328442195456001, 5.328442195456001], [4.7036046150867605, 5.7036046150867605], [4.588380267158975, 5.588380267158975], [4.226887639697103, 5.226887639697103], [4.555185858571019, 5.555185858571019], [4.389585658090766, 5.389585658090766], [4.51677642329182, 5.516776423291821], [4.667086880807076, 5.667086880807076], [4.488481466676313, 5.488481466676313], [4.469574668860307, 5.469574668860307], [4.52539334125041, 5.52539334125041], [4.287951526032317, 5.287951526032318], [4.306272301305039, 5.306272301305039], [4.191888528568098, 5.191888528568098], [4.546314506003484, 5.546314506003484], [4.468365240399085, 5.468365240399085], [4.367905152838581, 5.367905152838581], [4.456013065298386, 5.456013065298386], [4.5769938518234765, 5.5769938518234765], [4.355869381199309, 5.355869381199309]], "meas_lo_range": [[6.666366149000001, 7.666366149000001], [6.790036566, 7.790036566], [6.66720936, 7.66720936], [6.789866161000001, 7.789866161000001], [6.730809514000001, 7.730809514000001], [6.725718035000001, 7.725718035000001], [6.84053597, 7.84053597], [6.608269204000001, 7.608269204000001], [6.611764947, 7.611764947], [6.837737400000001, 7.837737400000001], [6.670815005000001, 7.670815005000001], [6.735435442, 7.735435442000001], [6.834726981, 7.834726981], [6.723992816, 7.723992816000001], [6.785324461, 7.785324461], [6.783573103, 7.783573103], [6.663917049, 7.663917049], [6.8411595080000005, 7.8411595080000005], [6.614430141000001, 7.614430141000001], [6.611011042, 7.611011042], [6.833417041000001, 7.833417041000001], [6.7305351170000005, 7.7305351170000005], [6.727873898, 7.727873898], [6.772084477000001, 7.772084477000001], [6.665657706, 7.665657706], [6.789157489000001, 7.789157489000001], [6.6592788270000005, 7.6592788270000005]], "meas_kernels": ["hw_qmfk"], "discriminators": ["hw_qmfk", "linear_discriminator", "quadratic_discriminator"], "rep_times": [1000.0], "meas_map": [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]], "acquisition_latency": [], "conditional_latency": [], "hamiltonian": {"description": "Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\n\n$(\\mathbb{I}-\\sigma_{i}^z)/2 \\rightarrow O_i \\equiv b^\\dagger_{i} b_{i}$,\n\n$\\sigma_{+} \\rightarrow b^\\dagger$,\n\n$\\sigma_{-} \\rightarrow b$,\n\n$\\sigma_{i}^X \\rightarrow b^\\dagger_{i} + b_{i}$.\n\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\n\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\n\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\n", "h_latex": "\\begin{align} \\mathcal{H}/\\hbar = & \\sum_{i=0}^{26}\\left(\\frac{\\omega_{q,i}}{2}(\\mathbb{I}-\\sigma_i^{z})+\\frac{\\Delta_{i}}{2}(O_i^2-O_i)+\\Omega_{d,i}D_i(t)\\sigma_i^{X}\\right) \\\\ & + J_{12,13}(\\sigma_{12}^{+}\\sigma_{13}^{-}+\\sigma_{12}^{-}\\sigma_{13}^{+}) + J_{14,16}(\\sigma_{14}^{+}\\sigma_{16}^{-}+\\sigma_{14}^{-}\\sigma_{16}^{+}) + J_{8,9}(\\sigma_{8}^{+}\\sigma_{9}^{-}+\\sigma_{8}^{-}\\sigma_{9}^{+}) + J_{17,18}(\\sigma_{17}^{+}\\sigma_{18}^{-}+\\sigma_{17}^{-}\\sigma_{18}^{+}) \\\\ & + J_{11,14}(\\sigma_{11}^{+}\\sigma_{14}^{-}+\\sigma_{11}^{-}\\sigma_{14}^{+}) + J_{10,12}(\\sigma_{10}^{+}\\sigma_{12}^{-}+\\sigma_{10}^{-}\\sigma_{12}^{+}) + J_{13,14}(\\sigma_{13}^{+}\\sigma_{14}^{-}+\\sigma_{13}^{-}\\sigma_{14}^{+}) + J_{7,10}(\\sigma_{7}^{+}\\sigma_{10}^{-}+\\sigma_{7}^{-}\\sigma_{10}^{+}) \\\\ & + J_{16,19}(\\sigma_{16}^{+}\\sigma_{19}^{-}+\\sigma_{16}^{-}\\sigma_{19}^{+}) + J_{12,15}(\\sigma_{12}^{+}\\sigma_{15}^{-}+\\sigma_{12}^{-}\\sigma_{15}^{+}) + J_{22,25}(\\sigma_{22}^{+}\\sigma_{25}^{-}+\\sigma_{22}^{-}\\sigma_{25}^{+}) + J_{23,24}(\\sigma_{23}^{+}\\sigma_{24}^{-}+\\sigma_{23}^{-}\\sigma_{24}^{+}) \\\\ & + J_{8,11}(\\sigma_{8}^{+}\\sigma_{11}^{-}+\\sigma_{8}^{-}\\sigma_{11}^{+}) + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) + J_{19,20}(\\sigma_{19}^{+}\\sigma_{20}^{-}+\\sigma_{19}^{-}\\sigma_{20}^{+}) \\\\ & + J_{6,7}(\\sigma_{6}^{+}\\sigma_{7}^{-}+\\sigma_{6}^{-}\\sigma_{7}^{+}) + J_{24,25}(\\sigma_{24}^{+}\\sigma_{25}^{-}+\\sigma_{24}^{-}\\sigma_{25}^{+}) + J_{18,21}(\\sigma_{18}^{+}\\sigma_{21}^{-}+\\sigma_{18}^{-}\\sigma_{21}^{+}) + J_{4,7}(\\sigma_{4}^{+}\\sigma_{7}^{-}+\\sigma_{4}^{-}\\sigma_{7}^{+}) \\\\ & + J_{3,5}(\\sigma_{3}^{+}\\sigma_{5}^{-}+\\sigma_{3}^{-}\\sigma_{5}^{+}) + J_{21,23}(\\sigma_{21}^{+}\\sigma_{23}^{-}+\\sigma_{21}^{-}\\sigma_{23}^{+}) + J_{5,8}(\\sigma_{5}^{+}\\sigma_{8}^{-}+\\sigma_{5}^{-}\\sigma_{8}^{+}) + J_{1,4}(\\sigma_{1}^{+}\\sigma_{4}^{-}+\\sigma_{1}^{-}\\sigma_{4}^{+}) \\\\ & + J_{2,3}(\\sigma_{2}^{+}\\sigma_{3}^{-}+\\sigma_{2}^{-}\\sigma_{3}^{+}) + J_{19,22}(\\sigma_{19}^{+}\\sigma_{22}^{-}+\\sigma_{19}^{-}\\sigma_{22}^{+}) + J_{15,18}(\\sigma_{15}^{+}\\sigma_{18}^{-}+\\sigma_{15}^{-}\\sigma_{18}^{+}) + J_{25,26}(\\sigma_{25}^{+}\\sigma_{26}^{-}+\\sigma_{25}^{-}\\sigma_{26}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,4)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{5}^{(2,3)}(t)+U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{6}^{(3,2)}(t)+U_{7}^{(3,5)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{9}^{(4,7)}(t)+U_{8}^{(4,1)}(t))\\sigma_{4}^{X} + \\Omega_{d,5}(U_{11}^{(5,8)}(t)+U_{10}^{(5,3)}(t))\\sigma_{5}^{X} \\\\ & + \\Omega_{d,6}(U_{12}^{(6,7)}(t))\\sigma_{6}^{X} + \\Omega_{d,7}(U_{14}^{(7,6)}(t)+U_{13}^{(7,4)}(t)+U_{15}^{(7,10)}(t))\\sigma_{7}^{X} \\\\ & + \\Omega_{d,8}(U_{18}^{(8,11)}(t)+U_{16}^{(8,5)}(t)+U_{17}^{(8,9)}(t))\\sigma_{8}^{X} + \\Omega_{d,9}(U_{19}^{(9,8)}(t))\\sigma_{9}^{X} \\\\ & + \\Omega_{d,10}(U_{20}^{(10,7)}(t)+U_{21}^{(10,12)}(t))\\sigma_{10}^{X} + \\Omega_{d,11}(U_{22}^{(11,8)}(t)+U_{23}^{(11,14)}(t))\\sigma_{11}^{X} \\\\ & + \\Omega_{d,12}(U_{24}^{(12,10)}(t)+U_{25}^{(12,13)}(t)+U_{26}^{(12,15)}(t))\\sigma_{12}^{X} + \\Omega_{d,13}(U_{28}^{(13,14)}(t)+U_{27}^{(13,12)}(t))\\sigma_{13}^{X} \\\\ & + \\Omega_{d,14}(U_{31}^{(14,16)}(t)+U_{30}^{(14,13)}(t)+U_{29}^{(14,11)}(t))\\sigma_{14}^{X} + \\Omega_{d,15}(U_{33}^{(15,18)}(t)+U_{32}^{(15,12)}(t))\\sigma_{15}^{X} \\\\ & + \\Omega_{d,16}(U_{35}^{(16,19)}(t)+U_{34}^{(16,14)}(t))\\sigma_{16}^{X} + \\Omega_{d,17}(U_{36}^{(17,18)}(t))\\sigma_{17}^{X} \\\\ & + \\Omega_{d,18}(U_{37}^{(18,15)}(t)+U_{39}^{(18,21)}(t)+U_{38}^{(18,17)}(t))\\sigma_{18}^{X} + \\Omega_{d,19}(U_{42}^{(19,22)}(t)+U_{40}^{(19,16)}(t)+U_{41}^{(19,20)}(t))\\sigma_{19}^{X} \\\\ & + \\Omega_{d,20}(U_{43}^{(20,19)}(t))\\sigma_{20}^{X} + \\Omega_{d,21}(U_{44}^{(21,18)}(t)+U_{45}^{(21,23)}(t))\\sigma_{21}^{X} \\\\ & + \\Omega_{d,22}(U_{46}^{(22,19)}(t)+U_{47}^{(22,25)}(t))\\sigma_{22}^{X} + \\Omega_{d,23}(U_{49}^{(23,24)}(t)+U_{48}^{(23,21)}(t))\\sigma_{23}^{X} \\\\ & + \\Omega_{d,24}(U_{50}^{(24,23)}(t)+U_{51}^{(24,25)}(t))\\sigma_{24}^{X} + \\Omega_{d,25}(U_{54}^{(25,26)}(t)+U_{53}^{(25,24)}(t)+U_{52}^{(25,22)}(t))\\sigma_{25}^{X} \\\\ & + \\Omega_{d,26}(U_{55}^{(26,25)}(t))\\sigma_{26}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,26,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,26,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,26,-delta{i}/2*O{i}]", "_SUM[i,0,26,omegad{i}*X{i}||D{i}]", "jq12q13*Sp12*Sm13", "jq12q13*Sm12*Sp13", "jq14q16*Sp14*Sm16", "jq14q16*Sm14*Sp16", "jq8q9*Sp8*Sm9", "jq8q9*Sm8*Sp9", "jq17q18*Sp17*Sm18", "jq17q18*Sm17*Sp18", "jq11q14*Sp11*Sm14", "jq11q14*Sm11*Sp14", "jq10q12*Sp10*Sm12", "jq10q12*Sm10*Sp12", "jq13q14*Sp13*Sm14", "jq13q14*Sm13*Sp14", "jq7q10*Sp7*Sm10", "jq7q10*Sm7*Sp10", "jq16q19*Sp16*Sm19", "jq16q19*Sm16*Sp19", "jq12q15*Sp12*Sm15", "jq12q15*Sm12*Sp15", "jq22q25*Sp22*Sm25", "jq22q25*Sm22*Sp25", "jq23q24*Sp23*Sm24", "jq23q24*Sm23*Sp24", "jq8q11*Sp8*Sm11", "jq8q11*Sm8*Sp11", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "jq19q20*Sp19*Sm20", "jq19q20*Sm19*Sp20", "jq6q7*Sp6*Sm7", "jq6q7*Sm6*Sp7", "jq24q25*Sp24*Sm25", "jq24q25*Sm24*Sp25", "jq18q21*Sp18*Sm21", "jq18q21*Sm18*Sp21", "jq4q7*Sp4*Sm7", "jq4q7*Sm4*Sp7", "jq3q5*Sp3*Sm5", "jq3q5*Sm3*Sp5", "jq21q23*Sp21*Sm23", "jq21q23*Sm21*Sp23", "jq5q8*Sp5*Sm8", "jq5q8*Sm5*Sp8", "jq1q4*Sp1*Sm4", "jq1q4*Sm1*Sp4", "jq2q3*Sp2*Sm3", "jq2q3*Sm2*Sp3", "jq19q22*Sp19*Sm22", "jq19q22*Sm19*Sp22", "jq15q18*Sp15*Sm18", "jq15q18*Sm15*Sp18", "jq25q26*Sp25*Sm26", "jq25q26*Sm25*Sp26", "omegad1*X0||U0", "omegad0*X1||U1", "omegad4*X1||U3", "omegad2*X1||U2", "omegad3*X2||U5", "omegad1*X2||U4", "omegad2*X3||U6", "omegad5*X3||U7", "omegad7*X4||U9", "omegad1*X4||U8", "omegad8*X5||U11", "omegad3*X5||U10", "omegad7*X6||U12", "omegad6*X7||U14", "omegad4*X7||U13", "omegad10*X7||U15", "omegad11*X8||U18", "omegad5*X8||U16", "omegad9*X8||U17", "omegad8*X9||U19", "omegad7*X10||U20", "omegad12*X10||U21", "omegad8*X11||U22", "omegad14*X11||U23", "omegad10*X12||U24", "omegad13*X12||U25", "omegad15*X12||U26", "omegad14*X13||U28", "omegad12*X13||U27", "omegad16*X14||U31", "omegad13*X14||U30", "omegad11*X14||U29", "omegad18*X15||U33", "omegad12*X15||U32", "omegad19*X16||U35", "omegad14*X16||U34", "omegad18*X17||U36", "omegad15*X18||U37", "omegad21*X18||U39", "omegad17*X18||U38", "omegad22*X19||U42", "omegad16*X19||U40", "omegad20*X19||U41", "omegad19*X20||U43", "omegad18*X21||U44", "omegad23*X21||U45", "omegad19*X22||U46", "omegad25*X22||U47", "omegad24*X23||U49", "omegad21*X23||U48", "omegad23*X24||U50", "omegad25*X24||U51", "omegad26*X25||U54", "omegad24*X25||U53", "omegad22*X25||U52", "omegad25*X26||U55"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3, "5": 3, "6": 3, "7": 3, "8": 3, "9": 3, "10": 3, "11": 3, "12": 3, "13": 3, "14": 3, "15": 3, "16": 3, "17": 3, "18": 3, "19": 3, "20": 3, "21": 3, "22": 3, "23": 3, "24": 3, "25": 3, "26": 3}, "vars": {"delta0": -2.158684308046893, "delta1": -2.1530657984756614, "delta10": -2.179337968217314, "delta11": -2.1509694035052966, "delta12": -2.1830486136854597, "delta13": -2.1540627246004536, "delta14": -2.1445012142144435, "delta15": -2.149066552418238, "delta16": -2.159099516425758, "delta17": -2.1514877260680683, "delta18": -2.185141537139927, "delta19": -2.1727956284580405, "delta2": -2.161451126468108, "delta20": -2.209546956876913, "delta21": -2.151664356551376, "delta22": -2.168850638695307, "delta23": -2.1730168477635647, "delta24": -2.1655528488320694, "delta25": -2.148658601101429, "delta26": -2.1688030952712993, "delta3": -2.1709211542397715, "delta4": -2.161766358670777, "delta5": -2.1641239354790245, "delta6": -2.156367555640658, "delta7": -2.17184752769289, "delta8": -2.141181696936328, "delta9": -2.1439754867526406, "jq0q1": 0.012344036004184312, "jq10q12": 0.011681916379002354, "jq11q14": 0.012366057535308974, "jq12q13": 0.012224608841799052, "jq12q15": 0.011149014666899425, "jq13q14": 0.012860067005229741, "jq14q16": 0.012309040937075836, "jq15q18": 0.011650709504714885, "jq16q19": 0.011761170836224884, "jq17q18": 0.012084452094488898, "jq18q21": 0.012332712711424238, "jq19q20": 0.010869894641070596, "jq19q22": 0.012150397235277013, "jq1q2": 0.012363567124722748, "jq1q4": 0.011977484112529689, "jq21q23": 0.012441611415734072, "jq22q25": 0.012235288814365189, "jq23q24": 0.012008911587624984, "jq24q25": 0.012540607131958892, "jq25q26": 0.01215052474293462, "jq2q3": 0.012192411638943383, "jq3q5": 0.012409307027553721, "jq4q7": 0.012080619891474494, "jq5q8": 0.012996016493178318, "jq6q7": 0.012104788821551757, "jq7q10": 0.011259137058131734, "jq8q11": 0.01255224919037635, "jq8q9": 0.012833830966588723, "omegad0": 0.9933360746197181, "omegad1": 0.9823935292572705, "omegad10": 0.9528883808037366, "omegad11": 0.9570830633493299, "omegad12": 0.993748201314793, "omegad13": 0.9634587560457126, "omegad14": 0.9908259688686702, "omegad15": 0.9886888862135653, "omegad16": 0.9184736055593311, "omegad17": 0.9814578979746276, "omegad18": 0.9676714203596005, "omegad19": 0.986284529851992, "omegad2": 0.9734294645027696, "omegad20": 1.0246576221750912, "omegad21": 1.0111071820490611, "omegad22": 0.958346721287621, "omegad23": 0.9787556194329787, "omegad24": 0.9686913857135017, "omegad25": 0.9678238043064792, "omegad26": 1.008363131580873, "omegad3": 0.9738016296242488, "omegad4": 0.9782017273386752, "omegad5": 0.94157840020516, "omegad6": 1.0063864285733488, "omegad7": 1.024149623809381, "omegad8": 1.0125507576792812, "omegad9": 0.9979150241064154, "wq0": 30.994763583310316, "wq1": 31.879743924048118, "wq10": 29.699910966433634, "wq11": 31.762669511635455, "wq12": 30.722172765111928, "wq13": 31.521335912232125, "wq14": 32.46576437040741, "wq15": 31.343553456558283, "wq16": 31.224758542314945, "wq17": 31.575477604542712, "wq18": 30.08358667985434, "wq19": 30.198699505864038, "wq2": 31.452226757919195, "wq20": 29.48000506562353, "wq21": 31.706929159528308, "wq22": 31.217159479177305, "wq23": 30.58595013305917, "wq24": 31.139548474072885, "wq25": 31.899693174418363, "wq26": 30.51032714953473, "wq3": 30.770265391020754, "wq4": 30.914228224587397, "wq5": 31.370845530613224, "wq6": 31.45688983025136, "wq7": 30.33799705905509, "wq8": 32.69521206188502, "wq9": 31.971236131955813}}, "channels": {"acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, "acquire10": {"operates": {"qubits": [10]}, "purpose": "acquire", "type": "acquire"}, "acquire11": {"operates": {"qubits": [11]}, "purpose": "acquire", "type": "acquire"}, "acquire12": {"operates": {"qubits": [12]}, "purpose": "acquire", "type": "acquire"}, "acquire13": {"operates": {"qubits": [13]}, "purpose": "acquire", "type": "acquire"}, "acquire14": {"operates": {"qubits": [14]}, "purpose": "acquire", "type": "acquire"}, "acquire15": {"operates": {"qubits": [15]}, "purpose": "acquire", "type": "acquire"}, "acquire16": {"operates": {"qubits": [16]}, "purpose": "acquire", "type": "acquire"}, "acquire17": {"operates": {"qubits": [17]}, "purpose": "acquire", "type": "acquire"}, "acquire18": {"operates": {"qubits": [18]}, "purpose": "acquire", "type": "acquire"}, "acquire19": {"operates": {"qubits": [19]}, "purpose": "acquire", "type": "acquire"}, "acquire2": {"operates": {"qubits": [2]}, "purpose": "acquire", "type": "acquire"}, "acquire20": {"operates": {"qubits": [20]}, "purpose": "acquire", "type": "acquire"}, "acquire21": {"operates": {"qubits": [21]}, "purpose": "acquire", "type": "acquire"}, "acquire22": {"operates": {"qubits": [22]}, "purpose": "acquire", "type": "acquire"}, "acquire23": {"operates": {"qubits": [23]}, "purpose": "acquire", "type": "acquire"}, "acquire24": {"operates": {"qubits": [24]}, "purpose": "acquire", "type": "acquire"}, "acquire25": {"operates": {"qubits": [25]}, "purpose": "acquire", "type": "acquire"}, "acquire26": {"operates": {"qubits": [26]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "acquire5": {"operates": {"qubits": [5]}, "purpose": "acquire", "type": "acquire"}, "acquire6": {"operates": {"qubits": [6]}, "purpose": "acquire", "type": "acquire"}, "acquire7": {"operates": {"qubits": [7]}, "purpose": "acquire", "type": "acquire"}, "acquire8": {"operates": {"qubits": [8]}, "purpose": "acquire", "type": "acquire"}, "acquire9": {"operates": {"qubits": [9]}, "purpose": "acquire", "type": "acquire"}, "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, "d10": {"operates": {"qubits": [10]}, "purpose": "drive", "type": "drive"}, "d11": {"operates": {"qubits": [11]}, "purpose": "drive", "type": "drive"}, "d12": {"operates": {"qubits": [12]}, "purpose": "drive", "type": "drive"}, "d13": {"operates": {"qubits": [13]}, "purpose": "drive", "type": "drive"}, "d14": {"operates": {"qubits": [14]}, "purpose": "drive", "type": "drive"}, "d15": {"operates": {"qubits": [15]}, "purpose": "drive", "type": "drive"}, "d16": {"operates": {"qubits": [16]}, "purpose": "drive", "type": "drive"}, "d17": {"operates": {"qubits": [17]}, "purpose": "drive", "type": "drive"}, "d18": {"operates": {"qubits": [18]}, "purpose": "drive", "type": "drive"}, "d19": {"operates": {"qubits": [19]}, "purpose": "drive", "type": "drive"}, "d2": {"operates": {"qubits": [2]}, "purpose": "drive", "type": "drive"}, "d20": {"operates": {"qubits": [20]}, "purpose": "drive", "type": "drive"}, "d21": {"operates": {"qubits": [21]}, "purpose": "drive", "type": "drive"}, "d22": {"operates": {"qubits": [22]}, "purpose": "drive", "type": "drive"}, "d23": {"operates": {"qubits": [23]}, "purpose": "drive", "type": "drive"}, "d24": {"operates": {"qubits": [24]}, "purpose": "drive", "type": "drive"}, "d25": {"operates": {"qubits": [25]}, "purpose": "drive", "type": "drive"}, "d26": {"operates": {"qubits": [26]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "d5": {"operates": {"qubits": [5]}, "purpose": "drive", "type": "drive"}, "d6": {"operates": {"qubits": [6]}, "purpose": "drive", "type": "drive"}, "d7": {"operates": {"qubits": [7]}, "purpose": "drive", "type": "drive"}, "d8": {"operates": {"qubits": [8]}, "purpose": "drive", "type": "drive"}, "d9": {"operates": {"qubits": [9]}, "purpose": "drive", "type": "drive"}, "m0": {"operates": {"qubits": [0]}, "purpose": "measure", "type": "measure"}, "m1": {"operates": {"qubits": [1]}, "purpose": "measure", "type": "measure"}, "m10": {"operates": {"qubits": [10]}, "purpose": "measure", "type": "measure"}, "m11": {"operates": {"qubits": [11]}, "purpose": "measure", "type": "measure"}, "m12": {"operates": {"qubits": [12]}, "purpose": "measure", "type": "measure"}, "m13": {"operates": {"qubits": [13]}, "purpose": "measure", "type": "measure"}, "m14": {"operates": {"qubits": [14]}, "purpose": "measure", "type": "measure"}, "m15": {"operates": {"qubits": [15]}, "purpose": "measure", "type": "measure"}, "m16": {"operates": {"qubits": [16]}, "purpose": "measure", "type": "measure"}, "m17": {"operates": {"qubits": [17]}, "purpose": "measure", "type": "measure"}, "m18": {"operates": {"qubits": [18]}, "purpose": "measure", "type": "measure"}, "m19": {"operates": {"qubits": [19]}, "purpose": "measure", "type": "measure"}, "m2": {"operates": {"qubits": [2]}, "purpose": "measure", "type": "measure"}, "m20": {"operates": {"qubits": [20]}, "purpose": "measure", "type": "measure"}, "m21": {"operates": {"qubits": [21]}, "purpose": "measure", "type": "measure"}, "m22": {"operates": {"qubits": [22]}, "purpose": "measure", "type": "measure"}, "m23": {"operates": {"qubits": [23]}, "purpose": "measure", "type": "measure"}, "m24": {"operates": {"qubits": [24]}, "purpose": "measure", "type": "measure"}, "m25": {"operates": {"qubits": [25]}, "purpose": "measure", "type": "measure"}, "m26": {"operates": {"qubits": [26]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "m5": {"operates": {"qubits": [5]}, "purpose": "measure", "type": "measure"}, "m6": {"operates": {"qubits": [6]}, "purpose": "measure", "type": "measure"}, "m7": {"operates": {"qubits": [7]}, "purpose": "measure", "type": "measure"}, "m8": {"operates": {"qubits": [8]}, "purpose": "measure", "type": "measure"}, "m9": {"operates": {"qubits": [9]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u10": {"operates": {"qubits": [5, 3]}, "purpose": "cross-resonance", "type": "control"}, "u11": {"operates": {"qubits": [5, 8]}, "purpose": "cross-resonance", "type": "control"}, "u12": {"operates": {"qubits": [6, 7]}, "purpose": "cross-resonance", "type": "control"}, "u13": {"operates": {"qubits": [7, 4]}, "purpose": "cross-resonance", "type": "control"}, "u14": {"operates": {"qubits": [7, 6]}, "purpose": "cross-resonance", "type": "control"}, "u15": {"operates": {"qubits": [7, 10]}, "purpose": "cross-resonance", "type": "control"}, "u16": {"operates": {"qubits": [8, 5]}, "purpose": "cross-resonance", "type": "control"}, "u17": {"operates": {"qubits": [8, 9]}, "purpose": "cross-resonance", "type": "control"}, "u18": {"operates": {"qubits": [8, 11]}, "purpose": "cross-resonance", "type": "control"}, "u19": {"operates": {"qubits": [9, 8]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u20": {"operates": {"qubits": [10, 7]}, "purpose": "cross-resonance", "type": "control"}, "u21": {"operates": {"qubits": [10, 12]}, "purpose": "cross-resonance", "type": "control"}, "u22": {"operates": {"qubits": [11, 8]}, "purpose": "cross-resonance", "type": "control"}, "u23": {"operates": {"qubits": [11, 14]}, "purpose": "cross-resonance", "type": "control"}, "u24": {"operates": {"qubits": [12, 10]}, "purpose": "cross-resonance", "type": "control"}, "u25": {"operates": {"qubits": [12, 13]}, "purpose": "cross-resonance", "type": "control"}, "u26": {"operates": {"qubits": [12, 15]}, "purpose": "cross-resonance", "type": "control"}, "u27": {"operates": {"qubits": [13, 12]}, "purpose": "cross-resonance", "type": "control"}, "u28": {"operates": {"qubits": [13, 14]}, "purpose": "cross-resonance", "type": "control"}, "u29": {"operates": {"qubits": [14, 11]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 4]}, "purpose": "cross-resonance", "type": "control"}, "u30": {"operates": {"qubits": [14, 13]}, "purpose": "cross-resonance", "type": "control"}, "u31": {"operates": {"qubits": [14, 16]}, "purpose": "cross-resonance", "type": "control"}, "u32": {"operates": {"qubits": [15, 12]}, "purpose": "cross-resonance", "type": "control"}, "u33": {"operates": {"qubits": [15, 18]}, "purpose": "cross-resonance", "type": "control"}, "u34": {"operates": {"qubits": [16, 14]}, "purpose": "cross-resonance", "type": "control"}, "u35": {"operates": {"qubits": [16, 19]}, "purpose": "cross-resonance", "type": "control"}, "u36": {"operates": {"qubits": [17, 18]}, "purpose": "cross-resonance", "type": "control"}, "u37": {"operates": {"qubits": [18, 15]}, "purpose": "cross-resonance", "type": "control"}, "u38": {"operates": {"qubits": [18, 17]}, "purpose": "cross-resonance", "type": "control"}, "u39": {"operates": {"qubits": [18, 21]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u40": {"operates": {"qubits": [19, 16]}, "purpose": "cross-resonance", "type": "control"}, "u41": {"operates": {"qubits": [19, 20]}, "purpose": "cross-resonance", "type": "control"}, "u42": {"operates": {"qubits": [19, 22]}, "purpose": "cross-resonance", "type": "control"}, "u43": {"operates": {"qubits": [20, 19]}, "purpose": "cross-resonance", "type": "control"}, "u44": {"operates": {"qubits": [21, 18]}, "purpose": "cross-resonance", "type": "control"}, "u45": {"operates": {"qubits": [21, 23]}, "purpose": "cross-resonance", "type": "control"}, "u46": {"operates": {"qubits": [22, 19]}, "purpose": "cross-resonance", "type": "control"}, "u47": {"operates": {"qubits": [22, 25]}, "purpose": "cross-resonance", "type": "control"}, "u48": {"operates": {"qubits": [23, 21]}, "purpose": "cross-resonance", "type": "control"}, "u49": {"operates": {"qubits": [23, 24]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [2, 3]}, "purpose": "cross-resonance", "type": "control"}, "u50": {"operates": {"qubits": [24, 23]}, "purpose": "cross-resonance", "type": "control"}, "u51": {"operates": {"qubits": [24, 25]}, "purpose": "cross-resonance", "type": "control"}, "u52": {"operates": {"qubits": [25, 22]}, "purpose": "cross-resonance", "type": "control"}, "u53": {"operates": {"qubits": [25, 24]}, "purpose": "cross-resonance", "type": "control"}, "u54": {"operates": {"qubits": [25, 26]}, "purpose": "cross-resonance", "type": "control"}, "u55": {"operates": {"qubits": [26, 25]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 2]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [3, 5]}, "purpose": "cross-resonance", "type": "control"}, "u8": {"operates": {"qubits": [4, 1]}, "purpose": "cross-resonance", "type": "control"}, "u9": {"operates": {"qubits": [4, 7]}, "purpose": "cross-resonance", "type": "control"}}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends/auckland/defs_auckland.json b/qiskit/providers/fake_provider/backends/auckland/defs_auckland.json new file mode 100644 index 000000000000..b70b37b449e5 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/auckland/defs_auckland.json @@ -0,0 +1 @@ +{"qubit_freq_est": [4.932969834248503, 5.073818830016074, 5.005777359770017, 4.897239837230424, 4.920152233814071, 4.992825135169387, 5.0065195107816765, 4.828442195456001, 5.2036046150867605, 5.088380267158975, 4.726887639697103, 5.055185858571019, 4.889585658090766, 5.016776423291821, 5.167086880807076, 4.988481466676313, 4.969574668860307, 5.02539334125041, 4.787951526032318, 4.806272301305039, 4.691888528568098, 5.046314506003484, 4.968365240399085, 4.867905152838581, 4.956013065298386, 5.0769938518234765, 4.855869381199309], "meas_freq_est": [7.166366149000001, 7.290036566, 7.16720936, 7.289866161000001, 7.230809514000001, 7.225718035000001, 7.34053597, 7.108269204000001, 7.111764947, 7.337737400000001, 7.170815005000001, 7.235435442000001, 7.334726981, 7.223992816000001, 7.285324461, 7.283573103, 7.163917049, 7.3411595080000005, 7.114430141000001, 7.111011042, 7.333417041000001, 7.2305351170000005, 7.227873898, 7.272084477000001, 7.165657706, 7.289157489000001, 7.1592788270000005], "buffer": 0, "pulse_library": [{"name": "CX_d10_u15", "samples": [[-7.739331340417266e-05, -4.208877271594247e-06], [-0.00015660980716347694, -8.516904017596971e-06], [-0.0002376676129642874, -1.2925066585012246e-05], [-0.0003205840475857258, -1.743430766509846e-05], [-0.00040537561289966106, -2.2045524019631557e-05], [-0.0004920579376630485, -2.6759562388178892e-05], [-0.0005806456319987774, -3.1577223126078025e-05], [-0.0006711524329148233, -3.64992483810056e-05], [-0.0007635909714736044, -4.152633118792437e-05], [-0.0008579730056226254, -4.665910455514677e-05], [-0.0009543089545331895, -5.189813964534551e-05], [-0.001052608247846365, -5.7243945775553584e-05], [-0.0011528790928423405, -6.269697041716427e-05], [-0.0012551284162327647, -6.825759191997349e-05], [-0.001359362038783729, -7.392612315015867e-05], [-0.0014655842678621411, -7.970279693836346e-05], [-0.0015737981302663684, -8.55877879075706e-05], [-0.0016840052558109164, -9.158117609331384e-05], [-0.0017962059937417507, -9.768298332346603e-05], [-0.0019103989470750093, -0.00010389313683845103], [-0.0020265814382582903, -0.00011021147656720132], [-0.0021447488106787205, -0.00011663777695503086], [-0.002264895709231496, -0.00012317171785980463], [-0.002387014217674732, -0.000129812877275981], [-0.002511095255613327, -0.00013656077499035746], [-0.0026371278800070286, -0.0001434147998224944], [-0.0027650995180010796, -0.0001503742823842913], [-0.0028949957340955734, -0.0001574384223204106], [-0.003026800462976098, -0.00016460634651593864], [-0.003160495776683092, -0.00017187707999255508], [-0.0032960616517812014, -0.00017924956046044827], [-0.003433476435020566, -0.00018672258011065423], [-0.003572716610506177, -0.00019429487292654812], [-0.0037137565668672323, -0.00020196505647618324], [-0.0038565692957490683, -0.00020973161736037582], [-0.004001124761998653, -0.00021759298397228122], [-0.0041473922319710255, -0.00022554742463398725], [-0.004295337945222855, -0.00023359314945992082], [-0.0044449265114963055, -0.00024172822304535657], [-0.004596121143549681, -0.00024995062267407775], [-0.004748881794512272, -0.000258258223766461], [-0.004903167486190796, -0.00026664871256798506], [-0.005058934912085533, -0.00027511981897987425], [-0.00521613797172904, -0.0002836689818650484], [-0.005374730098992586, -0.00029229369829408824], [-0.005534661468118429, -0.00030099123250693083], [-0.0056958808563649654, -0.00030975881963968277], [-0.005858334247022867, -0.00031859352020546794], [-0.006021966692060232, -0.0003274923365097493], [-0.006186720449477434, -0.0003364521253388375], [-0.006352536380290985, -0.00034546968527138233], [-0.006519352551549673, -0.0003545416402630508], [-0.006687107030302286, -0.0003636646142695099], [-0.006855733226984739, -0.0003728350275196135], [-0.007025165017694235, -0.000382049212930724], [-0.0071953339502215385, -0.0003913035034202039], [-0.007366168312728405, -0.000400593999074772], [-0.007537596859037876, -0.0004099167708773166], [-0.007709544617682695, -0.0004192678024992347], [-0.007881936617195606, -0.00042864299030043185], [-0.008054695092141628, -0.0004380381142254919], [-0.008227742277085781, -0.00044744889601133764], [-0.008400995284318924, -0.00045687094097957015], [-0.008574374951422215, -0.00046629979624412954], [-0.008747795596718788, -0.000475730950711295], [-0.008921174332499504, -0.00048515977687202394], [-0.009094423614442348, -0.0004945816472172737], [-0.009267457760870457, -0.0005039917305111885], [-0.00944018829613924, -0.0005133852828294039], [-0.009612524881958961, -0.000522757472936064], [-0.009784377180039883, -0.0005321032949723303], [-0.009955653920769691, -0.0005414178594946861], [-0.010126263834536076, -0.0005506961024366319], [-0.010296111926436424, -0.0005599329597316682], [-0.01046510599553585, -0.0005691233673132956], [-0.010633151046931744, -0.0005782621446996927], [-0.010800153017044067, -0.0005873441696166992], [-0.010966015048325062, -0.0005963642615824938], [-0.011130642145872116, -0.0006053171819075942], [-0.011293938383460045, -0.0006141976919025183], [-0.011455806903541088, -0.0006230006110854447], [-0.01161615177989006, -0.0006317206425592303], [-0.011774877086281776, -0.0006403526058420539], [-0.01193188689649105, -0.0006488912040367723], [-0.012087083421647549, -0.000657331314869225], [-0.012240372598171234, -0.0006656676414422691], [-0.012391658499836922, -0.0006738950032740831], [-0.012540846131742, -0.0006820082780905068], [-0.012687841430306435, -0.0006900022854097188], [-0.012832551263272762, -0.0006978720193728805], [-0.012974881567060947, -0.0007056123577058315], [-0.013114740140736103, -0.0007132182945497334], [-0.013252037577331066, -0.0007206849404610693], [-0.013386683538556099, -0.0007280073477886617], [-0.013518587686121464, -0.0007351806852966547], [-0.013647664338350296, -0.0007422002963721752], [-0.013773825950920582, -0.0007490613497793674], [-0.01389698963612318, -0.0007557593053206801], [-0.014017070643603802, -0.000762289681006223], [-0.014133987948298454, -0.0007686479948461056], [-0.014247661456465721, -0.0007748298812657595], [-0.01435801386833191, -0.0007808312075212598], [-0.0144649688154459, -0.0007866477244533598], [-0.014568452723324299, -0.0007922754739411175], [-0.014668392948806286, -0.0007977104978635907], [-0.014764719642698765, -0.000802949070930481], [-0.014857366681098938, -0.0008079874096438289], [-0.014946267008781433, -0.0008128221379593015], [-0.015031359158456326, -0.000817449705209583], [-0.015112582594156265, -0.0008218668517656624], [-0.015189878642559052, -0.0008260704926215112], [-0.015263194218277931, -0.000830057542771101], [-0.015332475304603577, -0.0008338252664543688], [-0.015397671610116959, -0.0008373708697035909], [-0.015458738431334496, -0.0008406918495893478], [-0.015515630133450031, -0.0008437857613898814], [-0.015568305738270283, -0.0008466504514217377], [-0.015616727992892265, -0.0008492837660014629], [-0.015660861507058144, -0.0008516838424839079], [-0.015700673684477806, -0.0008538489346392453], [-0.015736134722828865, -0.0008557774708606303], [-0.01576722040772438, -0.0008574679959565401], [-0.01579390838742256, -0.0008589193457737565], [-0.015816178172826767, -0.0008601304143667221], [-0.015834013000130653, -0.0008611003868281841], [-0.015847399830818176, -0.0008618284482508898], [-0.01585633121430874, -0.0008623141329735518], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.015861356630921364, -0.0008625874179415405], [-0.01585734263062477, -0.0008622641325928271], [-0.015850208699703217, -0.0008616895647719502], [-0.015839513391256332, -0.0008608283242210746], [-0.015825266018509865, -0.0008596809348091483], [-0.01580747775733471, -0.000858248327858746], [-0.01578615792095661, -0.0008565314929001033], [-0.015761325135827065, -0.0008545316522940993], [-0.01573299802839756, -0.0008522503194399178], [-0.01570119522511959, -0.0008496891241520643], [-0.015665940940380096, -0.000846849987283349], [-0.015627259388566017, -0.000843734887894243], [-0.015585181303322315, -0.0008403461542911828], [-0.015539734624326229, -0.0008366862311959267], [-0.015490952879190445, -0.0008327576797455549], [-0.015438871458172798, -0.0008285634685307741], [-0.015383528545498848, -0.0008241065079346299], [-0.015324962325394154, -0.0008193899993784726], [-0.015263215638697147, -0.000814417377114296], [-0.015198332257568836, -0.000809192075394094], [-0.015130357816815376, -0.0008037179941311479], [-0.015059341676533222, -0.0007979988004080951], [-0.014985333196818829, -0.0007920386851765215], [-0.014908384531736374, -0.000785841781180352], [-0.014828549697995186, -0.0007794124539941549], [-0.014745883643627167, -0.0007727551856078207], [-0.014660445973277092, -0.0007658745744265616], [-0.014572293497622013, -0.0007587753934785724], [-0.014481487683951855, -0.0007514625322073698], [-0.014388090930879116, -0.0007439409964717925], [-0.014292166568338871, -0.0007362159667536616], [-0.014193780720233917, -0.0007282926817424595], [-0.014092998579144478, -0.0007201764383353293], [-0.013989889062941074, -0.0007118727080523968], [-0.013884520158171654, -0.0007033870206214488], [-0.013776961714029312, -0.0006947250221855938], [-0.01366728451102972, -0.0006858924753032625], [-0.013555561192333698, -0.0006768950261175632], [-0.013441864401102066, -0.0006677386700175703], [-0.013326266780495644, -0.0006584292859770358], [-0.0132088428363204, -0.000648972752969712], [-0.01308966800570488, -0.0006393752410076559], [-0.012968816794455051, -0.0006296427454799414], [-0.012846364639699459, -0.0006197813781909645], [-0.012722388841211796, -0.000609797250945121], [-0.01259696576744318, -0.000599696533754468], [-0.01247017178684473, -0.0005894854548387229], [-0.012342083267867565, -0.0005791701260022819], [-0.012212778441607952, -0.0005687568336725235], [-0.012082332745194435, -0.0005582516896538436], [-0.011950824409723282, -0.0005476609221659601], [-0.01181832980364561, -0.0005369907012209296], [-0.011684924364089966, -0.0005262471968308091], [-0.01155068539083004, -0.0005154365207999945], [-0.011415688320994377, -0.0005045648431405425], [-0.011280008591711521, -0.0004936381592415273], [-0.011143720708787441, -0.0004826625226996839], [-0.011006900109350681, -0.0004716439580079168], [-0.010869619436562061, -0.00046058837324380875], [-0.010731952264904976, -0.000449501647381112], [-0.010593971237540245, -0.00043838960118591785], [-0.01045574713498354, -0.0004272579972166568], [-0.010317349806427956, -0.00041611248161643744], [-0.010178850963711739, -0.0004049587296321988], [-0.01004031766206026, -0.00039380224188789725], [-0.009901816956698895, -0.0003826484316959977], [-0.009763417765498161, -0.00037150271236896515], [-0.009625183418393135, -0.0003603702934924513], [-0.009487179107964039, -0.0003492564137559384], [-0.009349468164145947, -0.00033816610812209547], [-0.009212111122906208, -0.00032710438244976103], [-0.009075169451534748, -0.00031607606797479093], [-0.008938701823353767, -0.0003050859668292105], [-0.008802766911685467, -0.0002941387065220624], [-0.008667419664561749, -0.0002832388272508979], [-0.008532716892659664, -0.0002723907819017768], [-0.008398709818720818, -0.0002615988487377763], [-0.008265452459454536, -0.0002508672187104821], [-0.008132994174957275, -0.00024019998090807348], [-0.008001384325325489, -0.00022960106434766203], [-0.007870670408010483, -0.0002190742816310376], [-0.007740898057818413, -0.00020862335804849863], [-0.0076121119782328606, -0.0001982518151635304], [-0.007484354544430971, -0.0001879631308838725], [-0.007357666734606028, -0.00017776060849428177], [-0.007232088129967451, -0.00016764742031227797], [-0.007107657380402088, -0.00015762662224005908], [-0.006984409410506487, -0.00014770112466067076], [-0.00686238007619977, -0.00013787375064566731], [-0.006741601973772049, -0.00012814713409170508], [-0.0066221063025295734, -0.0001185238070320338], [-0.0065039233304560184, -0.00010900618508458138], [-0.0063870809972286224, -9.959653107216582e-05], [-0.006271605845540762, -9.029699867824093e-05], [-0.006157523486763239, -8.110960334306583e-05], [-0.006044856738299131, -7.20362295396626e-05], [-0.00593362795189023, -6.307864532573149e-05], [-0.0058238571509718895, -5.4238491429714486e-05], [-0.005715563427656889, -4.5517288526752964e-05], [-0.005608764011412859, -3.691642632475123e-05], [-0.005503475200384855, -2.8437183573259972e-05], [-0.00539971049875021, -2.0080715330550447e-05], [-0.005297482945024967, -1.1848060239572078e-05], [-0.005196804646402597, -3.7401457575469976e-06], [-0.005097685381770134, 4.24221798311919e-06], [-0.005000133998692036, 1.2098330444132444e-05], [-0.004904157482087612, 1.9827599317068234e-05], [-0.004809761885553598, 2.7429539841250516e-05], [-0.004716952331364155, 3.490377275738865e-05], [-0.0046257320791482925, 4.225001612212509e-05], [-0.004536102991551161, 4.946809713146649e-05], [-0.0044480664655566216, 5.655792847392149e-05], [-0.0043616220355033875, 6.351953197736293e-05], [-0.004276769235730171, 7.035300222923979e-05], [-0.004193504340946674, 7.705854659434408e-05], [-0.00411182502284646, 8.363643428310752e-05], [-0.0040317256934940815, 9.008705092128366e-05], [-0.003953201696276665, 9.641082579037175e-05], [-0.0038762458134442568, 0.00010260829731123522], [-0.0038008508272469044, 0.00010868006938835606], [-0.0037270085886120796, 0.00011462681868579239], [-0.0036547090858221054, 0.00012044928735122085], [-0.0035839430056512356, 0.00012614829756785184], [-0.0035146987065672874, 0.0001317247370025143], [-0.0034469650126993656, 0.00013717953697778285], [-0.003380729118362069, 0.00014251370157580823], [-0.0033159777522087097, 0.00014772830763831735], [-0.003252697642892599, 0.00015282444655895233], [-0.003129049902781844, 0.00016278216207865626], [-0.00306576956063509, 0.00016787830099929124], [-0.003001018427312374, 0.00017309290706180036], [-0.0029347825329750776, 0.00017842707165982574], [-0.002867048606276512, 0.00018388187163509429], [-0.0027978045400232077, 0.00018945831106975675], [-0.002727038227021694, 0.00019515732128638774], [-0.0026547389570623636, 0.0002009797899518162], [-0.0025808964855968952, 0.00020692653197329491], [-0.002505501499399543, 0.00021299830405041575], [-0.0024285458493977785, 0.00021919577557127923], [-0.002350021619349718, 0.00022551955771632493], [-0.002269922522827983, 0.00023197017435450107], [-0.0021882429718971252, 0.0002385480620432645], [-0.002104978309944272, 0.0002452536136843264], [-0.0020201250445097685, 0.00025208707666024566], [-0.0019336809637024999, 0.0002590486838016659], [-0.0018456444377079606, 0.0002661385224200785], [-0.0017560154665261507, 0.0002733565925154835], [-0.0016647950978949666, 0.00028070283588021994], [-0.0015719854272902012, 0.0002881770778913051], [-0.0014775899471715093, 0.00029577899840660393], [-0.0013816134305670857, 0.00030350827728398144], [-0.0012840618146583438, 0.0003113643906544894], [-0.0011849425500258803, 0.00031934675644151866], [-0.0010842642514035106, 0.0003274546761531383], [-0.0009820370469242334, 0.00033568733488209546], [-0.000878272345289588, 0.0003440438013058156], [-0.0007729831268079579, 0.0003525230276864022], [-0.0006661837687715888, 0.00036112390807829797], [-0.0005578901036642492, 0.0003698451037053019], [-0.0004481194191612303, 0.00037868524668738246], [-0.00033689054544083774, 0.00038764282362535596], [-0.0002242238842882216, 0.0003967162047047168], [-0.00011014133633580059, 0.0004059036145918071], [5.333621174941072e-06, 0.0004152031324338168], [0.00012217594485264271, 0.00042461277917027473], [0.00024035898968577385, 0.00043413040111772716], [0.0003598545154090971, 0.00044375372817739844], [0.0004806327342521399, 0.0004534803447313607], [0.0006026622140780091, 0.0004633077478501946], [0.0007259098347276449, 0.00047323323087766767], [0.0008503409335389733, 0.00048325402894988656], [0.0009759193053469062, 0.0004933672025799751], [0.001102606998756528, 0.0005035697249695659], [0.0012303645489737391, 0.0005138584529049695], [0.001359150861389935, 0.000524229952134192], [0.0014889230951666832, 0.0005346809048205614], [0.0016196370124816895, 0.0005452076438814402], [0.001751246745698154, 0.0005558065604418516], [0.001883705030195415, 0.0005664738127961755], [0.002016962505877018, 0.0005772054428234696], [0.0021509691141545773, 0.0005879973759874701], [0.0022856725845485926, 0.0005988454213365912], [0.0024210193660110235, 0.0006097453297115862], [0.002556954510509968, 0.0006206925609149039], [0.002693421905860305, 0.0006316826911643147], [0.002830363577231765, 0.0006427110056392848], [0.0029677203856408596, 0.0006537727313116193], [0.0031054317951202393, 0.0006648630369454622], [0.0032434361055493355, 0.0006759769166819751], [0.003381670219823718, 0.0006871093064546585], [0.0035200698766857386, 0.0006982550257816911], [0.003658569883555174, 0.0007094088359735906], [0.0037971034180372953, 0.0007205653237178922], [0.003935602959245443, 0.0007317190757021308], [0.004073999356478453, 0.0007428646204061806], [0.0042122239246964455, 0.0007539961952716112], [0.004350205417722464, 0.0007651082705706358], [0.004487872589379549, 0.0007761949673295021], [0.004625152796506882, 0.0007872505811974406], [0.004761973395943642, 0.0007982691167853773], [0.004898260813206434, 0.0008092447533272207], [0.00503394054248929, 0.0008201714372262359], [0.005168937612324953, 0.0008310431148856878], [0.005303176585584879, 0.0008418537909165025], [0.005436582025140524, 0.000852597295306623], [0.005569077096879482, 0.0008632675162516534], [0.005700585898011923, 0.000873858283739537], [0.0058310311287641525, 0.0008843634277582169], [0.005960336420685053, 0.0008947767782956362], [0.006088424474000931, 0.0009050920489244163], [0.0062152184545993805, 0.0009153031860478222], [0.0063406419940292835, 0.0009254038450308144], [0.0064646173268556595, 0.0009353879722766578], [0.0065870690159499645, 0.0009452493395656347], [0.006707920227199793, 0.0009549818350933492], [0.006827095523476601, 0.0009645794052630663], [0.006944519467651844, 0.0009740358800627291], [0.0070601170882582664, 0.0009833453223109245], [0.007173814345151186, 0.0009925016202032566], [0.007285537663847208, 0.001001499011181295], [0.0073952144011855125, 0.0010103316744789481], [0.007502772845327854, 0.001018993672914803], [0.007608141750097275, 0.0010274793021380901], [0.0077112517319619656, 0.0010357830906286836], [0.007812033407390118, 0.0010438993340358138], [0.007910419255495071, 0.001051822560839355], [0.008006343618035316, 0.0010595476487651467], [0.008099740371108055, 0.0010670691262930632], [0.008190545253455639, 0.0010743819875642657], [0.008278697729110718, 0.001081481110304594], [0.008364136330783367, 0.0010883617214858532], [0.008446802385151386, 0.0010950190480798483], [0.008526637218892574, 0.0011014484334737062], [0.008603585883975029, 0.0011076453374698758], [0.008677594363689423, 0.0011136054527014494], [0.008748610503971577, 0.0011193245882168412], [0.008816584944725037, 0.0011247986694797873], [0.008881468325853348, 0.0011300239711999893], [0.008943215012550354, 0.0011349966516718268], [0.009001780301332474, 0.0011397131020203233], [0.009057124145328999, 0.0011441700626164675], [0.009109205566346645, 0.0011483642738312483], [0.00915798731148243, 0.00115229282528162], [0.009203433059155941, 0.001155952806584537], [0.009245512075722218, 0.0011593415401875973], [0.009284193627536297, 0.0011624565813690424], [0.009319447912275791, 0.0011652957182377577], [0.00935125071555376, 0.001167856971733272], [0.00937957875430584, 0.0011701382463797927], [0.009404410608112812, 0.0011721380287781358], [0.009425729513168335, 0.0011738549219444394], [0.009443518705666065, 0.0011752875288948417], [0.009457766078412533, 0.001176434918306768], [0.009468460455536842, 0.0011772961588576436], [0.009475595317780972, 0.0011778706684708595], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.009479609318077564, 0.0011781940702348948], [0.00947660580277443, 0.0011778207262977958], [0.009471268393099308, 0.001177157391794026], [0.009463267400860786, 0.0011761628556996584], [0.009452607482671738, 0.0011748380493372679], [0.009439298883080482, 0.001173183904029429], [0.009423349052667618, 0.001171201467514038], [0.009404770098626614, 0.0011688924860209227], [0.00938357599079609, 0.0011662582401186228], [0.009359782561659813, 0.001163301058113575], [0.009333405643701553, 0.0011600228026509285], [0.009304466657340527, 0.0011564259184524417], [0.009272984229028225, 0.0011525131994858384], [0.009238982573151588, 0.0011482872068881989], [0.009202485904097557, 0.0011437512002885342], [0.009163521230220795, 0.0011389082064852118], [0.00912211462855339, 0.0011337620671838522], [0.009078297764062881, 0.0011283161584287882], [0.00903210137039423, 0.001122574438340962], [0.008983558043837547, 0.0011165410978719592], [0.008932702243328094, 0.0011102204443886876], [0.008879570290446281, 0.0011036167852580547], [0.008824199438095093, 0.0010967350099235773], [0.008766628801822662, 0.0010895796585828066], [0.008706899359822273, 0.0010821560863405466], [0.008645052090287209, 0.001074469182640314], [0.0085811298340559, 0.0010665245354175568], [0.00851517729461193, 0.0010583274997770786], [0.008447240106761456, 0.0010498836636543274], [0.00837736390531063, 0.0010411989642307162], [0.008305597119033337, 0.0010322792222723365], [0.008231987245380878, 0.001023130607791245], [0.008156586438417435, 0.0010137591743841767], [0.008079443126916885, 0.0010041713248938322], [0.008000609464943409, 0.00099437334574759], [0.007920138537883759, 0.0009843717562034726], [0.007838082499802113, 0.000974173191934824], [0.007754494436085224, 0.0009637843468226492], [0.00766943022608757, 0.0009532119729556143], [0.007582944352179766, 0.0009424628224223852], [0.007495091762393713, 0.0009315439383499324], [0.007405929267406464, 0.0009204621310345829], [0.007315512280911207, 0.0009092245018109679], [0.00722389854490757, 0.0008978380355983973], [0.007131144404411316, 0.0008863098919391632], [0.007037307135760784, 0.0008746471139602363], [0.006942444015294313, 0.0008628568612039089], [0.006846613250672817, 0.0008509462932124734], [0.006749871652573347, 0.0008389225695282221], [0.006652276962995529, 0.0008267927914857864], [0.00655388692393899, 0.0008145641768351197], [0.006454758811742067, 0.0008022438269108534], [0.006354949437081814, 0.0007898388430476189], [0.006254516541957855, 0.0007773562683723867], [0.006153516471385956, 0.0007648032624274492], [0.00605200557038188, 0.0007521868101321161], [0.0059500401839613914, 0.000739513779990375], [0.00584767572581768, 0.0007267912151291966], [0.005744967609643936, 0.0007140258676372468], [0.0056419698521494865, 0.0007012246060185134], [0.0055387369357049465, 0.0006883940659463406], [0.0054353224113583565, 0.0006755409413017333], [0.005331778898835182, 0.0006626718095503747], [0.005228158552199602, 0.0006497931317426264], [0.00512451259419322, 0.0006369112525135279], [0.005020891781896353, 0.0006240325164981186], [0.004917345941066742, 0.0006111630937084556], [0.004813923966139555, 0.0005983090959489346], [0.004710674285888672, 0.0005854764604009688], [0.004607643466442823, 0.0005726710078306496], [0.004504877608269453, 0.0005598986172117293], [0.004402422811836004, 0.0005471647600643337], [0.004300322849303484, 0.0005344750243239105], [0.0041986205615103245, 0.0005218347650952637], [0.004097359254956245, 0.0005092492210678756], [0.003996578510850668, 0.0004967235145159066], [0.0038963197730481625, 0.00048426262219436467], [0.0037966209929436445, 0.0004718713753391057], [0.003697520587593317, 0.0004595544305630028], [0.0035990546457469463, 0.0004473164153750986], [0.0035012592561542988, 0.00043516166624613106], [0.003404168179258704, 0.00042309449054300785], [0.003307814709842205, 0.0004111190210096538], [0.0032122312113642693, 0.0003992391866631806], [0.003117447951808572, 0.0003874588292092085], [0.0030234945006668568, 0.0003757816448342055], [0.0029303994961082935, 0.00036421112599782646], [0.002838189946487546, 0.0003527506487444043], [0.0027468919288367033, 0.00034140347270295024], [0.002656529890373349, 0.0003301726246718317], [0.0025671275798231363, 0.00031906107324175537], [0.002478707116097212, 0.0003080715541727841], [0.002391289686784148, 0.000297206686809659], [0.0023048955481499434, 0.0002864689740817994], [0.0022195428609848022, 0.0002758607442956418], [0.00213524978607893, 0.00026538418023847044], [0.0020520321559160948, 0.0002550413191784173], [0.0019699055701494217, 0.0002448340237606317], [0.0018888841150328517, 0.00023476409842260182], [0.0018089805962517858, 0.0002248331147711724], [0.0017302068881690502, 0.00021504255710169673], [0.001652573817409575, 0.0002053937641903758], [0.0015760910464450717, 0.00019588792929425836], [0.0015007670735940337, 0.00018652612925507128], [0.0014266095822677016, 0.0001773092953953892], [0.001353624858893454, 0.00016823822807054967], [0.0012818186078220606, 0.00015931362577248365], [0.0012111952528357506, 0.00015053605602588505], [0.0011417582863941789, 0.00014190592628438026], [0.0010735103860497475, 0.00013342358579393476], [0.001006453181616962, 0.00012508923828136176], [0.0009405873715877533, 0.00011690295650623739], [0.0008759128395467997, 0.00010886474774451926], [0.0008124287123791873, 0.00010097448102897033], [0.0007501330110244453, 9.323192352894694e-05], [0.0006890232325531542, 8.563676237827167e-05], [0.0006290959427133203, 7.818856829544529e-05], [0.0005703469505533576, 7.088681741151959e-05], [0.0005127713084220886, 6.373090582201257e-05], [0.000456363515695557, 5.67201386729721e-05], [0.00040111716953106225, 4.985372652299702e-05], [0.0003470254014246166, 4.313081080908887e-05], [0.0002940805861726403, 3.655044929473661e-05], [0.0002422745164949447, 3.0111619707895443e-05], [0.00019159846124239266, 2.3813234292902052e-05], [0.00014204309263732284, 1.7654136172495782e-05], [9.35985372052528e-05, 1.1633099347818643e-05], [4.6254455810412765e-05, 5.748836429120274e-06]]}, {"name": "CX_d13_u30", "samples": [[-6.303672125795856e-05, -2.013711991821765e-06], [-0.00012755842180922627, -4.074861408298602e-06], [-0.0001935798500198871, -6.183920504554408e-06], [-0.00026111514307558537, -8.341339707840234e-06], [-0.00033017771784216166, -1.0547548299655318e-05], [-0.000400780321797356, -1.2802952369384002e-05], [-0.0004729348293039948, -1.5107932995306328e-05], [-0.0005466524744406343, -1.7462847608840093e-05], [-0.0006219435017555952, -1.9868024537572637e-05], [-0.0006988174864090979, -2.2323769371723756e-05], [-0.0007772829849272966, -2.483035314071458e-05], [-0.0008573475643061101, -2.7388021408114582e-05], [-0.0009390179766342044, -2.9996988814673387e-05], [-0.001022299868054688, -3.265743362135254e-05], [-0.001107197953388095, -3.536951044225134e-05], [-0.0011937158415094018, -3.81333265977446e-05], [-0.0012818557443097234, -4.094896212336607e-05], [-0.0013716192916035652, -4.381646431284025e-05], [-0.0014630065998062491, -4.673583680414595e-05], [-0.0015560165047645569, -4.970704685547389e-05], [-0.0016506469110026956, -5.2730018069269136e-05], [-0.0017468942096456885, -5.5804644944146276e-05], [-0.001844753627665341, -5.89307674090378e-05], [-0.001944218878634274, -6.210819265106693e-05], [-0.0020452826283872128, -6.53366805636324e-05], [-0.0021479360293596983, -6.861594738438725e-05], [-0.002252168720588088, -7.194566569523886e-05], [-0.0023579690605401993, -7.532546442234889e-05], [-0.0024653235450387, -7.875492156017572e-05], [-0.0025742182042449713, -8.223355689551681e-05], [-0.0026846362743526697, -8.576087566325441e-05], [-0.002796560525894165, -8.933629578677937e-05], [-0.0029099714010953903, -9.295921336160973e-05], [-0.0030248481780290604, -9.662896627560258e-05], [-0.003141168737784028, -0.00010034483420895413], [-0.003258909098803997, -0.00010410605318611488], [-0.0033780436497181654, -0.00010791181557578966], [-0.0034985451493412256, -0.00011176124098710716], [-0.0036203849595040083, -0.0001156534199253656], [-0.003743532346561551, -0.00011958737741224468], [-0.0038679558783769608, -0.0001235620875377208], [-0.0039936210960149765, -0.00012757648073602468], [-0.004120493307709694, -0.0001316294219577685], [-0.004248535260558128, -0.00013571973249781877], [-0.004377708304673433, -0.00013984616089146584], [-0.0045079723931849, -0.00014400745567400008], [-0.004639284685254097, -0.00014820224896539003], [-0.004771602805703878, -0.00015242915833368897], [-0.004904881119728088, -0.0001566867285873741], [-0.005039073061197996, -0.0001609734899830073], [-0.005174129735678434, -0.0001652878854656592], [-0.005310001317411661, -0.00016962832887656987], [-0.005446636583656073, -0.00017399314674548805], [-0.005583982914686203, -0.0001783806801540777], [-0.005721984896808863, -0.000182789153768681], [-0.005860586650669575, -0.00018721680680755526], [-0.005999731365591288, -0.0001916617911774665], [-0.006139359436929226, -0.00019612221512943506], [-0.006279410794377327, -0.00020059615781065077], [-0.006419823504984379, -0.00020508166926447302], [-0.006560535170137882, -0.00020957671222276986], [-0.0067014810629189014, -0.00021407923486549407], [-0.006842595990747213, -0.000218587156268768], [-0.006983812898397446, -0.0002230983373010531], [-0.007125064264982939, -0.00022761062427889556], [-0.007266280706971884, -0.00023212179075926542], [-0.0074073923751711845, -0.00023662961029913276], [-0.00754832848906517, -0.00024113181279972196], [-0.007689016405493021, -0.00024562611361034214], [-0.007829383946955204, -0.00025011016987264156], [-0.007969358004629612, -0.0002545816241763532], [-0.008108862675726414, -0.0002590381191112101], [-0.00824782345443964, -0.00026347723905928433], [-0.008386164903640747, -0.00026789656840264797], [-0.008523810654878616, -0.00027229366241954267], [-0.008660683408379555, -0.0002766660472843796], [-0.008796704933047295, -0.00028101130737923086], [-0.008931799791753292, -0.0002853269106708467], [-0.00906588789075613, -0.00028961035422980785], [-0.00919889286160469, -0.00029385919333435595], [-0.009330734610557556, -0.00029807089595124125], [-0.00946133490651846, -0.0003022429591510445], [-0.009590616449713707, -0.0003063728509005159], [-0.009718501009047031, -0.0003104580973740667], [-0.009844908490777016, -0.00031449622474610806], [-0.009969762526452541, -0.00031848467187955976], [-0.010092983953654766, -0.0003224210231564939], [-0.010214497335255146, -0.00032630274654366076], [-0.010334224440157413, -0.0003301274555269629], [-0.010452089831233025, -0.00033389267628081143], [-0.010568018071353436, -0.0003375959931872785], [-0.010681932792067528, -0.00034123501973226666], [-0.010793761350214481, -0.00034480736940167844], [-0.010903430171310902, -0.00034831074299290776], [-0.011010865680873394, -0.00035174278309568763], [-0.011115998029708862, -0.00035510124871507287], [-0.01121875736862421, -0.0003583838988561183], [-0.011319073848426342, -0.0003615884925238788], [-0.01141687948256731, -0.000364712905138731], [-0.011512108147144318, -0.00036775501212105155], [-0.01160469464957714, -0.00037071271799504757], [-0.01169457659125328, -0.0003735839854925871], [-0.011781691573560238, -0.0003763668646570295], [-0.011865979060530663, -0.0003790594346355647], [-0.01194737944751978, -0.00038165980367921293], [-0.012025837786495686, -0.00038416613824665546], [-0.012101298198103905, -0.0003865767503157258], [-0.012173707596957684, -0.0003888898645527661], [-0.012243015691637993, -0.0003911038802471012], [-0.012309171259403229, -0.0003932172548957169], [-0.01237212959676981, -0.00039522844599559903], [-0.012431844137609005, -0.00039713605656288564], [-0.012488273903727531, -0.0003989386896137148], [-0.012541376985609531, -0.00040063506457954645], [-0.012591115199029446, -0.00040222395909950137], [-0.012637453153729439, -0.00040370423812419176], [-0.012680357322096825, -0.0004050748248118907], [-0.012719796970486641, -0.0004063347296323627], [-0.012755743227899075, -0.00040748302126303315], [-0.012788170017302036, -0.0004085189139004797], [-0.01281705405563116, -0.0004094415926374495], [-0.012842373922467232, -0.0004102504171896726], [-0.012864110060036182, -0.0004109448054805398], [-0.012882248498499393, -0.0004115242336411029], [-0.012896775268018246, -0.00041198829421773553], [-0.012907680124044418, -0.0004123366379644722], [-0.012914953753352165, -0.00041256900294683874], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.0129190469160676, -0.00041269976645708084], [-0.012915924191474915, -0.000412558059906587], [-0.012910373508930206, -0.0004123062244616449], [-0.012902054004371166, -0.00041192868957296014], [-0.012890969403088093, -0.0004114257462788373], [-0.012877129949629307, -0.0004107977729290724], [-0.01286054402589798, -0.00041004520608112216], [-0.012841224670410156, -0.0004091686278115958], [-0.012819185853004456, -0.00040816862019710243], [-0.01279444433748722, -0.0004070459690410644], [-0.012767016887664795, -0.000405801460146904], [-0.012736923061311245, -0.0004044359957333654], [-0.012704187072813511, -0.0004029505653306842], [-0.012668829411268234, -0.00040134627488441765], [-0.012630878947675228, -0.00039962425944395363], [-0.012590359896421432, -0.00039778577047400177], [-0.012547303922474384, -0.0003958321176469326], [-0.012501740828156471, -0.00039376469794660807], [-0.01245370227843523, -0.00039158499566838145], [-0.012403224594891071, -0.00038929455331526697], [-0.012350342236459255, -0.00038689502980560064], [-0.012295092456042767, -0.00038438811316154897], [-0.01223751436918974, -0.0003817755787167698], [-0.012177649885416031, -0.0003790592309087515], [-0.012115539982914925, -0.0003762410196941346], [-0.012051227502524853, -0.0003733228659257293], [-0.011984757147729397, -0.00037030683597549796], [-0.011916176415979862, -0.0003671949962154031], [-0.011845530942082405, -0.00036398950032889843], [-0.011772869154810905, -0.00036069253110326827], [-0.011698242276906967, -0.0003573063586372882], [-0.011621699668467045, -0.0003538332530297339], [-0.011543292552232742, -0.00035027560079470277], [-0.011463074944913387, -0.0003466357593424618], [-0.011381099931895733, -0.00034291617339476943], [-0.011297420598566532, -0.00033911928767338395], [-0.011212093755602837, -0.0003352476342115551], [-0.011125175282359123, -0.0003313037159387022], [-0.011036720126867294, -0.0003272901230957359], [-0.010946787893772125, -0.0003232094459235668], [-0.010855433531105518, -0.0003190643328707665], [-0.010762717574834824, -0.00031485737417824566], [-0.010668696835637093, -0.00031059124739840627], [-0.010573431849479675, -0.0003062686009798199], [-0.010476980358362198, -0.00030189219978637993], [-0.01037940289825201, -0.0002974646631628275], [-0.010280759073793888, -0.00029298875597305596], [-0.010181108489632607, -0.00028846715576946735], [-0.010080511681735516, -0.0002839025983121246], [-0.009979027323424816, -0.0002792977902572602], [-0.009876715019345284, -0.00027465546736493707], [-0.009773636236786842, -0.0002699783071875572], [-0.009669848717749119, -0.00026526901638135314], [-0.009565412998199463, -0.0002605303016025573], [-0.009460387751460075, -0.00025576481129974127], [-0.009354830719530582, -0.00025097522302530706], [-0.00924880150705576, -0.00024616418522782624], [-0.009142356924712658, -0.00024133433180395514], [-0.009035555645823479, -0.00023648823844268918], [-0.008928452618420124, -0.00023162850993685424], [-0.00882110558450222, -0.00022675767831970006], [-0.008713568560779095, -0.00022187826107256114], [-0.0086058983579278, -0.000216992775676772], [-0.008498148061335087, -0.00021210365230217576], [-0.00839037075638771, -0.0002072133356705308], [-0.008282620459794998, -0.00020232419774401933], [-0.008174947462975979, -0.00019743859593290836], [-0.008067403919994831, -0.00019255884399171919], [-0.007960038259625435, -0.00018768719746731222], [-0.007852901704609394, -0.00018282589735463262], [-0.007746039889752865, -0.00017797712644096464], [-0.0076395017094910145, -0.0001731429947540164], [-0.007533332332968712, -0.000168325612321496], [-0.0074275764636695385, -0.0001635270018596202], [-0.007322278805077076, -0.00015874917153269053], [-0.007217481732368469, -0.00015399405674543232], [-0.007113227155059576, -0.00014926354924682528], [-0.0070095546543598175, -0.00014455946802627295], [-0.006906504277139902, -0.00013988360296934843], [-0.006804114207625389, -0.00013523770030587912], [-0.0067024207673966885, -0.00013062340440228581], [-0.006601459812372923, -0.00012604235962498933], [-0.0065012662671506405, -0.00012149613030487671], [-0.006401872728019953, -0.00011698620801325887], [-0.006303311791270971, -0.00011251404794165865], [-0.006205613724887371, -0.00010808104707393795], [-0.00610880833119154, -0.00010368855146225542], [-0.006012924015522003, -9.933783439919353e-05], [-0.0059179868549108505, -9.503011096967384e-05], [-0.005824023392051458, -9.076656715478748e-05], [-0.005731057841330767, -8.654829434817657e-05], [-0.0056391130201518536, -8.237635483965278e-05], [-0.005548211745917797, -7.825175271136686e-05], [-0.0054583740420639515, -7.417541200993583e-05], [-0.005369619466364384, -7.01482204021886e-05], [-0.005281966645270586, -6.617101462325081e-05], [-0.0051954323425889015, -6.224456592462957e-05], [-0.005110032856464386, -5.8369590988149866e-05], [-0.005025781691074371, -5.4546751925954595e-05], [-0.004942693747580051, -5.077666719444096e-05], [-0.004860780201852322, -4.705989340436645e-05], [-0.004780053161084652, -4.339693259680644e-05], [-0.0047005219385027885, -3.9788246795069426e-05], [-0.004622195847332478, -3.62342361768242e-05], [-0.004545082803815603, -3.273526453995146e-05], [-0.004469188861548901, -2.9291630198713392e-05], [-0.004394521005451679, -2.5903595087584108e-05], [-0.00432108249515295, -2.257137566630263e-05], [-0.004248878452926874, -1.929513382492587e-05], [-0.004177910275757313, -1.6074995073722675e-05], [-0.004108180291950703, -1.2911034900753293e-05], [-0.0040396894328296185, -9.803290595300496e-06], [-0.003972437232732773, -6.7517553361540195e-06], [-0.003906422760337591, -3.756383193831425e-06], [-0.0038416441529989243, -8.170886189873272e-07], [-0.003778098849579692, 2.0662525912484853e-06], [-0.003715782891958952, 4.893801360594807e-06], [-0.0036546923220157623, 7.665754310437478e-06], [-0.0035948220174759626, 1.0382343134551775e-05], [-0.003536165924742818, 1.3043832041148562e-05], [-0.0034787177573889494, 1.5650517525500618e-05], [-0.0034224700648337603, 1.8202728824689984e-05], [-0.0033674149308353662, 2.0700823370134458e-05], [-0.0033135442063212395, 2.314518678758759e-05], [-0.00326084834523499, 2.553623380663339e-05], [-0.0032093178015202284, 2.7874404622707516e-05], [-0.003158942563459277, 3.016016307810787e-05], [-0.003109711455181241, 3.2393996661994606e-05], [-0.003013515379279852, 3.6758843634743243e-05], [-0.002964284271001816, 3.899267903761938e-05], [-0.0029139090329408646, 4.1278435674030334e-05], [-0.002862378489226103, 4.3616604671115056e-05], [-0.0028096826281398535, 4.6007651690160856e-05], [-0.0027558119036257267, 4.845201692660339e-05], [-0.0027007567696273327, 5.0950111472047865e-05], [-0.0026445090770721436, 5.350232095224783e-05], [-0.002587060909718275, 5.610900916508399e-05], [-0.0025284048169851303, 5.877049625269137e-05], [-0.0024685345124453306, 6.148708780528978e-05], [-0.002407443942502141, 6.425903848139569e-05], [-0.0023451282177120447, 6.708658474963158e-05], [-0.0022815826814621687, 6.996993033681065e-05], [-0.0022168040741235018, 7.290922076208517e-05], [-0.0021507898345589638, 7.590459426864982e-05], [-0.002083537634462118, 7.895613089203835e-05], [-0.0020150465425103903, 8.206387428799644e-05], [-0.001945316675119102, 8.522783173248172e-05], [-0.0018743486143648624, 8.844797412166372e-05], [-0.0018021442228928208, 9.172421414405107e-05], [-0.0017287059454247355, 9.505643538432196e-05], [-0.0016540377400815487, 9.844447049545124e-05], [-0.0015781441470608115, 0.0001018881011987105], [-0.0015010309871286154, 0.00010538708011154085], [-0.0014227048959583044, 0.00010894108709180728], [-0.001343173673376441, 0.00011254977289354429], [-0.0012624465161934495, 0.00011621273006312549], [-0.0011805332032963634, 0.00011992950749117881], [-0.0010974450269713998, 0.00012369958858471364], [-0.0010131942108273506, 0.00012752243492286652], [-0.0009277943754568696, 0.00013139740622136742], [-0.0008412600727751851, 0.00013532386219594628], [-0.0007536071934737265, 0.00013930106069892645], [-0.0006648527923971415, 0.00014332824503071606], [-0.0005750151467509568, 0.0001474045857321471], [-0.0004841136687900871, 0.00015152919513639063], [-0.000392169167753309, 0.00015570114192087203], [-0.00029920352972112596, 0.00015991940745152533], [-0.00020524000865407288, 0.0001641829585423693], [-0.00011030304449377581, 0.00016849067469593138], [-1.4418354112422094e-05, 0.00017284139175899327], [8.23870868771337e-05, 0.0001772338873706758], [0.00018008505867328495, 0.0001816668955143541], [0.00027864606818184257, 0.00018613904830999672], [0.0003780393744818866, 0.00019064896332565695], [0.00047823303611949086, 0.00019519519992172718], [0.0005791937583126128, 0.00019977624469902366], [0.0006808871403336525, 0.00020439054060261697], [0.0007832774426788092, 0.00020903644326608628], [0.0008863278198987246, 0.0002137123083230108], [0.0009900000877678394, 0.00021841638954356313], [0.0010942550143226981, 0.00022314689704217017], [0.0011990520870313048, 0.00022790201182942837], [0.0013043497456237674, 0.00023267984215635806], [0.0014101052656769753, 0.00023747845261823386], [0.0015162746421992779, 0.00024229583505075425], [0.0016228130552917719, 0.0002471299667377025], [0.0017296744044870138, 0.0002519787522032857], [0.0018368117744103074, 0.0002568400523159653], [0.0019441768527030945, 0.00026171168428845704], [0.0020517208613455296, 0.0002665914362296462], [0.0021593936253339052, 0.0002714770380407572], [0.002267144387587905, 0.0002763661614153534], [0.002374921226873994, 0.00028125650715082884], [0.0024826715234667063, 0.0002861456014215946], [0.0025903419591486454, 0.0002910311159212142], [0.00269787828437984, 0.0002959105186164379], [0.002805225783959031, 0.0003007813647855073], [0.002912328578531742, 0.00030564109329134226], [0.0030191305559128523, 0.000310487172100693], [0.00312557490542531, 0.0003153170400764793], [0.003231604350730777, 0.00032012807787396014], [0.0033371609169989824, 0.0003249176370445639], [0.0034421863965690136, 0.0003296831273473799], [0.003546622348949313, 0.00033442184212617576], [0.0036504094023257494, 0.00033913113293237984], [0.003753488650545478, 0.0003438082931097597], [0.003855800023302436, 0.0003484506451059133], [0.003957284614443779, 0.0003530554531607777], [0.004057881888002157, 0.00035762001061812043], [0.004157532472163439, 0.00036214161082170904], [0.004256176296621561, 0.00036661751801148057], [0.004353753756731749, 0.00037104502553120255], [0.004450204782187939, 0.00037542145582847297], [0.004545469768345356, 0.0003797440731432289], [0.004639490507543087, 0.0003840101999230683], [0.004732206929475069, 0.00038821715861558914], [0.004823560826480389, 0.0003923623007722199], [0.004913493525236845, 0.000396442977944389], [0.005001948215067387, 0.00040045654168352485], [0.005088867153972387, 0.00040440045995637774], [0.005174193996936083, 0.00040827211341820657], [0.005257872864603996, 0.00041206899913959205], [0.005339848343282938, 0.00041578858508728445], [0.005420065950602293, 0.0004194284265395254], [0.005498472601175308, 0.000422986107878387], [0.005575015675276518, 0.00042645918438211083], [0.005649642553180456, 0.0004298453568480909], [0.0057223038747906685, 0.00043314232607372105], [0.005792949348688126, 0.0004363478219602257], [0.0058615305460989475, 0.0004394596617203206], [0.005928000435233116, 0.0004424756916705519], [0.005992312915623188, 0.0004453938454389572], [0.006054423283785582, 0.00044821208575740457], [0.00611428776755929, 0.00045092840446159244], [0.00617186538875103, 0.00045354096801020205], [0.006227115169167519, 0.0004560478846542537], [0.006279997527599335, 0.00045844740816392004], [0.006330475676804781, 0.0004607378214132041], [0.006378513760864735, 0.0004629175236914307], [0.006424077320843935, 0.0004649849433917552], [0.006467133294790983, 0.0004669385962188244], [0.0065076518803834915, 0.0004687771142926067], [0.006545602809637785, 0.00047049912973307073], [0.006580960005521774, 0.00047210342017933726], [0.006613696459680796, 0.00047358882147818804], [0.006643789820373058, 0.0004749542858917266], [0.006671217270195484, 0.000476198794785887], [0.006695959251374006, 0.0004773214750457555], [0.006717998068779707, 0.0004783214535564184], [0.006737316958606243, 0.00047919806092977524], [0.00675390288233757, 0.00047995062777772546], [0.0067677428014576435, 0.0004805786011274904], [0.006778826471418142, 0.0004810815444216132], [0.006787146907299757, 0.0004814590502064675], [0.006792697124183178, 0.0004817108856514096], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.006795820314437151, 0.00048185259220190346], [0.00679366709664464, 0.0004816999426111579], [0.006789840757846832, 0.0004814286367036402], [0.0067841047421097755, 0.00048102191067300737], [0.0067764632403850555, 0.0004804801137652248], [0.00676692184060812, 0.00047980359522625804], [0.006755487527698278, 0.0004789928498212248], [0.0067421686835587025, 0.0004780484887305647], [0.0067269750870764256, 0.00047697118134237826], [0.006709917448461056, 0.00047576174256391823], [0.006691008806228638, 0.0004744210164062679], [0.006670262198895216, 0.00047294999239966273], [0.006647692993283272, 0.00047134977648966014], [0.006623317953199148, 0.000469621445517987], [0.006597153842449188, 0.0004677663091570139], [0.006569220218807459, 0.00046578567707911134], [0.006539536640048027, 0.0004636810044758022], [0.006508124526590109, 0.0004614537756424397], [0.0064750066958367825, 0.0004591055621858686], [0.006440206430852413, 0.0004566380812320858], [0.006403748877346516, 0.00045405307901091874], [0.0063656591810286045, 0.0004513523599598557], [0.006325964350253344, 0.0004485378449317068], [0.006284693256020546, 0.0004456115129869431], [0.006241873372346163, 0.0004425754304975271], [0.006197535898536444, 0.00043943169293925166], [0.006151710636913776, 0.00043618251220323145], [0.006104430183768272, 0.0004328301001805812], [0.006055726669728756, 0.00042937681428156793], [0.006005633156746626, 0.00042582498281262815], [0.00595418456941843, 0.00042217705049552023], [0.005901414901018143, 0.00041843546205200255], [0.005847360473126173, 0.0004146027786191553], [0.005792057607322931, 0.00041068156133405864], [0.0057355426251888275, 0.0004066744295414537], [0.005677853710949421, 0.0004025840316899121], [0.0056190285831689835, 0.0003984130744356662], [0.005559105891734362, 0.000394164293538779], [0.005498124286532402, 0.00038984042475931346], [0.005436123348772526, 0.00038544429116882384], [0.005373143125325441, 0.0003809787449426949], [0.00530922319740057, 0.00037644655094482005], [0.0052444045431911945, 0.00037185061955824494], [0.005178727675229311, 0.00036719386116601527], [0.005112233106046915, 0.0003624791279435158], [0.005044962279498577, 0.00035770933027379215], [0.00497695617377758, 0.0003528874076437205], [0.004908256232738495, 0.00034801627043634653], [0.004838903434574604, 0.00034309885813854635], [0.004768938757479191, 0.00033813808113336563], [0.004698404110968113, 0.0003331368789076805], [0.0046273404732346535, 0.0003280981327407062], [0.004555788356810808, 0.0003230248112231493], [0.0044837892055511475, 0.00031791976653039455], [0.004411383531987667, 0.0003127858799416572], [0.0043386113829910755, 0.0003076260327361524], [0.004265513736754656, 0.00030244310619309545], [0.004192129708826542, 0.0002972398651763797], [0.004118499346077442, 0.0002920191618613899], [0.0040446617640554905, 0.00028678373200818896], [0.003970655146986246, 0.0002815363695845008], [0.003896518610417843, 0.0002762797521427274], [0.0038222894072532654, 0.0002710165863391012], [0.003748005023226142, 0.0002657495206221938], [0.003673702711239457, 0.00026048117433674634], [0.00359941809438169, 0.0002552140795160085], [0.003525187261402607, 0.0002499507972970605], [0.0034510453697293997, 0.0002446938306093216], [0.0033770266454666853, 0.0002394455805188045], [0.0033031650818884373, 0.00023420847719535232], [0.0032294937409460545, 0.00022898486349731684], [0.0031560449860990047, 0.00022377703862730414], [0.0030828507151454687, 0.00021858724358025938], [0.0030099416617304087, 0.0002134176902472973], [0.0029373483266681433, 0.00020827051775995642], [0.0028651002794504166, 0.00020314780704211444], [0.0027932256925851107, 0.0001980515953619033], [0.0027217529714107513, 0.00019298387633170933], [0.002650708891451359, 0.0001879465562524274], [0.0025801199954003096, 0.00018294149776920676], [0.0025100114289671183, 0.00017797050531953573], [0.002440408105030656, 0.0001730353251332417], [0.0023713335394859314, 0.0001681376452324912], [0.002302810549736023, 0.00016327908087987453], [0.002234861720353365, 0.00015846120368223637], [0.002167507540434599, 0.00015368552703876048], [0.0021007689647376537, 0.000148953462485224], [0.0020346648525446653, 0.00014426640700548887], [0.0019692142959684134, 0.00013962568482384086], [0.0019044349901378155, 0.0001350325474049896], [0.0018403434660285711, 0.00013048818800598383], [0.0017769559053704143, 0.00012599374167621136], [0.0017142874421551824, 0.00012155028525739908], [0.0016523523954674602, 0.00011715882283169776], [0.0015911641530692577, 0.00011282032210147008], [0.0015307354042306542, 0.00010853565618162975], [0.0014710776740685105, 0.00010430567635921761], [0.001412202138453722, 0.00010013114660978317], [0.001354118692688644, 9.601278725313023e-05], [0.0012968368828296661, 9.195126040140167e-05], [0.0012403649743646383, 8.794715540716425e-05], [0.001184710767120123, 8.400103979511186e-05], [0.0011298811296001077, 8.011338650248945e-05], [0.0010758822318166494, 7.628463208675385e-05], [0.001022719545289874, 7.251517672557384e-05], [0.0009703977266326547, 6.880533328512684e-05], [0.0009189206175506115, 6.515538552775979e-05], [0.0008682915940880775, 6.156557356007397e-05], [0.0008185130427591503, 5.80360610911157e-05], [0.0007695869426243007, 5.4566993640037253e-05], [0.0007215143996290863, 5.115844396641478e-05], [0.000674295995850116, 4.781045936397277e-05], [0.0006279316148720682, 4.452302528079599e-05], [0.0005824205582030118, 4.1296098061138764e-05], [0.0005377615452744067, 3.81295831175521e-05], [0.0004939526552334428, 3.502334584482014e-05], [0.0004509914724621922, 3.197721525793895e-05], [0.0004088749992661178, 2.8990978535148315e-05], [0.0003675997140817344, 2.6064386474899948e-05], [0.00032716162968426943, 2.319715167686809e-05], [0.00028755617677234113, 2.038895763689652e-05], [0.0002487784076947719, 1.7639449652051553e-05], [0.0002108228945871815, 1.4948241187084932e-05], [0.0001736837439239025, 1.2314917512412649e-05], [0.00013735468382947147, 9.739032066136133e-06], [0.00010182902042288333, 7.220111001515761e-06], [6.709968874929473e-05, 4.757654096465558e-06], [3.3159274607896805e-05, 2.351133844058495e-06]]}, {"name": "CX_d2_u2", "samples": [[-0.000152468666783534, -5.792186584585579e-06], [-0.00030852906638756394, -1.1720821930794045e-05], [-0.00046821695286780596, -1.7787262549973093e-05], [-0.0006315664504654706, -2.39928049268201e-05], [-0.0007986100390553474, -3.0338684155140072e-05], [-0.0009693784522823989, -3.6826066207140684e-05], [-0.0011439005611464381, -4.345604975242168e-05], [-0.0013222034322097898, -5.022966070100665e-05], [-0.0015043120365589857, -5.7147848565364257e-05], [-0.001690249191597104, -6.421148282242939e-05], [-0.0018800358520820737, -7.14213601895608e-05], [-0.0020736902952194214, -7.877816824475303e-05], [-0.0022712289355695248, -8.62825327203609e-05], [-0.002472665160894394, -9.393496293341741e-05], [-0.002678010379895568, -0.00010173590271733701], [-0.0028872734401375055, -0.00010968567221425474], [-0.003100460162386298, -0.00011778449697885662], [-0.003317573806270957, -0.0001260324934264645], [-0.0035386146046221256, -0.00013442970521282405], [-0.003763580461964011, -0.00014297600137069821], [-0.003992465324699879, -0.00015167120727710426], [-0.0042252615094184875, -0.0001605149736860767], [-0.004461956676095724, -0.00016950687859207392], [-0.0047025359235703945, -0.00017864633991848677], [-0.004946982022374868, -0.00018793267372529954], [-0.005195272155106068, -0.00019736506510525942], [-0.005447383038699627, -0.0002069425827357918], [-0.0057032848708331585, -0.00021666413522325456], [-0.005962946452200413, -0.00022652852931059897], [-0.006226332858204842, -0.00023653439711779356], [-0.006493404041975737, -0.00024668025434948504], [-0.00676411809399724, -0.00025696452939882874], [-0.007038428448140621, -0.0002673853887245059], [-0.007316284347325563, -0.0002779409405775368], [-0.007597632240504026, -0.00028862917679362], [-0.00788241345435381, -0.00029944785637781024], [-0.008170567452907562, -0.0003103946219198406], [-0.0084620276466012, -0.00032146702869795263], [-0.008756725117564201, -0.0003326623700559139], [-0.009054585359990597, -0.00034397791023366153], [-0.009355532005429268, -0.0003554106515366584], [-0.009659482166171074, -0.0003669575380627066], [-0.0099663520231843, -0.00037861531018279493], [-0.010276050306856632, -0.00039038056274876], [-0.010588484816253185, -0.00040224974509328604], [-0.01090355683118105, -0.0004142191610299051], [-0.01122116670012474, -0.00042628493974916637], [-0.011541208252310753, -0.0004384431231301278], [-0.011863572522997856, -0.0004506894911173731], [-0.012188144959509373, -0.0004630198236554861], [-0.01251481007784605, -0.00047542963875457644], [-0.012843447737395763, -0.00048791433800943196], [-0.013173931278288364, -0.0005004692357033491], [-0.013506134040653706, -0.0005130893550813198], [-0.013839922845363617, -0.0005257698358036578], [-0.014175163581967354, -0.0005385053809732199], [-0.01451171562075615, -0.0005512908101081848], [-0.014849438332021236, -0.0005641206516884267], [-0.015188184566795826, -0.0005769893759861588], [-0.01552780531346798, -0.0005898913950659335], [-0.01586814783513546, -0.0006028207717463374], [-0.016209058463573456, -0.0006157717434689403], [-0.016550377011299133, -0.0006287381984293461], [-0.01689194142818451, -0.000641714024823159], [-0.0172335896641016, -0.0006546930526383221], [-0.017575154080986977, -0.000667668879032135], [-0.017916465178132057, -0.0006806350429542363], [-0.018257351592183113, -0.0006935850833542645], [-0.018597638234496117, -0.0007065123645588756], [-0.01893714815378189, -0.0007194101344794035], [-0.019275706261396408, -0.0007322717574425042], [-0.019613131880760193, -0.0007450903067365289], [-0.01994924061000347, -0.0007578588556498289], [-0.02028384990990162, -0.0007705704774707556], [-0.02061677724123001, -0.0007832181290723383], [-0.020947834476828575, -0.0007957948255352676], [-0.02127683535218239, -0.00080829334910959], [-0.021603591740131378, -0.0008207065984606743], [-0.021927915513515472, -0.0008330274722538888], [-0.02224961668252945, -0.0008452486945316195], [-0.022568505257368088, -0.000857363105751574], [-0.022884393110871315, -0.000869363488163799], [-0.02319709025323391, -0.0008812426240183413], [-0.02350640669465065, -0.0008929933537729084], [-0.023812152445316315, -0.0009046084014698863], [-0.02411413937807083, -0.0009160807239823043], [-0.024412181228399277, -0.0009274031035602093], [-0.02470608800649643, -0.0009385684388689697], [-0.024995675310492516, -0.000949569686781615], [-0.02528076060116291, -0.0009603998623788357], [-0.02556115761399269, -0.000971051980741322], [-0.02583668753504753, -0.0009815192315727472], [-0.026107169687747955, -0.0009917946299538016], [-0.026372427120804787, -0.001001871656626463], [-0.026632286608219147, -0.0010117435595020652], [-0.026886573061347008, -0.0010214037029072642], [-0.02713511884212494, -0.0010308458004146814], [-0.02737775631248951, -0.0010400634491816163], [-0.027614321559667587, -0.0010490503627806902], [-0.027844654396176338, -0.00105780060403049], [-0.028068598359823227, -0.0010663080029189587], [-0.028285996988415718, -0.0010745669715106487], [-0.028496703132987022, -0.001082571572624147], [-0.0287005715072155, -0.0010903163347393274], [-0.02889745868742466, -0.0010977959027513862], [-0.029087228700518608, -0.0011050051543861628], [-0.02926974557340145, -0.0011119389673694968], [-0.02944488450884819, -0.0011185923358425498], [-0.029612520709633827, -0.0011249607196077704], [-0.02977253496646881, -0.0011310394620522857], [-0.02992481365799904, -0.0011368244886398315], [-0.030069246888160706, -0.0011423114920035005], [-0.030205734074115753, -0.0011474965140223503], [-0.030334174633026123, -0.0011523759458214045], [-0.030454479157924652, -0.0011569461785256863], [-0.030566558241844177, -0.0011612039525061846], [-0.03067033179104328, -0.001165146240964532], [-0.030765727162361145, -0.0011687702499330044], [-0.0308526698499918, -0.0011720731854438782], [-0.030931102111935616, -0.0011750527191907167], [-0.03100096434354782, -0.0011777067556977272], [-0.031062204390764236, -0.0011800333159044385], [-0.03111478127539158, -0.0011820305371657014], [-0.031158652156591415, -0.0011836972553282976], [-0.031193789094686508, -0.0011850320734083652], [-0.03122016228735447, -0.0011860339436680079], [-0.031237756833434105, -0.0011867024004459381], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031247656792402267, -0.001187078538350761], [-0.031240595504641533, -0.0011867060093209147], [-0.031228046864271164, -0.0011860441882163286], [-0.03120923601090908, -0.0011850519804283977], [-0.031184175983071327, -0.0011837303172796965], [-0.031152885407209396, -0.001182079897262156], [-0.03111538663506508, -0.0011801021173596382], [-0.031071705743670464, -0.0011777982581406832], [-0.031021878123283386, -0.001175170298665762], [-0.030965939164161682, -0.0011722197523340583], [-0.030903926119208336, -0.0011689490638673306], [-0.030835889279842377, -0.0011653605615720153], [-0.030761873349547386, -0.0011614568065851927], [-0.03068193420767784, -0.0011572404764592648], [-0.030596129596233368, -0.0011527149472385645], [-0.03050452098250389, -0.0011478831293061376], [-0.030407173559069633, -0.0011427487479522824], [-0.030304158106446266, -0.0011373154120519757], [-0.03019554726779461, -0.0011315869633108377], [-0.03008141927421093, -0.0011255675926804543], [-0.029961856082081795, -0.0011192613746970892], [-0.02983693964779377, -0.0011126729659736156], [-0.029706761240959167, -0.0011058070231229067], [-0.0295714121311903, -0.0010986682027578354], [-0.02943098545074463, -0.0010912616271525621], [-0.029285579919815063, -0.0010835925349965692], [-0.029135296121239662, -0.0010756660485640168], [-0.028980238363146782, -0.0010674878722056746], [-0.028820514678955078, -0.0010590635938569903], [-0.028656233102083206, -0.0010503988014534116], [-0.02848750539124012, -0.0010414996650069952], [-0.02831444889307022, -0.0010323721216991544], [-0.028137177228927612, -0.001023022225126624], [-0.027955809608101845, -0.0010134563781321049], [-0.027770468965172768, -0.0010036809835582972], [-0.02758127823472023, -0.0009937024442479014], [-0.02738836035132408, -0.0009835273958742619], [-0.02719184197485447, -0.0009731624741107225], [-0.02699185349047184, -0.0009626144310459495], [-0.02678852155804634, -0.0009518900187686086], [-0.02658197656273842, -0.0009409962804056704], [-0.026372350752353668, -0.0009299399680458009], [-0.026159778237342834, -0.0009187282412312925], [-0.025944389402866364, -0.0009073680266737938], [-0.0257263220846653, -0.0008958663675002754], [-0.025505706667900085, -0.0008842304814606905], [-0.02528267912566662, -0.0008724673534743488], [-0.02505737729370594, -0.0008605842012912035], [-0.024829933419823647, -0.000848588184453547], [-0.02460048533976078, -0.0008364863460883498], [-0.024369165301322937, -0.0008242858457379043], [-0.02413611114025116, -0.0008119938429445028], [-0.023901455104351044, -0.0007996174390427768], [-0.023665335029363632, -0.0007871636189520359], [-0.023427879437804222, -0.0007746395422145724], [-0.023189222440123558, -0.0007620520773343742], [-0.022949498146772385, -0.0007494082674384117], [-0.022708835080266, -0.0007367149810306728], [-0.022467363625764847, -0.0007239790284074843], [-0.022225212305784225, -0.0007112072198651731], [-0.021982507780194283, -0.0006984062492847443], [-0.021739374846220016, -0.000685582694131881], [-0.021495940163731575, -0.0006727431900799274], [-0.021252324804663658, -0.0006598941399715841], [-0.021008649840950966, -0.0006470419466495514], [-0.0207650326192379, -0.000634192896541208], [-0.02052159234881401, -0.0006213531014509499], [-0.0202784426510334, -0.0006085286731831729], [-0.020035699009895325, -0.0005957255489192903], [-0.019793467596173286, -0.0005829496076330543], [-0.01955186203122139, -0.0005702066118828952], [-0.01931098662316799, -0.0005575020913966], [-0.01907094568014145, -0.0005448415759019554], [-0.01883183978497982, -0.0005322304205037653], [-0.018593769520521164, -0.0005196738638915122], [-0.01835683174431324, -0.0005071769701316953], [-0.01812111772596836, -0.0004947448032908142], [-0.017886722460389137, -0.00048238204908557236], [-0.017653733491897583, -0.0004700934805441648], [-0.017422236502170563, -0.0004578836087603122], [-0.017192315310239792, -0.00044575685751624405], [-0.016964050009846687, -0.000433717475971207], [-0.016737518832087517, -0.0004217695677652955], [-0.0165127981454134, -0.0004099170910194516], [-0.016289958730340004, -0.0003981638583354652], [-0.016069071367383003, -0.0003865135367959738], [-0.01585020124912262, -0.0003749696770682931], [-0.015633411705493927, -0.0003635355969890952], [-0.015418766997754574, -0.0003522145270835608], [-0.015206322073936462, -0.00034100955235771835], [-0.014996133744716644, -0.000329923554090783], [-0.014788254164159298, -0.0003189593262504786], [-0.014582731761038303, -0.00030811948818154633], [-0.014379615895450115, -0.00029740651370957494], [-0.014178948476910591, -0.00028682270203717053], [-0.013980771414935589, -0.0002763702650554478], [-0.013785123825073242, -0.0002660512109287083], [-0.013592041097581387, -0.0002558674314059317], [-0.013401555828750134, -0.0002458206727169454], [-0.01321369968354702, -0.00023591255012433976], [-0.01302849967032671, -0.00022614453337155282], [-0.012845980934798717, -0.00021651796123478562], [-0.012666166760027409, -0.00020703401241917163], [-0.012489077635109425, -0.00019769376376643777], [-0.012314730323851109, -0.00018849814659915864], [-0.012143139727413654, -0.00017944797582458705], [-0.011974320746958256, -0.00017054392083082348], [-0.011808282695710659, -0.00016178654914256185], [-0.011645033024251461, -0.00015317629731725901], [-0.011484579183161259, -0.00014471348549705], [-0.011326925829052925, -0.00013639831740874797], [-0.011172072030603886, -0.00012823089491575956], [-0.01102001965045929, -0.00012021118891425431], [-0.010870765894651413, -0.00011233908298891038], [-0.010724306106567383, -0.00010461435886099935], [-0.010580634698271751, -9.703668183647096e-05], [-0.010439743287861347, -8.960563718574122e-05], [-0.01030162163078785, -8.232069376390427e-05], [-0.010166259482502937, -7.518126221839339e-05], [-0.010033642873167992, -6.818663678131998e-05], [-0.009903755970299244, -6.133603164926171e-05], [-0.0097765838727355, -5.462859553517774e-05], [-0.009652108885347843, -4.8063382564578205e-05], [-0.009530310519039631, -4.163937774137594e-05], [-0.009411169216036797, -3.5355493309907615e-05], [-0.00929466262459755, -2.921057603089139e-05], [-0.009180767461657524, -2.3203401724458672e-05], [-0.00906945951282978, -1.7332686184090562e-05], [-0.008851967751979828, -5.8614850786398165e-06], [-0.008740659803152084, 9.230553210670678e-09], [-0.008626764640212059, 6.016405222908361e-06], [-0.008510258048772812, 1.2161322956671938e-05], [-0.008391116745769978, 1.8445205569150858e-05], [-0.008269318379461765, 2.4869210392353125e-05], [-0.008144842460751534, 3.143442518194206e-05], [-0.00801767036318779, 3.8141861296026036e-05], [-0.007887784391641617, 4.499246279010549e-05], [-0.007755167316645384, 5.198709186515771e-05], [-0.007619804702699184, 5.9126527048647404e-05], [-0.007481683511286974, 6.641146319452673e-05], [-0.00734079210087657, 7.384251512121409e-05], [-0.007197120692580938, 8.142018486978486e-05], [-0.007050660904496908, 8.914491627365351e-05], [-0.006901407148689032, 9.701701492303982e-05], [-0.0067493547685444355, 0.00010503672092454508], [-0.006594501435756683, 0.0001132041506934911], [-0.006436847150325775, 0.0001215193115058355], [-0.00627639377489686, 0.00012998213060200214], [-0.006113144569098949, 0.00013859238242730498], [-0.005947106517851353, 0.0001473497541155666], [-0.005778287071734667, 0.00015625379455741495], [-0.0056066969409585, 0.00016530397988390177], [-0.005432349629700184, 0.0001744995970511809], [-0.0052552600391209126, 0.00018383984570391476], [-0.005075445864349604, 0.00019332377996761352], [-0.004892927128821611, 0.00020295036665629596], [-0.004707727115601301, 0.0002127183834090829], [-0.004519870970398188, 0.00022262650600168854], [-0.004329386167228222, 0.0002326732501387596], [-0.004136302974075079, 0.00024285702966153622], [-0.003940655384212732, 0.0002531760837882757], [-0.0037424785550683737, 0.0002636285498738289], [-0.0035418113693594933, 0.0002742123615462333], [-0.003338694805279374, 0.0002849253360182047], [-0.0031331731006503105, 0.000295765174087137], [-0.0029252932872623205, 0.0003067293728236109], [-0.0027151047252118587, 0.00031781537109054625], [-0.002502660034224391, 0.0003290203458163887], [-0.002288014395162463, 0.0003403414157219231], [-0.002071226015686989, 0.000351775495801121], [-0.0018523558974266052, 0.00036331938463263214], [-0.0016314679523929954, 0.0003749696770682931], [-0.0014086286537349224, 0.0003867229097522795], [-0.001183907501399517, 0.0003985753864981234], [-0.0009573769057169557, 0.0004105232947040349], [-0.0007291120127774775, 0.00042256267624907196], [-0.0004991906462237239, 0.0004346894274931401], [-0.00026769356918521225, 0.0004468992992769927], [-3.470419687801041e-05, 0.00045918786781840026], [0.00019969133427366614, 0.0004715505929198116], [0.000435404188465327, 0.00048398281796835363], [0.0006723428377881646, 0.0004964796826243401], [0.0009104132186621428, 0.0005090362392365932], [0.001149518764577806, 0.0005216473946347833], [0.0013895600568503141, 0.0005343079101294279], [0.001630435697734356, 0.0005470124306157231], [0.0018720414955168962, 0.0005597554845735431], [0.002114271279424429, 0.0005725313676521182], [0.002357016084715724, 0.0005853344919160008], [0.002600165084004402, 0.0005981589201837778], [0.002843605587258935, 0.0006109987152740359], [0.00308722211048007, 0.0006238477653823793], [0.0033308977726846933, 0.000636699958704412], [0.003574513364583254, 0.0006495490088127553], [0.0038179485127329826, 0.0006623885128647089], [0.004061080515384674, 0.0006752120680175722], [0.004303785040974617, 0.000688013038598001], [0.004545936826616526, 0.0007007848471403122], [0.004787408281117678, 0.0007135207997635007], [0.0050280713476240635, 0.0007262140861712396], [0.005267796106636524, 0.0007388578960672021], [0.005506452172994614, 0.0007514453609474003], [0.0057439072988927364, 0.0007639694376848638], [0.005980029236525297, 0.0007764232577756047], [0.0062146843411028385, 0.0007887996616773307], [0.006447738502174616, 0.0008010916644707322], [0.006679057609289885, 0.0008132921648211777], [0.006908506620675325, 0.0008253940031863749], [0.007135950028896332, 0.0008373900200240314], [0.0073612527921795845, 0.0008492731722071767], [0.00758427893742919, 0.0008610363001935184], [0.007804894354194403, 0.0008726721862331033], [0.00802296306937933, 0.0008841738454066217], [0.008238350972533226, 0.0008955340599641204], [0.008450924418866634, 0.0009067458449862897], [0.00866054929792881, 0.0009178020991384983], [0.008867094293236732, 0.0009286958957090974], [0.009070426225662231, 0.0009394202497787774], [0.009270415641367435, 0.0009499682928435504], [0.009466933086514473, 0.0009603332146070898], [0.009659850969910622, 0.0009705083211883903], [0.009849042631685734, 0.000980486860498786], [0.010034383274614811, 0.0009902622550725937], [0.010215749964118004, 0.000999828102067113], [0.010393021628260612, 0.0010091778822243214], [0.010566079057753086, 0.001018305541947484], [0.010734805837273598, 0.0010272046783939004], [0.01089908741414547, 0.0010358693543821573], [0.011058812029659748, 0.0010442937491461635], [0.011213868856430054, 0.0010524719255045056], [0.011364152655005455, 0.0010603982955217361], [0.01150955818593502, 0.001068067504093051], [0.011649984866380692, 0.0010754740796983242], [0.011785334907472134, 0.0010826127836480737], [0.011915513314306736, 0.0010894788429141045], [0.012040428817272186, 0.001096067251637578], [0.012159992940723896, 0.0011023733532056212], [0.012274120002985, 0.0011083928402513266], [0.012382730841636658, 0.0011141212889924645], [0.012485746294260025, 0.0011195546248927712], [0.012583093717694283, 0.0011246890062466264], [0.01267470233142376, 0.0011295207077637315], [0.012760506942868233, 0.0011340463533997536], [0.012840446084737778, 0.0011382625671103597], [0.012914462015032768, 0.001142166438512504], [0.012982499785721302, 0.0011457549408078194], [0.013044511899352074, 0.001149025629274547], [0.013100451789796352, 0.001151976059190929], [0.01315027941018343, 0.001154604135081172], [0.01319395937025547, 0.0011569078778848052], [0.013231458142399788, 0.0011588857742026448], [0.013262748718261719, 0.0011605360778048635], [0.013287808746099472, 0.0011618578573688865], [0.01330662053078413, 0.0011628500651568174], [0.013319169171154499, 0.0011635118862614036], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013326230458915234, 0.001163884298875928], [0.013322007842361927, 0.001163515611551702], [0.013314505107700825, 0.0011628601932898164], [0.013303256593644619, 0.0011618778808042407], [0.01328827254474163, 0.0011605691397562623], [0.013269562274217606, 0.0011589350178837776], [0.013247139751911163, 0.0011569767957553267], [0.013221022672951221, 0.0011546957539394498], [0.013191228732466698, 0.0011520935222506523], [0.013157779350876808, 0.0011491721961647272], [0.013120700605213642, 0.0011459337547421455], [0.013080017641186714, 0.0011423806427046657], [0.013035761192440987, 0.0011385154211893678], [0.012987962923943996, 0.0011343407677486539], [0.01293665636330843, 0.0011298598255962133], [0.012881879694759846, 0.0011250757379457355], [0.012823672033846378, 0.001119991997256875], [0.012762075290083885, 0.0011146122124046087], [0.012697132304310799, 0.0011089403415098786], [0.012628891505300999, 0.001102980226278305], [0.012557399459183216, 0.0010967362904921174], [0.01248270832002163, 0.0010902128415182233], [0.012404869310557842, 0.0010834146523848176], [0.012323938310146332, 0.0010763462632894516], [0.012239971198141575, 0.0010690127965062857], [0.012153027579188347, 0.0010614192578941584], [0.012063167057931423, 0.0010535711189731956], [0.011970452032983303, 0.0010454736184328794], [0.011874946765601635, 0.0010371323442086577], [0.011776716448366642, 0.0010285531170666218], [0.011675828136503696, 0.001019741757772863], [0.01157235074788332, 0.0010107042035087943], [0.011466353200376034, 0.0010014466242864728], [0.011357907205820084, 0.0009919751901179552], [0.011247084476053715, 0.0009822961874306202], [0.011133959516882896, 0.0009724161354824901], [0.011018606834113598, 0.0009623414371162653], [0.010901100933551788, 0.00095207872800529], [0.010781520046293736, 0.0009416347602382302], [0.010659939609467983, 0.00093101616948843], [0.010536438785493374, 0.0009202298824675381], [0.010411095805466175, 0.0009092827094718814], [0.01028398983180523, 0.0008981815772131085], [0.010155200958251953, 0.0008869334124028683], [0.010024809278547764, 0.0008755452581681311], [0.009892894886434078, 0.0008640241576358676], [0.009759537875652313, 0.0008523770957253873], [0.00962482113391161, 0.0008406111737713218], [0.00948882382363081, 0.0008287334931083024], [0.009351626969873905, 0.0008167510386556387], [0.009213312529027462, 0.0008046709117479622], [0.009073960594832897, 0.0007925002137199044], [0.008933651261031628, 0.000780245871283114], [0.00879246462136507, 0.0007679149275645614], [0.008650480769574642, 0.0007555144256912172], [0.008507778868079185, 0.0007430511177517474], [0.008364438079297543, 0.0007305320468731225], [0.008220536634325981, 0.0007179640233516693], [0.00807615090161562, 0.0007053536828607321], [0.007931359112262726, 0.0006927078939042985], [0.007786237169057131, 0.000680033175740391], [0.0076408591121435165, 0.0006673362222500145], [0.007495299447327852, 0.0006546233780682087], [0.00734963221475482, 0.0006419011042453349], [0.007203929126262665, 0.0006291756872087717], [0.007058261428028345, 0.000616453355178237], [0.006912698969244957, 0.0006037402781657875], [0.006767310667783022, 0.0005910423351451755], [0.0066221640445292, 0.000578365579713136], [0.006477325223386288, 0.0005657156580127776], [0.006332859862595797, 0.0005530983908101916], [0.006188830826431513, 0.0005405191914178431], [0.006045300979167223, 0.0005279835895635188], [0.00590233039110899, 0.0005154968821443617], [0.005759979132562876, 0.0005030641914345324], [0.005618304014205933, 0.0004906905815005302], [0.005477362312376499, 0.0004783810582011938], [0.005337208043783903, 0.0004661402781493962], [0.005197894759476185, 0.00045397295616567135], [0.005059473682194948, 0.0004418835451360792], [0.004921994637697935, 0.0004298764397390187], [0.004785506054759026, 0.0004179558309260756], [0.00465005449950695, 0.00040612579323351383], [0.004515685141086578, 0.00039439022657461464], [0.004382440820336342, 0.0003827529726549983], [0.0042503634467720985, 0.000371217611245811], [0.00411949260160327, 0.00035978760570287704], [0.003989866469055414, 0.00034846633207052946], [0.0038615213707089424, 0.000337256962666288], [0.0037344922311604023, 0.0003261625242885202], [0.0036088123451918364, 0.00031518592732027173], [0.003484512912109494, 0.00030432987841777503], [0.00336162350140512, 0.0002935969678219408], [0.0032401722855865955, 0.00028298969846218824], [0.003120185574516654, 0.0002725103113334626], [0.0030016880482435226, 0.0002621609892230481], [0.0028847025241702795, 0.0002519437111914158], [0.002769250888377428, 0.00024186041264329106], [0.0026553524658083916, 0.0002319127816008404], [0.0025430258829146624, 0.0002221024187747389], [0.002432287437841296, 0.00021243076480459422], [0.002323152730241418, 0.00020289915846660733], [0.002215634798631072, 0.00019350877846591175], [0.0021097459830343723, 0.00018426068709231913], [0.002005496993660927, 0.00017515578656457365], [0.0019028965616598725, 0.0001661949063418433], [0.0018019529525190592, 0.0001573787012603134], [0.0017026721034199, 0.00014870772429276258], [0.0016050591366365552, 0.00014018241199664772], [0.0015091177774593234, 0.00013180309906601906], [0.0014148501213639975, 0.00012356997467577457], [0.0013222574489191175, 0.00011548311886144802], [0.001231339410878718, 0.00010754253889899701], [0.0011420947266742587, 9.974809654522687e-05], [0.0010545208351686597, 9.20995807973668e-05], [0.0009686140110716224, 8.459666423732415e-05], [0.0008843694813549519, 7.723893213551491e-05], [0.0008017814252525568, 7.002586789894849e-05], [0.0007208428578451276, 6.29568676231429e-05], [0.0006415459793061018, 5.6031247368082404e-05], [0.0005638818838633597, 4.92482322442811e-05], [0.00048784082173369825, 4.2606967326719314e-05], [0.00041341211181133986, 3.610652493080124e-05], [0.00034058428718708456, 2.9745899155386724e-05], [0.00026934497873298824, 2.3524013158748858e-05], [0.00019968111882917583, 1.7439719158574007e-05], [0.00013157881039660424, 1.149181025539292e-05], [6.502351607196033e-05, 5.679014066117816e-06]]}, {"name": "CX_d3_u10", "samples": [[-0.00010508189006941393, -4.543812337942654e-06], [-0.0002126392355421558, -9.194664926326368e-06], [-0.00032269663643091917, -1.3953621419204865e-05], [-0.00043527764501050115, -1.882169999589678e-05], [-0.0005504045984707773, -2.3799868358764797e-05], [-0.000668098742607981, -2.888904418796301e-05], [-0.0007883799844421446, -3.4090084227500483e-05], [-0.0009112668922170997, -3.94037997466512e-05], [-0.0010367766954004765, -4.4830929255113006e-05], [-0.0011649252846837044, -5.0372156692901626e-05], [-0.0012957267463207245, -5.602810415439308e-05], [-0.0014291941188275814, -6.179932097438723e-05], [-0.001565338228829205, -6.768629100406542e-05], [-0.001704168738797307, -7.368941442109644e-05], [-0.0018456934485584497, -7.980904047144577e-05], [-0.0019899182952940464, -8.604541653767228e-05], [-0.002136847237125039, -9.239871724275872e-05], [-0.0022864826023578644, -9.886905900202692e-05], [-0.002438824623823166, -0.00010545643453951925], [-0.002593871671706438, -0.00011216077109565958], [-0.0027516200207173824, -0.00011898192315129563], [-0.0029120638500899076, -0.00012591961422003806], [-0.003075194777920842, -0.0001329735096078366], [-0.0032410030253231525, -0.0001401431654812768], [-0.003409475786611438, -0.00014742804341949522], [-0.0035805983934551477, -0.0001548275031382218], [-0.0037543538492172956, -0.0001623408024897799], [-0.003930722363293171, -0.00016996709746308625], [-0.00410968204960227, -0.00017770544218365103], [-0.00429120846092701, -0.00018555477436166257], [-0.004475275054574013, -0.0001935139298439026], [-0.004661852028220892, -0.00020158164261374623], [-0.00485090771690011, -0.00020975653023924679], [-0.005042406730353832, -0.00021803709387313575], [-0.005236312747001648, -0.00022642170370090753], [-0.005432584788650274, -0.00023490865714848042], [-0.005631181411445141, -0.00024349612067453563], [-0.0058320569805800915, -0.0002521821006666869], [-0.006035163067281246, -0.0002609645598568022], [-0.006240449845790863, -0.0002698412863537669], [-0.006447862833738327, -0.00027880995185114443], [-0.0066573466174304485, -0.0002878681698348373], [-0.006868841592222452, -0.0002970133791677654], [-0.007082286756485701, -0.0003062429022975266], [-0.007297617848962545, -0.00031555394525639713], [-0.00751476688310504, -0.00032494362676516175], [-0.007733664475381374, -0.0003344088909216225], [-0.00795423798263073, -0.000343946652719751], [-0.008176412433385849, -0.0003535536234267056], [-0.00840010866522789, -0.00036322642699815333], [-0.00862524751573801, -0.0003729615709744394], [-0.008851745165884495, -0.0003827554755844176], [-0.009079515933990479, -0.00039260441553778946], [-0.009308471344411373, -0.00040250460733659565], [-0.009538519196212292, -0.0004124520637560636], [-0.009769568219780922, -0.0004224427684675902], [-0.010001521557569504, -0.0004324725887272507], [-0.010234280489385128, -0.0004425372462719679], [-0.01046774536371231, -0.0004526324337348342], [-0.010701813735067844, -0.0004627536691259593], [-0.010936379432678223, -0.00047289644135162234], [-0.011171335354447365, -0.00048305612290278077], [-0.01140657253563404, -0.0004932279698550701], [-0.011641981080174446, -0.0005034071509726346], [-0.011877445504069328, -0.0005135888350196183], [-0.012112853117287159, -0.0005237679579295218], [-0.012348085641860962, -0.0005339396302588284], [-0.012583024799823761, -0.000544098555110395], [-0.012817551381886005, -0.000554239668417722], [-0.013051544316112995, -0.0005643576150760055], [-0.013284879736602306, -0.0005744472146034241], [-0.01351743284612894, -0.000584502995479852], [-0.013749080710113049, -0.0005945196026004851], [-0.013979694806039333, -0.0006044915062375367], [-0.014209149405360222, -0.0006144132348708808], [-0.014437315054237843, -0.0006242793169803917], [-0.014664063230156898, -0.0006340840482152998], [-0.014889265410602093, -0.0006438218988478184], [-0.01511278934776783, -0.0006534872809424996], [-0.015334507450461388, -0.0006630744901485741], [-0.01555428747087717, -0.0006725779385305941], [-0.015771998092532158, -0.0006819919217377901], [-0.015987509861588478, -0.0006913107936270535], [-0.01620069146156311, -0.0007005289080552757], [-0.01641141250729561, -0.000709640618879348], [-0.016619542613625526, -0.0007186403381638229], [-0.016824953258037567, -0.0007275224197655916], [-0.017027515918016434, -0.0007362813339568675], [-0.01722710020840168, -0.0007449114928022027], [-0.017423581331968307, -0.0007534074829891324], [-0.01761683262884617, -0.0007617637747898698], [-0.017806727439165115, -0.0007699750130996108], [-0.017993144690990448, -0.0007780358428135514], [-0.018175961449742317, -0.0007859409670345485], [-0.018355058506131172, -0.0007936851470731199], [-0.018530312925577164, -0.000801263318862766], [-0.01870161108672619, -0.0008086703601293266], [-0.018868837505578995, -0.0008159013814292848], [-0.019031880423426628, -0.0008229513769038022], [-0.019190626218914986, -0.0008298156899400055], [-0.01934496872127056, -0.0008364895475097001], [-0.0194947998970747, -0.0008429684094153345], [-0.01964002102613449, -0.0008492477936670184], [-0.01978052593767643, -0.0008553233928978443], [-0.019916221499443054, -0.0008611909579485655], [-0.020047010853886604, -0.0008668463560752571], [-0.020172802731394768, -0.0008722857455722988], [-0.02029350958764553, -0.0008775051101110876], [-0.02040904387831688, -0.0008825009572319686], [-0.020519327372312546, -0.0008872696198523045], [-0.020624278113245964, -0.0008918077801354229], [-0.020723821595311165, -0.000896112120244652], [-0.020817888900637627, -0.0009001796715892851], [-0.020906411111354828, -0.0009040074073709548], [-0.020989324897527695, -0.0009075926500372589], [-0.02106657065451145, -0.0009109328384511173], [-0.021138092502951622, -0.0009140254696831107], [-0.021203838288784027, -0.0009168683318421245], [-0.021263759583234787, -0.0009194594458676875], [-0.02131781540811062, -0.0009217968326993287], [-0.02136596478521824, -0.0009238788043148816], [-0.021408172324299812, -0.0009257039055228233], [-0.021444406360387802, -0.000927270739339292], [-0.021474644541740417, -0.0009285781998187304], [-0.02149885892868042, -0.0009296252974309027], [-0.021517036482691765, -0.0009304112754762173], [-0.02152916230261326, -0.0009309356100857258], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.02153598517179489, -0.0009312306647188962], [-0.021530350670218468, -0.0009309552842751145], [-0.021520333364605904, -0.000930465932469815], [-0.021505318582057953, -0.0009297322831116617], [-0.02148531563580036, -0.0009287549764849246], [-0.021460341289639473, -0.0009275346528738737], [-0.02143040858209133, -0.0009260722436010838], [-0.021395545452833176, -0.0009243687964044511], [-0.021355774253606796, -0.0009224255918525159], [-0.021311122924089432, -0.0009202440269291401], [-0.021261626854538918, -0.0009178256732411683], [-0.02120731957256794, -0.0009151722188107669], [-0.02114824205636978, -0.000912285759113729], [-0.021084435284137726, -0.0009091682150028646], [-0.021015947684645653, -0.0009058219729922712], [-0.020942827686667442, -0.0009022493031807244], [-0.020865127444267273, -0.0008984528831206262], [-0.020782900974154472, -0.0008944354485720396], [-0.020696209743618965, -0.0008901997935026884], [-0.020605115219950676, -0.0008857489447109401], [-0.020509682595729828, -0.0008810861618258059], [-0.020409977063536644, -0.0008762145880609751], [-0.020306071266531944, -0.0008711378322914243], [-0.0201980359852314, -0.0008658593287691474], [-0.020085951313376427, -0.0008603828609921038], [-0.019969889894127846, -0.0008547122706659138], [-0.01984993740916252, -0.0008488513994961977], [-0.01972617208957672, -0.0008428043802268803], [-0.01959868334233761, -0.0008365753456018865], [-0.019467556849122047, -0.0008301686029881239], [-0.0193328820168972, -0.0008235884597525001], [-0.019194750115275383, -0.0008168394560925663], [-0.019053256139159203, -0.0008099261322058737], [-0.018908491358160973, -0.0008028530864976346], [-0.01876055635511875, -0.000795625033788383], [-0.0186095479875803, -0.0007882468053139746], [-0.018455563113093376, -0.0007807232905179262], [-0.01829870603978634, -0.0007730593788437545], [-0.018139079213142395, -0.0007652600179426372], [-0.017976783215999603, -0.0007573303300887346], [-0.01781192235648632, -0.0007492753793485463], [-0.017644602805376053, -0.0007411002879962325], [-0.017474930733442307, -0.0007328102365136147], [-0.017303012311458588, -0.000724410405382514], [-0.017128953710198402, -0.0007159059750847518], [-0.016952862963080406, -0.0007073023007251322], [-0.016774846240878105, -0.0006986045627854764], [-0.016595013439655304, -0.0006898180581629276], [-0.016413472592830658, -0.0006809480837546289], [-0.016230329871177673, -0.0006719998782500625], [-0.016045695170760155, -0.0006629787385463715], [-0.015859676524996758, -0.000653889961540699], [-0.01567237824201584, -0.0006447387277148664], [-0.015483910217881203, -0.0006355302757583559], [-0.015294377692043781, -0.0006262698443606496], [-0.015103885903954506, -0.000616962555795908], [-0.014912541955709457, -0.0006076136487536132], [-0.014720449224114418, -0.0005982281290926039], [-0.01452771108597517, -0.0005888110608793795], [-0.014334429986774921, -0.0005793674499727786], [-0.014140707440674305, -0.0005699023022316396], [-0.01394664403051138, -0.0005604205070994794], [-0.013752338476479053, -0.0005509268376044929], [-0.013557888567447662, -0.0005414261831901968], [-0.013363390229642391, -0.0005319231422618032], [-0.013168940320611, -0.0005224224296398461], [-0.012974630109965801, -0.0005129285855218768], [-0.012780552729964256, -0.0005034460918977857], [-0.012586798518896103, -0.0004939793725498021], [-0.012393455021083355, -0.0004845327348448336], [-0.012200609780848026, -0.000475110427942127], [-0.012008346617221832, -0.0004657166136894375], [-0.011816750280559063, -0.0004563553084153682], [-0.01162589993327856, -0.0004470305284485221], [-0.011435876600444317, -0.000437746086390689], [-0.01124675665050745, -0.00042850582394748926], [-0.01105861458927393, -0.000419313320890069], [-0.01087152399122715, -0.00041017221519723535], [-0.010685556568205357, -0.00040108594112098217], [-0.010500779375433922, -0.00039205787470564246], [-0.010317260399460793, -0.0003830912464763969], [-0.010135062970221043, -0.0003741892287507653], [-0.009954250417649746, -0.0003653548483271152], [-0.009774882346391678, -0.00035659101558849216], [-0.00959701556712389, -0.000347900582710281], [-0.009420706890523434, -0.00033928625634871423], [-0.009246008470654488, -0.000330750597640872], [-0.009072971530258656, -0.0003222961677238345], [-0.008901645429432392, -0.00031392526580020785], [-0.008732075802981853, -0.00030564022017642856], [-0.008564307354390621, -0.0002974431263282895], [-0.008398381061851978, -0.00028933610883541405], [-0.008234336972236633, -0.0002813210303429514], [-0.008072213269770145, -0.00027339975349605083], [-0.007912044413387775, -0.0002655740245245397], [-0.007753862999379635, -0.00025784538593143225], [-0.007597700692713261, -0.00025021538021974266], [-0.007443584967404604, -0.0002426854189252481], [-0.007291543763130903, -0.0002352567680645734], [-0.007141599897295237, -0.00022793062089476734], [-0.006993776652961969, -0.00022070806880947202], [-0.0068480935879051685, -0.00021359008678700775], [-0.006704568862915039, -0.00020657757704611868], [-0.006563219241797924, -0.00019967132539022714], [-0.006424058228731155, -0.00019287200120743364], [-0.006287097930908203, -0.000186180230230093], [-0.006152349524199963, -0.000179596507223323], [-0.006019820459187031, -0.00017312122508883476], [-0.005889518186450005, -0.0001667547330725938], [-0.00576144689694047, -0.00016049726400524378], [-0.0056356098502874374, -0.00015434896340593696], [-0.005512008909136057, -0.00014830988948233426], [-0.005390643607825041, -0.0001423800567863509], [-0.005271511618047953, -0.0001365593634545803], [-0.0051546101458370686, -0.00013084763486403972], [-0.005039934068918228, -0.0001252446381840855], [-0.004927476868033409, -0.00011975005327258259], [-0.0048172310926020145, -0.0001143635090556927], [-0.004709186963737011, -0.00010908455442404374], [-0.004603334236890078, -0.0001039126655086875], [-0.004499661270529032, -9.884727478493005e-05], [-0.004398155026137829, -9.388774196850136e-05], [-0.004298801068216562, -8.903336856747046e-05], [-0.004201583564281464, -8.42834051582031e-05], [-0.004106487147510052, -7.96370513853617e-05], [-0.004013493657112122, -7.509344140999019e-05], [-0.003922584466636181, -7.065168756525964e-05], [-0.00383374048396945, -6.631082942476496e-05], [-0.0036601421888917685, -5.7828929129755124e-05], [-0.0035712982062250376, -5.348807462723926e-05], [-0.0034803892485797405, -4.90463207825087e-05], [-0.0033873955253511667, -4.4502714445116e-05], [-0.003292299108579755, -3.9856360672274604e-05], [-0.0031950818374753, -3.510639726300724e-05], [-0.0030957278795540333, -3.025202386197634e-05], [-0.0029942214023321867, -2.5292489226558246e-05], [-0.002890548435971141, -2.0227096683811396e-05], [-0.002784695941954851, -1.5055209587444551e-05], [-0.0026766518130898476, -9.776252227311488e-06], [-0.0025664058048278093, -4.3897080104216e-06], [-0.002453948836773634, 1.104871444113087e-06], [-0.00233927252702415, 6.707868578814669e-06], [-0.002222371054813266, 1.2419595805113204e-05], [-0.0021032392978668213, 1.8240294593852013e-05], [-0.001981873996555805, 2.417013092781417e-05], [-0.001858272822573781, 3.020919393748045e-05], [-0.0017324360087513924, 3.635749817476608e-05], [-0.0016043648356571794, 4.2614970880094916e-05], [-0.0014740623300895095, 4.898146289633587e-05], [-0.0013415333814918995, 5.545673775486648e-05], [-0.0012067847419530153, 6.204046803759411e-05], [-0.0010698246769607067, 6.873224629089236e-05], [-0.0009306636638939381, 7.553155592177063e-05], [-0.0007893138099461794, 8.243781485361978e-05], [-0.0006457893177866936, 8.945032459450886e-05], [-0.0005001063109375536, 9.656829934101552e-05], [-0.0003522828919813037, 0.00010379085142631084], [-0.0002023392589762807, 0.0001111169985961169], [-5.0297592679271474e-05, 0.00011854564945679158], [0.00010381775064161047, 0.00012607562530320138], [0.0002599803265184164, 0.00013370561646297574], [0.00041816153679974377, 0.0001414342550560832], [0.000578330596908927, 0.00014925999857950956], [0.0007404545904137194, 0.00015718127542641014], [0.0009044983307830989, 0.00016519633936695755], [0.0010704243322834373, 0.00017330337141174823], [0.001238193130120635, 0.00018150045070797205], [0.0014077627565711737, 0.00018978549633175135], [0.0015790890902280807, 0.000198156398255378], [0.0017521256813779473, 0.00020661084272433072], [0.0019268239848315716, 0.00021514648688025773], [0.0021031328942626715, 0.0002237608132418245], [0.002280999207869172, 0.00023245124612003565], [0.0024603677447885275, 0.00024121507885865867], [0.002641180530190468, 0.0002500494592823088], [0.0028233774937689304, 0.0002589514770079404], [0.0030068967025727034, 0.00026791810523718596], [0.003191673429682851, 0.00027694617165252566], [0.003377641551196575, 0.00028603244572877884], [0.003564731916412711, 0.0002951735514216125], [0.003752873744815588, 0.00030436605447903275], [0.003941994160413742, 0.00031360634602606297], [0.004132017493247986, 0.0003228907589800656], [0.004322867374867201, 0.0003322155389469117], [0.0045144641771912575, 0.000341576844220981], [0.004706726875156164, 0.0003509706584736705], [0.004899572115391493, 0.0003603929653763771], [0.005092915613204241, 0.00036983960308134556], [0.0052866702899336815, 0.00037930632242932916], [0.0054807476699352264, 0.0003887888160534203], [0.005675057414919138, 0.0003982826601713896], [0.005869507789611816, 0.00040778337279334664], [0.0060640056617558, 0.0004172863846179098], [0.006258455105125904, 0.0004267870681360364], [0.00645276065915823, 0.0004362807085271925], [0.006646824534982443, 0.0004457625327631831], [0.006840547081083059, 0.00045522768050432205], [0.007033828180283308, 0.000464671291410923], [0.007226566318422556, 0.00047408833052031696], [0.007418659515678883, 0.0004834738792851567], [0.007610003463923931, 0.0004928228445351124], [0.007800494320690632, 0.0005021300748921931], [0.007990026846528053, 0.0005113905062898993], [0.00817849487066269, 0.0005205989582464099], [0.008365793153643608, 0.0005297501920722425], [0.00855181273072958, 0.000538838969077915], [0.008736447431147099, 0.000547860108781606], [0.008919589221477509, 0.0005568083142861724], [0.00910113099962473, 0.0005656782886944711], [0.00928096380084753, 0.0005744647933170199], [0.009458979591727257, 0.0005831625312566757], [0.009635070338845253, 0.0005917662056162953], [0.009809128940105438, 0.0006002706359140575], [0.009981048293411732, 0.0006086704670451581], [0.010150720365345478, 0.000616960518527776], [0.010318039916455746, 0.0006251356680877507], [0.010482899844646454, 0.000633190618827939], [0.010645195841789246, 0.0006411203066818416], [0.010804823599755764, 0.000648919609375298], [0.010961680673062801, 0.0006565835210494697], [0.01111566461622715, 0.0006641070358455181], [0.011266673915088177, 0.0006714852643199265], [0.011414608918130398, 0.0006787133170291781], [0.011559372767806053, 0.0006857863627374172], [0.011700867675244808, 0.0006926996866241097], [0.011838999576866627, 0.0006994486902840436], [0.011973674409091473, 0.0007060288335196674], [0.012104800902307034, 0.00071243557613343], [0.012232289649546146, 0.0007186646107584238], [0.012356054037809372, 0.0007247116300277412], [0.012476007454097271, 0.0007305725011974573], [0.012592067942023277, 0.0007362431497313082], [0.012704153545200825, 0.0007417196175083518], [0.012812187895178795, 0.0007469980628229678], [0.01291609462350607, 0.0007520748185925186], [0.013015799224376678, 0.0007569463923573494], [0.013111232779920101, 0.0007616091752424836], [0.01320232730358839, 0.0007660600240342319], [0.013289018534123898, 0.0007702956791035831], [0.013371244072914124, 0.0007743131718598306], [0.013448944315314293, 0.0007781095337122679], [0.013522065244615078, 0.0007816822035238147], [0.013590552844107151, 0.0007850284455344081], [0.013654359616339207, 0.0007881459896452725], [0.013713437132537365, 0.0007910325075499713], [0.013767743483185768, 0.0007936859037727118], [0.013817240484058857, 0.0007961042574606836], [0.013861890882253647, 0.0007982858223840594], [0.0139016630128026, 0.0008002290851436555], [0.013936527073383331, 0.0008019324741326272], [0.013966457918286324, 0.0008033948834054172], [0.013991433195769787, 0.000804615207016468], [0.014011436142027378, 0.0008055925136432052], [0.014026450924575329, 0.0008063261630013585], [0.014036467298865318, 0.000806815514806658], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014042103663086891, 0.0008070908952504396], [0.014037654735147953, 0.0008068351889960468], [0.014029747806489468, 0.0008063807617872953], [0.014017895795404911, 0.000805699557531625], [0.01400210615247488, 0.0008047919836826622], [0.013982390984892845, 0.0008036588551476598], [0.013958764262497425, 0.0008023008704185486], [0.013931243680417538, 0.0008007190772332251], [0.013899849727749825, 0.0007989146397449076], [0.013864603824913502, 0.0007968888385221362], [0.013825532980263233, 0.0007946431869640946], [0.013782664202153683, 0.0007921792566776276], [0.013736030086874962, 0.0007894989103078842], [0.013685664162039757, 0.0007866040105000138], [0.013631601817905903, 0.0007834967109374702], [0.013573883101344109, 0.000780179223511368], [0.013512548059225082, 0.0007766539347358048], [0.01344764232635498, 0.0007729233475401998], [0.013379211537539959, 0.0007689901976846159], [0.013307304121553898, 0.000764857220929116], [0.013231971301138401, 0.0007605273858644068], [0.01315326802432537, 0.0007560037192888558], [0.01307124737650156, 0.0007512894808314741], [0.012985968962311745, 0.0007463879883289337], [0.012897491455078125, 0.0007413026178255677], [0.0128058772534132, 0.0007360369781963527], [0.012711189687252045, 0.0007305946201086044], [0.012613493949174881, 0.0007249794434756041], [0.01251285895705223, 0.0007191952900029719], [0.012409351766109467, 0.0007132460596039891], [0.012303043156862259, 0.0007071358268149197], [0.012194006703794003, 0.0007008687825873494], [0.012082315050065517, 0.000694449117872864], [0.011968043632805347, 0.000687881198246032], [0.011851267889142036, 0.000681169331073761], [0.011732066050171852, 0.0006743180565536022], [0.011610516346991062, 0.0006673317984677851], [0.011486698873341084, 0.0006602151552215219], [0.011360692791640759, 0.0006529728416353464], [0.011232581920921803, 0.000645609456114471], [0.011102446354925632, 0.0006381297134794295], [0.010970369912683964, 0.0006305384449660778], [0.010836436413228512, 0.0006228403653949499], [0.010700728744268417, 0.0006150404224172235], [0.010563332587480545, 0.0006071433308534324], [0.01042433176189661, 0.0005991540383547544], [0.010283811949193478, 0.0005910774925723672], [0.010141857899725437, 0.0005829184665344656], [0.009998554363846779, 0.0005746819078922272], [0.009853987954556942, 0.0005663727060891688], [0.009708243422210217, 0.000557995808776468], [0.009561405517160892, 0.0005495560471899807], [0.00941355898976326, 0.0005410583689808846], [0.009264787659049034, 0.0005325075471773744], [0.00911517720669508, 0.000523908413015306], [0.008964809589087963, 0.0005152658559381962], [0.0088137686252594, 0.000506584532558918], [0.008662136271595955, 0.0004978692741133273], [0.008509994484484196, 0.0004891246790066361], [0.008357425220310688, 0.0004803554911632091], [0.0082045067101717, 0.0004715662798844278], [0.008051319047808647, 0.00046276161447167397], [0.007897940464317799, 0.0004539459478110075], [0.00774444779381156, 0.00044512373278848827], [0.007590917870402336, 0.00043629936408251524], [0.00743742473423481, 0.00042747711995616555], [0.00728404289111495, 0.0004186612495686859], [0.00713084451854229, 0.000409855943871662], [0.006977900397032499, 0.0004010652774013579], [0.00682528130710125, 0.0003922932664863765], [0.006673055235296488, 0.0003835438401438296], [0.006521289236843586, 0.0003748208691831678], [0.0063700489699840546, 0.00036612810799852014], [0.006219398230314255, 0.0003574692236725241], [0.006069399882107973, 0.0003488478250801563], [0.00592011446133256, 0.0003402674337849021], [0.005771601106971502, 0.0003317314258310944], [0.005623918026685715, 0.0003232430899515748], [0.0054771206341683865, 0.00031480571487918496], [0.00533126387745142, 0.0003064223565161228], [0.005186399910598993, 0.00029809607076458633], [0.005042579025030136, 0.00028982976800762117], [0.0048998515121638775, 0.0002816263004206121], [0.004758263938128948, 0.0002734883164521307], [0.004617861472070217, 0.0002654185227584094], [0.004478688817471266, 0.0002574193640612066], [0.004340787883847952, 0.00024949328508228064], [0.004204198252409697, 0.00024164258502423763], [0.004068958573043346, 0.0002338694903301075], [0.003935106098651886, 0.00022617609647568315], [0.003802674589678645, 0.00021856441162526608], [0.0036716978065669537, 0.00021103632752783597], [0.003542206948623061, 0.00020359364862088114], [0.0034142315853387117, 0.0001962380629265681], [0.0032877991907298565, 0.00018897117115557194], [0.0031629358418285847, 0.0001817944721551612], [0.0030396662186831236, 0.0001747093629091978], [0.0029180124402046204, 0.00016771713853813708], [0.0027979956939816475, 0.00016081899229902774], [0.002679634839296341, 0.00015401603013742715], [0.002562947804108262, 0.00014730925613548607], [0.0024479504209011793, 0.0001406996016157791], [0.002334656659513712, 0.00013418788148555905], [0.0022230795584619045, 0.00012777482334058732], [0.0021132302936166525, 0.00012146107474109158], [0.0020051184110343456, 0.00011524718865985051], [0.0018987521762028337, 0.0001091336234821938], [0.0017941381083801389, 0.00010312077210983261], [0.0016912814462557435, 9.720893285702914e-05], [0.0015901861479505897, 9.139833127846941e-05], [0.0014908545417711139, 8.568909834139049e-05], [0.0013932879082858562, 8.008130680536851e-05], [0.0012974857818335295, 7.457494211848825e-05], [0.0012034469982609153, 6.916991696925834e-05], [0.0011111687636002898, 6.386608583852649e-05], [0.001020647119730711, 5.866321953362785e-05], [0.0009318770025856793, 5.356102701625787e-05], [0.0008448523585684597, 4.855915540247224e-05], [0.0007595659117214382, 4.3657186324708164e-05], [0.0006760092219337821, 3.88546432077419e-05], [0.0005941730923950672, 3.4150987630710006e-05], [0.0005140471621416509, 2.954563024104573e-05], [0.0004356202553026378, 2.503792529751081e-05], [0.00035888017737306654, 2.062717430817429e-05], [0.0002838139480445534, 1.6312631487380713e-05], [0.00021040780120529234, 1.2093502846255433e-05], [0.00013864709762856364, 7.968949830683414e-06], [6.851652142358944e-05, 3.938089321309235e-06]]}, {"name": "CX_d3_u5", "samples": [[-0.00010569779260549694, -3.6376939078763826e-06], [-0.0002138855488738045, -7.361082225543214e-06], [-0.0003245880070608109, -1.117101692216238e-05], [-0.00043782885768450797, -1.5068312677612994e-05], [-0.0005536306416615844, -1.9053744836128317e-05], [-0.0006720146047882736, -2.3128044631448574e-05], [-0.0007930007996037602, -2.7291904189041816e-05], [-0.0009166079689748585, -3.15459692501463e-05], [-0.0010428534587845206, -3.5890829167328775e-05], [-0.001171753043308854, -4.032703873235732e-05], [-0.0013033212162554264, -4.4855085434392095e-05], [-0.0014375707833096385, -4.947541674482636e-05], [-0.0015745129203423858, -5.4188418289413676e-05], [-0.001714157173410058, -5.899441384826787e-05], [-0.0018565113423392177, -6.389366899384186e-05], [-0.0020015814807265997, -6.888640200486407e-05], [-0.002149371663108468, -7.397274021059275e-05], [-0.002299883868545294, -7.915277819847688e-05], [-0.0024531190283596516, -8.442650869255885e-05], [-0.002609074814245105, -8.979388803709298e-05], [-0.0027677477337419987, -9.525477071292698e-05], [-0.002929131966084242, -0.00010080896754516289], [-0.003093219129368663, -0.00010645618749549612], [-0.0032599992118775845, -0.00011219608859391883], [-0.0034294594079256058, -0.00011802822700701654], [-0.0036015850491821766, -0.0001239521079696715], [-0.003776358673349023, -0.00012996711302548647], [-0.003953760955482721, -0.0001360725873382762], [-0.004133769776672125, -0.0001422677596565336], [-0.0043163602240383625, -0.00014855180052109063], [-0.00450150528922677, -0.00015492374950554222], [-0.0046891761012375355, -0.00016138261707965285], [-0.004879339598119259, -0.00016792728274594992], [-0.00507196132093668, -0.00017455655324738473], [-0.005267003551125526, -0.0001812691189115867], [-0.00546442624181509, -0.0001880636264104396], [-0.005664187017828226, -0.00019493857689667493], [-0.005866239778697491, -0.00020189242786727846], [-0.006070536561310291, -0.00020892350585199893], [-0.006277026142925024, -0.0002160300500690937], [-0.0064856549724936485, -0.0002232102124253288], [-0.006696366239339113, -0.0002304620575159788], [-0.006909101270139217, -0.00023778353352099657], [-0.007123797200620174, -0.00024517253041267395], [-0.007340390235185623, -0.0002526267780922353], [-0.007558811921626329, -0.0002601439773570746], [-0.007778992876410484, -0.0002677217125892639], [-0.008000859059393406, -0.0002753574517555535], [-0.008224335499107838, -0.00028304863371886313], [-0.008449343033134937, -0.00029079249361529946], [-0.008675801567733288, -0.0002985862665809691], [-0.008903627283871174, -0.00030642710044048727], [-0.009132732637226582, -0.00031431199749931693], [-0.009363029152154922, -0.00032223790185526013], [-0.009594426490366459, -0.0003302016411907971], [-0.00982682965695858, -0.000338200043188408], [-0.010060141794383526, -0.00034622973180375993], [-0.010294266045093536, -0.0003542873018886894], [-0.01052909903228283, -0.0003623693191912025], [-0.010764538310468197, -0.0003704722330439836], [-0.011000478640198708, -0.00037859234726056457], [-0.011236811988055706, -0.00038672599475830793], [-0.011473428457975388, -0.00039486936293542385], [-0.011710216291248798, -0.00040301866829395294], [-0.011947061866521835, -0.00041116992360912263], [-0.012183848768472672, -0.0004193191707599908], [-0.012420459650456905, -0.00042746239341795444], [-0.01265677623450756, -0.0004355954588390887], [-0.012892677448689938, -0.00044371423427946866], [-0.013128041289746761, -0.00045181449968367815], [-0.013362743891775608, -0.00045989203499630094], [-0.013596661388874054, -0.00046794250374659896], [-0.013829666189849377, -0.0004759615985676646], [-0.014061632566154003, -0.0004839449538849294], [-0.014292431063950062, -0.0004918881459161639], [-0.01452193409204483, -0.0004997866926714778], [-0.014750012196600437, -0.0005076362285763025], [-0.014976533129811287, -0.000515432155225426], [-0.015201368369162083, -0.0005231701070442796], [-0.015424385666847229, -0.0005308454274199903], [-0.015645453706383705, -0.0005384536925703287], [-0.01586444117128849, -0.0005459903622977436], [-0.01608121581375599, -0.0005534508964046836], [-0.016295647248625755, -0.0005608307546935976], [-0.016507603228092194, -0.0005681254551745951], [-0.016716953366994858, -0.000575330457650125], [-0.0169235672801733, -0.0005824412801302969], [-0.01712731644511223, -0.0005894534988328815], [-0.01732807047665119, -0.0005963626899756491], [-0.017525704577565193, -0.0006031643715687096], [-0.017720088362693787, -0.0006098542944528162], [-0.017911097034811974, -0.0006164280348457396], [-0.018098605796694756, -0.0006228814017958939], [-0.018282495439052582, -0.0006292100879363716], [-0.018462639302015305, -0.0006354099605232477], [-0.01863892190158367, -0.0006414768868125975], [-0.018811224028468132, -0.0006474068504758179], [-0.018979432061314583, -0.0006531958933919668], [-0.019143428653478622, -0.0006588399992324412], [-0.019303105771541595, -0.0006643354427069426], [-0.019458351656794548, -0.0006696783821098506], [-0.019609062001109123, -0.0006748652667738497], [-0.019755134359002113, -0.0006798924296163023], [-0.01989646442234516, -0.0006847564363852143], [-0.02003295347094536, -0.000689453911036253], [-0.02016451023519039, -0.0006939815357327461], [-0.02029103972017765, -0.0006983361672610044], [-0.020412452518939972, -0.0007025147206149995], [-0.02052866481244564, -0.0007065142854116857], [-0.02063959464430809, -0.0007103320094756782], [-0.020745160058140755, -0.0007139651570469141], [-0.020845288410782814, -0.0007174111669883132], [-0.020939907059073448, -0.0007206675363704562], [-0.021028947085142136, -0.0007237319950945675], [-0.02111234702169895, -0.0007266022730618715], [-0.021190045401453972, -0.0007292763330042362], [-0.02126198634505272, -0.0007317522540688515], [-0.021328117698431015, -0.000734028173610568], [-0.02138839103281498, -0.0007361025782302022], [-0.02144276350736618, -0.0007379738381132483], [-0.021491194143891335, -0.0007396406144835055], [-0.021533649414777756, -0.0007411017431877553], [-0.021570095792412758, -0.0007423561764881015], [-0.02160051092505455, -0.0007434028666466475], [-0.021624868735671043, -0.0007442411733791232], [-0.021643152460455894, -0.0007448704564012587], [-0.02165534906089306, -0.0007452901918441057], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021662212908267975, -0.0007455263985320926], [-0.021657079458236694, -0.0007452543941326439], [-0.02164795808494091, -0.0007447709213010967], [-0.021634284406900406, -0.000744046235922724], [-0.021616069599986076, -0.0007430807454511523], [-0.021593324840068817, -0.0007418752647936344], [-0.02156606689095497, -0.0007404306088574231], [-0.02153431810438633, -0.0007387478253804147], [-0.021498098969459534, -0.0007368281949311495], [-0.021457437425851822, -0.0007346730562858284], [-0.021412363275885582, -0.0007322840392589569], [-0.02136290818452835, -0.0007296628318727016], [-0.021309107542037964, -0.0007268113549798727], [-0.021251002326607704, -0.0007237316458486021], [-0.021188631653785706, -0.0007204259745776653], [-0.021122043952345848, -0.0007168966694734991], [-0.021051283925771713, -0.0007131463498808444], [-0.02097640559077263, -0.0007091775769367814], [-0.020897459238767624, -0.0007049933192320168], [-0.020814502611756325, -0.0007005964871495962], [-0.020727593451738358, -0.000695990223903209], [-0.020636796951293945, -0.0006911778473295271], [-0.020542172715067863, -0.0006861626170575619], [-0.020443789660930634, -0.0006809482001699507], [-0.020341716706752777, -0.0006755381473340094], [-0.020236024633049965, -0.0006699363584630191], [-0.020126787945628166, -0.0006641466170549393], [-0.0200140792876482, -0.0006581729394383729], [-0.019897980615496635, -0.0006520194583572447], [-0.019778568297624588, -0.0006456904229708016], [-0.019655924290418625, -0.000639190140645951], [-0.01953013241291046, -0.0006325230351649225], [-0.019401278346776962, -0.0006256935303099453], [-0.019269447773694992, -0.0006187062826938927], [-0.019134728237986565, -0.0006115659489296377], [-0.018997209146618843, -0.0006042772438377142], [-0.01885698176920414, -0.0005968449986539781], [-0.018714137375354767, -0.0005892740446142852], [-0.018568770959973335, -0.0005815693875774741], [-0.018420973792672157, -0.0005737358587794006], [-0.018270840868353844, -0.0005657786387018859], [-0.018118469044566154, -0.0005577027332037687], [-0.01796395517885685, -0.0005495132645592093], [-0.01780739426612854, -0.0005412152968347073], [-0.017648885026574135, -0.0005328140687197447], [-0.017488526180386543, -0.0005243147606961429], [-0.017326412722468376, -0.0005157225532457232], [-0.01716264709830284, -0.0005070426850579679], [-0.0169973224401474, -0.0004982802784070373], [-0.01683054305613041, -0.0004894406301900744], [-0.01666240207850933, -0.0004805289499927312], [-0.016493000090122223, -0.00047155041829682887], [-0.016322435811161995, -0.0004625102155841887], [-0.016150804236531258, -0.00045341349323280156], [-0.01597820408642292, -0.0004442654026206583], [-0.015804730355739594, -0.00043507106602191925], [-0.015630479902029037, -0.00042583554750308394], [-0.015455547720193863, -0.0004165638820268214], [-0.015280027873814106, -0.00040726104634813964], [-0.015104013495147228, -0.0003979320463258773], [-0.014927597716450691, -0.0003885817131958902], [-0.014750870876014233, -0.000379214936401695], [-0.01457392331212759, -0.00036983645986765623], [-0.014396845363080502, -0.00036045105662196875], [-0.014219723641872406, -0.0003510633250698447], [-0.014042643830180168, -0.0003416778636164963], [-0.013865693472325802, -0.00033229918335564435], [-0.013688954524695873, -0.00032293173717334867], [-0.013512508943676949, -0.0003135798906441778], [-0.01333643775433302, -0.00030424786382354796], [-0.013160820119082928, -0.0002949398767668754], [-0.012985733337700367, -0.000285660004010424], [-0.012811253778636456, -0.00027641229098662734], [-0.012637453153729439, -0.00026720063760876656], [-0.012464405968785286, -0.0002580288564786315], [-0.012292180210351944, -0.0002489006728865206], [-0.012120846658945084, -0.00023981969570741057], [-0.011950470507144928, -0.0002307894901605323], [-0.011781116016209126, -0.000221813446842134], [-0.01161284651607275, -0.0002128949126927182], [-0.011445721611380577, -0.00020403707458171993], [-0.011279801838099957, -0.00019524304661899805], [-0.01111514214426279, -0.00018651584105100483], [-0.010951797477900982, -0.00017785833915695548], [-0.010789820924401283, -0.00016927333490457386], [-0.010629262775182724, -0.0001607635203981772], [-0.010470171459019184, -0.00015233142767101526], [-0.010312593542039394, -0.00014397954510059208], [-0.010156572796404362, -0.00013571021554525942], [-0.010002151131629944, -0.00012752567999996245], [-0.009849370457231998, -0.00011942804849240929], [-0.00969826802611351, -0.00011141937284264714], [-0.009548879228532314, -0.00010350154479965568], [-0.009401238523423672, -9.567637607688084e-05], [-0.009255378507077694, -8.794556197244674e-05], [-0.009111328050494194, -8.031070319702849e-05], [-0.00896911695599556, -7.277326949406415e-05], [-0.008828769437968731, -6.533465057145804e-05], [-0.008690310642123222, -5.7996123359771445e-05], [-0.00855376198887825, -5.075885928818025e-05], [-0.00841914489865303, -4.362393156043254e-05], [-0.008286476135253906, -3.659231151686981e-05], [-0.008155773393809795, -2.9664879548363388e-05], [-0.008027051575481892, -2.284240872540977e-05], [-0.007900322787463665, -1.6125584807014093e-05], [-0.007775598205626011, -9.514994417259004e-06], [-0.0076528871431946754, -3.011138687725179e-06], [-0.00753219798207283, 3.385576292203041e-06], [-0.007413536310195923, 9.67482992564328e-06], [-0.007296906318515539, 1.585638710821513e-05], [-0.00718231126666069, 2.193009822804015e-05], [-0.007069752085953951, 2.789589598251041e-05], [-0.006959228776395321, 3.375379310455173e-05], [-0.006850739941000938, 3.950387326767668e-05], [-0.006744281854480505, 4.5146305637899786e-05], [-0.006639850791543722, 5.068132668384351e-05], [-0.00653743976727128, 5.610924563370645e-05], [-0.006437042728066444, 6.143043719930574e-05], [-0.006338651292026043, 6.664534885203466e-05], [-0.006242254748940468, 7.175448990892619e-05], [-0.006147843785583973, 7.675842789467424e-05], [-0.006055405363440514, 8.165779581759125e-05], [-0.00596492737531662, 8.645327761769295e-05], [-0.005876394920051098, 9.114561544265598e-05], [-0.005789794027805328, 9.573559509590268e-05], [-0.005705108400434256, 0.00010022407514043152], [-0.005622320342808962, 0.00010461194324307144], [-0.005541413556784391, 0.00010890013800235465], [-0.0053833238780498505, 0.0001172791380668059], [-0.005302416626363993, 0.00012156733282608911], [-0.005219629034399986, 0.0001259551936527714], [-0.0051349434070289135, 0.00013044367369730026], [-0.005048342049121857, 0.00013503366790246218], [-0.004959810059517622, 0.00013972600572742522], [-0.004869332071393728, 0.0001445214729756117], [-0.004776893649250269, 0.0001494208408985287], [-0.004682482220232487, 0.00015442477888427675], [-0.004586086142808199, 0.0001595339272171259], [-0.00448769424110651, 0.0001647488388698548], [-0.004387297201901674, 0.00017007003771141171], [-0.00428488664329052, 0.00017549794574733824], [-0.00418045511469245, 0.00018103297043126076], [-0.0040739974938333035, 0.00018667540280148387], [-0.003965508192777634, 0.00019242549024056643], [-0.0038549851160496473, 0.00019828337826766074], [-0.0037424261681735516, 0.0002042491832980886], [-0.0036278311163187027, 0.00021032289077993482], [-0.003511201124638319, 0.00021650444250553846], [-0.0033925394527614117, 0.00022279369295574725], [-0.0032718500588089228, 0.00022919040929991752], [-0.003149139229208231, 0.00023569427139591426], [-0.003024414647370577, 0.00024230485723819584], [-0.0028976858593523502, 0.0002490216866135597], [-0.002768963575363159, 0.0002558441483415663], [-0.0026382608339190483, 0.00026277158758603036], [-0.002505592769011855, 0.0002698032185435295], [-0.002370975213125348, 0.0002769381389953196], [-0.0022344267927110195, 0.0002841753885149956], [-0.002095967996865511, 0.000291513919364661], [-0.001955620711669326, 0.0002989525382872671], [-0.0018134090350940824, 0.0003064899647142738], [-0.0016693591605871916, 0.0003141248307656497], [-0.0015234989114105701, 0.0003218556521460414], [-0.0013758584391325712, 0.00032968082814477384], [-0.0012264697579666972, 0.00033759864163585007], [-0.0010753668611869216, 0.0003456073172856122], [-0.0009225858375430107, 0.0003537049633450806], [-0.0007681648712605238, 0.00036188948433846235], [-0.0006121441256254911, 0.000370158813893795], [-0.0004545658885035664, 0.00037851071101613343], [-0.00029547448502853513, 0.00038694278919138014], [-0.00013491629215423018, 0.0003954526036977768], [2.7060252250521444e-05, 0.00040403762250207365], [0.00019040462211705744, 0.00041269510984420776], [0.0003550642286427319, 0.0004214223299641162], [0.0005209845257923007, 0.00043021634337492287], [0.0006881087902002037, 0.00043907418148592114], [0.0008563784649595618, 0.00044799273018725216], [0.0010257328394800425, 0.00045696875895373523], [0.0011961093405261636, 0.00046599897905252874], [0.0013674433575943112, 0.00047507992712780833], [0.0015396684175357223, 0.0004842081107199192], [0.0017127159517258406, 0.0004933798918500543], [0.0018865159945562482, 0.000502591545227915], [0.0020609963685274124, 0.0005118392873555422], [0.0022360829170793295, 0.0005211191601119936], [0.002411700552329421, 0.0005304271471686661], [0.0025877715088427067, 0.000539759173989296], [0.0027642168570309877, 0.0005491110496222973], [0.00294095603749156, 0.0005584784667007625], [0.0031179068610072136, 0.000567857117857784], [0.0032949859742075205, 0.0005772425793111324], [0.0034721079282462597, 0.0005866303108632565], [0.0036491863429546356, 0.0005960157723166049], [0.0038261334411799908, 0.0006053941906429827], [0.004002860281616449, 0.0006147609674371779], [0.004179276525974274, 0.0006241113296709955], [0.004355290438979864, 0.0006334403296932578], [0.004530810285359621, 0.0006427431362681091], [0.004705742467194796, 0.0006520148017443717], [0.004879992920905352, 0.000661250320263207], [0.005053466185927391, 0.0006704446859657764], [0.0052260663360357285, 0.0006795927765779197], [0.005397697910666466, 0.0006886894698254764], [0.005568263120949268, 0.000697729701641947], [0.005737664643675089, 0.0007067082333378494], [0.00590580515563488, 0.0007156199426390231], [0.006072585936635733, 0.000724459532648325], [0.006237909197807312, 0.0007332219392992556], [0.006401676218956709, 0.000741901807487011], [0.006563788745552301, 0.0007504940731450915], [0.006724148523062468, 0.0007589933811686933], [0.006882657762616873, 0.000767394551075995], [0.007039218209683895, 0.0007756925188004971], [0.007193732541054487, 0.0007838819874450564], [0.007346103899180889, 0.0007919579511508346], [0.007496235892176628, 0.0007999151712283492], [0.007644033525139093, 0.0008077486418187618], [0.0077894008718431, 0.0008154533570632339], [0.007932244800031185, 0.0008230242528952658], [0.008072472177445889, 0.0008304565562866628], [0.00820999126881361, 0.0008377452613785863], [0.008344710804522038, 0.0008448855951428413], [0.008476541377604008, 0.000851872842758894], [0.008605395443737507, 0.0008587022894062102], [0.00873118732124567, 0.0008653694530948997], [0.008853830397129059, 0.0008718697354197502], [0.008973242715001106, 0.0008781987708061934], [0.009089342318475246, 0.0008843521936796606], [0.009202050045132637, 0.000890325871296227], [0.00931128766387701, 0.0008961156127043068], [0.009416979737579823, 0.000901717459782958], [0.009519052691757679, 0.0009071274544112384], [0.009617434814572334, 0.0009123419295065105], [0.009712059050798416, 0.0009173571015708148], [0.009802856482565403, 0.0009221695363521576], [0.009889764711260796, 0.0009267757995985448], [0.009972721338272095, 0.0009311725734733045], [0.0100516676902771, 0.00093535688938573], [0.010126546956598759, 0.0009393256041221321], [0.010197306983172894, 0.0009430759237147868], [0.010263894684612751, 0.000946605228818953], [0.010326264426112175, 0.0009499109000898898], [0.01038437057286501, 0.0009529906092211604], [0.010438170284032822, 0.0009558420861139894], [0.010487625375390053, 0.0009584632935002446], [0.010532700456678867, 0.0009608523105271161], [0.010573362000286579, 0.0009630074491724372], [0.0106095802038908, 0.0009649270796217024], [0.010641329921782017, 0.0009666098630987108], [0.010668586939573288, 0.0009680545190349221], [0.010691331699490547, 0.000969260057900101], [0.010709547437727451, 0.0009702254901640117], [0.010723221115767956, 0.0009709502337500453], [0.01073234248906374, 0.0009714336483739316], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010737475007772446, 0.0009717057109810412], [0.010734072886407375, 0.000971397792454809], [0.010728026740252972, 0.0009708506986498833], [0.010718964040279388, 0.0009700305527076125], [0.010706890374422073, 0.0009689379367046058], [0.010691815055906773, 0.0009675736073404551], [0.010673748329281807, 0.0009659386705607176], [0.01065270509570837, 0.0009640342905186117], [0.010628698393702507, 0.0009618618059903383], [0.010601747781038284, 0.0009594228467904031], [0.010571871884167194, 0.0009567191009409726], [0.010539092123508453, 0.0009537526639178395], [0.010503432713449001, 0.0009505256311967969], [0.010464918799698353, 0.0009470402728766203], [0.010423579253256321, 0.0009432992083020508], [0.010379443876445293, 0.0009393050568178296], [0.010332543402910233, 0.0009350607870146632], [0.010282912291586399, 0.0009305693092755973], [0.010230585932731628, 0.000925833941437304], [0.010175601579248905, 0.0009208580013364553], [0.010117997415363789, 0.000915645039640367], [0.010057815350592136, 0.0009101987816393375], [0.009995097294449806, 0.0009045230108313262], [0.00992988795042038, 0.0008986217435449362], [0.009862232953310013, 0.0008924991707317531], [0.009792178869247437, 0.0008861595415510237], [0.009719775058329105, 0.0008796072215773165], [0.009645070880651474, 0.0008728467510081828], [0.00956811849027872, 0.0008658827864564955], [0.009488970041275024, 0.0008587201591581106], [0.009407680481672287, 0.0008513637003488839], [0.009324303828179836, 0.0008438184740953147], [0.009238897822797298, 0.0008360894280485809], [0.00915151834487915, 0.0008281819173134863], [0.009062224067747593, 0.0008201011223718524], [0.008971074596047401, 0.0008118523983284831], [0.008878130465745926, 0.0008034412167035043], [0.008783451281487942, 0.0007948731072247028], [0.008687100373208523, 0.0007861535996198654], [0.008589138276875019, 0.0007772883400321007], [0.008489628322422504, 0.000768283091019839], [0.008388634771108627, 0.0007591434405185282], [0.008286220021545887, 0.0007498753257095814], [0.008182450197637081, 0.000740484450943768], [0.008077387697994709, 0.0007309766951948404], [0.007971099577844143, 0.0007213579374365509], [0.007863649167120457, 0.0007116339984349906], [0.007755102124065161, 0.0007018108735792339], [0.007645523641258478, 0.0006918943836353719], [0.007534978911280632, 0.0006818904657848179], [0.007423533126711845, 0.0006718049990013242], [0.007311251480132341, 0.0006616439204663038], [0.007198198698461056, 0.0006514129927381873], [0.007084439042955637, 0.0006411180947907269], [0.006970037240535021, 0.0006307651055976748], [0.006855056621134281, 0.0006203597877174616], [0.0067395614460110664, 0.0006099078455008566], [0.006623614113777876, 0.0005994149832986295], [0.006507277023047209, 0.0005888869054615498], [0.006390612572431564, 0.0005783291417174041], [0.0062736812978982925, 0.0005677472800016403], [0.006156544666737318, 0.0005571467336267233], [0.006039261817932129, 0.0005465330323204398], [0.005921891424804926, 0.000535911472979933], [0.005804492626339197, 0.0005252872360870242], [0.005687122233211994, 0.0005146656185388565], [0.0055698370561003685, 0.0005040516844019294], [0.0054526920430362225, 0.0004934504395350814], [0.005335741210728884, 0.0004828668024856597], [0.005219039041548967, 0.0004723056626971811], [0.005102637689560652, 0.0004617717058863491], [0.0049865879118442535, 0.0004512695886660367], [0.004870939999818802, 0.00044080382212996483], [0.004755742847919464, 0.00043037888826802373], [0.004641044419258833, 0.00041999906534329057], [0.004526891745626926, 0.000409668602515012], [0.004413329064846039, 0.00039939157431945205], [0.004300401080399752, 0.0003891719679813832], [0.004188150633126497, 0.0003790136834140867], [0.004076619632542133, 0.00036892047501169145], [0.003965847194194794, 0.0003588959516491741], [0.0038558728992938995, 0.00034894366399385035], [0.0037467344664037228, 0.0003390669880900532], [0.0036384675186127424, 0.0003292691835667938], [0.0035311072133481503, 0.0003195534518454224], [0.0034246870782226324, 0.00030992276151664555], [0.003319239243865013, 0.0003003800811711699], [0.003214794211089611, 0.00029092817567288876], [0.0031113815493881702, 0.0002815696643665433], [0.003009029431268573, 0.00027230713749304414], [0.002907763933762908, 0.0002631429524626583], [0.0028076109010726213, 0.0002540794375818223], [0.0027085940819233656, 0.0002451187465339899], [0.002610736060887575, 0.00023626290203537792], [0.002514057792723179, 0.00022751385404262692], [0.0024185795336961746, 0.00021887339244131], [0.0023243199102580547, 0.00021034320525359362], [0.0022312956862151623, 0.00020192483498249203], [0.0021395233925431967, 0.00019361973681952804], [0.002049017231911421, 0.00018542923498898745], [0.0019597909413278103, 0.00017735455185174942], [0.001871856744401157, 0.00016939679335337132], [0.001785225234925747, 0.00016155693447217345], [0.0016999064246192575, 0.00015383586287498474], [0.0016159088118001819, 0.00014623436436522752], [0.0015332396142184734, 0.00013875307922717184], [0.0014519052347168326, 0.00013139258953742683], [0.0013719107955694199, 0.00012415334640536457], [0.0012932601384818554, 0.00011703573545673862], [0.0012159562902525067, 0.00011003998952219263], [0.0011400011135265231, 0.00010316630505258217], [0.0010653955396264791, 9.641474025556818e-05], [0.0009921392193064094, 8.978529513115063e-05], [0.0009202312212437391, 8.327786053996533e-05], [0.0008496694499626756, 7.689225458307192e-05], [0.0007804509368725121, 7.062820805003867e-05], [0.0007125717238523066, 6.44853716949001e-05], [0.0006460272124968469, 5.846331259817816e-05], [0.0005808118148706853, 5.25615323567763e-05], [0.0005169191281311214, 4.6779459808021784e-05], [0.00045434210915118456, 4.111644739168696e-05], [0.0003930727834813297, 3.557177842594683e-05], [0.00033310262369923294, 3.0144678021315485e-05], [0.00027442234568297863, 2.4834307623677887e-05], [0.00021702199592255056, 1.9639766833279282e-05], [0.00016089103883132339, 1.4560102499672212e-05], [0.00010601829126244411, 9.594301445758902e-06], [5.2392038924153894e-05, 4.741304564959137e-06]]}, {"name": "CX_d5_u16", "samples": [[-9.13870899239555e-05, 7.84716291946097e-08], [-0.00018492701929062605, 1.5879183479228232e-07], [-0.0002806411939673126, 2.409790056390193e-07], [-0.00037855005939491093, 3.250507347729581e-07], [-0.00047867311513982713, 4.110236773158249e-07], [-0.0005810287548229098, 4.989137210031913e-07], [-0.0006856343243271112, 5.8873570196738e-07], [-0.0007925059762783349, 6.80503490002593e-07], [-0.0009016587282530963, 7.742300454083306e-07], [-0.0010131063172593713, 8.699270779288781e-07], [-0.0011268610833212733, 9.676052741269814e-07], [-0.0012429342605173588, 1.067274183697009e-06], [-0.0013613355113193393, 1.1689420489346958e-06], [-0.0014820729847997427, 1.2726160321108182e-06], [-0.001605153433047235, 1.3783019312541e-06], [-0.0017305819783359766, 1.4860040664643748e-06], [-0.0018583624623715878, 1.5957257346599363e-06], [-0.001988496631383896, 1.707468413769675e-06], [-0.0021209847182035446, 1.8212323311672662e-06], [-0.002255825325846672, 1.937016349984333e-06], [-0.002393015194684267, 2.0548175143630942e-06], [-0.0025325489696115255, 2.174631390516879e-06], [-0.0026744198985397816, 2.2964522941038013e-06], [-0.0028186191339045763, 2.4202722670452204e-06], [-0.002965135732665658, 2.5460822143941186e-06], [-0.0031139568891376257, 2.673870767466724e-06], [-0.003265067469328642, 2.803625420710887e-06], [-0.0034184507094323635, 2.9353313948377036e-06], [-0.003574087517336011, 3.0689725463162176e-06], [-0.0037319567054510117, 3.204530457878718e-06], [-0.0038920347578823566, 3.3419853480154416e-06], [-0.0040542958304286, 3.481314706732519e-06], [-0.004218712914735079, 3.6224948871677043e-06], [-0.0043852548114955425, 3.765499968721997e-06], [-0.0045538898557424545, 3.9103024391806684e-06], [-0.004724583122879267, 4.056872057844885e-06], [-0.004897297825664282, 4.205177447147435e-06], [-0.005071993917226791, 4.355184501037002e-06], [-0.005248630419373512, 4.506857294472866e-06], [-0.005427162628620863, 4.6601580834249035e-06], [-0.005607544910162687, 4.8150473048735876e-06], [-0.005789727438241243, 4.971482667315286e-06], [-0.005973659455776215, 5.129420515004313e-06], [-0.006159287411719561, 5.288814008963527e-06], [-0.0063465554267168045, 5.449615855468437e-06], [-0.006535404361784458, 5.611775577563094e-06], [-0.006725774146616459, 5.775240879302146e-06], [-0.006917601451277733, 5.939958100498188e-06], [-0.007110821083188057, 6.105869942985009e-06], [-0.007305364590138197, 6.2729195633437485e-06], [-0.007501162122935057, 6.441045570682036e-06], [-0.0076981415040791035, 6.610186119360151e-06], [-0.00789622776210308, 6.780277544748969e-06], [-0.00809534452855587, 6.951253453735262e-06], [-0.008295411244034767, 7.123046088963747e-06], [-0.00849634874612093, 7.295585874089738e-06], [-0.008698073215782642, 7.468800504284445e-06], [-0.008900498040020466, 7.642617674719077e-06], [-0.009103536605834961, 7.816961442586035e-06], [-0.009307099506258965, 7.99175541033037e-06], [-0.009511095471680164, 8.166920451913029e-06], [-0.009715430438518524, 8.342378350789659e-06], [-0.009920011274516582, 8.518045433447696e-06], [-0.01012473925948143, 8.693840754858684e-06], [-0.010329517535865307, 8.869677913025953e-06], [-0.01053424458950758, 9.045472324942239e-06], [-0.010738820768892765, 9.221135769621469e-06], [-0.010943141765892506, 9.396580935572274e-06], [-0.01114710420370102, 9.571717782819178e-06], [-0.011350600980222225, 9.746455361892004e-06], [-0.011553526856005192, 9.920701813825872e-06], [-0.011755772866308689, 1.0094365279655904e-05], [-0.011957230977714062, 1.0267352081427816e-05], [-0.01215779036283493, 1.0439566722197924e-05], [-0.01235734112560749, 1.0610915524011943e-05], [-0.012555771507322788, 1.0781302080431487e-05], [-0.012752968817949295, 1.0950629985018168e-05], [-0.012948821298778057, 1.1118802831333596e-05], [-0.013143215328454971, 1.1285724212939385e-05], [-0.013336037285625935, 1.1451294994913042e-05], [-0.013527174480259418, 1.1615419680310879e-05], [-0.013716512359678745, 1.1777999134210404e-05], [-0.013903937302529812, 1.1938936040678527e-05], [-0.014089335687458515, 1.2098132174287457e-05], [-0.014272594824433327, 1.2255492038093507e-05], [-0.014453600160777569, 1.2410916497174185e-05], [-0.014632240869104862, 1.2564310964080505e-05], [-0.014808404259383678, 1.2715577213384677e-05], [-0.014981977641582489, 1.2864620657637715e-05], [-0.015152852050960064, 1.3011345799895935e-05], [-0.015320917591452599, 1.3155658962205052e-05], [-0.015486065298318863, 1.3297466466610786e-05], [-0.015648188069462776, 1.3436677363642957e-05], [-0.015807179734110832, 1.3573197975347284e-05], [-0.015962934121489525, 1.3706940990232397e-05], [-0.016115348786115646, 1.3837815458828118e-05], [-0.01626432314515114, 1.396573588863248e-05], [-0.016409756615757942, 1.4090614968154114e-05], [-0.016551548615098, 1.4212369023880456e-05], [-0.01668960601091385, 1.4330915291793644e-05], [-0.01682383380830288, 1.4446172826865222e-05], [-0.01695414073765278, 1.4558062503056135e-05], [-0.017080433666706085, 1.4666507922811434e-05], [-0.017202628776431084, 1.4771433598070871e-05], [-0.01732064038515091, 1.4872765859763604e-05], [-0.017434384673833847, 1.4970434676797595e-05], [-0.01754378154873848, 1.5064372746564914e-05], [-0.017648756504058838, 1.5154511856962927e-05], [-0.017749235033988953, 1.5240789252857212e-05], [-0.017845144495368004, 1.5323144907597452e-05], [-0.01793641783297062, 1.540151788503863e-05], [-0.018022989854216576, 1.5475854524993338e-05], [-0.0181047972291708, 1.554610025777947e-05], [-0.018181782215833664, 1.5612205970683135e-05], [-0.018253890797495842, 1.5674122550990433e-05], [-0.018321068957448006, 1.5731808161945082e-05], [-0.018383270129561424, 1.5785217328811996e-05], [-0.018440447747707367, 1.5834313671803102e-05], [-0.0184925589710474, 1.5879062630119734e-05], [-0.01853957027196884, 1.5919429642963223e-05], [-0.018581444397568703, 1.5955385606503114e-05], [-0.018618151545524597, 1.5986903235898353e-05], [-0.018649663776159286, 1.60139625222655e-05], [-0.01867596060037613, 1.603654345672112e-05], [-0.018697019666433334, 1.605462603038177e-05], [-0.018712827935814857, 1.606820114830043e-05], [-0.018723374232649803, 1.6077256077551283e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018729308620095253, 1.6082351066870615e-05], [-0.018724633380770683, 1.6098438209155574e-05], [-0.018716327846050262, 1.6127023627632298e-05], [-0.018703876063227654, 1.6169877198990434e-05], [-0.018687287345528603, 1.622696618142072e-05], [-0.018666574731469154, 1.6298248738166876e-05], [-0.018641753122210503, 1.63836739375256e-05], [-0.01861284114420414, 1.648317811486777e-05], [-0.018579859286546707, 1.6596690329606645e-05], [-0.018542829900979996, 1.672412508924026e-05], [-0.018501782789826393, 1.686539144429844e-05], [-0.018456745892763138, 1.702038753137458e-05], [-0.018407754600048065, 1.7189000573125668e-05], [-0.018354840576648712, 1.7371106878272258e-05], [-0.018298042938113213, 1.7566575479577295e-05], [-0.01823740452528, 1.777526813384611e-05], [-0.018172968178987503, 1.7997032045968808e-05], [-0.018104778602719307, 1.8231707144877873e-05], [-0.01803288608789444, 1.8479129721526988e-05], [-0.01795734278857708, 1.87391196959652e-05], [-0.017878198996186256, 1.9011495169252157e-05], [-0.017795514315366745, 1.9296059690532275e-05], [-0.017709344625473022, 1.9592614989960566e-05], [-0.017619753256440163, 1.9900951883755624e-05], [-0.01752679981291294, 2.0220853912178427e-05], [-0.01743055321276188, 2.055209915852174e-05], [-0.0173310749232769, 2.0894454792141914e-05], [-0.017228439450263977, 2.1247686163405888e-05], [-0.01712271198630333, 2.1611547708744183e-05], [-0.017013970762491226, 2.198579204559792e-05], [-0.01690228469669819, 2.2370164515450597e-05], [-0.016787733882665634, 2.2764401364838704e-05], [-0.01667039282619953, 2.3168237021309324e-05], [-0.01655033975839615, 2.358140227443073e-05], [-0.0164276584982872, 2.4003620637813583e-05], [-0.016302427276968956, 2.4434611987089738e-05], [-0.01617472991347313, 2.4874092559912242e-05], [-0.016044648364186287, 2.532177313696593e-05], [-0.015912270173430443, 2.5777362679946236e-05], [-0.015777679160237312, 2.6240566512569785e-05], [-0.01564096100628376, 2.6711089958553202e-05], [-0.0155022032558918, 2.7188629246666096e-05], [-0.015361495316028595, 2.7672886062646285e-05], [-0.015218923799693584, 2.8163554816273972e-05], [-0.015074578113853931, 2.8660329917329364e-05], [-0.014928546734154224, 2.9162907594582066e-05], [-0.014780919067561626, 2.9670976800844073e-05], [-0.0146317845210433, 3.018423194589559e-05], [-0.014481233432888985, 3.070236198254861e-05], [-0.014329354278743267, 3.122506313957274e-05], [-0.014176237396895885, 3.1752024369779974e-05], [-0.014021972194314003, 3.228293644497171e-05], [-0.013866647146642208, 3.281749741290696e-05], [-0.013710351660847664, 3.335539804538712e-05], [-0.013553173281252384, 3.389634002815001e-05], [-0.013395199552178383, 3.444001413299702e-05], [-0.013236518949270248, 3.498612204566598e-05], [-0.013077217154204845, 3.553436908987351e-05], [-0.012917380779981613, 3.6084456951357424e-05], [-0.012757093645632267, 3.663609459181316e-05], [-0.012596440501511097, 3.718899461091496e-05], [-0.012435504235327244, 3.774286597035825e-05], [-0.012274367734789848, 3.8297424907796085e-05], [-0.012113111093640327, 3.8852398574817926e-05], [-0.011951815336942673, 3.9407510485034436e-05], [-0.011790558695793152, 3.996248415205628e-05], [-0.011629418469965458, 4.051705764140934e-05], [-0.01146847102791071, 4.107096901861951e-05], [-0.01130779180675745, 4.1623956349212676e-05], [-0.011147452518343925, 4.217577225062996e-05], [-0.01098752673715353, 4.272616934031248e-05], [-0.01082808431237936, 4.327490023570135e-05], [-0.010669194161891937, 4.3821728468174115e-05], [-0.010510923340916634, 4.436642848304473e-05], [-0.010353337973356247, 4.490876744966954e-05], [-0.010196501389145851, 4.544853072729893e-05], [-0.01004047691822052, 4.5985500037204474e-05], [-0.009885323233902454, 4.6519471652572975e-05], [-0.009731100872159004, 4.705023457063362e-05], [-0.009577866643667221, 4.757760325446725e-05], [-0.009425674565136433, 4.810137761523947e-05], [-0.009274579584598541, 4.862137939198874e-05], [-0.00912463292479515, 4.913743396173231e-05], [-0.008975883945822716, 4.9649363063508645e-05], [-0.008828380145132542, 5.015700662625022e-05], [-0.00868216808885336, 5.0660204578889534e-05], [-0.008537291549146175, 5.115880412631668e-05], [-0.008393793366849422, 5.165266338735819e-05], [-0.008251712657511234, 5.214164048084058e-05], [-0.00811108946800232, 5.2625604439526796e-05], [-0.007971960119903088, 5.3104427934158593e-05], [-0.007834358140826225, 5.357799454941414e-05], [-0.007698317524045706, 5.404618423199281e-05], [-0.0075638690032064915, 5.4508898756466806e-05], [-0.007431041449308395, 5.496603262145072e-05], [-0.007299862802028656, 5.5417491239495575e-05], [-0.007170357741415501, 5.58631909370888e-05], [-0.007042550481855869, 5.630304804071784e-05], [-0.006916463375091553, 5.673698615282774e-05], [-0.006792115978896618, 5.7164936151821166e-05], [-0.00666952645406127, 5.758683255407959e-05], [-0.006548712495714426, 5.800262078992091e-05], [-0.006429688073694706, 5.8412249927641824e-05], [-0.006312467623502016, 5.881567267351784e-05], [-0.006197061855345964, 5.9212849009782076e-05], [-0.0060834819450974464, 5.9603742556646466e-05], [-0.005971735343337059, 5.998832421028055e-05], [-0.005861829966306686, 6.036657214281149e-05], [-0.005753770470619202, 6.073846452636644e-05], [-0.005647561978548765, 6.110398680903018e-05], [-0.005543205887079239, 6.146313535282388e-05], [-0.005440704058855772, 6.181590288178995e-05], [-0.0053400564938783646, 6.216228939592838e-05], [-0.00524126086384058, 6.250229489523917e-05], [-0.005144315306097269, 6.283594120759517e-05], [-0.005049214698374271, 6.316323560895398e-05], [-0.004955954849720001, 6.348419265123084e-05], [-0.004864528309553862, 6.379884871421382e-05], [-0.004774928092956543, 6.410721107386053e-05], [-0.004687144886702299, 6.440932338591665e-05], [-0.004601169377565384, 6.470521475421265e-05], [-0.004516990855336189, 6.499491428257897e-05], [-0.004434596747159958, 6.527848017867655e-05], [-0.004353975411504507, 6.555594882229343e-05], [-0.004275111947208643, 6.58273565932177e-05], [-0.004197992850095034, 6.609276897506788e-05], [-0.004122602753341198, 6.635222962358966e-05], [-0.004048924893140793, 6.660579674644396e-05], [-0.003904960351064801, 6.710126035613939e-05], [-0.003831282490864396, 6.735482747899368e-05], [-0.0037558921612799168, 6.761428812751547e-05], [-0.0036787730641663074, 6.787969323340803e-05], [-0.003599909832701087, 6.815110828028992e-05], [-0.0035192882642149925, 6.842856964794919e-05], [-0.003436894388869405, 6.871213554404676e-05], [-0.0033527156338095665, 6.90018423483707e-05], [-0.0032667401246726513, 6.92977337166667e-05], [-0.003178957151249051, 6.959984602872282e-05], [-0.003089356701821089, 6.990820838836953e-05], [-0.002997930394485593, 7.022285717539489e-05], [-0.002904670313000679, 7.054382149362937e-05], [-0.002809569938108325, 7.087110861903057e-05], [-0.0027126241475343704, 7.120475493138656e-05], [-0.0026138287503272295, 7.154476770665497e-05], [-0.0025131809525191784, 7.18911542207934e-05], [-0.0024106791242957115, 7.224392174975947e-05], [-0.002306323265656829, 7.260306301759556e-05], [-0.0022001145407557487, 7.29685925762169e-05], [-0.0020920552778989077, 7.334048132179305e-05], [-0.001982149900868535, 7.371872925432399e-05], [-0.0018704034155234694, 7.410331454593688e-05], [-0.001756823156028986, 7.449420809280127e-05], [-0.001641417620703578, 7.48913807910867e-05], [-0.0015241968212649226, 7.529480353696272e-05], [-0.001405172748491168, 7.570443267468363e-05], [-0.0012843585573136806, 7.612021727254614e-05], [-0.001161769381724298, 7.654212095076218e-05], [-0.0010374218691140413, 7.697007094975561e-05], [-0.0009113344131037593, 7.740400906186551e-05], [-0.0007835273281671107, 7.784386252751574e-05], [-0.000654022500384599, 7.828955858713016e-05], [-0.0005228436202742159, 7.874102448113263e-05], [-0.00039001621189527214, 7.919815834611654e-05], [-0.0002555676328483969, 7.966086559463292e-05], [-0.00011952698696404696, 8.01290589151904e-05], [1.8074670151690952e-05, 8.060262189246714e-05], [0.00015720448573119938, 8.108144538709894e-05], [0.00029782773344777524, 8.156541298376396e-05], [0.0004399077733978629, 8.205438643926755e-05], [0.0005834061885252595, 8.254824933828786e-05], [0.0007282825536094606, 8.304684888571501e-05], [0.0008744946680963039, 8.355004683835432e-05], [0.0010219983523711562, 8.40576904010959e-05], [0.0011707476805895567, 8.456961950287223e-05], [0.0013206948060542345, 8.50856740726158e-05], [0.001471789786592126, 8.560567221138626e-05], [0.001623981399461627, 8.61294538481161e-05], [0.0017772158607840538, 8.665681525599211e-05], [0.001931438222527504, 8.718758181203157e-05], [0.0020865914411842823, 8.772154978942126e-05], [0.0022426163777709007, 8.825852273730561e-05], [0.0023994529619812965, 8.87982823769562e-05], [0.002557038562372327, 8.934062498155981e-05], [0.002715309150516987, 8.988532499643043e-05], [0.0028741995338350534, 9.0432156866882e-05], [0.0030336419586092234, 9.098088776227087e-05], [0.0031935677397996187, 9.153127757599577e-05], [0.003353906562551856, 9.208309347741306e-05], [0.0035145862493664026, 9.263608808396384e-05], [0.003675533691421151, 9.31899921852164e-05], [0.0038366736844182014, 9.374456567456946e-05], [0.003997930325567722, 9.429954661754891e-05], [0.004159226547926664, 9.485465125180781e-05], [0.004320482723414898, 9.540962491882965e-05], [0.004481619223952293, 9.59641911322251e-05], [0.004642555024474859, 9.651805885368958e-05], [0.004803208168596029, 9.707095887279138e-05], [0.0049634953029453754, 9.762259287526831e-05], [0.005123332142829895, 9.817268437473103e-05], [0.005282633937895298, 9.872092778095976e-05], [0.00544131500646472, 9.926703933160752e-05], [0.0055992878042161465, 9.981071343645453e-05], [0.005756466183811426, 0.00010035165178123862], [0.005912762135267258, 0.00010088955605169758], [0.006068087182939053, 0.00010142411338165402], [0.006222352385520935, 0.00010195503273280337], [0.006375469267368317, 0.00010248199396301061], [0.006527347955852747, 0.00010300469148205593], [0.00667789950966835, 0.00010352281969971955], [0.006827033590525389, 0.00010403608030173928], [0.006974661257117987, 0.00010454414587002248], [0.007120692636817694, 0.00010504672536626458], [0.007265038788318634, 0.00010554349864833057], [0.0074076103046536446, 0.00010603416740195826], [0.007548318710178137, 0.00010651842603692785], [0.007687075529247522, 0.00010699596168706194], [0.007823793217539787, 0.00010746648331405595], [0.007958384230732918, 0.00010792969260364771], [0.008090763352811337, 0.00010838528396561742], [0.008220843970775604, 0.0001088329590857029], [0.008348541334271431, 0.0001092724414775148], [0.008473772555589676, 0.00010970343282679096], [0.008596454747021198, 0.00011012564937118441], [0.008716506883502007, 0.00011053881462430581], [0.008833847939968109, 0.00011094265209976584], [0.008948399685323238, 0.00011133689258713275], [0.009060084819793701, 0.00011172125960001722], [0.009168827906250954, 0.00011209550575586036], [0.009274553507566452, 0.00011245936912018806], [0.00937718991190195, 0.00011281260231044143], [0.009476667270064354, 0.00011315495794406161], [0.009572915732860565, 0.00011348619591444731], [0.009665868245065212, 0.00011380609794287011], [0.009755460545420647, 0.00011411443847464398], [0.009841629303991795, 0.00011441099195508286], [0.009924313984811306, 0.00011469556193333119], [0.010003456845879555, 0.00011496793013066053], [0.01007900107651949, 0.00011522792192408815], [0.010150893591344357, 0.00011547534813871607], [0.010219082236289978, 0.00011571001959964633], [0.010283519513905048, 0.00011593178351176903], [0.010344157926738262, 0.00011614047980401665], [0.010400954633951187, 0.00011633594840532169], [0.01045386865735054, 0.00011651805107248947], [0.010502861812710762, 0.00011668666411424056], [0.010547897778451443, 0.0001168416638392955], [0.010588944889605045, 0.00011698292655637488], [0.010625973343849182, 0.0001171103649539873], [0.01065895613282919, 0.00011722387716872618], [0.010687869042158127, 0.00011732337588910013], [0.010712690651416779, 0.00011740880290744826], [0.010733402334153652, 0.00011748008546419442], [0.010749991051852703, 0.0001175371726276353], [0.010762442834675312, 0.00011758002801798284], [0.010770748369395733, 0.00011760861525544897], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010775422677397728, 0.00011762470239773393], [0.010772008448839188, 0.00011758743494283408], [0.010765941813588142, 0.00011752120917662978], [0.010756846517324448, 0.00011742192873498425], [0.0107447300106287, 0.00011728966637747362], [0.010729601606726646, 0.00011712451669154689], [0.010711471550166607, 0.0001169266106444411], [0.010690352879464626, 0.00011669607920339331], [0.010666262358427048, 0.00011643310426734388], [0.01063921581953764, 0.00011613786773523316], [0.010609233751893044, 0.00011581058060983196], [0.01057633850723505, 0.00011545149754965678], [0.010540553368628025, 0.00011506085866130888], [0.010501903481781483, 0.00011463896225905046], [0.01046041864901781, 0.00011418610665714368], [0.010416126810014248, 0.0001137026192736812], [0.010369060561060905, 0.00011318884207867086], [0.010319254361093044, 0.00011264515342190862], [0.010266742669045925, 0.00011207193892914802], [0.010211563669145107, 0.00011146960605401546], [0.01015375554561615, 0.00011083857680205256], [0.010093361139297485, 0.0001101793022826314], [0.010030421428382397, 0.0001094922554329969], [0.00996498204767704, 0.0001087779164663516], [0.009897087700664997, 0.00010803678014781326], [0.009826785884797573, 0.00010726936307037249], [0.009754125960171223, 0.00010647620365489274], [0.009679158218204975, 0.00010565785487415269], [0.009601933881640434, 0.00010481486970093101], [0.009522506035864353, 0.00010394783748779446], [0.00944092869758606, 0.00010305734031135216], [0.00935725774616003, 0.00010214398935204372], [0.009271549060940742, 0.00010120839579030871], [0.009183861315250397, 0.00010025118535850197], [0.009094251319766045, 9.927300561685115e-05], [0.00900278054177761, 9.827450412558392e-05], [0.008909507654607296, 9.725633572088555e-05], [0.008814494125545025, 9.621916979085654e-05], [0.008717801421880722, 9.516367572359741e-05], [0.008619493804872036, 9.409053745912388e-05], [0.008519631810486317, 9.300045348936692e-05], [0.008418281562626362, 9.189410775434226e-05], [0.00831550545990467, 9.077219874598086e-05], [0.008211367763578892, 8.96354322321713e-05], [0.008105934597551823, 8.848452125675976e-05], [0.007999270223081112, 8.732017158763483e-05], [0.007891440764069557, 8.61430962686427e-05], [0.007782509550452232, 8.495400834362954e-05], [0.007672544103115797, 8.375362085644156e-05], [0.0075616086833179, 8.254265412688255e-05], [0.007449768949300051, 8.132180664688349e-05], [0.0073370905593037605, 8.009180601220578e-05], [0.007223638240247965, 7.8853357990738e-05], [0.0071094767190515995, 7.760716835036874e-05], [0.006994670256972313, 7.635394285898656e-05], [0.006879283580929041, 7.509438000852242e-05], [0.006763380020856857, 7.382917101494968e-05], [0.006647022906690836, 7.255901437019929e-05], [0.006530274637043476, 7.1284594014287e-05], [0.006413198076188564, 7.000657933531329e-05], [0.0062958537600934505, 6.87256469973363e-05], [0.006178302690386772, 6.744245911249891e-05], [0.006060605403035879, 6.61576705169864e-05], [0.005942820571362972, 6.487192877102643e-05], [0.005825006868690252, 6.358587415888906e-05], [0.005707221571356058, 6.230013241292909e-05], [0.005589521490037441, 6.101531471358612e-05], [0.005471962504088879, 5.9732035879278556e-05], [0.005354598630219698, 5.845089253853075e-05], [0.005237484350800514, 5.7172466767951846e-05], [0.005120671354234219, 5.589733336819336e-05], [0.005004211328923702, 5.462605622597039e-05], [0.004888154566287994, 5.3359181038104e-05], [0.00477255042642355, 5.209724258747883e-05], [0.004657446872442961, 5.084076838102192e-05], [0.004542890470474958, 4.959026773576625e-05], [0.0044289263896644115, 4.834623905480839e-05], [0.004315599333494902, 4.7109158913372084e-05], [0.004202952608466148, 4.587950024870224e-05], [0.0040910267271101475, 4.465772144612856e-05], [0.003979863133281469, 4.3444255425129086e-05], [0.003869500244036317, 4.223953146720305e-05], [0.0037599760107696056, 4.1043964301934466e-05], [0.003651326522231102, 3.985794319305569e-05], [0.003543586703017354, 3.868185376632027e-05], [0.003436790546402335, 3.7516063457587734e-05], [0.003330969950184226, 3.636092515080236e-05], [0.0032261558808386326, 3.52167735400144e-05], [0.003122377675026655, 3.4083928767358884e-05], [0.0030196637380868196, 3.296270006103441e-05], [0.0029180406127125025, 3.1853382097324356e-05], [0.0028175334446132183, 3.0756244086660445e-05], [0.002718166681006551, 2.96715552394744e-05], [0.0026199626736342907, 2.85995593003463e-05], [0.002522943075746298, 2.7540489099919796e-05], [0.0024271272122859955, 2.6494562916923314e-05], [0.002332534408196807, 2.5461986297159456e-05], [0.002239181427285075, 2.4442944777547382e-05], [0.0021470848005264997, 2.3437614800059237e-05], [0.002056258963420987, 2.2446156435762532e-05], [0.0019667171873152256, 2.146871884178836e-05], [0.0018784721614792943, 2.0505434804363176e-05], [0.0017915344797074795, 1.9556422557798214e-05], [0.0017059141537174582, 1.8621789422468282e-05], [0.001621619681827724, 1.770162816683296e-05], [0.0015386583982035518, 1.679602064541541e-05], [0.0014570365892723203, 1.5905035979812965e-05], [0.0013767593773081899, 1.502872873970773e-05], [0.0012978307204321027, 1.4167142580845393e-05], [0.0012202536454424262, 1.3320310245035216e-05], [0.0011440300149843097, 1.2488251741160639e-05], [0.0010691607603803277, 1.167097707366338e-05], [0.0009956456487998366, 1.0868484423554037e-05], [0.0009234834578819573, 1.0080761967401486e-05], [0.0008526723249815404, 9.307786058343481e-06], [0.0007832091650925577, 8.549524864065461e-06], [0.0007150900783017278, 7.805935638316441e-06], [0.0006483104079961777, 7.076967449393123e-06], [0.0005828645080327988, 6.362558906403137e-06], [0.0005187460337765515, 5.662640433001798e-06], [0.00045594782568514347, 4.977134267392103e-06], [0.0003944619675166905, 4.305953552830033e-06], [0.0003342798736412078, 3.6490048387349816e-06], [0.0002753922017291188, 3.006185806952999e-06], [0.0002177889837184921, 2.377388227614574e-06], [0.0001614596403669566, 1.7624962538320688e-06], [0.0001063929739757441, 1.1613875585680944e-06], [5.2577197493519634e-05, 5.739336188526067e-07]]}, {"name": "CX_d7_u9", "samples": [[-0.00011528652248671278, -4.521963091974612e-06], [-0.0002332888834644109, -9.15045166038908e-06], [-0.0003540340985637158, -1.3886524357076269e-05], [-0.0004775479610543698, -1.873119435913395e-05], [-0.0006038550636731088, -2.3685424821451306e-05], [-0.0007329786312766373, -2.8750127967214212e-05], [-0.0008649405208416283, -3.392616054043174e-05], [-0.0009997610468417406, -3.9214322896441445e-05], [-0.0011374593013897538, -4.461535354494117e-05], [-0.0012780525721609592, -5.012994006392546e-05], [-0.0014215563423931599, -5.575868999585509e-05], [-0.0015679848147556186, -6.150215631350875e-05], [-0.0017173500964418054, -6.736081559211016e-05], [-0.0018696626648306847, -7.333507528528571e-05], [-0.002024930901825428, -7.942527008708566e-05], [-0.0021831614430993795, -8.563165465602651e-05], [-0.0023443589452654123, -9.195441089104861e-05], [-0.0025085255037993193, -9.839363337960094e-05], [-0.0026756618171930313, -0.00010494933667359874], [-0.0028457657899707556, -0.00011162144073750824], [-0.0030188332311809063, -0.00011840978550026193], [-0.003194857854396105, -0.00012531412357930094], [-0.0033738308120518923, -0.00013233409845270216], [-0.0035557406954467297, -0.00013946928083896637], [-0.0037405742332339287, -0.0001467191323172301], [-0.00392831489443779, -0.00015408301260322332], [-0.004118943586945534, -0.00016156017954926938], [-0.004312439355999231, -0.00016914980369620025], [-0.00450877845287323, -0.00017685092461761087], [-0.004707932937890291, -0.00018466252367943525], [-0.004909874405711889, -0.00019258340762462467], [-0.005114570260047913, -0.00020061232498846948], [-0.005321985110640526, -0.000208747893339023], [-0.00553208077326417, -0.00021698864293284714], [-0.005744817201048136, -0.00022533294395543635], [-0.0059601496905088425, -0.00023377907928079367], [-0.006178032606840134, -0.00024232524447143078], [-0.006398415192961693, -0.0002509694604668766], [-0.006621245294809341, -0.00025970968999899924], [-0.006846467033028603, -0.0002685437211766839], [-0.00707402266561985, -0.000277469283901155], [-0.0073038493283092976, -0.00028648393345065415], [-0.007535883225500584, -0.0002955851668957621], [-0.0077700563706457615, -0.0003047703066840768], [-0.00800629798322916, -0.0003140365588478744], [-0.008244534954428673, -0.00032338110031560063], [-0.008484689518809319, -0.0003328008751850575], [-0.00872668344527483, -0.00034229274024255574], [-0.008970432914793491, -0.0003518535231705755], [-0.009215853177011013, -0.00036147981882095337], [-0.009462855756282806, -0.00037116813473403454], [-0.00971134938299656, -0.00038091494934633374], [-0.009961238130927086, -0.000390716566471383], [-0.01021242793649435, -0.0004005691152997315], [-0.010464816354215145, -0.000410468754125759], [-0.010718302801251411, -0.00042041140841320157], [-0.010972781106829643, -0.00043039300362579525], [-0.01122814416885376, -0.0004404092615004629], [-0.011484281159937382, -0.00045045590377412736], [-0.01174107939004898, -0.0004605284775607288], [-0.011998424306511879, -0.0004706225008703768], [-0.012256196700036526, -0.00048073328798636794], [-0.01251427922397852, -0.00049085624050349], [-0.012772548012435436, -0.0005009864689782262], [-0.013030879199504852, -0.0005111192003823817], [-0.013289147056639194, -0.000521249370649457], [-0.013547223061323166, -0.0005313720903359354], [-0.013804977759718895, -0.0005414821789599955], [-0.014062279835343361, -0.0005515745142474771], [-0.014318995177745819, -0.0005616438575088978], [-0.014574989676475525, -0.0005716849118471146], [-0.014830127358436584, -0.0005816923803649843], [-0.015084270387887955, -0.000591660791542381], [-0.015337279997766018, -0.0006015847320668399], [-0.015589016489684582, -0.000611458788625896], [-0.015839340165257454, -0.0006212773732841015], [-0.016088107600808144, -0.0006310350145213306], [-0.016335180029273033, -0.0006407260661944747], [-0.016580410301685333, -0.0006503449403680861], [-0.016823660582304, -0.0006598860491067171], [-0.017064781859517097, -0.00066934380447492], [-0.01730363629758358, -0.0006787125021219254], [-0.01754007674753666, -0.0006879865541122854], [-0.017773959785699844, -0.0006971603143028915], [-0.018005143851041794, -0.0007062282529659569], [-0.018233487382531166, -0.0007151846657507122], [-0.01845884509384632, -0.0007240240811370313], [-0.018681077286601067, -0.0007327408529818058], [-0.01890004426240921, -0.0007413295679725707], [-0.01911560632288456, -0.0007497846381738782], [-0.019327623769640923, -0.0007581007666885853], [-0.019535960629582405, -0.000766272540204227], [-0.019740480929613113, -0.0007742945454083383], [-0.019941052421927452, -0.0007821616600267589], [-0.020137539133429527, -0.0007898686453700066], [-0.02032981440424919, -0.0007974103791639209], [-0.020517747849225998, -0.0008047817973420024], [-0.0207012128084898, -0.0008119780104607344], [-0.020880088210105896, -0.000818994187284261], [-0.021054251119494438, -0.0008258254383690655], [-0.021223580464720726, -0.0008324672235175967], [-0.021387964487075806, -0.0008389149443246424], [-0.021547285839915276, -0.0008451641188003123], [-0.02170143648982048, -0.0008512104977853596], [-0.021850310266017914, -0.0008570498321205378], [-0.02199380099773407, -0.0008626780472695827], [-0.02213180810213089, -0.0008680912433192134], [-0.022264236584305763, -0.0008732855785638094], [-0.02239099144935608, -0.0008782573859207332], [-0.022511983290314674, -0.0008830031147226691], [-0.022627126425504684, -0.0008875194471329451], [-0.022736337035894394, -0.0008918031235225499], [-0.022839538753032684, -0.0008958510588854551], [-0.022936658933758736, -0.0008996604010462761], [-0.02302762307226658, -0.0009032284142449498], [-0.023112371563911438, -0.0009065525373443961], [-0.02319083735346794, -0.0009096302674151957], [-0.02326296828687191, -0.0009124595089815557], [-0.023328708484768867, -0.0009150381083600223], [-0.023388013243675232, -0.0009173642611131072], [-0.023440837860107422, -0.000919436221010983], [-0.023487145081162453, -0.0009212525328621268], [-0.02352689951658249, -0.0009228118578903377], [-0.023560071364045143, -0.0009241130319423974], [-0.023586640134453773, -0.0009251550654880702], [-0.02360658161342144, -0.0009259373182430863], [-0.023619886487722397, -0.0009264591499231756], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023627372458577156, -0.0009267527493648231], [-0.023621654137969017, -0.0009263919782824814], [-0.02361149527132511, -0.0009257508208975196], [-0.023596266284585, -0.0009247896377928555], [-0.023575976490974426, -0.000923509185668081], [-0.023550644516944885, -0.0009219103958457708], [-0.02352028526365757, -0.0009199944324791431], [-0.02348492108285427, -0.000917762634344399], [-0.023444581776857376, -0.0009152167476713657], [-0.023399291560053825, -0.0009123585186898708], [-0.023349087685346603, -0.0009091900428757071], [-0.023294003680348396, -0.0009057136485353112], [-0.023234080523252487, -0.0009019318968057632], [-0.02316936105489731, -0.0008978474652394652], [-0.02309989370405674, -0.0008934633224271238], [-0.02302572689950466, -0.0008887826115824282], [-0.0229469146579504, -0.0008838087087497115], [-0.022863512858748436, -0.0008785451645962894], [-0.02277558110654354, -0.0008729957626201212], [-0.02268318273127079, -0.0008671645191498101], [-0.022586384788155556, -0.0008610554505139589], [-0.02248525246977806, -0.0008546729804947972], [-0.022379860281944275, -0.0008480215910822153], [-0.022270280867815018, -0.0008411059388890862], [-0.022156590595841408, -0.0008339309133589268], [-0.022038869559764862, -0.0008265015203505754], [-0.021917199715971947, -0.0008188228239305317], [-0.021791664883494377, -0.0008109002956189215], [-0.021662352606654167, -0.0008027392905205488], [-0.02152934856712818, -0.0007943453965708613], [-0.02139274775981903, -0.0007857243763282895], [-0.021252639591693878, -0.0007768821087665856], [-0.021109120920300484, -0.0007678245310671628], [-0.020962286740541458, -0.000758557696826756], [-0.02081223390996456, -0.0007490878342650831], [-0.020659064874053, -0.0007394211716018617], [-0.020502876490354538, -0.0007295641698874533], [-0.020343776792287827, -0.0007195232319645584], [-0.020181864500045776, -0.0007093048770911992], [-0.020017245784401894, -0.0006989157409407198], [-0.019850026816129684, -0.0006883624591864645], [-0.019680313766002655, -0.0006776517839170992], [-0.01950821466743946, -0.0006667904672212899], [-0.019333835691213608, -0.0006557853193953633], [-0.0191572867333889, -0.0006446432089433074], [-0.018978677690029144, -0.0006333710043691099], [-0.018798114731907845, -0.0006219756323844194], [-0.018615707755088806, -0.000610463903285563], [-0.018431570380926132, -0.0005988428019918501], [-0.01824580691754818, -0.0005871192552149296], [-0.01805853098630905, -0.0005753001314587891], [-0.017869850620627403, -0.0005633923574350774], [-0.01767987199127674, -0.0005514028016477823], [-0.017488708719611168, -0.0005393382743932307], [-0.01729646325111389, -0.0005272056441754103], [-0.017103247344493866, -0.0005150116630829871], [-0.016909165307879448, -0.0005027630249969661], [-0.016714325174689293, -0.0004904664820060134], [-0.01651882939040661, -0.00047812864067964256], [-0.016322782263159752, -0.0004657560493797064], [-0.01612628810107708, -0.0004533551982603967], [-0.01592944748699665, -0.0004409325192682445], [-0.015732362866401672, -0.00042849432793445885], [-0.015535131096839905, -0.0004160469106864184], [-0.015337850898504257, -0.0004035964666400105], [-0.015140618197619915, -0.0003911490202881396], [-0.014943527989089489, -0.0003787105670198798], [-0.014746674336493015, -0.00036628698580898345], [-0.014550147578120232, -0.0003538840974215418], [-0.014354038052260876, -0.0003415074897930026], [-0.014158433303236961, -0.000329162779962644], [-0.013963419944047928, -0.0003168553812429309], [-0.013769082725048065, -0.0003045906196348369], [-0.01357550173997879, -0.0002923736465163529], [-0.013382759876549244, -0.0002802095841616392], [-0.013190933503210545, -0.0002681033220142126], [-0.013000099919736385, -0.00025605972041375935], [-0.01281033270061016, -0.00024408340686932206], [-0.012621704488992691, -0.00023217895068228245], [-0.012434284202754498, -0.00022035074653103948], [-0.012248138897120953, -0.00020860304357483983], [-0.012063335627317429, -0.00019693997455760837], [-0.01187993586063385, -0.00018536552670411766], [-0.011698001064360142, -0.00017388352716807276], [-0.011517589911818504, -0.00016249767213594168], [-0.011338758282363415, -0.00015121152682695538], [-0.011161561124026775, -0.00014002848183736205], [-0.010986048728227615, -0.00012895181134808809], [-0.010812271386384964, -0.00011798461491707712], [-0.010640275664627552, -0.00010712987568695098], [-0.010470106266438961, -9.639040945330635e-05], [-0.010301806963980198, -8.576890104450285e-05], [-0.010135415941476822, -7.526789704570547e-05], [-0.009970972314476967, -6.488977669505402e-05], [-0.009808511473238468, -5.463679553940892e-05], [-0.009648067876696587, -4.4511063606478274e-05], [-0.009489670395851135, -3.451455268077552e-05], [-0.009333350695669651, -2.464909448463004e-05], [-0.009179133921861649, -1.4916377949703019e-05], [-0.009027044288814068, -5.317962404660648e-06], [-0.008877106010913849, 4.144728791288799e-06], [-0.008729338645935059, 1.3470405974658206e-05], [-0.00858376082032919, 2.2657908630208112e-05], [-0.008440389297902584, 3.1706204026704654e-05], [-0.008299237117171288, 4.061438448843546e-05], [-0.008160317316651344, 4.938167330692522e-05], [-0.00802364107221365, 5.800740473205224e-05], [-0.0078892158344388, 6.649104034295306e-05], [-0.007757049053907394, 7.483216177206486e-05], [-0.007627145387232304, 8.303044160129502e-05], [-0.007499508559703827, 9.108569793170318e-05], [-0.007374139036983252, 9.899782889988273e-05], [-0.007251037284731865, 0.00010676685633370653], [-0.0071302009746432304, 0.00011439289664849639], [-0.007011626847088337, 0.00012187616812298074], [-0.006895310245454311, 0.00012921699089929461], [-0.006781244184821844, 0.00013641575060319155], [-0.006669420748949051, 0.00014347299293149263], [-0.006559831090271473, 0.00015038925630506128], [-0.006452464032918215, 0.0001571652537677437], [-0.006347307935357094, 0.00016380172746721655], [-0.006244349293410778, 0.00017029950686264783], [-0.006143573671579361, 0.0001766594941727817], [-0.006044965703040361, 0.00018288270803168416], [-0.005948508623987436, 0.00018897016707342118], [-0.005854184273630381, 0.00019492300634738058], [-0.005761974956840277, 0.00020074241911061108], [-0.005671859718859196, 0.00020642962772399187], [-0.005495777819305658, 0.00021754227054771036], [-0.005405662581324577, 0.00022322947916109115], [-0.005313452798873186, 0.00022904887737240642], [-0.005219128914177418, 0.00023500173119828105], [-0.005122671835124493, 0.00024108919024001807], [-0.005024063866585493, 0.0002473123895470053], [-0.004923288244754076, 0.0002536723914090544], [-0.00482032960280776, 0.0002601701708044857], [-0.004715173039585352, 0.00026680665905587375], [-0.004607806447893381, 0.00027358264196664095], [-0.004498216323554516, 0.0002804989053402096], [-0.00438639335334301, 0.0002875561476685107], [-0.004272327292710543, 0.00029475492192432284], [-0.00415601022541523, 0.00030209572287276387], [-0.004037436563521624, 0.0003095789870712906], [-0.003916600253432989, 0.0003172050346620381], [-0.003793498268350959, 0.0003249740693718195], [-0.003668128978461027, 0.00033288620761595666], [-0.003540491685271263, 0.0003409414493944496], [-0.003410588251426816, 0.00034913973649963737], [-0.0032784214708954096, 0.0003574808652047068], [-0.0031439964659512043, 0.0003659644862636924], [-0.003007319988682866, 0.0003745902213267982], [-0.0028684004209935665, 0.0003833575174212456], [-0.0027272484730929136, 0.000392265705158934], [-0.0025838762521743774, 0.00040131399873644114], [-0.002438298426568508, 0.00041050149593502283], [-0.002290531061589718, 0.0004198271781206131], [-0.002140592783689499, 0.0004292898520361632], [-0.001988503849133849, 0.00043888826621696353], [-0.0018342869589105248, 0.0004486209945753217], [-0.0016779666766524315, 0.000458486465504393], [-0.001519569894298911, 0.0004684829618781805], [-0.0013591254828497767, 0.0004786086792591959], [-0.0011966648744419217, 0.0004888616967946291], [-0.0010322214802727103, 0.0004992397734895349], [-0.0008658307488076389, 0.0005097407847642899], [-0.0006975307478569448, 0.0005203622858971357], [-0.0005273616989143193, 0.0005311017739586532], [-0.00035536603536456823, 0.0005419565131887794], [-0.00018158853345084935, 0.0005529237096197903], [-6.076273166399915e-06, 0.0005640003946609795], [0.00017112138448283076, 0.0005751834250986576], [0.0003499527520034462, 0.0005864695995114744], [0.0005303638754412532, 0.000597855425439775], [0.0007122985552996397, 0.0006093374104239047], [0.0008956981473602355, 0.0006209118873812258], [0.0010805018246173859, 0.0006325749563984573], [0.0012666466645896435, 0.0006443226593546569], [0.0014540670672431588, 0.0006561508635058999], [0.001642695744521916, 0.0006680553196929395], [0.0018324628472328186, 0.0006800316041335464], [0.002023296430706978, 0.0006920752348378301], [0.00221512233838439, 0.0007041814969852567], [0.0024078646674752235, 0.0007163455593399704], [0.0026014449540525675, 0.0007285625324584544], [0.002795782871544361, 0.0007408272940665483], [0.0029907962307333946, 0.000753134663682431], [0.0031864007469266653, 0.0007654794026166201], [0.003382510505616665, 0.0007778559811413288], [0.003579037031158805, 0.0007902588695287704], [0.003775891149416566, 0.0008026824798434973], [0.003972980659455061, 0.0008151208749040961], [0.004170213360339403, 0.0008275683503597975], [0.004367493558675051, 0.0008400187944062054], [0.004564725328236818, 0.0008524662116542459], [0.004761810880154371, 0.000864904432091862], [0.004958651028573513, 0.0008773271110840142], [0.005155145190656185, 0.0008897279622033238], [0.005351191386580467, 0.0009021005243994296], [0.0055466871708631516, 0.0009144383948296309], [0.0057415287010371685, 0.0009267349378205836], [0.005935610271990299, 0.0009389835176989436], [0.006128826644271612, 0.0009511775569990277], [0.0063210707157850266, 0.0009633101872168481], [0.006512235384434462, 0.0009753746562637389], [0.006702212616801262, 0.000987364212051034], [0.006890893913805485, 0.0009992719860747457], [0.0070781703107059, 0.001011091168038547], [0.007263932842761278, 0.0010228146566078067], [0.007448071148246527, 0.0010344358161091805], [0.007630476728081703, 0.001045947545208037], [0.007811039686203003, 0.0010573429754003882], [0.007989649660885334, 0.0010686151217669249], [0.008166198618710041, 0.0010797572322189808], [0.008340577594935894, 0.0010907623218372464], [0.008512677624821663, 0.0011016236385330558], [0.008682389743626118, 0.001112334313802421], [0.008849608711898327, 0.0011228875955566764], [0.00901422742754221, 0.0011332767317071557], [0.009176138788461685, 0.001143495086580515], [0.009335240349173546, 0.0011535360245034099], [0.00949142687022686, 0.00116339314263314], [0.009644596837460995, 0.0011730596888810396], [0.009794648736715317, 0.0011825296096503735], [0.009941482916474342, 0.0011917963856831193], [0.010085002519190311, 0.0012008539633825421], [0.010225110687315464, 0.001209696289151907], [0.01036171242594719, 0.0012183173093944788], [0.010494714602828026, 0.0012267112033441663], [0.01062402781099081, 0.001234872150234878], [0.01074956264346838, 0.0012427947949618101], [0.010871232487261295, 0.001250473433174193], [0.010988952592015266, 0.0012579028261825442], [0.011102642863988876, 0.0012650778517127037], [0.011212222278118134, 0.0012719935039058328], [0.011317615397274494, 0.0012786448933184147], [0.011418746784329414, 0.0012850273633375764], [0.011515545658767223, 0.0012911363737657666], [0.011607944034039974, 0.0012969677336513996], [0.011695874854922295, 0.001302517019212246], [0.01177927665412426, 0.001307780621573329], [0.01185808889567852, 0.0013127544661983848], [0.011932255700230598, 0.0013174351770430803], [0.012001723982393742, 0.0013218193780630827], [0.012066442519426346, 0.0013259038096293807], [0.012126365676522255, 0.0013296855613589287], [0.012181449681520462, 0.0013331619556993246], [0.012231654487550259, 0.0013363304315134883], [0.012276943773031235, 0.0013391886604949832], [0.012317284010350704, 0.0013417345471680164], [0.012352647259831429, 0.0013439663453027606], [0.012383006513118744, 0.0013458823086693883], [0.01240833941847086, 0.0013474811566993594], [0.012428628280758858, 0.001348761492408812], [0.012443858198821545, 0.001349722733721137], [0.01245401706546545, 0.001350363832898438], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.012459734454751015, 0.0013507246039807796], [0.01245578657835722, 0.0013502966612577438], [0.012448770925402641, 0.0013495361199602485], [0.012438254430890083, 0.0013483960647135973], [0.012424244545400143, 0.001346877310425043], [0.012406750582158566, 0.0013449809048324823], [0.012385786511003971, 0.001342708244919777], [0.012361367233097553, 0.0013400609605014324], [0.01233351044356823, 0.0013370411470532417], [0.012302236631512642, 0.001333650783635676], [0.01226756814867258, 0.001329892547801137], [0.012229531072080135, 0.0013257690006867051], [0.01218815241008997, 0.0013212831690907478], [0.012143461033701897, 0.0013164384290575981], [0.012095491401851177, 0.0013112380402162671], [0.012044276110827923, 0.0013056860771030188], [0.011989853344857693, 0.0012997861485928297], [0.011932261288166046, 0.0012935427948832512], [0.01187154185026884, 0.0012869603233411908], [0.011807737872004509, 0.0012800435069948435], [0.011740894056856632, 0.001272797235287726], [0.01167105883359909, 0.0012652266304939985], [0.011598281562328339, 0.0012573370477184653], [0.011522612534463406, 0.0012491339584812522], [0.01144410576671362, 0.0012406231835484505], [0.011362815275788307, 0.0012318107765167952], [0.011278797872364521, 0.0012227026745676994], [0.011192111298441887, 0.0012133052805438638], [0.011102816089987755, 0.0012036249972879887], [0.011010972782969475, 0.00119366857688874], [0.01091664470732212, 0.0011834426550194621], [0.010819895192980766, 0.0011729543330147862], [0.010720789432525635, 0.001162210595794022], [0.010619394481182098, 0.001151218661107123], [0.010515778325498104, 0.0011399858631193638], [0.010410008952021599, 0.0011285197688266635], [0.010302156209945679, 0.0011168277123942971], [0.01019229181110859, 0.001104917610064149], [0.010080485604703426, 0.0010927970288321376], [0.00996681023389101, 0.0010804737685248256], [0.00985134020447731, 0.0010679559782147408], [0.009734147228300571, 0.0010552514577284455], [0.009615305811166763, 0.0010423681233078241], [0.009494890458881855, 0.001029314356856048], [0.009372977539896965, 0.0010160980746150017], [0.009249640628695488, 0.0010027274256572127], [0.009124955162405968, 0.000989210675470531], [0.008998997509479523, 0.0009755559149198234], [0.008871843107044697, 0.0009617714677006006], [0.008743567392230034, 0.0009478654828853905], [0.008614245802164078, 0.000933846109546721], [0.008483954705297947, 0.0009197216131724417], [0.00835276860743761, 0.0009055000846274197], [0.008220762014389038, 0.0008911896729841828], [0.008088010363280773, 0.0008767984108999372], [0.00795458722859621, 0.0008623343892395496], [0.00782056711614132, 0.0008478056406602263], [0.007686022203415632, 0.0008332199649885297], [0.007551025133579969, 0.0008185853366740048], [0.0074156480841338634, 0.0008039094973355532], [0.007279961369931698, 0.0007892000721767545], [0.007144036237150431, 0.0007744648028165102], [0.0070079416036605835, 0.0007597111398354173], [0.006871745456010103, 0.0007449465338140726], [0.006735516246408224, 0.0007301783189177513], [0.006599320098757744, 0.0007154137128964067], [0.006463222671300173, 0.0007006597006693482], [0.006327287759631872, 0.0006859233835712075], [0.006191578693687916, 0.0006712115718983114], [0.006056157872080803, 0.0006565309595316648], [0.0059210858307778835, 0.0006418881821446121], [0.005786421708762646, 0.0006272896425798535], [0.00565222417935729, 0.0006127416854724288], [0.005518550053238869, 0.0005982504226267338], [0.005385454278439283, 0.0005838219076395035], [0.0052529918029904366, 0.0005694620194844902], [0.005121213849633932, 0.0005551763460971415], [0.004990173038095236, 0.000540970591828227], [0.004859917797148228, 0.000526849995367229], [0.004730497021228075, 0.0005128198536112905], [0.004601957276463509, 0.0004988852306269109], [0.004474343731999397, 0.00048505098675377667], [0.004347699694335461, 0.0004713218368124217], [0.0042220670729875565, 0.0004577023792080581], [0.0040974863804876804, 0.00044419695041142404], [0.0039739967323839664, 0.00043080979958176613], [0.003851635381579399, 0.0004175449430476874], [0.003730437718331814, 0.00040440625161863863], [0.0036104379687458277, 0.0003913974214810878], [0.0034916687291115522, 0.0003785219741985202], [0.00337416073307395, 0.0003657832567114383], [0.0032579435501247644, 0.0003531844704411924], [0.0031430446542799473, 0.0003407286130823195], [0.003029490355402231, 0.00032841850770637393], [0.0029173053335398436, 0.00031625686096958816], [0.002806512638926506, 0.00030424611759372056], [0.0026971339248120785, 0.000292388693196699], [0.0025891889818012714, 0.00028068668325431645], [0.002482696669176221, 0.0002691421250347048], [0.00237767375074327, 0.0002577568811830133], [0.0022741358261555433, 0.0002465326397214085], [0.002172097098082304, 0.00023547091404907405], [0.0020715701393783092, 0.0002245730720460415], [0.001972566358745098, 0.00021384036517702043], [0.0018750957679003477, 0.00020327384117990732], [0.0017791667487472296, 0.000192874445929192], [0.0016847866354510188, 0.00018264296522829682], [0.0015919612487778068, 0.00017258002480957657], [0.0015006952453404665, 0.00016268613399006426], [0.0014109921175986528, 0.00015296167111955583], [0.0013228539610281587, 0.00014340686902869493], [0.0012362818233668804, 0.00013402181502897292], [0.0011512754717841744, 0.00012480652367230505], [0.0010678336257115006, 0.00011576082761166617], [0.0009859539568424225, 0.00010688448674045503], [0.0009056329727172852, 9.817711543291807e-05], [0.0008268661913461983, 8.963822619989514e-05], [0.0007496480830013752, 8.126723696477711e-05], [0.0006739723612554371, 7.30634419596754e-05], [0.0005998314591124654, 6.502604082925245e-05], [0.000527217227499932, 5.715413499274291e-05], [0.00045612049871124327, 4.944673855789006e-05], [0.00038653131923638284, 4.190276740700938e-05], [0.00031843886245042086, 3.452106102486141e-05], [0.0002518316905479878, 2.7300362489768304e-05], [0.0001866974780568853, 2.0239347577444278e-05], [0.00012302331742830575, 1.333661020908039e-05], [6.0795566241722554e-05, 6.590675639017718e-06]]}, {"name": "QId_d0", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d1", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d10", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d11", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d12", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d13", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d14", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d15", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d16", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d17", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d18", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d19", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d2", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d20", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d21", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d22", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d23", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d24", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d25", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d26", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d3", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d4", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d5", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d6", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d7", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d8", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d9", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}], "cmd_def": [{"name": "cx", "qubits": [0, 1], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Ym_d0", "pulse_shape": "drag", "parameters": {"amp": [-3.505173982817328e-17, -0.19081278429327633], "beta": 0.5264483656320492, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3440, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.19081278429327633, 0.0], "beta": 0.5264483656320492, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09662612490207494, 8.168061701526435e-05], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.014481823700419203, 0.00041206131700401556], "duration": 3280, "sigma": 64, "width": 3024}}, {"name": "parametric_pulse", "t0": 3600, "ch": "d1", "label": "CR90m_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.014481823700419203, -0.0004120613170040138], "duration": 3280, "sigma": 64, "width": 3024}}, {"name": "parametric_pulse", "t0": 160, "ch": "u0", "label": "CR90p_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09790350734749666, -0.01362158419767096], "duration": 3280, "sigma": 64, "width": 3024}}, {"name": "parametric_pulse", "t0": 3600, "ch": "u0", "label": "CR90m_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09790350734749666, 0.013621584197670972], "duration": 3280, "sigma": 64, "width": 3024}}, {"name": "fc", "t0": 0, "ch": "u1", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [1, 0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.09572477894596168, 0.0011024192527703698], "beta": 0.4899587750398396, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3440, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.19081278429327633, 0.0], "beta": 0.5264483656320492, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 6880, "ch": "d0", "label": "Y90m_d0", "pulse_shape": "drag", "parameters": {"amp": [0.0011024192527703473, -0.09572477894596168], "beta": 0.4899587750398396, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [-8.168061701524961e-05, 0.09662612490207494], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.014481823700419203, 0.00041206131700401556], "duration": 3280, "sigma": 64, "width": 3024}}, {"name": "parametric_pulse", "t0": 3600, "ch": "d1", "label": "CR90m_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.014481823700419203, -0.0004120613170040138], "duration": 3280, "sigma": 64, "width": 3024}}, {"name": "fc", "t0": 6880, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 6880, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09662612490207494, 8.168061701526435e-05], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u0", "label": "CR90p_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09790350734749666, -0.01362158419767096], "duration": 3280, "sigma": 64, "width": 3024}}, {"name": "parametric_pulse", "t0": 3600, "ch": "u0", "label": "CR90m_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09790350734749666, 0.013621584197670972], "duration": 3280, "sigma": 64, "width": 3024}}, {"name": "fc", "t0": 6880, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u1", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 6880, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 6880, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [1, 2], "sequence": [{"name": "fc", "t0": 768, "ch": "d1", "phase": -3.072999484338594}, {"name": "CX_d2_u2", "t0": 0, "ch": "d2"}, {"name": "fc", "t0": 768, "ch": "d2", "phase": 0.08900616993087457}, {"name": "fc", "t0": 768, "ch": "u0", "phase": -3.072999484338594}, {"name": "parametric_pulse", "t0": 0, "ch": "u2", "label": "CX_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3218644987409475, -0.22905004099957096], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 768, "ch": "u2", "phase": 0.08900616993087457}, {"name": "fc", "t0": 768, "ch": "u4", "phase": -3.072999484338594}, {"name": "fc", "t0": 768, "ch": "u6", "phase": 0.08900616993087457}, {"name": "fc", "t0": 768, "ch": "u8", "phase": -3.072999484338594}]}, {"name": "cx", "qubits": [1, 4], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [-8.168061701524961e-05, 0.09662612490207494], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03669318923566524, -3.7572636775247175e-05], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d1", "label": "CR90m_d1_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03669318923566524, 3.757263677525167e-05], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 2080, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2080, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09662612490207494, 8.168061701526435e-05], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09679969868891551, 0.0006494190146448055], "beta": 0.2138847527435544, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.19376497245190957, 0.0], "beta": 0.18211995153669097, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2080, "ch": "d4", "label": "Y90m_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0006494190146447761, -0.09679969868891551], "beta": 0.2138847527435544, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 2080, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u13", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 2080, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u8", "label": "CR90p_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4980139844231474, -0.0032640132735518553], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "u8", "label": "CR90m_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4980139844231474, 0.003264013273551794], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 2080, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [2, 1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [-8.168061701524961e-05, 0.09662612490207494], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 928, "ch": "d1", "phase": -3.072999484338594}, {"name": "fc", "t0": 928, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 928, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [-8.168061701524961e-05, 0.09662612490207494], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0011522965336072963, 0.09755670881211916], "beta": -1.0659510853062957, "duration": 160, "sigma": 40}}, {"name": "CX_d2_u2", "t0": 160, "ch": "d2"}, {"name": "fc", "t0": 928, "ch": "d2", "phase": 0.08900616993087457}, {"name": "fc", "t0": 928, "ch": "d2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 928, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0011522965336072963, 0.09755670881211916], "beta": -1.0659510853062957, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 928, "ch": "u0", "phase": -3.072999484338594}, {"name": "fc", "t0": 928, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u2", "label": "CX_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3218644987409475, -0.22905004099957096], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 928, "ch": "u2", "phase": 0.08900616993087457}, {"name": "fc", "t0": 928, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 928, "ch": "u4", "phase": -3.072999484338594}, {"name": "fc", "t0": 928, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 928, "ch": "u6", "phase": 0.08900616993087457}, {"name": "fc", "t0": 928, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 928, "ch": "u8", "phase": -3.072999484338594}, {"name": "fc", "t0": 928, "ch": "u8", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [2, 3], "sequence": [{"name": "fc", "t0": 1008, "ch": "d2", "phase": -0.8168706952798706}, {"name": "CX_d3_u5", "t0": 0, "ch": "d3"}, {"name": "fc", "t0": 1008, "ch": "d3", "phase": 0.047079177722488}, {"name": "fc", "t0": 1008, "ch": "u10", "phase": 0.047079177722488}, {"name": "fc", "t0": 1008, "ch": "u2", "phase": -0.8168706952798706}, {"name": "parametric_pulse", "t0": 0, "ch": "u5", "label": "CX_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29446053583407245, -0.2810308960119006], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 1008, "ch": "u5", "phase": 0.047079177722488}, {"name": "fc", "t0": 1008, "ch": "u6", "phase": -0.8168706952798706}]}, {"name": "cx", "qubits": [3, 2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0011522965336072963, 0.09755670881211916], "beta": -1.0659510853062957, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1168, "ch": "d2", "phase": -0.8168706952798706}, {"name": "fc", "t0": 1168, "ch": "d2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1168, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0011522965336072963, 0.09755670881211916], "beta": -1.0659510853062957, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.0008902006723180706, 0.09711734143625132], "beta": -0.25214660522363813, "duration": 160, "sigma": 40}}, {"name": "CX_d3_u5", "t0": 160, "ch": "d3"}, {"name": "fc", "t0": 1168, "ch": "d3", "phase": 0.047079177722488}, {"name": "fc", "t0": 1168, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1168, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.0008902006723180706, 0.09711734143625132], "beta": -0.25214660522363813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -3.141592653589793}, {"name": "fc", "t0": 1168, "ch": "u10", "phase": 0.047079177722488}, {"name": "fc", "t0": 1168, "ch": "u10", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 1168, "ch": "u2", "phase": -0.8168706952798706}, {"name": "fc", "t0": 1168, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u5", "label": "CX_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29446053583407245, -0.2810308960119006], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 1168, "ch": "u5", "phase": 0.047079177722488}, {"name": "fc", "t0": 1168, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 1168, "ch": "u6", "phase": -0.8168706952798706}, {"name": "fc", "t0": 1168, "ch": "u6", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [3, 5], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.0008902006723180706, 0.09711734143625132], "beta": -0.25214660522363813, "duration": 160, "sigma": 40}}, {"name": "CX_d3_u10", "t0": 160, "ch": "d3"}, {"name": "fc", "t0": 1088, "ch": "d3", "phase": 0.042662030509721845}, {"name": "fc", "t0": 1088, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1088, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.0008902006723180706, 0.09711734143625132], "beta": -0.25214660522363813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.0004290756100002028, 0.1008143248023259], "beta": 0.22070937017933667, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1088, "ch": "d5", "phase": 0.6244260184016216}, {"name": "fc", "t0": 1088, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1088, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.0004290756100002028, 0.1008143248023259], "beta": 0.22070937017933667, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u10", "label": "CX_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20419845416339805, -0.33563548829617024], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 1088, "ch": "u10", "phase": 0.042662030509721845}, {"name": "fc", "t0": 1088, "ch": "u10", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u16", "phase": -3.141592653589793}, {"name": "fc", "t0": 1088, "ch": "u16", "phase": 0.6244260184016216}, {"name": "fc", "t0": 1088, "ch": "u16", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 1088, "ch": "u5", "phase": 0.042662030509721845}, {"name": "fc", "t0": 1088, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 1088, "ch": "u7", "phase": 0.6244260184016216}, {"name": "fc", "t0": 1088, "ch": "u7", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [4, 1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09662612490207494, 8.168061701526435e-05], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03669318923566524, -3.7572636775247175e-05], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d1", "label": "CR90m_d1_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03669318923566524, 3.757263677525167e-05], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 0, "ch": "d4", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Ym_d4", "pulse_shape": "drag", "parameters": {"amp": [-3.559404799501592e-17, -0.19376497245190957], "beta": 0.18211995153669097, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.19376497245190957, 0.0], "beta": 0.18211995153669097, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u13", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u8", "label": "CR90p_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4980139844231474, -0.0032640132735518553], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "u8", "label": "CR90m_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4980139844231474, 0.003264013273551794], "duration": 880, "sigma": 64, "width": 624}}]}, {"name": "cx", "qubits": [4, 7], "sequence": [{"name": "fc", "t0": 880, "ch": "d4", "phase": -2.4151803159268694}, {"name": "CX_d7_u9", "t0": 0, "ch": "d7"}, {"name": "fc", "t0": 880, "ch": "d7", "phase": 0.053651040113083484}, {"name": "fc", "t0": 880, "ch": "u12", "phase": 0.053651040113083484}, {"name": "fc", "t0": 880, "ch": "u13", "phase": -2.4151803159268694}, {"name": "fc", "t0": 880, "ch": "u20", "phase": 0.053651040113083484}, {"name": "fc", "t0": 880, "ch": "u3", "phase": -2.4151803159268694}, {"name": "parametric_pulse", "t0": 0, "ch": "u9", "label": "CX_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3032414495522686, -0.2728810475403978], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 880, "ch": "u9", "phase": 0.053651040113083484}]}, {"name": "cx", "qubits": [5, 3], "sequence": [{"name": "CX_d3_u10", "t0": 0, "ch": "d3"}, {"name": "fc", "t0": 928, "ch": "d3", "phase": 0.042662030509721845}, {"name": "fc", "t0": 928, "ch": "d5", "phase": 0.6244260184016216}, {"name": "parametric_pulse", "t0": 0, "ch": "u10", "label": "CX_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20419845416339805, -0.33563548829617024], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 928, "ch": "u10", "phase": 0.042662030509721845}, {"name": "fc", "t0": 928, "ch": "u16", "phase": 0.6244260184016216}, {"name": "fc", "t0": 928, "ch": "u5", "phase": 0.042662030509721845}, {"name": "fc", "t0": 928, "ch": "u7", "phase": 0.6244260184016216}]}, {"name": "cx", "qubits": [5, 8], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.0004290756100002028, 0.1008143248023259], "beta": 0.22070937017933667, "duration": 160, "sigma": 40}}, {"name": "CX_d5_u16", "t0": 160, "ch": "d5"}, {"name": "fc", "t0": 1296, "ch": "d5", "phase": -0.0010870392245169306}, {"name": "fc", "t0": 1296, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1296, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.0004290756100002028, 0.1008143248023259], "beta": 0.22070937017933667, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [-0.001129470996146982, 0.09390903999733272], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1296, "ch": "d8", "phase": -1.7396852358738184}, {"name": "fc", "t0": 1296, "ch": "d8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1296, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [-0.001129470996146982, 0.09390903999733272], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 1296, "ch": "u11", "phase": -1.7396852358738184}, {"name": "fc", "t0": 1296, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u16", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u16", "label": "CX_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13959873512819038, -0.2505788498080134], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "fc", "t0": 1296, "ch": "u16", "phase": -0.0010870392245169306}, {"name": "fc", "t0": 1296, "ch": "u16", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 1296, "ch": "u19", "phase": -1.7396852358738184}, {"name": "fc", "t0": 1296, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 1296, "ch": "u22", "phase": -1.7396852358738184}, {"name": "fc", "t0": 1296, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 1296, "ch": "u7", "phase": -0.0010870392245169306}, {"name": "fc", "t0": 1296, "ch": "u7", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [6, 7], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Ym_d6", "pulse_shape": "drag", "parameters": {"amp": [-3.459720492134251e-17, -0.1883384115073311], "beta": -0.27366338596168815, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.1883384115073311, 0.0], "beta": -0.27366338596168815, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.09310343317304517, 0.0006959390260227185], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d7", "label": "CR90p_d7_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.025936027168950652, 0.001221775131159817], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d7", "label": "CR90m_d7_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025936027168950652, -0.0012217751311598137], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 160, "ch": "u12", "label": "CR90p_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02596017438972981, -0.13300681806674675], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 1600, "ch": "u12", "label": "CR90m_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025960174389729793, 0.13300681806674675], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 0, "ch": "u14", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [7, 4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.0006494190146448095, 0.09679969868891551], "beta": 0.2138847527435544, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1040, "ch": "d4", "phase": -2.4151803159268694}, {"name": "fc", "t0": 1040, "ch": "d4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1040, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.0006494190146448095, 0.09679969868891551], "beta": 0.2138847527435544, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.0006959390260227096, 0.09310343317304517], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "CX_d7_u9", "t0": 160, "ch": "d7"}, {"name": "fc", "t0": 1040, "ch": "d7", "phase": 0.053651040113083484}, {"name": "fc", "t0": 1040, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1040, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.0006959390260227096, 0.09310343317304517], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 1040, "ch": "u12", "phase": 0.053651040113083484}, {"name": "fc", "t0": 1040, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u13", "phase": -3.141592653589793}, {"name": "fc", "t0": 1040, "ch": "u13", "phase": -2.4151803159268694}, {"name": "fc", "t0": 1040, "ch": "u13", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 1040, "ch": "u20", "phase": 0.053651040113083484}, {"name": "fc", "t0": 1040, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 1040, "ch": "u3", "phase": -2.4151803159268694}, {"name": "fc", "t0": 1040, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u9", "label": "CX_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3032414495522686, -0.2728810475403978], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 1040, "ch": "u9", "phase": 0.053651040113083484}, {"name": "fc", "t0": 1040, "ch": "u9", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [7, 6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.09436939003022234, 0.00028279277770874796], "beta": -0.24416915361490749, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.1883384115073311, 0.0], "beta": -0.27366338596168815, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2880, "ch": "d6", "label": "Y90m_d6", "pulse_shape": "drag", "parameters": {"amp": [0.0002827927777087019, -0.09436939003022234], "beta": -0.24416915361490749, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.0006959390260227096, 0.09310343317304517], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d7", "label": "CR90p_d7_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.025936027168950652, 0.001221775131159817], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d7", "label": "CR90m_d7_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025936027168950652, -0.0012217751311598137], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 2880, "ch": "d7", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2880, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.09310343317304517, 0.0006959390260227185], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u12", "label": "CR90p_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02596017438972981, -0.13300681806674675], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 1600, "ch": "u12", "label": "CR90m_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025960174389729793, 0.13300681806674675], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 2880, "ch": "u12", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u14", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 2880, "ch": "u20", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "fc", "t0": 2880, "ch": "u9", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [7, 10], "sequence": [{"name": "CX_d10_u15", "t0": 0, "ch": "d10"}, {"name": "fc", "t0": 1280, "ch": "d10", "phase": 0.027443111021423553}, {"name": "fc", "t0": 1280, "ch": "d7", "phase": 0.25387222269059645}, {"name": "fc", "t0": 1280, "ch": "u12", "phase": 0.25387222269059645}, {"name": "parametric_pulse", "t0": 0, "ch": "u15", "label": "CX_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.035318954822521974, -0.2986832838918774], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 1280, "ch": "u15", "phase": 0.027443111021423553}, {"name": "fc", "t0": 1280, "ch": "u20", "phase": 0.25387222269059645}, {"name": "fc", "t0": 1280, "ch": "u24", "phase": 0.027443111021423553}, {"name": "fc", "t0": 1280, "ch": "u9", "phase": 0.25387222269059645}]}, {"name": "cx", "qubits": [8, 5], "sequence": [{"name": "CX_d5_u16", "t0": 0, "ch": "d5"}, {"name": "fc", "t0": 1136, "ch": "d5", "phase": -0.0010870392245169306}, {"name": "fc", "t0": 1136, "ch": "d8", "phase": -1.7396852358738184}, {"name": "fc", "t0": 1136, "ch": "u11", "phase": -1.7396852358738184}, {"name": "parametric_pulse", "t0": 0, "ch": "u16", "label": "CX_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13959873512819038, -0.2505788498080134], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "fc", "t0": 1136, "ch": "u16", "phase": -0.0010870392245169306}, {"name": "fc", "t0": 1136, "ch": "u19", "phase": -1.7396852358738184}, {"name": "fc", "t0": 1136, "ch": "u22", "phase": -1.7396852358738184}, {"name": "fc", "t0": 1136, "ch": "u7", "phase": -0.0010870392245169306}]}, {"name": "cx", "qubits": [8, 9], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [-0.001129470996146982, 0.09390903999733272], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.019822130219418158, -0.00013693726619596903], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d8", "label": "CR90m_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.019822130219418158, 0.00013693726619597147], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 2112, "ch": "d8", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2112, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.09390903999733272, 0.0011294709961469818], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d9", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "X90p_d9", "pulse_shape": "drag", "parameters": {"amp": [0.09514812259032954, 0.001075481929338223], "beta": 0.7548362760491217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.18993723926224895, 0.0], "beta": 0.7342824516760573, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2112, "ch": "d9", "label": "Y90m_d9", "pulse_shape": "drag", "parameters": {"amp": [0.00107548192933822, -0.09514812259032954], "beta": 0.7548362760491217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 2112, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u17", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u19", "label": "CR90p_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22548465095131107, -0.24326241389141603], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "u19", "label": "CR90m_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22548465095131104, 0.24326241389141606], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 2112, "ch": "u19", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 2112, "ch": "u22", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [8, 11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.09944641170944009, 0.0023819409453860203], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d11", "label": "CR90p_d11_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0513807264641577, 0.0025469462326196787], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d11", "label": "CR90m_d11_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0513807264641577, -0.0025469462326196722], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "d8", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Ym_d8", "pulse_shape": "drag", "parameters": {"amp": [-3.4386579232931127e-17, -0.18719181866353848], "beta": -1.1515345782361974, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d8", "label": "Xp_d8", "pulse_shape": "drag", "parameters": {"amp": [0.18719181866353848, 0.0], "beta": -1.1515345782361974, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u18", "label": "CR90p_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32581433140817023, -0.010632195719710249], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u18", "label": "CR90m_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32581433140817023, 0.010632195719710288], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u19", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u22", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [9, 8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.09390903999733272, 0.0011294709961469818], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.019822130219418158, -0.00013693726619596903], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d8", "label": "CR90m_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.019822130219418158, 0.00013693726619597147], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 0, "ch": "d9", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "Ym_d9", "pulse_shape": "drag", "parameters": {"amp": [-3.4890904815209723e-17, -0.18993723926224895], "beta": 0.7342824516760573, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.18993723926224895, 0.0], "beta": 0.7342824516760573, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u17", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u19", "label": "CR90p_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22548465095131107, -0.24326241389141603], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "u19", "label": "CR90m_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22548465095131104, 0.24326241389141606], "duration": 896, "sigma": 64, "width": 640}}]}, {"name": "cx", "qubits": [10, 7], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Y90p_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.0017861547472037983, 0.0996361990487828], "beta": -1.047701695975587, "duration": 160, "sigma": 40}}, {"name": "CX_d10_u15", "t0": 160, "ch": "d10"}, {"name": "fc", "t0": 1440, "ch": "d10", "phase": 0.027443111021423553}, {"name": "fc", "t0": 1440, "ch": "d10", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1440, "ch": "d10", "label": "Y90p_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.0017861547472037983, 0.0996361990487828], "beta": -1.047701695975587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.0006959390260227096, 0.09310343317304517], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1440, "ch": "d7", "phase": 0.25387222269059645}, {"name": "fc", "t0": 1440, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1440, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.0006959390260227096, 0.09310343317304517], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u12", "phase": 0.25387222269059645}, {"name": "fc", "t0": 1440, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u15", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u15", "label": "CX_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.035318954822521974, -0.2986832838918774], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 1440, "ch": "u15", "phase": 0.027443111021423553}, {"name": "fc", "t0": 1440, "ch": "u15", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u20", "phase": 0.25387222269059645}, {"name": "fc", "t0": 1440, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u24", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u24", "phase": 0.027443111021423553}, {"name": "fc", "t0": 1440, "ch": "u24", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u9", "phase": 0.25387222269059645}, {"name": "fc", "t0": 1440, "ch": "u9", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [10, 12], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Ym_d10", "pulse_shape": "drag", "parameters": {"amp": [-3.653959845462381e-17, -0.19891230941070304], "beta": -1.1390524587526276, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1584, "ch": "d10", "label": "Xp_d10", "pulse_shape": "drag", "parameters": {"amp": [0.19891230941070304, 0.0], "beta": -1.1390524587526276, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.09550084024767264, 0.0008565712850177551], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016932663753282447, 0.0010969694071973537], "duration": 1424, "sigma": 64, "width": 1168}}, {"name": "parametric_pulse", "t0": 1744, "ch": "d12", "label": "CR90m_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016932663753282447, -0.0010969694071973515], "duration": 1424, "sigma": 64, "width": 1168}}, {"name": "fc", "t0": 0, "ch": "u15", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u21", "label": "CR90p_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.037315583084665996, -0.3336818976265886], "duration": 1424, "sigma": 64, "width": 1168}}, {"name": "parametric_pulse", "t0": 1744, "ch": "u21", "label": "CR90m_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.037315583084665954, 0.3336818976265886], "duration": 1424, "sigma": 64, "width": 1168}}, {"name": "fc", "t0": 0, "ch": "u24", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [11, 8], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Y90p_d11", "pulse_shape": "drag", "parameters": {"amp": [-0.0023819409453860233, 0.09944641170944009], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d11", "label": "CR90p_d11_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0513807264641577, 0.0025469462326196787], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d11", "label": "CR90m_d11_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0513807264641577, -0.0025469462326196722], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d11", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.09944641170944009, 0.0023819409453860203], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d8", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.09390903999733272, 0.0011294709961469818], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d8", "label": "Xp_d8", "pulse_shape": "drag", "parameters": {"amp": [0.18719181866353848, 0.0], "beta": -1.1515345782361974, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d8", "label": "Y90m_d8", "pulse_shape": "drag", "parameters": {"amp": [0.0011294709961469913, -0.09390903999733272], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u18", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u18", "label": "CR90p_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32581433140817023, -0.010632195719710249], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u18", "label": "CR90m_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32581433140817023, 0.010632195719710288], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u18", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u29", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u29", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [11, 14], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Y90p_d11", "pulse_shape": "drag", "parameters": {"amp": [-0.0023819409453860233, 0.09944641170944009], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d11", "label": "CR90p_d11_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05284489567726523, 0.0035109630280979486], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "d11", "label": "CR90m_d11_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05284489567726523, -0.003510963028097942], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1504, "ch": "d11", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1504, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.09944641170944009, 0.0023819409453860203], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d14", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.09592160058722701, 0.0004397475628433075], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 752, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1912961665026656, 0.0], "beta": -0.03530460292261767, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1504, "ch": "d14", "label": "Y90m_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0004397475628433278, -0.09592160058722701], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u18", "phase": -3.141592653589793}, {"name": "fc", "t0": 1504, "ch": "u18", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u29", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u29", "label": "CR90p_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32288605741624493, -0.14026427533579702], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "u29", "label": "CR90m_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32288605741624493, 0.14026427533579705], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1504, "ch": "u29", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [12, 10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.0996361990487828, 0.0017861547472038065], "beta": -1.047701695975587, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1584, "ch": "d10", "label": "Xp_d10", "pulse_shape": "drag", "parameters": {"amp": [0.19891230941070304, 0.0], "beta": -1.1390524587526276, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3168, "ch": "d10", "label": "Y90m_d10", "pulse_shape": "drag", "parameters": {"amp": [0.00178615474720383, -0.0996361990487828], "beta": -1.047701695975587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d12", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Y90p_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.0008565712850177455, 0.09550084024767264], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016932663753282447, 0.0010969694071973537], "duration": 1424, "sigma": 64, "width": 1168}}, {"name": "parametric_pulse", "t0": 1744, "ch": "d12", "label": "CR90m_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016932663753282447, -0.0010969694071973515], "duration": 1424, "sigma": 64, "width": 1168}}, {"name": "fc", "t0": 3168, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3168, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.09550084024767264, 0.0008565712850177551], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u15", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u21", "label": "CR90p_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.037315583084665996, -0.3336818976265886], "duration": 1424, "sigma": 64, "width": 1168}}, {"name": "parametric_pulse", "t0": 1744, "ch": "u21", "label": "CR90m_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.037315583084665954, 0.3336818976265886], "duration": 1424, "sigma": 64, "width": 1168}}, {"name": "fc", "t0": 3168, "ch": "u21", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u24", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u27", "phase": -3.141592653589793}, {"name": "fc", "t0": 3168, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -3.141592653589793}, {"name": "fc", "t0": 3168, "ch": "u32", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [12, 13], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Y90p_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.0008565712850177455, 0.09550084024767264], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05920871971471273, 0.00048224279185606013], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d12", "label": "CR90m_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05920871971471273, -0.00048224279185605286], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1568, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.09550084024767264, 0.0008565712850177551], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d13", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.09900946893592417, 0.0014680879043291015], "beta": -1.4690035698318569, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.19672997363593536, 0.0], "beta": -1.392111683127624, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d13", "label": "Y90m_d13", "pulse_shape": "drag", "parameters": {"amp": [0.0014680879043291227, -0.09900946893592417], "beta": -1.4690035698318569, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u21", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u25", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u27", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u27", "label": "CR90p_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2612731258700623, 0.25599791860407933], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u27", "label": "CR90m_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.26127312587006235, -0.2559979186040793], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u30", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u32", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [12, 15], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Y90p_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.0008565712850177455, 0.09550084024767264], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026692230613299915, 0.0009951806751776176], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d12", "label": "CR90m_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026692230613299915, -0.0009951806751776144], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "fc", "t0": 2496, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2496, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.09550084024767264, 0.0008565712850177551], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d15", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.10174132785033968, -1.0560670206599667e-05], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.19170967792837929, 0.0], "beta": -0.9529465826349884, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2496, "ch": "d15", "label": "Y90m_d15", "pulse_shape": "drag", "parameters": {"amp": [-1.0560670206649983e-05, -0.10174132785033968], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "fc", "t0": 2496, "ch": "u21", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u26", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u27", "phase": -3.141592653589793}, {"name": "fc", "t0": 2496, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u32", "label": "CR90p_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.008212909954208793, -0.16252183928143785], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "parametric_pulse", "t0": 1408, "ch": "u32", "label": "CR90m_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.008212909954208812, 0.16252183928143785], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "fc", "t0": 2496, "ch": "u32", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u37", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [13, 12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.09550084024767264, 0.0008565712850177551], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05920871971471273, 0.00048224279185606013], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d12", "label": "CR90m_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05920871971471273, -0.00048224279185605286], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "d13", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Ym_d13", "pulse_shape": "drag", "parameters": {"amp": [-3.613870987643871e-17, -0.19672997363593536], "beta": -1.392111683127624, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.19672997363593536, 0.0], "beta": -1.392111683127624, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u27", "label": "CR90p_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2612731258700623, 0.25599791860407933], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u27", "label": "CR90m_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.26127312587006235, -0.2559979186040793], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u30", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [13, 14], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Y90p_d13", "pulse_shape": "drag", "parameters": {"amp": [-0.001468087904329091, 0.09900946893592417], "beta": -1.4690035698318569, "duration": 160, "sigma": 40}}, {"name": "CX_d13_u30", "t0": 160, "ch": "d13"}, {"name": "fc", "t0": 1776, "ch": "d13", "phase": 0.046851609371243545}, {"name": "fc", "t0": 1776, "ch": "d13", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1776, "ch": "d13", "label": "Y90p_d13", "pulse_shape": "drag", "parameters": {"amp": [-0.001468087904329091, 0.09900946893592417], "beta": -1.4690035698318569, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d14", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Y90p_d14", "pulse_shape": "drag", "parameters": {"amp": [-0.0004397475628432969, 0.09592160058722701], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1776, "ch": "d14", "phase": 0.32890590983931417}, {"name": "fc", "t0": 1776, "ch": "d14", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1776, "ch": "d14", "label": "Y90p_d14", "pulse_shape": "drag", "parameters": {"amp": [-0.0004397475628432969, 0.09592160058722701], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -3.141592653589793}, {"name": "fc", "t0": 1776, "ch": "u23", "phase": 0.32890590983931417}, {"name": "fc", "t0": 1776, "ch": "u23", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u25", "phase": -3.141592653589793}, {"name": "fc", "t0": 1776, "ch": "u25", "phase": 0.046851609371243545}, {"name": "fc", "t0": 1776, "ch": "u25", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -3.141592653589793}, {"name": "fc", "t0": 1776, "ch": "u28", "phase": 0.32890590983931417}, {"name": "fc", "t0": 1776, "ch": "u28", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u30", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u30", "label": "CX_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19837508066880305, 0.10854320277406146], "duration": 1616, "sigma": 64, "width": 1360}}, {"name": "fc", "t0": 1776, "ch": "u30", "phase": 0.046851609371243545}, {"name": "fc", "t0": 1776, "ch": "u30", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -3.141592653589793}, {"name": "fc", "t0": 1776, "ch": "u34", "phase": 0.32890590983931417}, {"name": "fc", "t0": 1776, "ch": "u34", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [14, 11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.09944641170944009, 0.0023819409453860203], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d11", "label": "CR90p_d11_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05284489567726523, 0.0035109630280979486], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "d11", "label": "CR90m_d11_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05284489567726523, -0.003510963028097942], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 0, "ch": "d14", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Ym_d14", "pulse_shape": "drag", "parameters": {"amp": [-3.514053569949728e-17, -0.1912961665026656], "beta": -0.03530460292261767, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 752, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1912961665026656, 0.0], "beta": -0.03530460292261767, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u29", "label": "CR90p_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32288605741624493, -0.14026427533579702], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "u29", "label": "CR90m_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32288605741624493, 0.14026427533579705], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 0, "ch": "u34", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [14, 13], "sequence": [{"name": "CX_d13_u30", "t0": 0, "ch": "d13"}, {"name": "fc", "t0": 1616, "ch": "d13", "phase": 0.046851609371243545}, {"name": "fc", "t0": 1616, "ch": "d14", "phase": 0.32890590983931417}, {"name": "fc", "t0": 1616, "ch": "u23", "phase": 0.32890590983931417}, {"name": "fc", "t0": 1616, "ch": "u25", "phase": 0.046851609371243545}, {"name": "fc", "t0": 1616, "ch": "u28", "phase": 0.32890590983931417}, {"name": "parametric_pulse", "t0": 0, "ch": "u30", "label": "CX_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19837508066880305, 0.10854320277406146], "duration": 1616, "sigma": 64, "width": 1360}}, {"name": "fc", "t0": 1616, "ch": "u30", "phase": 0.046851609371243545}, {"name": "fc", "t0": 1616, "ch": "u34", "phase": 0.32890590983931417}]}, {"name": "cx", "qubits": [14, 16], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Ym_d14", "pulse_shape": "drag", "parameters": {"amp": [-3.514053569949728e-17, -0.1912961665026656], "beta": -0.03530460292261767, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1912961665026656, 0.0], "beta": -0.03530460292261767, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10333726598599466, 0.00040880608926902533], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d16", "label": "CR90p_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04490805987043882, 0.0006300251285516515], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d16", "label": "CR90m_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04490805987043882, -0.000630025128551646], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u31", "label": "CR90p_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3143303877136538, 0.0980568449602292], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u31", "label": "CR90m_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3143303877136538, -0.09805684496022925], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u34", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [15, 12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.09550084024767264, 0.0008565712850177551], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026692230613299915, 0.0009951806751776176], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d12", "label": "CR90m_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026692230613299915, -0.0009951806751776144], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "fc", "t0": 0, "ch": "d15", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Ym_d15", "pulse_shape": "drag", "parameters": {"amp": [-3.521649651608395e-17, -0.19170967792837929], "beta": -0.9529465826349884, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.19170967792837929, 0.0], "beta": -0.9529465826349884, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u26", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u32", "label": "CR90p_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.008212909954208793, -0.16252183928143785], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "parametric_pulse", "t0": 1408, "ch": "u32", "label": "CR90m_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.008212909954208812, 0.16252183928143785], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "fc", "t0": 0, "ch": "u37", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [15, 18], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Y90p_d15", "pulse_shape": "drag", "parameters": {"amp": [1.056067020661493e-05, 0.10174132785033968], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d15", "label": "CR90p_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016093382202240547, -7.140598825664716e-05], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "parametric_pulse", "t0": 1552, "ch": "d15", "label": "CR90m_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016093382202240547, 7.140598825664912e-05], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "fc", "t0": 2784, "ch": "d15", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2784, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.10174132785033968, -1.0560670206599667e-05], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d18", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.09834416675282169, 0.0008004151745721556], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1392, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.1958735445702548, 0.0], "beta": -0.1822039739620271, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2784, "ch": "d18", "label": "Y90m_d18", "pulse_shape": "drag", "parameters": {"amp": [0.000800415174572118, -0.09834416675282169], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u26", "phase": -3.141592653589793}, {"name": "fc", "t0": 2784, "ch": "u26", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u37", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u37", "label": "CR90p_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11602014222554621, -0.5253080026590201], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "parametric_pulse", "t0": 1552, "ch": "u37", "label": "CR90m_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11602014222554614, 0.5253080026590201], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "fc", "t0": 2784, "ch": "u37", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [16, 14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.09592160058722701, 0.0004397475628433075], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1912961665026656, 0.0], "beta": -0.03530460292261767, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d14", "label": "Y90m_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0004397475628433278, -0.09592160058722701], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d16", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Y90p_d16", "pulse_shape": "drag", "parameters": {"amp": [-0.0004088060892690278, 0.10333726598599466], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d16", "label": "CR90p_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04490805987043882, 0.0006300251285516515], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d16", "label": "CR90m_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04490805987043882, -0.000630025128551646], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "d16", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1600, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10333726598599466, 0.00040880608926902533], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u31", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u31", "label": "CR90p_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3143303877136538, 0.0980568449602292], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u31", "label": "CR90m_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3143303877136538, -0.09805684496022925], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "u31", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u40", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u40", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [16, 19], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Ym_d16", "pulse_shape": "drag", "parameters": {"amp": [-3.790871727462432e-17, -0.20636544512816726], "beta": -0.39776413231287217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d16", "label": "Xp_d16", "pulse_shape": "drag", "parameters": {"amp": [0.20636544512816726, 0.0], "beta": -0.39776413231287217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.09640610203187712, 0.0008203615672538268], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d19", "label": "CR90p_d19_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01857024036072121, 0.0011358048065359045], "duration": 1440, "sigma": 64, "width": 1184}}, {"name": "parametric_pulse", "t0": 1760, "ch": "d19", "label": "CR90m_d19_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01857024036072121, -0.0011358048065359023], "duration": 1440, "sigma": 64, "width": 1184}}, {"name": "fc", "t0": 0, "ch": "u31", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u35", "label": "CR90p_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15129675354627373, -0.022667275053298467], "duration": 1440, "sigma": 64, "width": 1184}}, {"name": "parametric_pulse", "t0": 1760, "ch": "u35", "label": "CR90m_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15129675354627373, 0.022667275053298484], "duration": 1440, "sigma": 64, "width": 1184}}, {"name": "fc", "t0": 0, "ch": "u40", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [17, 18], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "Ym_d17", "pulse_shape": "drag", "parameters": {"amp": [-3.547595655707723e-17, -0.19312211260572965], "beta": -0.5621321985576594, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.19312211260572965, 0.0], "beta": -0.5621321985576594, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.09834416675282169, 0.0008004151745721556], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "CR90p_d18_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04462672657131373, 0.000736733006965448], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d18", "label": "CR90m_d18_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04462672657131373, -0.0007367330069654426], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 160, "ch": "u36", "label": "CR90p_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15255826865923372, 0.16925986635988577], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u36", "label": "CR90m_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15255826865923375, -0.16925986635988574], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "u38", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [18, 15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.10174132785033968, -1.0560670206599667e-05], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d15", "label": "CR90p_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016093382202240547, -7.140598825664716e-05], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "parametric_pulse", "t0": 1552, "ch": "d15", "label": "CR90m_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016093382202240547, 7.140598825664912e-05], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "fc", "t0": 0, "ch": "d18", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Ym_d18", "pulse_shape": "drag", "parameters": {"amp": [-3.598138640934134e-17, -0.1958735445702548], "beta": -0.1822039739620271, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1392, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.1958735445702548, 0.0], "beta": -0.1822039739620271, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u37", "label": "CR90p_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11602014222554621, -0.5253080026590201], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "parametric_pulse", "t0": 1552, "ch": "u37", "label": "CR90m_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11602014222554614, 0.5253080026590201], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "fc", "t0": 0, "ch": "u44", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [18, 17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "X90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.09690858616111708, 0.00047170288528899554], "beta": -0.548342068996819, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.19312211260572965, 0.0], "beta": -0.5621321985576594, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d17", "label": "Y90m_d17", "pulse_shape": "drag", "parameters": {"amp": [0.00047170288528896025, -0.09690858616111708], "beta": -0.548342068996819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d18", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Y90p_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.0008004151745721519, 0.09834416675282169], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "CR90p_d18_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04462672657131373, 0.000736733006965448], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d18", "label": "CR90m_d18_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04462672657131373, -0.0007367330069654426], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "d18", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1984, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.09834416675282169, 0.0008004151745721556], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u33", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u36", "label": "CR90p_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15255826865923372, 0.16925986635988577], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u36", "label": "CR90m_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15255826865923375, -0.16925986635988574], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "u36", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u38", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u44", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [18, 21], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Y90p_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.0008004151745721519, 0.09834416675282169], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "CR90p_d18_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05442624052300101, -0.00035714960020991635], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d18", "label": "CR90m_d18_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05442624052300101, 0.000357149600209923], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "d18", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1600, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.09834416675282169, 0.0008004151745721556], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d21", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.09376658074832953, 0.001006489560947705], "beta": -1.6400739464207479, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.1874590776415591, 0.0], "beta": -1.6693690574326434, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d21", "label": "Y90m_d21", "pulse_shape": "drag", "parameters": {"amp": [0.0010064895609477266, -0.09376658074832953], "beta": -1.6400739464207479, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u33", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u36", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u39", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u44", "label": "CR90p_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0643318087889653, -0.2284710319578535], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u44", "label": "CR90m_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06433180878896527, 0.2284710319578535], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "u44", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u48", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [19, 16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10333726598599466, 0.00040880608926902533], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d16", "label": "Xp_d16", "pulse_shape": "drag", "parameters": {"amp": [0.20636544512816726, 0.0], "beta": -0.39776413231287217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3200, "ch": "d16", "label": "Y90m_d16", "pulse_shape": "drag", "parameters": {"amp": [0.0004088060892690381, -0.10333726598599466], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d19", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Y90p_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.000820361567253816, 0.09640610203187712], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d19", "label": "CR90p_d19_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01857024036072121, 0.0011358048065359045], "duration": 1440, "sigma": 64, "width": 1184}}, {"name": "parametric_pulse", "t0": 1760, "ch": "d19", "label": "CR90m_d19_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01857024036072121, -0.0011358048065359023], "duration": 1440, "sigma": 64, "width": 1184}}, {"name": "fc", "t0": 3200, "ch": "d19", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3200, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.09640610203187712, 0.0008203615672538268], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u31", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u35", "label": "CR90p_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15129675354627373, -0.022667275053298467], "duration": 1440, "sigma": 64, "width": 1184}}, {"name": "parametric_pulse", "t0": 1760, "ch": "u35", "label": "CR90m_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15129675354627373, 0.022667275053298484], "duration": 1440, "sigma": 64, "width": 1184}}, {"name": "fc", "t0": 3200, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u40", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -3.141592653589793}, {"name": "fc", "t0": 3200, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "phase": -3.141592653589793}, {"name": "fc", "t0": 3200, "ch": "u46", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [19, 20], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Ym_d19", "pulse_shape": "drag", "parameters": {"amp": [-3.530234844635363e-17, -0.19217703406910194], "beta": 0.5095158462844451, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.19217703406910194, 0.0], "beta": 0.5095158462844451, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.09295921314329819, 0.0022086257576811154], "beta": -1.7246675679655659, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d20", "label": "CR90p_d20_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0431910567054956, 0.002551263699642358], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d20", "label": "CR90m_d20_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0431910567054956, -0.002551263699642353], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u41", "label": "CR90p_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10536864017987779, 0.22891576722370366], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u41", "label": "CR90m_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10536864017987776, -0.22891576722370366], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "u43", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [19, 22], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Y90p_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.000820361567253816, 0.09640610203187712], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d19", "label": "CR90p_d19_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028036363040276402, 0.0007858100884944382], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d19", "label": "CR90m_d19_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028036363040276402, -0.0007858100884944347], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "fc", "t0": 2496, "ch": "d19", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2496, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.09640610203187712, 0.0008203615672538268], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d22", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.09886114906048304, 0.0011157651735984756], "beta": -0.05755884910946901, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.19777937555634284, 0.0], "beta": 0.009576850646861874, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2496, "ch": "d22", "label": "Y90m_d22", "pulse_shape": "drag", "parameters": {"amp": [0.0011157651735984658, -0.09886114906048304], "beta": -0.05755884910946901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -3.141592653589793}, {"name": "fc", "t0": 2496, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u42", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -3.141592653589793}, {"name": "fc", "t0": 2496, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u46", "label": "CR90p_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04944230194339201, -0.1716952133624324], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "parametric_pulse", "t0": 1408, "ch": "u46", "label": "CR90m_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04944230194339199, 0.1716952133624324], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "fc", "t0": 2496, "ch": "u46", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u52", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [20, 19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.09640610203187712, 0.0008203615672538268], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.19217703406910194, 0.0], "beta": 0.5095158462844451, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1792, "ch": "d19", "label": "Y90m_d19", "pulse_shape": "drag", "parameters": {"amp": [0.0008203615672538256, -0.09640610203187712], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d20", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "Y90p_d20", "pulse_shape": "drag", "parameters": {"amp": [-0.0022086257576811063, 0.09295921314329819], "beta": -1.7246675679655659, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d20", "label": "CR90p_d20_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0431910567054956, 0.002551263699642358], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d20", "label": "CR90m_d20_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0431910567054956, -0.002551263699642353], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "d20", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1792, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.09295921314329819, 0.0022086257576811154], "beta": -1.7246675679655659, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u41", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u41", "label": "CR90p_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10536864017987779, 0.22891576722370366], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u41", "label": "CR90m_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10536864017987776, -0.22891576722370366], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "u41", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [21, 18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.09834416675282169, 0.0008004151745721556], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "CR90p_d18_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05442624052300101, -0.00035714960020991635], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d18", "label": "CR90m_d18_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05442624052300101, 0.000357149600209923], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "d21", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Ym_d21", "pulse_shape": "drag", "parameters": {"amp": [-3.4435673910727575e-17, -0.1874590776415591], "beta": -1.6693690574326434, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.1874590776415591, 0.0], "beta": -1.6693690574326434, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u39", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u44", "label": "CR90p_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0643318087889653, -0.2284710319578535], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u44", "label": "CR90m_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06433180878896527, 0.2284710319578535], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u48", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [21, 23], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Ym_d21", "pulse_shape": "drag", "parameters": {"amp": [-3.4435673910727575e-17, -0.1874590776415591], "beta": -1.6693690574326434, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.1874590776415591, 0.0], "beta": -1.6693690574326434, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09689616277448652, 0.0006771644177384502], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d23", "label": "CR90p_d23_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028613129564210145, 0.0009832523473326511], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d23", "label": "CR90m_d23_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028613129564210145, -0.0009832523473326477], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 0, "ch": "u39", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u45", "label": "CR90p_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13665388834132922, -0.055949512376300636], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "u45", "label": "CR90m_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13665388834132922, 0.05594951237630062], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 0, "ch": "u48", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [22, 19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.09640610203187712, 0.0008203615672538268], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d19", "label": "CR90p_d19_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028036363040276402, 0.0007858100884944382], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d19", "label": "CR90m_d19_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028036363040276402, -0.0007858100884944347], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "fc", "t0": 0, "ch": "d22", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Ym_d22", "pulse_shape": "drag", "parameters": {"amp": [-3.6331481881865624e-17, -0.19777937555634284], "beta": 0.009576850646861874, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.19777937555634284, 0.0], "beta": 0.009576850646861874, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u42", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u46", "label": "CR90p_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04944230194339201, -0.1716952133624324], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "parametric_pulse", "t0": 1408, "ch": "u46", "label": "CR90m_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04944230194339199, 0.1716952133624324], "duration": 1088, "sigma": 64, "width": 832}}, {"name": "fc", "t0": 0, "ch": "u52", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [22, 25], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Ym_d22", "pulse_shape": "drag", "parameters": {"amp": [-3.6331481881865624e-17, -0.19777937555634284], "beta": 0.009576850646861874, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.19777937555634284, 0.0], "beta": 0.009576850646861874, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.09786458613438094, 0.0006280241748295421], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.039793992826718826, 0.00010800177278462154], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d25", "label": "CR90m_d25_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.039793992826718826, -0.00010800177278461666], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u42", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u47", "label": "CR90p_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17399582223197563, 0.39571393398459936], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u47", "label": "CR90m_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17399582223197568, -0.39571393398459936], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u52", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [23, 21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.09376658074832953, 0.001006489560947705], "beta": -1.6400739464207479, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.1874590776415591, 0.0], "beta": -1.6693690574326434, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2432, "ch": "d21", "label": "Y90m_d21", "pulse_shape": "drag", "parameters": {"amp": [0.0010064895609477266, -0.09376658074832953], "beta": -1.6400739464207479, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d23", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Y90p_d23", "pulse_shape": "drag", "parameters": {"amp": [-0.0006771644177384412, 0.09689616277448652], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d23", "label": "CR90p_d23_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028613129564210145, 0.0009832523473326511], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d23", "label": "CR90m_d23_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028613129564210145, -0.0009832523473326477], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 2432, "ch": "d23", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2432, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09689616277448652, 0.0006771644177384502], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u39", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u45", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u45", "label": "CR90p_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13665388834132922, -0.055949512376300636], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "u45", "label": "CR90m_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13665388834132922, 0.05594951237630062], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 2432, "ch": "u45", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u48", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u50", "phase": -3.141592653589793}, {"name": "fc", "t0": 2432, "ch": "u50", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [23, 24], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Ym_d23", "pulse_shape": "drag", "parameters": {"amp": [-3.557390372664845e-17, -0.1936553121624749], "beta": -0.2584595814569481, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.1936553121624749, 0.0], "beta": -0.2584595814569481, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.09824430169742811, 2.0938769591382614e-05], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.037733731648854615, -0.00012873619597123458], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d24", "label": "CR90m_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.037733731648854615, 0.0001287361959712392], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u45", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u49", "label": "CR90p_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3254565996579967, -0.39501078240002924], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u49", "label": "CR90m_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3254565996579968, 0.3950107824000292], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u50", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [24, 23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09689616277448652, 0.0006771644177384502], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.1936553121624749, 0.0], "beta": -0.2584595814569481, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d23", "label": "Y90m_d23", "pulse_shape": "drag", "parameters": {"amp": [0.0006771644177384724, -0.09689616277448652], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d24", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Y90p_d24", "pulse_shape": "drag", "parameters": {"amp": [-2.0938769591374062e-05, 0.09824430169742811], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.037733731648854615, -0.00012873619597123458], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d24", "label": "CR90m_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.037733731648854615, 0.0001287361959712392], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "d24", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1568, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.09824430169742811, 2.0938769591382614e-05], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u45", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u49", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u49", "label": "CR90p_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3254565996579967, -0.39501078240002924], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u49", "label": "CR90m_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3254565996579968, 0.3950107824000292], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "u49", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u50", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u53", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u53", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [24, 25], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Y90p_d24", "pulse_shape": "drag", "parameters": {"amp": [-2.0938769591374062e-05, 0.09824430169742811], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04191722899288894, 0.0005785278967116103], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d24", "label": "CR90m_d24_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04191722899288894, -0.0005785278967116052], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "d24", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.09824430169742811, 2.0938769591382614e-05], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d25", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.09786458613438094, 0.0006280241748295421], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.19584268451676065, 0.0], "beta": -1.3725638628838261, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d25", "label": "Y90m_d25", "pulse_shape": "drag", "parameters": {"amp": [0.0006280241748295439, -0.09786458613438094], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u49", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u49", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u53", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u53", "label": "CR90p_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2268843240811152, 0.05363332738545396], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u53", "label": "CR90m_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2268843240811152, -0.053633327385453934], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "u53", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u55", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [25, 22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.09886114906048304, 0.0011157651735984756], "beta": -0.05755884910946901, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.19777937555634284, 0.0], "beta": 0.009576850646861874, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d22", "label": "Y90m_d22", "pulse_shape": "drag", "parameters": {"amp": [0.0011157651735984658, -0.09886114906048304], "beta": -0.05755884910946901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d25", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Y90p_d25", "pulse_shape": "drag", "parameters": {"amp": [-0.0006280241748295342, 0.09786458613438094], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.039793992826718826, 0.00010800177278462154], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d25", "label": "CR90m_d25_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.039793992826718826, -0.00010800177278461666], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d25", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.09786458613438094, 0.0006280241748295421], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u42", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u47", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u47", "label": "CR90p_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17399582223197563, 0.39571393398459936], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u47", "label": "CR90m_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17399582223197568, -0.39571393398459936], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u47", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u51", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u52", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u55", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u55", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [25, 24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.09824430169742811, 2.0938769591382614e-05], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04191722899288894, 0.0005785278967116103], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d24", "label": "CR90m_d24_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04191722899288894, -0.0005785278967116052], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "d25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Ym_d25", "pulse_shape": "drag", "parameters": {"amp": [-3.5975717509481376e-17, -0.19584268451676065], "beta": -1.3725638628838261, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.19584268451676065, 0.0], "beta": -1.3725638628838261, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u53", "label": "CR90p_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2268843240811152, 0.05363332738545396], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u53", "label": "CR90m_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2268843240811152, -0.053633327385453934], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u55", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [25, 26], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Ym_d25", "pulse_shape": "drag", "parameters": {"amp": [-3.5975717509481376e-17, -0.19584268451676065], "beta": -1.3725638628838261, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.19584268451676065, 0.0], "beta": -1.3725638628838261, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.09398909046616878, 0.002151034801716638], "beta": -2.0899204062928742, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d26", "label": "CR90p_d26_u54", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.058927922299398236, 0.003990065940669994], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d26", "label": "CR90m_d26_u54", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.058927922299398236, -0.003990065940669987], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u54", "label": "CR90p_u54", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1761380268647358, -0.25529303437575207], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u54", "label": "CR90m_u54", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17613802686473579, 0.25529303437575207], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u55", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [26, 25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.09786458613438094, 0.0006280241748295421], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.19584268451676065, 0.0], "beta": -1.3725638628838261, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d25", "label": "Y90m_d25", "pulse_shape": "drag", "parameters": {"amp": [0.0006280241748295439, -0.09786458613438094], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d26", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Y90p_d26", "pulse_shape": "drag", "parameters": {"amp": [-0.0021510348017166315, 0.09398909046616878], "beta": -2.0899204062928742, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d26", "label": "CR90p_d26_u54", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.058927922299398236, 0.003990065940669994], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d26", "label": "CR90m_d26_u54", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.058927922299398236, -0.003990065940669987], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "d26", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1568, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.09398909046616878, 0.002151034801716638], "beta": -2.0899204062928742, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u54", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u54", "label": "CR90p_u54", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1761380268647358, -0.25529303437575207], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u54", "label": "CR90m_u54", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17613802686473579, 0.25529303437575207], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "u54", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u55", "phase": -1.5707963267948966}]}, {"name": "id", "qubits": [0], "sequence": [{"name": "QId_d0", "t0": 0, "ch": "d0"}]}, {"name": "id", "qubits": [1], "sequence": [{"name": "QId_d1", "t0": 0, "ch": "d1"}]}, {"name": "id", "qubits": [2], "sequence": [{"name": "QId_d2", "t0": 0, "ch": "d2"}]}, {"name": "id", "qubits": [3], "sequence": [{"name": "QId_d3", "t0": 0, "ch": "d3"}]}, {"name": "id", "qubits": [4], "sequence": [{"name": "QId_d4", "t0": 0, "ch": "d4"}]}, {"name": "id", "qubits": [5], "sequence": [{"name": "QId_d5", "t0": 0, "ch": "d5"}]}, {"name": "id", "qubits": [6], "sequence": [{"name": "QId_d6", "t0": 0, "ch": "d6"}]}, {"name": "id", "qubits": [7], "sequence": [{"name": "QId_d7", "t0": 0, "ch": "d7"}]}, {"name": "id", "qubits": [8], "sequence": [{"name": "QId_d8", "t0": 0, "ch": "d8"}]}, {"name": "id", "qubits": [9], "sequence": [{"name": "QId_d9", "t0": 0, "ch": "d9"}]}, {"name": "id", "qubits": [10], "sequence": [{"name": "QId_d10", "t0": 0, "ch": "d10"}]}, {"name": "id", "qubits": [11], "sequence": [{"name": "QId_d11", "t0": 0, "ch": "d11"}]}, {"name": "id", "qubits": [12], "sequence": [{"name": "QId_d12", "t0": 0, "ch": "d12"}]}, {"name": "id", "qubits": [13], "sequence": [{"name": "QId_d13", "t0": 0, "ch": "d13"}]}, {"name": "id", "qubits": [14], "sequence": [{"name": "QId_d14", "t0": 0, "ch": "d14"}]}, {"name": "id", "qubits": [15], "sequence": [{"name": "QId_d15", "t0": 0, "ch": "d15"}]}, {"name": "id", "qubits": [16], "sequence": [{"name": "QId_d16", "t0": 0, "ch": "d16"}]}, {"name": "id", "qubits": [17], "sequence": [{"name": "QId_d17", "t0": 0, "ch": "d17"}]}, {"name": "id", "qubits": [18], "sequence": [{"name": "QId_d18", "t0": 0, "ch": "d18"}]}, {"name": "id", "qubits": [19], "sequence": [{"name": "QId_d19", "t0": 0, "ch": "d19"}]}, {"name": "id", "qubits": [20], "sequence": [{"name": "QId_d20", "t0": 0, "ch": "d20"}]}, {"name": "id", "qubits": [21], "sequence": [{"name": "QId_d21", "t0": 0, "ch": "d21"}]}, {"name": "id", "qubits": [22], "sequence": [{"name": "QId_d22", "t0": 0, "ch": "d22"}]}, {"name": "id", "qubits": [23], "sequence": [{"name": "QId_d23", "t0": 0, "ch": "d23"}]}, {"name": "id", "qubits": [24], "sequence": [{"name": "QId_d24", "t0": 0, "ch": "d24"}]}, {"name": "id", "qubits": [25], "sequence": [{"name": "QId_d25", "t0": 0, "ch": "d25"}]}, {"name": "id", "qubits": [26], "sequence": [{"name": "QId_d26", "t0": 0, "ch": "d26"}]}, {"name": "measure", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.213994130176147, 0.13496485561120808], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m0", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.213994130176147, 0.13496485561120808], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m0", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22960987456327867, 0.059842325347829115], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m1", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m10", "label": "M_m10", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08063161280889924, -0.31999772345414546], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m10", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m11", "label": "M_m11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3677138093258835, -0.041067681101418556], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m11", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m12", "label": "M_m12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.21666020634063818, -0.10880003733653812], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m12", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m13", "label": "M_m13", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19578772332038888, 0.2901157827437501], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m13", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m14", "label": "M_m14", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.21933048436823424, 0.02168636960848346], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m14", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m15", "label": "M_m15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24933979311910892, -0.2596722310285025], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m15", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m16", "label": "M_m16", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1803912938446253, -0.2270660280734704], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m16", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m17", "label": "M_m17", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.279368980389184, 0.01878757026088606], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m17", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m18", "label": "M_m18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.31869973900076093, -0.14467368924876026], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m18", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m19", "label": "M_m19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02330533861256055, 0.3091227283655375], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m19", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12796147383896048, 0.24228466978527766], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m2", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m20", "label": "M_m20", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16620656945112908, 0.15898231433491908], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m20", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m21", "label": "M_m21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03782492151955332, -0.35800736767843144], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m21", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m22", "label": "M_m22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09243613686797315, 0.2536839778167422], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m22", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m23", "label": "M_m23", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024783569060478253, -0.23871693426446416], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m23", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m24", "label": "M_m24", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.00484794636726121, 0.15192266919726022], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m24", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m25", "label": "M_m25", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32288728031388475, 0.311713400757014], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m25", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m26", "label": "M_m26", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.23667255415261165, -0.14961985867818192], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m26", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1924564503838187, 0.18216891805590957], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m3", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.23081676668219364, -0.11968132777663268], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m4", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13815192481391916, -0.23197854571104035], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m5", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17983291244067695, -0.007753941133630919], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m6", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m7", "label": "M_m7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21770627410960058, -0.2611589137159892], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m7", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m8", "label": "M_m8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3656709251644241, -0.12972576648219966], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m8", "duration": 1616}, {"name": "parametric_pulse", "t0": 0, "ch": "m9", "label": "M_m9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1860422599542391, 0.21853438519171145], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m9", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22960987456327867, 0.059842325347829115], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m1", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12796147383896048, 0.24228466978527766], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m2", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1924564503838187, 0.18216891805590957], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m3", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.23081676668219364, -0.11968132777663268], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m4", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13815192481391916, -0.23197854571104035], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m5", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17983291244067695, -0.007753941133630919], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m6", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m7", "label": "M_m7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21770627410960058, -0.2611589137159892], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m7", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m8", "label": "M_m8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3656709251644241, -0.12972576648219966], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m8", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m9", "label": "M_m9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1860422599542391, 0.21853438519171145], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m9", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m10", "label": "M_m10", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08063161280889924, -0.31999772345414546], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m10", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m11", "label": "M_m11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3677138093258835, -0.041067681101418556], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m11", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m12", "label": "M_m12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.21666020634063818, -0.10880003733653812], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m12", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m13", "label": "M_m13", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19578772332038888, 0.2901157827437501], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m13", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m14", "label": "M_m14", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.21933048436823424, 0.02168636960848346], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m14", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m15", "label": "M_m15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24933979311910892, -0.2596722310285025], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m15", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m16", "label": "M_m16", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1803912938446253, -0.2270660280734704], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m16", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m17", "label": "M_m17", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.279368980389184, 0.01878757026088606], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m17", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m18", "label": "M_m18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.31869973900076093, -0.14467368924876026], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m18", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m19", "label": "M_m19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02330533861256055, 0.3091227283655375], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m19", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m20", "label": "M_m20", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16620656945112908, 0.15898231433491908], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m20", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m21", "label": "M_m21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03782492151955332, -0.35800736767843144], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m21", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m22", "label": "M_m22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09243613686797315, 0.2536839778167422], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m22", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m23", "label": "M_m23", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024783569060478253, -0.23871693426446416], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m23", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m24", "label": "M_m24", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.00484794636726121, 0.15192266919726022], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m24", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m25", "label": "M_m25", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32288728031388475, 0.311713400757014], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m25", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m26", "label": "M_m26", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.23667255415261165, -0.14961985867818192], "duration": 1792, "sigma": 64, "width": 1536}}, {"name": "delay", "t0": 1792, "ch": "m26", "duration": 1616}, {"name": "acquire", "t0": 0, "duration": 1792, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "rz", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P0)"}]}, {"name": "sx", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.09572477894596168, 0.0011024192527703698], "beta": 0.4899587750398396, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09662612490207494, 8.168061701526435e-05], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.09755670881211916, 0.0011522965336073028], "beta": -1.0659510853062957, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.09711734143625132, 0.0008902006723180865], "beta": -0.25214660522363813, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09679969868891551, 0.0006494190146448055], "beta": 0.2138847527435544, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.1008143248023259, 0.00042907561000019874], "beta": 0.22070937017933667, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.09436939003022234, 0.00028279277770874796], "beta": -0.24416915361490749, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.09310343317304517, 0.0006959390260227185], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.09390903999733272, 0.0011294709961469818], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "X90p_d9", "pulse_shape": "drag", "parameters": {"amp": [0.09514812259032954, 0.001075481929338223], "beta": 0.7548362760491217, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.0996361990487828, 0.0017861547472038065], "beta": -1.047701695975587, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.09944641170944009, 0.0023819409453860203], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.09550084024767264, 0.0008565712850177551], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.09900946893592417, 0.0014680879043291015], "beta": -1.4690035698318569, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.09592160058722701, 0.0004397475628433075], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.10174132785033968, -1.0560670206599667e-05], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10333726598599466, 0.00040880608926902533], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "X90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.09690858616111708, 0.00047170288528899554], "beta": -0.548342068996819, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.09834416675282169, 0.0008004151745721556], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.09640610203187712, 0.0008203615672538268], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.09295921314329819, 0.0022086257576811154], "beta": -1.7246675679655659, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.09376658074832953, 0.001006489560947705], "beta": -1.6400739464207479, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.09886114906048304, 0.0011157651735984756], "beta": -0.05755884910946901, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09689616277448652, 0.0006771644177384502], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.09824430169742811, 2.0938769591382614e-05], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.09786458613438094, 0.0006280241748295421], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.09398909046616878, 0.002151034801716638], "beta": -2.0899204062928742, "duration": 160, "sigma": 40}}]}, {"name": "u1", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [-0.0011024192527703592, 0.09572477894596168], "beta": 0.4899587750398396, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [-8.168061701524961e-05, 0.09662612490207494], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u8", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0011522965336072963, 0.09755670881211916], "beta": -1.0659510853062957, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u6", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.0008902006723180706, 0.09711734143625132], "beta": -0.25214660522363813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u5", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.0006494190146448095, 0.09679969868891551], "beta": 0.2138847527435544, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u3", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.0004290756100002028, 0.1008143248023259], "beta": 0.22070937017933667, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Y90p_d6", "pulse_shape": "drag", "parameters": {"amp": [-0.00028279277770873435, 0.09436939003022234], "beta": -0.24416915361490749, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u14", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.0006959390260227096, 0.09310343317304517], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [-0.001129470996146982, 0.09390903999733272], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u22", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "Y90p_d9", "pulse_shape": "drag", "parameters": {"amp": [-0.0010754819293382106, 0.09514812259032954], "beta": 0.7548362760491217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u17", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Y90p_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.0017861547472037983, 0.0996361990487828], "beta": -1.047701695975587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u24", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Y90p_d11", "pulse_shape": "drag", "parameters": {"amp": [-0.0023819409453860233, 0.09944641170944009], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u29", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Y90p_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.0008565712850177455, 0.09550084024767264], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u32", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Y90p_d13", "pulse_shape": "drag", "parameters": {"amp": [-0.001468087904329091, 0.09900946893592417], "beta": -1.4690035698318569, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u30", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Y90p_d14", "pulse_shape": "drag", "parameters": {"amp": [-0.0004397475628432969, 0.09592160058722701], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u34", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Y90p_d15", "pulse_shape": "drag", "parameters": {"amp": [1.056067020661493e-05, 0.10174132785033968], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u37", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Y90p_d16", "pulse_shape": "drag", "parameters": {"amp": [-0.0004088060892690278, 0.10333726598599466], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u40", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "Y90p_d17", "pulse_shape": "drag", "parameters": {"amp": [-0.0004717028852889936, 0.09690858616111708], "beta": -0.548342068996819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u38", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Y90p_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.0008004151745721519, 0.09834416675282169], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u44", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Y90p_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.000820361567253816, 0.09640610203187712], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u46", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "Y90p_d20", "pulse_shape": "drag", "parameters": {"amp": [-0.0022086257576811063, 0.09295921314329819], "beta": -1.7246675679655659, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u41", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Y90p_d21", "pulse_shape": "drag", "parameters": {"amp": [-0.0010064895609476967, 0.09376658074832953], "beta": -1.6400739464207479, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u48", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Y90p_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.001115765173598478, 0.09886114906048304], "beta": -0.05755884910946901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u52", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Y90p_d23", "pulse_shape": "drag", "parameters": {"amp": [-0.0006771644177384412, 0.09689616277448652], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u50", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Y90p_d24", "pulse_shape": "drag", "parameters": {"amp": [-2.0938769591374062e-05, 0.09824430169742811], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d24", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u53", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Y90p_d25", "pulse_shape": "drag", "parameters": {"amp": [-0.0006280241748295342, 0.09786458613438094], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u55", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Y90p_d26", "pulse_shape": "drag", "parameters": {"amp": [-0.0021510348017166315, 0.09398909046616878], "beta": -2.0899204062928742, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u54", "phase": "-(P0)"}]}, {"name": "u3", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.09572477894596168, 0.0011024192527703698], "beta": 0.4899587750398396, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d0", "label": "X90m_d0", "pulse_shape": "drag", "parameters": {"amp": [-0.09572477894596168, -0.0011024192527703534], "beta": 0.4899587750398396, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u1", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09662612490207494, 8.168061701526435e-05], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d1", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "X90m_d1", "pulse_shape": "drag", "parameters": {"amp": [-0.09662612490207494, -8.168061701526515e-05], "beta": -0.0582599488341388, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d1", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u8", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u8", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.09755670881211916, 0.0011522965336073028], "beta": -1.0659510853062957, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "X90m_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.09755670881211916, -0.0011522965336072904], "beta": -1.0659510853062957, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d2", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u6", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.09711734143625132, 0.0008902006723180865], "beta": -0.25214660522363813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "X90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.09711734143625132, -0.0008902006723180648], "beta": -0.25214660522363813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d3", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u5", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u5", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.09679969868891551, 0.0006494190146448055], "beta": 0.2138847527435544, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "X90m_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.09679969868891551, -0.0006494190146447821], "beta": 0.2138847527435544, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u13", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u3", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.1008143248023259, 0.00042907561000019874], "beta": 0.22070937017933667, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "X90m_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.1008143248023259, -0.0004290756100001966], "beta": 0.22070937017933667, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d5", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u16", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u7", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u7", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.09436939003022234, 0.00028279277770874796], "beta": -0.24416915361490749, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d6", "label": "X90m_d6", "pulse_shape": "drag", "parameters": {"amp": [-0.09436939003022234, -0.00028279277770874953], "beta": -0.24416915361490749, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d6", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u14", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u14", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.09310343317304517, 0.0006959390260227185], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d7", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d7", "label": "X90m_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.09310343317304517, -0.0006959390260227245], "beta": -0.0028410035667972722, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d7", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u12", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u20", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u9", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.09390903999733272, 0.0011294709961469818], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d8", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "X90m_d8", "pulse_shape": "drag", "parameters": {"amp": [-0.09390903999733272, -0.0011294709961469555], "beta": -1.1474562445399736, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d8", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u19", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u22", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u22", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "X90p_d9", "pulse_shape": "drag", "parameters": {"amp": [0.09514812259032954, 0.001075481929338223], "beta": 0.7548362760491217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d9", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d9", "label": "X90m_d9", "pulse_shape": "drag", "parameters": {"amp": [-0.09514812259032954, -0.0010754819293382258], "beta": 0.7548362760491217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d9", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u17", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u17", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.0996361990487828, 0.0017861547472038065], "beta": -1.047701695975587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d10", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d10", "label": "X90m_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.0996361990487828, -0.001786154747203792], "beta": -1.047701695975587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d10", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u15", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u24", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u24", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.09944641170944009, 0.0023819409453860203], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d11", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d11", "label": "X90m_d11", "pulse_shape": "drag", "parameters": {"amp": [-0.09944641170944009, -0.0023819409453860172], "beta": -1.3247547836429008, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d11", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u18", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u29", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u29", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.09550084024767264, 0.0008565712850177551], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d12", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "X90m_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.09550084024767264, -0.0008565712850177398], "beta": 0.07448054414102981, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d12", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u21", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u27", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u32", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u32", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.09900946893592417, 0.0014680879043291015], "beta": -1.4690035698318569, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d13", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d13", "label": "X90m_d13", "pulse_shape": "drag", "parameters": {"amp": [-0.09900946893592417, -0.001468087904329085], "beta": -1.4690035698318569, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d13", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u25", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u30", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u30", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.09592160058722701, 0.0004397475628433075], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d14", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d14", "label": "X90m_d14", "pulse_shape": "drag", "parameters": {"amp": [-0.09592160058722701, -0.0004397475628432911], "beta": 0.002200038205690605, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d14", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u23", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u28", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u34", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u34", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.10174132785033968, -1.0560670206599667e-05], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d15", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d15", "label": "X90m_d15", "pulse_shape": "drag", "parameters": {"amp": [-0.10174132785033968, 1.056067020659857e-05], "beta": -6.618654524167971, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d15", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u26", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u37", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u37", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10333726598599466, 0.00040880608926902533], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d16", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d16", "label": "X90m_d16", "pulse_shape": "drag", "parameters": {"amp": [-0.10333726598599466, -0.00040880608926899845], "beta": -0.32041171339366914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d16", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u31", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u40", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u40", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "X90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.09690858616111708, 0.00047170288528899554], "beta": -0.548342068996819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d17", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d17", "label": "X90m_d17", "pulse_shape": "drag", "parameters": {"amp": [-0.09690858616111708, -0.0004717028852889661], "beta": -0.548342068996819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d17", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u38", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u38", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.09834416675282169, 0.0008004151745721556], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d18", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "X90m_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.09834416675282169, -0.0008004151745721241], "beta": -0.15530722169216715, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d18", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u33", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u36", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u44", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u44", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.09640610203187712, 0.0008203615672538268], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d19", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d19", "label": "X90m_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.0964061020318771, -0.0008203615672538315], "beta": 0.575812000126596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d19", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u35", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u43", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u46", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u46", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.09295921314329819, 0.0022086257576811154], "beta": -1.7246675679655659, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d20", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d20", "label": "X90m_d20", "pulse_shape": "drag", "parameters": {"amp": [-0.09295921314329819, -0.0022086257576811215], "beta": -1.7246675679655659, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d20", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u41", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u41", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.09376658074832953, 0.001006489560947705], "beta": -1.6400739464207479, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d21", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d21", "label": "X90m_d21", "pulse_shape": "drag", "parameters": {"amp": [-0.09376658074832953, -0.0010064895609476908], "beta": -1.6400739464207479, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d21", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u39", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u48", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u48", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.09886114906048304, 0.0011157651735984756], "beta": -0.05755884910946901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d22", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "X90m_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.09886114906048304, -0.0011157651735984717], "beta": -0.05755884910946901, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d22", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u42", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u52", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u52", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09689616277448652, 0.0006771644177384502], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d23", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d23", "label": "X90m_d23", "pulse_shape": "drag", "parameters": {"amp": [-0.09689616277448652, -0.0006771644177384354], "beta": -0.2832069474435073, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d23", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u45", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u50", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u50", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.09824430169742811, 2.0938769591382614e-05], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d24", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "X90m_d24", "pulse_shape": "drag", "parameters": {"amp": [-0.09824430169742811, -2.093876959138986e-05], "beta": 0.5770580939428461, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d24", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u49", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u53", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u53", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.09786458613438094, 0.0006280241748295421], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d25", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "X90m_d25", "pulse_shape": "drag", "parameters": {"amp": [-0.09786458613438094, -0.00062802417482955], "beta": -1.314601778495484, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d25", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u47", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u51", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u55", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u55", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.09398909046616878, 0.002151034801716638], "beta": -2.0899204062928742, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d26", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d26", "label": "X90m_d26", "pulse_shape": "drag", "parameters": {"amp": [-0.09398909046616878, -0.002151034801716647], "beta": -2.0899204062928742, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d26", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u54", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u54", "phase": "-(P1)"}]}, {"name": "x", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.19081278429327633, 0.0], "beta": 0.5264483656320492, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.19293817774193533, 0.0], "beta": -0.10237911583642437, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.19471489458491836, 0.0], "beta": -1.034998684104225, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.1946404898250783, 0.0], "beta": -0.24681235098209547, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.19376497245190957, 0.0], "beta": 0.18211995153669097, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.20130158190430927, 0.0], "beta": 0.166101313448559, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.1883384115073311, 0.0], "beta": -0.27366338596168815, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Xp_d7", "pulse_shape": "drag", "parameters": {"amp": [0.18507181875965115, 0.0], "beta": 0.03019880106561139, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Xp_d8", "pulse_shape": "drag", "parameters": {"amp": [0.18719181866353848, 0.0], "beta": -1.1515345782361974, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.18993723926224895, 0.0], "beta": 0.7342824516760573, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Xp_d10", "pulse_shape": "drag", "parameters": {"amp": [0.19891230941070304, 0.0], "beta": -1.1390524587526276, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.198040507356012, 0.0], "beta": -1.288367915516395, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Xp_d12", "pulse_shape": "drag", "parameters": {"amp": [0.19073365557103006, 0.0], "beta": -0.05863475719496897, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.19672997363593536, 0.0], "beta": -1.392111683127624, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1912961665026656, 0.0], "beta": -0.03530460292261767, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.19170967792837929, 0.0], "beta": -0.9529465826349884, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Xp_d16", "pulse_shape": "drag", "parameters": {"amp": [0.20636544512816726, 0.0], "beta": -0.39776413231287217, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.19312211260572965, 0.0], "beta": -0.5621321985576594, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.1958735445702548, 0.0], "beta": -0.1822039739620271, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.19217703406910194, 0.0], "beta": 0.5095158462844451, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "Xp_d20", "pulse_shape": "drag", "parameters": {"amp": [0.18498003577569092, 0.0], "beta": -1.7271414687836277, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.1874590776415591, 0.0], "beta": -1.6693690574326434, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.19777937555634284, 0.0], "beta": 0.009576850646861874, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.1936553121624749, 0.0], "beta": -0.2584595814569481, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Xp_d24", "pulse_shape": "drag", "parameters": {"amp": [0.19566730184242914, 0.0], "beta": 0.5876564795816192, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.19584268451676065, 0.0], "beta": -1.3725638628838261, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.18796921857506915, 0.0], "beta": -2.068601950812954, "duration": 160, "sigma": 40}}]}], "meas_kernel": {"name": "hw_qmfk", "params": {}}, "discriminator": {"name": "hw_qmfk", "params": {}}, "_data": {}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends/auckland/fake_auckland.py b/qiskit/providers/fake_provider/backends/auckland/fake_auckland.py new file mode 100644 index 000000000000..09c87a58da32 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/auckland/fake_auckland.py @@ -0,0 +1,29 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + + +""" +Fake Auckland device (27 qubits). +""" + +import os +from qiskit.providers.fake_provider import fake_backend + + +class FakeAuckland(fake_backend.FakeBackendV2): + """A fake 27 qubit backend.""" + + dirname = os.path.dirname(__file__) + conf_filename = "conf_auckland.json" + props_filename = "props_auckland.json" + defs_filename = "defs_auckland.json" + backend_name = "fake_auckland" diff --git a/qiskit/providers/fake_provider/backends/auckland/props_auckland.json b/qiskit/providers/fake_provider/backends/auckland/props_auckland.json new file mode 100644 index 000000000000..0b421644de01 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/auckland/props_auckland.json @@ -0,0 +1 @@ +{"backend_name": "ibm_auckland", "backend_version": "1.2.13", "last_update_date": "2022-08-07T00:10:30+02:00", "qubits": [[{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 185.60879452101233}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 203.3873865310345}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.932969834248503}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3435652782005706}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.00649999999999995}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0084}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0046000000000000485}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T19:22:39+02:00", "name": "T1", "unit": "us", "value": 191.91778717466812}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 311.0347870409742}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.073818830016074}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3426710646295001}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.010499999999999954}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0134}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007600000000000051}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 146.55965744983163}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 216.16771956277015}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.005777359770017}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3440056310289447}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.015700000000000047}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.016800000000000037}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0146}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 197.3006533165509}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 226.76692957973333}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.897239837230424}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3455128327600226}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.020000000000000018}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.02400000000000002}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.016}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 249.6308619921516}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 248.0231466865006}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.920152233814071}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3440558017922213}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.007300000000000084}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.009800000000000031}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0048}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 276.77496590230874}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 112.27738347580612}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.992825135169387}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34443102179497276}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.008700000000000041}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.007600000000000051}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0098}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 131.6829224781115}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 185.2576515117535}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.0065195107816765}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3431965556031984}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.014899999999999913}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0132}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.016599999999999948}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 99.44557241371763}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 171.31722339071254}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.828442195456001}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34566026967423547}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.008999999999999897}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012599999999999945}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0054}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 138.15027818387014}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 122.83533076305716}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.2036046150867605}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34077965112530917}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.009399999999999964}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0094}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.009399999999999964}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 153.59148121269203}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 192.45471985830045}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.088380267158975}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3412242965845351}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.010299999999999976}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0122}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.008399999999999963}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 179.9787736398023}, {"date": "2022-08-03T07:54:04+02:00", "name": "T2", "unit": "us", "value": 46.51341198955041}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.726887639697103}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34685241030963354}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.009399999999999964}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.013599999999999945}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0052}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-05T13:52:20+02:00", "name": "T1", "unit": "us", "value": 151.41445856648025}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 100.75969029485647}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.055185858571019}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3423374130072936}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.014499999999999957}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.023599999999999954}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0054}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 114.68978131091156}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 209.1126221656678}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.889585658090766}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3474429778779503}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.007199999999999984}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0084}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006000000000000005}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T17:00:19+02:00", "name": "T1", "unit": "us", "value": 204.23387508457154}, {"date": "2022-06-07T08:28:02+02:00", "name": "T2", "unit": "us", "value": 10.858486808918043}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.016776423291821}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3428297303501582}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.006399999999999961}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0066}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006199999999999983}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 179.14556922371932}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 92.65052685276284}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.167086880807076}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3413079687088002}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.00649999999999995}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.008}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0050000000000000044}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 134.209665178656}, {"date": "2022-07-29T08:15:41+02:00", "name": "T2", "unit": "us", "value": 74.6786761122677}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.988481466676313}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34203456485082046}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.05700000000000005}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.10740000000000005}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0066}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 172.29495826057055}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 219.05584870680556}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.969574668860307}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34363136066648026}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.007200000000000095}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0076}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006800000000000028}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 186.8882012456419}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 211.03371059951337}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.02539334125041}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3424199066052747}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.010099999999999998}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0142}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006000000000000005}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 181.78980530472523}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 198.80635278216934}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.787951526032318}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34777607699124186}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.01639999999999997}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.021399999999999975}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0114}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 182.8883125270961}, {"date": "2022-08-04T07:59:20+02:00", "name": "T2", "unit": "us", "value": 22.564604056540958}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.806272301305039}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34581116459755834}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.009200000000000097}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.011600000000000055}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0068}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 145.66337349609904}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 176.79652341554552}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.691888528568098}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.35166032018061555}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.02210000000000001}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0218}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.022399999999999975}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:30:19+02:00", "name": "T1", "unit": "us", "value": 116.2662753662322}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 108.42958248537066}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.046314506003484}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34244801821979387}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.00990000000000002}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.01200000000000001}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0078}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T09:30:24+02:00", "name": "T1", "unit": "us", "value": 242.6083425186171}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 66.12712200760211}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.968365240399085}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3451832999763724}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.015700000000000047}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.024599999999999955}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0068}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 103.82530742207483}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 62.748852570904276}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.867905152838581}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34584637274353996}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.01770000000000005}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.019199999999999995}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0162}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T07:25:44+02:00", "name": "T1", "unit": "us", "value": 155.22204569084647}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 42.61517166537873}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.956013065298386}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3446584404183599}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.13549999999999995}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0216}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.24939999999999996}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T21:32:41+02:00", "name": "T1", "unit": "us", "value": 169.93583821843941}, {"date": "2022-08-06T07:28:57+02:00", "name": "T2", "unit": "us", "value": 186.44024354957577}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 5.0769938518234765}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34196963738220926}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.007200000000000095}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0096}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0048000000000000265}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2022-08-06T09:30:24+02:00", "name": "T1", "unit": "us", "value": 224.9609831018356}, {"date": "2022-08-06T07:27:35+02:00", "name": "T2", "unit": "us", "value": 45.092699948234014}, {"date": "2022-08-07T00:10:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.855869381199309}, {"date": "2022-08-07T00:10:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34517573320543016}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_error", "unit": "", "value": 0.016000000000000014}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0236}, {"date": "2022-08-06T07:18:58+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.008399999999999963}, {"date": "2022-08-06T07:18:58+02:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021880026328880683}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002000019740945689}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0001872656221529755}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00020341034690029013}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021170230294224058}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [5], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00016948213969905196}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id5"}, {"qubits": [6], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0002812176067168515}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id6"}, {"qubits": [7], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002855185577915047}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id7"}, {"qubits": [8], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00025018366287317206}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id8"}, {"qubits": [9], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0003270584596140108}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id9"}, {"qubits": [10], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00028465498652935687}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id10"}, {"qubits": [11], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00131796903588571}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id11"}, {"qubits": [12], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002234876950418797}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id12"}, {"qubits": [13], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0002182982380743669}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id13"}, {"qubits": [14], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002206316947117087}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id14"}, {"qubits": [15], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.026793251448082877}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id15"}, {"qubits": [16], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021054320299783986}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id16"}, {"qubits": [17], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00043340296749003117}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id17"}, {"qubits": [18], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00017900897458784758}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id18"}, {"qubits": [19], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00020232469654586624}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id19"}, {"qubits": [20], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00020406222331752745}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id20"}, {"qubits": [21], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00020751617629921547}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id21"}, {"qubits": [22], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0012604629486799776}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id22"}, {"qubits": [23], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002982221184783166}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id23"}, {"qubits": [24], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00028897590425227523}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id24"}, {"qubits": [25], "gate": "id", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0001542809634462201}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id25"}, {"qubits": [26], "gate": "id", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0006328287104119873}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id26"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [5], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz5"}, {"qubits": [6], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz6"}, {"qubits": [7], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz7"}, {"qubits": [8], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz8"}, {"qubits": [9], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz9"}, {"qubits": [10], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz10"}, {"qubits": [11], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz11"}, {"qubits": [12], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz12"}, {"qubits": [13], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz13"}, {"qubits": [14], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz14"}, {"qubits": [15], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz15"}, {"qubits": [16], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz16"}, {"qubits": [17], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz17"}, {"qubits": [18], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz18"}, {"qubits": [19], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz19"}, {"qubits": [20], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz20"}, {"qubits": [21], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz21"}, {"qubits": [22], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz22"}, {"qubits": [23], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz23"}, {"qubits": [24], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz24"}, {"qubits": [25], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz25"}, {"qubits": [26], "gate": "rz", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz26"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021880026328880683}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002000019740945689}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0001872656221529755}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00020341034690029013}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021170230294224058}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [5], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00016948213969905196}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx5"}, {"qubits": [6], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0002812176067168515}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx6"}, {"qubits": [7], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002855185577915047}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx7"}, {"qubits": [8], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00025018366287317206}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx8"}, {"qubits": [9], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0003270584596140108}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx9"}, {"qubits": [10], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00028465498652935687}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx10"}, {"qubits": [11], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00131796903588571}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx11"}, {"qubits": [12], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002234876950418797}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx12"}, {"qubits": [13], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0002182982380743669}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx13"}, {"qubits": [14], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002206316947117087}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx14"}, {"qubits": [15], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.026793251448082877}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx15"}, {"qubits": [16], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021054320299783986}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx16"}, {"qubits": [17], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00043340296749003117}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx17"}, {"qubits": [18], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00017900897458784758}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx18"}, {"qubits": [19], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00020232469654586624}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx19"}, {"qubits": [20], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00020406222331752745}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx20"}, {"qubits": [21], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00020751617629921547}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx21"}, {"qubits": [22], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0012604629486799776}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx22"}, {"qubits": [23], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002982221184783166}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx23"}, {"qubits": [24], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00028897590425227523}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx24"}, {"qubits": [25], "gate": "sx", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0001542809634462201}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx25"}, {"qubits": [26], "gate": "sx", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0006328287104119873}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx26"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021880026328880683}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002000019740945689}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0001872656221529755}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00020341034690029013}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021170230294224058}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [5], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00016948213969905196}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x5"}, {"qubits": [6], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0002812176067168515}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x6"}, {"qubits": [7], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002855185577915047}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x7"}, {"qubits": [8], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00025018366287317206}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x8"}, {"qubits": [9], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0003270584596140108}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x9"}, {"qubits": [10], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00028465498652935687}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x10"}, {"qubits": [11], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00131796903588571}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x11"}, {"qubits": [12], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002234876950418797}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x12"}, {"qubits": [13], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0002182982380743669}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x13"}, {"qubits": [14], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002206316947117087}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x14"}, {"qubits": [15], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.026793251448082877}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x15"}, {"qubits": [16], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00021054320299783986}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x16"}, {"qubits": [17], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00043340296749003117}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x17"}, {"qubits": [18], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00017900897458784758}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x18"}, {"qubits": [19], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.00020232469654586624}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x19"}, {"qubits": [20], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00020406222331752745}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x20"}, {"qubits": [21], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00020751617629921547}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x21"}, {"qubits": [22], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0012604629486799776}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x22"}, {"qubits": [23], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0002982221184783166}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x23"}, {"qubits": [24], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.00028897590425227523}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x24"}, {"qubits": [25], "gate": "x", "parameters": [{"date": "2022-08-06T07:34:47+02:00", "name": "gate_error", "unit": "", "value": 0.0001542809634462201}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x25"}, {"qubits": [26], "gate": "x", "parameters": [{"date": "2022-08-06T07:30:09+02:00", "name": "gate_error", "unit": "", "value": 0.0006328287104119873}, {"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x26"}, {"qubits": [25, 26], "gate": "cx", "parameters": [{"date": "2022-08-06T10:43:46+02:00", "name": "gate_error", "unit": "", "value": 0.010888756186592435}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx25_26"}, {"qubits": [26, 25], "gate": "cx", "parameters": [{"date": "2022-08-06T10:43:46+02:00", "name": "gate_error", "unit": "", "value": 0.010888756186592435}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx26_25"}, {"qubits": [25, 24], "gate": "cx", "parameters": [{"date": "2022-08-06T10:37:28+02:00", "name": "gate_error", "unit": "", "value": 0.007778898234206827}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx25_24"}, {"qubits": [24, 25], "gate": "cx", "parameters": [{"date": "2022-08-06T10:37:28+02:00", "name": "gate_error", "unit": "", "value": 0.007778898234206827}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx24_25"}, {"qubits": [21, 23], "gate": "cx", "parameters": [{"date": "2022-08-06T10:31:36+02:00", "name": "gate_error", "unit": "", "value": 0.014200081364299816}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 540.4444444444445}], "name": "cx21_23"}, {"qubits": [23, 21], "gate": "cx", "parameters": [{"date": "2022-08-06T10:31:36+02:00", "name": "gate_error", "unit": "", "value": 0.014200081364299816}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 576}], "name": "cx23_21"}, {"qubits": [18, 15], "gate": "cx", "parameters": [{"date": "2022-08-06T10:25:15+02:00", "name": "gate_error", "unit": "", "value": 0.06852254938140181}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 618.6666666666666}], "name": "cx18_15"}, {"qubits": [15, 18], "gate": "cx", "parameters": [{"date": "2022-08-06T10:25:15+02:00", "name": "gate_error", "unit": "", "value": 0.06852254938140181}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 654.2222222222222}], "name": "cx15_18"}, {"qubits": [14, 16], "gate": "cx", "parameters": [{"date": "2022-08-06T10:14:15+02:00", "name": "gate_error", "unit": "", "value": 0.005105730037337108}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx14_16"}, {"qubits": [16, 14], "gate": "cx", "parameters": [{"date": "2022-08-06T10:14:15+02:00", "name": "gate_error", "unit": "", "value": 0.005105730037337108}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx16_14"}, {"qubits": [22, 19], "gate": "cx", "parameters": [{"date": "2022-08-06T10:07:00+02:00", "name": "gate_error", "unit": "", "value": 0.014797807102267968}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 554.6666666666666}], "name": "cx22_19"}, {"qubits": [19, 22], "gate": "cx", "parameters": [{"date": "2022-08-06T10:07:00+02:00", "name": "gate_error", "unit": "", "value": 0.014797807102267968}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 590.2222222222222}], "name": "cx19_22"}, {"qubits": [13, 12], "gate": "cx", "parameters": [{"date": "2022-08-06T09:54:15+02:00", "name": "gate_error", "unit": "", "value": 0.004913140935051408}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx13_12"}, {"qubits": [12, 13], "gate": "cx", "parameters": [{"date": "2022-08-06T09:54:15+02:00", "name": "gate_error", "unit": "", "value": 0.004913140935051408}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx12_13"}, {"qubits": [23, 24], "gate": "cx", "parameters": [{"date": "2022-08-06T09:54:15+02:00", "name": "gate_error", "unit": "", "value": 0.007393882013382785}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx23_24"}, {"qubits": [24, 23], "gate": "cx", "parameters": [{"date": "2022-08-06T09:54:15+02:00", "name": "gate_error", "unit": "", "value": 0.007393882013382785}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx24_23"}, {"qubits": [10, 12], "gate": "cx", "parameters": [{"date": "2022-08-06T09:46:31+02:00", "name": "gate_error", "unit": "", "value": 0.008323088754978475}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 704}], "name": "cx10_12"}, {"qubits": [12, 10], "gate": "cx", "parameters": [{"date": "2022-08-06T09:46:31+02:00", "name": "gate_error", "unit": "", "value": 0.008323088754978475}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 739.5555555555555}], "name": "cx12_10"}, {"qubits": [6, 7], "gate": "cx", "parameters": [{"date": "2022-08-06T09:33:55+02:00", "name": "gate_error", "unit": "", "value": 0.015428428235981312}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 640}], "name": "cx6_7"}, {"qubits": [7, 6], "gate": "cx", "parameters": [{"date": "2022-08-06T09:33:55+02:00", "name": "gate_error", "unit": "", "value": 0.015428428235981312}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 675.5555555555555}], "name": "cx7_6"}, {"qubits": [16, 19], "gate": "cx", "parameters": [{"date": "2022-08-06T09:33:55+02:00", "name": "gate_error", "unit": "", "value": 0.00923554491186529}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 711.1111111111111}], "name": "cx16_19"}, {"qubits": [19, 16], "gate": "cx", "parameters": [{"date": "2022-08-06T09:33:55+02:00", "name": "gate_error", "unit": "", "value": 0.00923554491186529}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 746.6666666666666}], "name": "cx19_16"}, {"qubits": [4, 1], "gate": "cx", "parameters": [{"date": "2022-08-06T09:17:08+02:00", "name": "gate_error", "unit": "", "value": 0.009169078593236957}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx4_1"}, {"qubits": [1, 4], "gate": "cx", "parameters": [{"date": "2022-08-06T09:17:08+02:00", "name": "gate_error", "unit": "", "value": 0.009169078593236957}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "cx1_4"}, {"qubits": [9, 8], "gate": "cx", "parameters": [{"date": "2022-08-06T09:17:08+02:00", "name": "gate_error", "unit": "", "value": 0.007893663920108651}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx9_8"}, {"qubits": [8, 9], "gate": "cx", "parameters": [{"date": "2022-08-06T09:17:08+02:00", "name": "gate_error", "unit": "", "value": 0.007893663920108651}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 504.88888888888886}], "name": "cx8_9"}, {"qubits": [17, 18], "gate": "cx", "parameters": [{"date": "2022-08-06T09:17:08+02:00", "name": "gate_error", "unit": "", "value": 0.012481714175816533}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx17_18"}, {"qubits": [18, 17], "gate": "cx", "parameters": [{"date": "2022-08-06T09:17:08+02:00", "name": "gate_error", "unit": "", "value": 0.012481714175816533}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx18_17"}, {"qubits": [19, 20], "gate": "cx", "parameters": [{"date": "2022-08-06T09:17:08+02:00", "name": "gate_error", "unit": "", "value": 0.006258095227613225}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx19_20"}, {"qubits": [20, 19], "gate": "cx", "parameters": [{"date": "2022-08-06T09:17:08+02:00", "name": "gate_error", "unit": "", "value": 0.006258095227613225}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx20_19"}, {"qubits": [8, 11], "gate": "cx", "parameters": [{"date": "2022-08-06T09:10:46+02:00", "name": "gate_error", "unit": "", "value": 0.013458530315682754}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx8_11"}, {"qubits": [11, 8], "gate": "cx", "parameters": [{"date": "2022-08-06T09:10:46+02:00", "name": "gate_error", "unit": "", "value": 0.013458530315682754}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx11_8"}, {"qubits": [22, 25], "gate": "cx", "parameters": [{"date": "2022-08-06T09:10:46+02:00", "name": "gate_error", "unit": "", "value": 0.011122577530485622}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx22_25"}, {"qubits": [25, 22], "gate": "cx", "parameters": [{"date": "2022-08-06T09:10:46+02:00", "name": "gate_error", "unit": "", "value": 0.011122577530485622}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx25_22"}, {"qubits": [14, 11], "gate": "cx", "parameters": [{"date": "2022-08-06T09:03:56+02:00", "name": "gate_error", "unit": "", "value": 0.010116150730881762}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx14_11"}, {"qubits": [11, 14], "gate": "cx", "parameters": [{"date": "2022-08-06T09:03:56+02:00", "name": "gate_error", "unit": "", "value": 0.010116150730881762}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx11_14"}, {"qubits": [21, 18], "gate": "cx", "parameters": [{"date": "2022-08-06T09:03:56+02:00", "name": "gate_error", "unit": "", "value": 0.00675388847150174}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx21_18"}, {"qubits": [18, 21], "gate": "cx", "parameters": [{"date": "2022-08-06T09:03:56+02:00", "name": "gate_error", "unit": "", "value": 0.00675388847150174}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx18_21"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2022-08-06T08:57:36+02:00", "name": "gate_error", "unit": "", "value": 0.013043220746233264}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 1528.888888888889}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2022-08-06T08:57:36+02:00", "name": "gate_error", "unit": "", "value": 0.013043220746233264}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 1564.4444444444443}], "name": "cx1_0"}, {"qubits": [4, 7], "gate": "cx", "parameters": [{"date": "2022-08-06T08:51:10+02:00", "name": "gate_error", "unit": "", "value": 0.00557549019355702}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 195.55555555555554}], "name": "cx4_7"}, {"qubits": [7, 4], "gate": "cx", "parameters": [{"date": "2022-08-06T08:51:10+02:00", "name": "gate_error", "unit": "", "value": 0.00557549019355702}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 266.66666666666663}], "name": "cx7_4"}, {"qubits": [14, 13], "gate": "cx", "parameters": [{"date": "2022-08-06T08:40:32+02:00", "name": "gate_error", "unit": "", "value": 0.005516508431138684}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 359.1111111111111}], "name": "cx14_13"}, {"qubits": [13, 14], "gate": "cx", "parameters": [{"date": "2022-08-06T08:40:32+02:00", "name": "gate_error", "unit": "", "value": 0.005516508431138684}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 430.2222222222222}], "name": "cx13_14"}, {"qubits": [7, 10], "gate": "cx", "parameters": [{"date": "2022-08-06T08:29:32+02:00", "name": "gate_error", "unit": "", "value": 0.008420175217078107}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 284.44444444444446}], "name": "cx7_10"}, {"qubits": [10, 7], "gate": "cx", "parameters": [{"date": "2022-08-06T08:29:32+02:00", "name": "gate_error", "unit": "", "value": 0.008420175217078107}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx10_7"}, {"qubits": [8, 5], "gate": "cx", "parameters": [{"date": "2022-08-06T08:29:32+02:00", "name": "gate_error", "unit": "", "value": 0.005065589309312529}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 252.44444444444443}], "name": "cx8_5"}, {"qubits": [5, 8], "gate": "cx", "parameters": [{"date": "2022-08-06T08:29:32+02:00", "name": "gate_error", "unit": "", "value": 0.005065589309312529}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 323.55555555555554}], "name": "cx5_8"}, {"qubits": [5, 3], "gate": "cx", "parameters": [{"date": "2022-08-06T08:15:32+02:00", "name": "gate_error", "unit": "", "value": 0.005391639678133248}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 206.2222222222222}], "name": "cx5_3"}, {"qubits": [3, 5], "gate": "cx", "parameters": [{"date": "2022-08-06T08:15:32+02:00", "name": "gate_error", "unit": "", "value": 0.005391639678133248}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 277.3333333333333}], "name": "cx3_5"}, {"qubits": [2, 3], "gate": "cx", "parameters": [{"date": "2022-08-06T08:03:44+02:00", "name": "gate_error", "unit": "", "value": 0.003958146171840371}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 224}], "name": "cx2_3"}, {"qubits": [3, 2], "gate": "cx", "parameters": [{"date": "2022-08-06T08:03:44+02:00", "name": "gate_error", "unit": "", "value": 0.003958146171840371}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 295.1111111111111}], "name": "cx3_2"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2022-08-06T07:48:44+02:00", "name": "gate_error", "unit": "", "value": 0.006523661030017586}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 170.66666666666666}], "name": "cx1_2"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2022-08-06T07:48:44+02:00", "name": "gate_error", "unit": "", "value": 0.006523661030017586}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 241.77777777777777}], "name": "cx2_1"}, {"qubits": [15, 12], "gate": "cx", "parameters": [{"date": "2022-08-05T16:44:14+02:00", "name": "gate_error", "unit": "", "value": 0.10503976808758601}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 554.6666666666666}], "name": "cx15_12"}, {"qubits": [12, 15], "gate": "cx", "parameters": [{"date": "2022-08-05T16:44:14+02:00", "name": "gate_error", "unit": "", "value": 0.10503976808758601}, {"date": "2022-08-04T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 590.2222222222222}], "name": "cx12_15"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 970.6666666666666}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset4"}, {"qubits": [5], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset5"}, {"qubits": [6], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset6"}, {"qubits": [7], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset7"}, {"qubits": [8], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 1059.5555555555554}], "name": "reset8"}, {"qubits": [9], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset9"}, {"qubits": [10], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 970.6666666666666}], "name": "reset10"}, {"qubits": [11], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 1059.5555555555554}], "name": "reset11"}, {"qubits": [12], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset12"}, {"qubits": [13], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset13"}, {"qubits": [14], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 1059.5555555555554}], "name": "reset14"}, {"qubits": [15], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset15"}, {"qubits": [16], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset16"}, {"qubits": [17], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset17"}, {"qubits": [18], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset18"}, {"qubits": [19], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset19"}, {"qubits": [20], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset20"}, {"qubits": [21], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset21"}, {"qubits": [22], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset22"}, {"qubits": [23], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset23"}, {"qubits": [24], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset24"}, {"qubits": [25], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset25"}, {"qubits": [26], "gate": "reset", "parameters": [{"date": "2022-08-07T00:10:30+02:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "reset26"}], "general": [{"date": "2022-08-07T00:10:30+02:00", "name": "jq_1213", "unit": "GHz", "value": 0.0019456069245372082}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1213", "unit": "GHz", "value": -5.1108690530230645e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1416", "unit": "GHz", "value": 0.0019590447098561145}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1416", "unit": "GHz", "value": -6.781082617438306e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_89", "unit": "GHz", "value": 0.0020425676371384326}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_89", "unit": "GHz", "value": -5.535859802255023e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1718", "unit": "GHz", "value": 0.0019233002853951161}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1718", "unit": "GHz", "value": -8.283239041462075e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1114", "unit": "GHz", "value": 0.0019681191833032033}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1114", "unit": "GHz", "value": -5.092067320402246e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1012", "unit": "GHz", "value": 0.0018592347365043993}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1012", "unit": "GHz", "value": -5.0866169999292825e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1314", "unit": "GHz", "value": 0.0020467432323753006}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1314", "unit": "GHz", "value": -6.1015373100156786e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_710", "unit": "GHz", "value": 0.001791947317750806}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_710", "unit": "GHz", "value": -4.054880500567972e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1619", "unit": "GHz", "value": 0.0018718484751334308}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1619", "unit": "GHz", "value": -5.2477218850361653e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1215", "unit": "GHz", "value": 0.001774420794841084}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1215", "unit": "GHz", "value": -3.99657461548514e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_2225", "unit": "GHz", "value": 0.001947306694963195}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_2225", "unit": "GHz", "value": -4.92765864178536e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_2324", "unit": "GHz", "value": 0.0019112776403240569}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_2324", "unit": "GHz", "value": -4.553161628440803e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_811", "unit": "GHz", "value": 0.001997752505569637}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_811", "unit": "GHz", "value": -5.790745444119757e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_01", "unit": "GHz", "value": 0.0019646143477702613}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_01", "unit": "GHz", "value": -5.433221318825766e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_12", "unit": "GHz", "value": 0.001967722822148077}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_12", "unit": "GHz", "value": -4.705070763885265e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1920", "unit": "GHz", "value": 0.0017299974630144888}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1920", "unit": "GHz", "value": -3.9014338931659705e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_67", "unit": "GHz", "value": 0.001926536976033481}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_67", "unit": "GHz", "value": -5.907208567885985e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_2425", "unit": "GHz", "value": 0.001995899614424734}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_2425", "unit": "GHz", "value": -5.322129974934471e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1821", "unit": "GHz", "value": 0.001962812189755419}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1821", "unit": "GHz", "value": -0.00010499641136639357}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_47", "unit": "GHz", "value": 0.0019226903713424417}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_47", "unit": "GHz", "value": -4.6079630885084277e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_35", "unit": "GHz", "value": 0.0019750025537801693}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_35", "unit": "GHz", "value": -4.923926994356618e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_2123", "unit": "GHz", "value": 0.001980143956842632}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_2123", "unit": "GHz", "value": -6.303225338278013e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_58", "unit": "GHz", "value": 0.002068380265393128}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_58", "unit": "GHz", "value": -8.160504170965463e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_14", "unit": "GHz", "value": 0.0019062758023137428}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_14", "unit": "GHz", "value": -5.318233950755198e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_23", "unit": "GHz", "value": 0.0019404825805489961}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_23", "unit": "GHz", "value": -4.8494320189534805e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1922", "unit": "GHz", "value": 0.001933795780524435}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1922", "unit": "GHz", "value": -5.6072449818797066e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_1518", "unit": "GHz", "value": 0.0018542680082031012}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_1518", "unit": "GHz", "value": -6.103480090767763e-05}, {"date": "2022-08-07T00:10:30+02:00", "name": "jq_2526", "unit": "GHz", "value": 0.0019338160739984253}, {"date": "2022-08-07T00:10:30+02:00", "name": "zz_2526", "unit": "GHz", "value": -7.504907986793877e-05}]} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/fake_provider.py b/qiskit/providers/fake_provider/fake_provider.py index 19bac69c6a9b..8fbb1d27abee 100644 --- a/qiskit/providers/fake_provider/fake_provider.py +++ b/qiskit/providers/fake_provider/fake_provider.py @@ -91,6 +91,7 @@ def __init__(self): FakeAlmadenV2(), FakeArmonkV2(), FakeAthensV2(), + FakeAuckland(), FakeBelemV2(), FakeBoeblingenV2(), FakeBogotaV2(), diff --git a/releasenotes/notes/fake_auckland-deadbeef.yaml b/releasenotes/notes/fake_auckland-deadbeef.yaml new file mode 100644 index 000000000000..bad62fb56cd7 --- /dev/null +++ b/releasenotes/notes/fake_auckland-deadbeef.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The fake backend :class:`~FakeAuckland` was added with the information + from IBM Quantum `ibm_auckland` system. From 5c19a1f34935cc0a230878fc67539af59cc0ab2a Mon Sep 17 00:00:00 2001 From: ElePT <57907331+ElePT@users.noreply.github.com> Date: Tue, 20 Sep 2022 15:11:14 +0200 Subject: [PATCH 27/56] Remove param. test for `ComputeUncompute` (#8773) * Remove test * Fix lint --- .../test_compute_uncompute.py | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/test/python/algorithms/state_fidelities/test_compute_uncompute.py b/test/python/algorithms/state_fidelities/test_compute_uncompute.py index d4a605dbb964..cfadd0ba3a45 100644 --- a/test/python/algorithms/state_fidelities/test_compute_uncompute.py +++ b/test/python/algorithms/state_fidelities/test_compute_uncompute.py @@ -21,7 +21,6 @@ from qiskit.primitives import Sampler from qiskit.algorithms.state_fidelities import ComputeUncompute from qiskit.test import QiskitTestCase -from qiskit import QiskitError class TestComputeUncompute(QiskitTestCase): @@ -138,34 +137,6 @@ def test_circuit_mismatch(self): ) job.result() - def test_param_mismatch(self): - """test for fidelity with different number of left/right parameters that - do not match the circuits'.""" - - fidelity = ComputeUncompute(self._sampler) - n = len(self._left_params) - with self.assertRaises(QiskitError): - job = fidelity.run( - [self._circuit[0]] * n, - [self._circuit[1]] * n, - self._left_params, - self._right_params[:-2], - ) - job.result() - - with self.assertRaises(QiskitError): - job = fidelity.run( - [self._circuit[0]] * n, - [self._circuit[1]] * n, - self._left_params[:-2], - self._right_params[:-2], - ) - job.result() - - with self.assertRaises(ValueError): - job = fidelity.run([self._circuit[0]] * n, [self._circuit[1]] * n) - job.result() - def test_asymmetric_params(self): """test for fidelity when the 2 circuits have different number of left/right parameters.""" From c0f5ae02a912b310c71d455b485264abb923852b Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Tue, 20 Sep 2022 13:35:45 -0400 Subject: [PATCH 28/56] Fix handling of holes in physical bits list in Layout (#8767) * Fix handling of holes in physical bits list in Layout Previously the behavior of `Layout.add(virtual)` would attempt to select an available physical bit to pair for the layout. However, the manner in which this selection was done was buggy and it would potentially skip over available physical bits on the device and instead add a new physical bit to the layout. This had unintended consequences for layouts that added bits in higher numbers first. This commit fixes this behavior by first checking that we've exhausted all available physical bits from 0 to max bit in layout. Then if there are no holes in the physical bits in the layout it will add a bit to the top. Fixes #8667 * Add release note and clarify docstring * Apply suggestions from code review Co-authored-by: Jake Lishman Co-authored-by: Jake Lishman Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/transpiler/layout.py | 20 ++++--- .../register-add-fix-e29fa2ee47aa6d05.yaml | 26 ++++++++++ test/python/transpiler/test_layout.py | 2 +- test/python/transpiler/test_vf2_layout.py | 52 +++++++++++++++++-- 4 files changed, 90 insertions(+), 10 deletions(-) create mode 100644 releasenotes/notes/register-add-fix-e29fa2ee47aa6d05.yaml diff --git a/qiskit/transpiler/layout.py b/qiskit/transpiler/layout.py index 139b566734d4..5b00ca10abbd 100644 --- a/qiskit/transpiler/layout.py +++ b/qiskit/transpiler/layout.py @@ -157,18 +157,26 @@ def copy(self): def add(self, virtual_bit, physical_bit=None): """ Adds a map element between `bit` and `physical_bit`. If `physical_bit` is not - defined, `bit` will be mapped to a new physical bit (extending the length of the - layout by one.) + defined, `bit` will be mapped to a new physical bit. Args: virtual_bit (tuple): A (qu)bit. For example, (QuantumRegister(3, 'qr'), 2). physical_bit (int): A physical bit. For example, 3. """ if physical_bit is None: - physical_candidate = len(self) - while physical_candidate in self._p2v: - physical_candidate += 1 - physical_bit = physical_candidate + if len(self._p2v) == 0: + physical_bit = 0 + else: + max_physical = max(self._p2v) + # Fill any gaps in the existing bits + for physical_candidate in range(max_physical): + if physical_candidate not in self._p2v: + physical_bit = physical_candidate + break + # If there are no free bits in the allocated physical bits add new ones + else: + physical_bit = max_physical + 1 + self[virtual_bit] = physical_bit def add_register(self, reg): diff --git a/releasenotes/notes/register-add-fix-e29fa2ee47aa6d05.yaml b/releasenotes/notes/register-add-fix-e29fa2ee47aa6d05.yaml new file mode 100644 index 000000000000..41bad77a4ef5 --- /dev/null +++ b/releasenotes/notes/register-add-fix-e29fa2ee47aa6d05.yaml @@ -0,0 +1,26 @@ +--- +upgrade: + - | + The :meth:`.Layout.add` behavior when not specifying a ``physical_bit`` + has changed from previous releases. In previous releases, a new physical + bit would be added based on the length of the :class:`~.Layout` object. For + example if you had a :class:`~.Layout` with the physical bits 1 and 3 + successive calls to :meth:`~.Layout.add` would add physical bits 2, 4, 5, 6, + etc. While if the physical bits were 2 and 3 then successive calls would + add 4, 5, 6, 7, etc. This has changed so that instead :meth:`.Layout.add` + will first add any missing physical bits between 0 and the max physical bit + contained in the :class:`~.Layout`. So for the 1 and 3 example it now + adds 0, 2, 4, 5 and for the 2 and 3 example it adds 0, 1, 4, 5 to the + :class:`~.Layout`. This change was made for both increased predictability + of the outcome, and also to fix a class of bugs caused by the unexpected + behavior. As physical bits on a backend always are contiguous sequences from + 0 to :math:`n` adding new bits when there are still unused physical bits + could potentially cause the layout to use more bits than available on the + backend. If you desire the previous behavior, you can specify the desired + physical bit manually when calling :meth:`.Layout.add`. +fixes: + - | + Fixed the behavior of :meth:`.Layout.add` which was potentially causing the + output of :meth:`~.transpile` to be invalid and contain more Qubits than + what was available on the target backend. Fixed: + `#8667 `__ diff --git a/test/python/transpiler/test_layout.py b/test/python/transpiler/test_layout.py index a01c757834fb..cf034b4d70ea 100644 --- a/test/python/transpiler/test_layout.py +++ b/test/python/transpiler/test_layout.py @@ -217,7 +217,7 @@ def test_set_virtual_without_physical(self): layout.add(self.qr[1], 2) layout.add(self.qr[0]) - self.assertDictEqual(layout.get_virtual_bits(), {self.qr[0]: 1, self.qr[1]: 2}) + self.assertDictEqual(layout.get_virtual_bits(), {self.qr[0]: 0, self.qr[1]: 2}) def test_layout_combine_smaller(self): """combine_into_edge_map() method with another_layout is smaller and raises an Error""" diff --git a/test/python/transpiler/test_vf2_layout.py b/test/python/transpiler/test_vf2_layout.py index 57eaa09a0330..4cb4b44871f2 100644 --- a/test/python/transpiler/test_vf2_layout.py +++ b/test/python/transpiler/test_vf2_layout.py @@ -13,10 +13,12 @@ """Test the VF2Layout pass""" import unittest +from math import pi + import numpy import retworkx -from qiskit import QuantumRegister, QuantumCircuit +from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister from qiskit.transpiler import CouplingMap, Target, TranspilerError from qiskit.transpiler.passes.layout.vf2_layout import VF2Layout, VF2LayoutStopReason from qiskit.converters import circuit_to_dag @@ -26,8 +28,11 @@ FakeRueschlikon, FakeManhattan, FakeYorktown, + FakeGuadalupeV2, ) from qiskit.circuit.library import GraphState, CXGate +from qiskit.transpiler import PassManager +from qiskit.transpiler.preset_passmanagers.common import generate_embed_passmanager class LayoutTestCase(QiskitTestCase): @@ -497,7 +502,7 @@ def test_reasonable_limits_for_simple_layouts(self): "DEBUG:qiskit.transpiler.passes.layout.vf2_layout:Trial 159 is >= configured max trials 159", cm.output, ) - self.assertEqual(set(property_set["layout"].get_physical_bits()), {49, 40, 58, 3, 4}) + self.assertEqual(set(property_set["layout"].get_physical_bits()), {49, 40, 58, 0, 1}) def test_no_limits_with_negative(self): """Test that we're not enforcing a trial limit if set to negative.""" @@ -518,7 +523,48 @@ def test_no_limits_with_negative(self): vf2_pass(qc, property_set) for output in cm.output: self.assertNotIn("is >= configured max trials", output) - self.assertEqual(set(property_set["layout"].get_physical_bits()), {3, 1, 2}) + self.assertEqual(set(property_set["layout"].get_physical_bits()), {3, 1, 0}) + + def test_qregs_valid_layout_output(self): + """Test that vf2 layout doesn't add extra qubits. + + Reproduce from https://github.com/Qiskit/qiskit-terra/issues/8667 + """ + backend = FakeGuadalupeV2() + qr = QuantumRegister(16, name="qr") + cr = ClassicalRegister(5) + qc = QuantumCircuit(qr, cr) + qc.rz(pi / 2, qr[0]) + qc.sx(qr[0]) + qc.sx(qr[1]) + qc.rz(-pi / 4, qr[1]) + qc.sx(qr[1]) + qc.rz(pi / 2, qr[1]) + qc.rz(2.8272143, qr[0]) + qc.rz(0.43324854, qr[1]) + qc.sx(qr[1]) + qc.rz(-0.95531662, qr[7]) + qc.sx(qr[7]) + qc.rz(3 * pi / 4, qr[7]) + qc.barrier([qr[1], qr[10], qr[4], qr[0], qr[7]]) + vf2_pass = VF2Layout( + seed=12345, + target=backend.target, + ) + vf2_pass(qc) + self.assertEqual(len(vf2_pass.property_set["layout"].get_physical_bits()), 16) + self.assertEqual(len(vf2_pass.property_set["layout"].get_virtual_bits()), 16) + pm = PassManager( + [ + VF2Layout( + seed=12345, + target=backend.target, + ) + ] + ) + pm += generate_embed_passmanager(backend.coupling_map) + res = pm.run(qc) + self.assertEqual(res.num_qubits, 16) if __name__ == "__main__": From 4f650581f2395ecc4c46c9259bbf35fc82955a26 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Tue, 20 Sep 2022 20:55:36 +0200 Subject: [PATCH 29/56] adding FakeGeneva (#8322) * conf_geneva * reno * adding to the test * order * calibration data 2022-07-12 15:40:30+02:00 * calibration from 2022-06-24 23:00:30+02:00 * Update releasenotes/notes/ibm_geneva-5b1e9308dc302e2e.yaml * remove v1 * reno new Co-authored-by: Junye Huang Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/providers/fake_provider/__init__.py | 1 + .../fake_provider/backends/__init__.py | 1 + .../fake_provider/backends/geneva/__init__.py | 15 ++++++++++ .../backends/geneva/conf_geneva.json | 1 + .../backends/geneva/defs_geneva.json | 1 + .../backends/geneva/fake_geneva.py | 29 +++++++++++++++++++ .../backends/geneva/props_geneva.json | 1 + .../providers/fake_provider/fake_provider.py | 1 + .../notes/ibm_geneva-34b848b0a49278dc.yaml | 4 +++ 9 files changed, 54 insertions(+) create mode 100644 qiskit/providers/fake_provider/backends/geneva/__init__.py create mode 100644 qiskit/providers/fake_provider/backends/geneva/conf_geneva.json create mode 100644 qiskit/providers/fake_provider/backends/geneva/defs_geneva.json create mode 100644 qiskit/providers/fake_provider/backends/geneva/fake_geneva.py create mode 100644 qiskit/providers/fake_provider/backends/geneva/props_geneva.json create mode 100644 releasenotes/notes/ibm_geneva-34b848b0a49278dc.yaml diff --git a/qiskit/providers/fake_provider/__init__.py b/qiskit/providers/fake_provider/__init__.py index 72112970aa3a..6885a958f609 100644 --- a/qiskit/providers/fake_provider/__init__.py +++ b/qiskit/providers/fake_provider/__init__.py @@ -121,6 +121,7 @@ FakeCambridgeV2 FakeCasablancaV2 FakeEssexV2 + FakeGeneva FakeGuadalupeV2 FakeHanoiV2 FakeJakartaV2 diff --git a/qiskit/providers/fake_provider/backends/__init__.py b/qiskit/providers/fake_provider/backends/__init__.py index 66acc8624ff5..fda30423f93b 100644 --- a/qiskit/providers/fake_provider/backends/__init__.py +++ b/qiskit/providers/fake_provider/backends/__init__.py @@ -29,6 +29,7 @@ from .cambridge import FakeCambridgeV2 from .casablanca import FakeCasablancaV2 from .essex import FakeEssexV2 +from .geneva import FakeGeneva from .guadalupe import FakeGuadalupeV2 from .hanoi import FakeHanoiV2 from .jakarta import FakeJakartaV2 diff --git a/qiskit/providers/fake_provider/backends/geneva/__init__.py b/qiskit/providers/fake_provider/backends/geneva/__init__.py new file mode 100644 index 000000000000..b9b83d71b340 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/geneva/__init__.py @@ -0,0 +1,15 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Fake Geneva device (27 qubits)""" + +from .fake_geneva import FakeGeneva diff --git a/qiskit/providers/fake_provider/backends/geneva/conf_geneva.json b/qiskit/providers/fake_provider/backends/geneva/conf_geneva.json new file mode 100644 index 000000000000..93a2c507389f --- /dev/null +++ b/qiskit/providers/fake_provider/backends/geneva/conf_geneva.json @@ -0,0 +1 @@ +{"backend_name": "ibm_geneva", "backend_version": "1.0.0", "n_qubits": 27, "basis_gates": ["id", "rz", "sx", "x", "cx", "reset"], "gates": [{"name": "id", "parameters": [], "qasm_def": "gate id q { U(0, 0, 0) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 4], [2, 1], [2, 3], [3, 2], [3, 5], [4, 1], [4, 7], [5, 3], [5, 8], [6, 7], [7, 4], [7, 6], [7, 10], [8, 5], [8, 9], [8, 11], [9, 8], [10, 7], [10, 12], [11, 8], [11, 14], [12, 10], [12, 13], [12, 15], [13, 12], [13, 14], [14, 11], [14, 13], [14, 16], [15, 12], [15, 18], [16, 14], [16, 19], [17, 18], [18, 15], [18, 17], [18, 21], [19, 16], [19, 20], [19, 22], [20, 19], [21, 18], [21, 23], [22, 19], [22, 25], [23, 21], [23, 24], [24, 23], [24, 25], [25, 22], [25, 24], [25, 26], [26, 25]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": true, "memory": true, "max_shots": 100000, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 4], [2, 1], [2, 3], [3, 2], [3, 5], [4, 1], [4, 7], [5, 3], [5, 8], [6, 7], [7, 4], [7, 6], [7, 10], [8, 5], [8, 9], [8, 11], [9, 8], [10, 7], [10, 12], [11, 8], [11, 14], [12, 10], [12, 13], [12, 15], [13, 12], [13, 14], [14, 11], [14, 13], [14, 16], [15, 12], [15, 18], [16, 14], [16, 19], [17, 18], [18, 15], [18, 17], [18, 21], [19, 16], [19, 20], [19, 22], [20, 19], [21, 18], [21, 23], [22, 19], [22, 25], [23, 21], [23, 24], [24, 23], [24, 25], [25, 22], [25, 24], [25, 26], [26, 25]], "dynamic_reprate_enabled": true, "supported_instructions": ["sx", "u2", "delay", "rz", "u1", "u3", "x", "play", "reset", "cx", "id", "acquire", "setf", "shiftf", "measure"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 300, "sample_name": "family: Falcon, revision: 8", "n_registers": 1, "credits_required": true, "online_date": "2022-03-25T04:00:00+00:00", "description": "27 qubit device", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Falcon", "revision": 8}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "clops": 1950, "measure_esp_enabled": false, "multi_meas_enabled": true, "parallel_compilation": false, "quantum_volume": 32, "qubit_channel_mapping": [["u0", "m0", "u1", "d0"], ["u2", "u8", "d1", "u1", "u3", "u0", "m1", "u4"], ["u2", "u5", "u6", "d2", "m2", "u4"], ["u5", "u6", "u7", "u10", "m3", "d3"], ["m4", "u8", "u3", "u13", "u9", "d4"], ["u16", "d5", "u7", "u10", "u11", "m5"], ["u14", "m6", "u12", "d6"], ["u14", "u12", "m7", "u15", "u13", "d7", "u9", "u20"], ["u16", "u17", "u22", "m8", "u19", "u18", "u11", "d8"], ["u19", "m9", "u17", "d9"], ["u21", "u15", "d10", "u24", "m10", "u20"], ["u23", "m11", "u18", "u22", "d11", "u29"], ["m12", "u21", "u32", "d12", "u26", "u25", "u27", "u24"], ["u30", "m13", "u25", "u28", "u27", "d13"], ["u23", "u30", "u31", "u34", "m14", "u28", "d14", "u29"], ["d15", "u32", "m15", "u26", "u33", "u37"], ["u31", "u34", "u35", "d16", "m16", "u40"], ["u36", "m17", "u38", "d17"], ["d18", "u38", "u36", "u33", "u39", "u37", "u44", "m18"], ["u46", "u35", "d19", "u42", "u40", "m19", "u43", "u41"], ["m20", "d20", "u43", "u41"], ["u45", "d21", "u39", "u44", "m21", "u48"], ["u46", "m22", "d22", "u42", "u47", "u52"], ["u45", "d23", "u49", "m23", "u50", "u48"], ["u49", "u53", "u51", "d24", "u50", "m24"], ["u53", "u51", "u54", "u47", "m25", "d25", "u52", "u55"], ["u54", "d26", "m26", "u55"]], "supported_features": ["qobj"], "timing_constraints": {"acquire_alignment": 16, "granularity": 16, "min_length": 64, "pulse_alignment": 16}, "uchannels_enabled": true, "url": "None", "input_allowed": ["job", "runtime"], "allow_object_storage": true, "pulse_num_channels": 9, "pulse_num_qubits": 3, "live_data": false, "n_uchannels": 56, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 6, "scale": [1.0, 0.0]}], [{"q": 10, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 9, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 10, "scale": [1.0, 0.0]}], [{"q": 13, "scale": [1.0, 0.0]}], [{"q": 15, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 13, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 19, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 15, "scale": [1.0, 0.0]}], [{"q": 17, "scale": [1.0, 0.0]}], [{"q": 21, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 20, "scale": [1.0, 0.0]}], [{"q": 22, "scale": [1.0, 0.0]}], [{"q": 19, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 23, "scale": [1.0, 0.0]}], [{"q": 19, "scale": [1.0, 0.0]}], [{"q": 25, "scale": [1.0, 0.0]}], [{"q": 21, "scale": [1.0, 0.0]}], [{"q": 24, "scale": [1.0, 0.0]}], [{"q": 23, "scale": [1.0, 0.0]}], [{"q": 25, "scale": [1.0, 0.0]}], [{"q": 22, "scale": [1.0, 0.0]}], [{"q": 24, "scale": [1.0, 0.0]}], [{"q": 26, "scale": [1.0, 0.0]}], [{"q": 25, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.325743015579376, 5.325743015579376], [4.172871363094885, 5.172871363094885], [4.0806985233664514, 5.080698523366451], [4.174620357115893, 5.174620357115893], [4.23759625812113, 5.23759625812113], [4.299251490561833, 5.299251490561833], [4.379485498491239, 5.379485498491239], [4.118011385738175, 5.118011385738175], [4.353242154753866, 5.353242154753866], [4.258986716382243, 5.258986716382243], [4.35903608247861, 5.35903608247861], [4.199123486138225, 5.199123486138225], [4.054282232918502, 5.054282232918502], [4.1779862119008, 5.1779862119008], [4.125329967321016, 5.125329967321017], [4.161899932759396, 5.161899932759396], [4.0906289547318675, 5.090628954731868], [4.110081243925168, 5.110081243925168], [4.195555575529053, 5.1955555755290534], [4.2080983138938945, 5.2080983138938945], [4.330157407178421, 5.330157407178421], [4.050140122828701, 5.050140122828702], [4.1289346019454385, 5.1289346019454385], [4.127963768036649, 5.127963768036649], [4.17896659339771, 5.1789665933977105], [4.087717907812707, 5.087717907812707], [4.169893984900796, 5.169893984900796]], "meas_lo_range": [[6.643967359, 7.643967359], [6.77005636134472, 7.77005636134472], [6.657170563, 7.657170563], [6.779815255000001, 7.779815255000001], [6.726998877000001, 7.726998877000001], [6.728239454000001, 7.728239454000001], [6.852175679, 7.852175679], [6.6181997500000005, 7.6181997500000005], [6.614026952000001, 7.614026952000001], [6.8280825300000005, 7.8280825300000005], [6.675449583000001, 7.675449583000001], [6.732633966000001, 7.732633966000001], [6.861255517, 7.861255517000001], [6.746867234000001, 7.746867234000001], [6.789763409000001, 7.789763409000001], [6.8274533360000005, 7.8274533360000005], [6.687732018, 7.687732018], [6.899991996000001, 7.899991996000001], [6.643169945, 7.643169945], [6.618476778000001, 7.618476778000001], [6.863684474, 7.863684474], [6.7894360990000004, 7.7894360990000004], [6.767483029, 7.767483029], [6.864085546, 7.864085546], [6.71469172, 7.71469172], [6.833297521, 7.833297521], [6.715242262, 7.715242262]], "meas_kernels": ["hw_qmfk"], "discriminators": ["quadratic_discriminator", "linear_discriminator", "hw_qmfk"], "rep_times": [1000.0], "meas_map": [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]], "acquisition_latency": [], "conditional_latency": [], "hamiltonian": {"description": "Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\n\n$(\\mathbb{I}-\\sigma_{i}^z)/2 \\rightarrow O_i \\equiv b^\\dagger_{i} b_{i}$,\n\n$\\sigma_{+} \\rightarrow b^\\dagger$,\n\n$\\sigma_{-} \\rightarrow b$,\n\n$\\sigma_{i}^X \\rightarrow b^\\dagger_{i} + b_{i}$.\n\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\n\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\n\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\n", "h_latex": "\\begin{align} \\mathcal{H}/\\hbar = & \\sum_{i=0}^{26}\\left(\\frac{\\omega_{q,i}}{2}(\\mathbb{I}-\\sigma_i^{z})+\\frac{\\Delta_{i}}{2}(O_i^2-O_i)+\\Omega_{d,i}D_i(t)\\sigma_i^{X}\\right) \\\\ & + J_{12,13}(\\sigma_{12}^{+}\\sigma_{13}^{-}+\\sigma_{12}^{-}\\sigma_{13}^{+}) + J_{14,16}(\\sigma_{14}^{+}\\sigma_{16}^{-}+\\sigma_{14}^{-}\\sigma_{16}^{+}) + J_{8,9}(\\sigma_{8}^{+}\\sigma_{9}^{-}+\\sigma_{8}^{-}\\sigma_{9}^{+}) + J_{17,18}(\\sigma_{17}^{+}\\sigma_{18}^{-}+\\sigma_{17}^{-}\\sigma_{18}^{+}) \\\\ & + J_{11,14}(\\sigma_{11}^{+}\\sigma_{14}^{-}+\\sigma_{11}^{-}\\sigma_{14}^{+}) + J_{10,12}(\\sigma_{10}^{+}\\sigma_{12}^{-}+\\sigma_{10}^{-}\\sigma_{12}^{+}) + J_{13,14}(\\sigma_{13}^{+}\\sigma_{14}^{-}+\\sigma_{13}^{-}\\sigma_{14}^{+}) + J_{7,10}(\\sigma_{7}^{+}\\sigma_{10}^{-}+\\sigma_{7}^{-}\\sigma_{10}^{+}) \\\\ & + J_{16,19}(\\sigma_{16}^{+}\\sigma_{19}^{-}+\\sigma_{16}^{-}\\sigma_{19}^{+}) + J_{12,15}(\\sigma_{12}^{+}\\sigma_{15}^{-}+\\sigma_{12}^{-}\\sigma_{15}^{+}) + J_{22,25}(\\sigma_{22}^{+}\\sigma_{25}^{-}+\\sigma_{22}^{-}\\sigma_{25}^{+}) + J_{23,24}(\\sigma_{23}^{+}\\sigma_{24}^{-}+\\sigma_{23}^{-}\\sigma_{24}^{+}) \\\\ & + J_{8,11}(\\sigma_{8}^{+}\\sigma_{11}^{-}+\\sigma_{8}^{-}\\sigma_{11}^{+}) + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) + J_{19,20}(\\sigma_{19}^{+}\\sigma_{20}^{-}+\\sigma_{19}^{-}\\sigma_{20}^{+}) \\\\ & + J_{6,7}(\\sigma_{6}^{+}\\sigma_{7}^{-}+\\sigma_{6}^{-}\\sigma_{7}^{+}) + J_{24,25}(\\sigma_{24}^{+}\\sigma_{25}^{-}+\\sigma_{24}^{-}\\sigma_{25}^{+}) + J_{18,21}(\\sigma_{18}^{+}\\sigma_{21}^{-}+\\sigma_{18}^{-}\\sigma_{21}^{+}) + J_{4,7}(\\sigma_{4}^{+}\\sigma_{7}^{-}+\\sigma_{4}^{-}\\sigma_{7}^{+}) \\\\ & + J_{21,23}(\\sigma_{21}^{+}\\sigma_{23}^{-}+\\sigma_{21}^{-}\\sigma_{23}^{+}) + J_{3,5}(\\sigma_{3}^{+}\\sigma_{5}^{-}+\\sigma_{3}^{-}\\sigma_{5}^{+}) + J_{5,8}(\\sigma_{5}^{+}\\sigma_{8}^{-}+\\sigma_{5}^{-}\\sigma_{8}^{+}) + J_{1,4}(\\sigma_{1}^{+}\\sigma_{4}^{-}+\\sigma_{1}^{-}\\sigma_{4}^{+}) \\\\ & + J_{2,3}(\\sigma_{2}^{+}\\sigma_{3}^{-}+\\sigma_{2}^{-}\\sigma_{3}^{+}) + J_{19,22}(\\sigma_{19}^{+}\\sigma_{22}^{-}+\\sigma_{19}^{-}\\sigma_{22}^{+}) + J_{15,18}(\\sigma_{15}^{+}\\sigma_{18}^{-}+\\sigma_{15}^{-}\\sigma_{18}^{+}) + J_{25,26}(\\sigma_{25}^{+}\\sigma_{26}^{-}+\\sigma_{25}^{-}\\sigma_{26}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,4)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{5}^{(2,3)}(t)+U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{6}^{(3,2)}(t)+U_{7}^{(3,5)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{9}^{(4,7)}(t)+U_{8}^{(4,1)}(t))\\sigma_{4}^{X} + \\Omega_{d,5}(U_{11}^{(5,8)}(t)+U_{10}^{(5,3)}(t))\\sigma_{5}^{X} \\\\ & + \\Omega_{d,6}(U_{12}^{(6,7)}(t))\\sigma_{6}^{X} + \\Omega_{d,7}(U_{14}^{(7,6)}(t)+U_{13}^{(7,4)}(t)+U_{15}^{(7,10)}(t))\\sigma_{7}^{X} \\\\ & + \\Omega_{d,8}(U_{18}^{(8,11)}(t)+U_{16}^{(8,5)}(t)+U_{17}^{(8,9)}(t))\\sigma_{8}^{X} + \\Omega_{d,9}(U_{19}^{(9,8)}(t))\\sigma_{9}^{X} \\\\ & + \\Omega_{d,10}(U_{20}^{(10,7)}(t)+U_{21}^{(10,12)}(t))\\sigma_{10}^{X} + \\Omega_{d,11}(U_{22}^{(11,8)}(t)+U_{23}^{(11,14)}(t))\\sigma_{11}^{X} \\\\ & + \\Omega_{d,12}(U_{24}^{(12,10)}(t)+U_{25}^{(12,13)}(t)+U_{26}^{(12,15)}(t))\\sigma_{12}^{X} + \\Omega_{d,13}(U_{28}^{(13,14)}(t)+U_{27}^{(13,12)}(t))\\sigma_{13}^{X} \\\\ & + \\Omega_{d,14}(U_{31}^{(14,16)}(t)+U_{30}^{(14,13)}(t)+U_{29}^{(14,11)}(t))\\sigma_{14}^{X} + \\Omega_{d,15}(U_{33}^{(15,18)}(t)+U_{32}^{(15,12)}(t))\\sigma_{15}^{X} \\\\ & + \\Omega_{d,16}(U_{35}^{(16,19)}(t)+U_{34}^{(16,14)}(t))\\sigma_{16}^{X} + \\Omega_{d,17}(U_{36}^{(17,18)}(t))\\sigma_{17}^{X} \\\\ & + \\Omega_{d,18}(U_{37}^{(18,15)}(t)+U_{39}^{(18,21)}(t)+U_{38}^{(18,17)}(t))\\sigma_{18}^{X} + \\Omega_{d,19}(U_{42}^{(19,22)}(t)+U_{40}^{(19,16)}(t)+U_{41}^{(19,20)}(t))\\sigma_{19}^{X} \\\\ & + \\Omega_{d,20}(U_{43}^{(20,19)}(t))\\sigma_{20}^{X} + \\Omega_{d,21}(U_{44}^{(21,18)}(t)+U_{45}^{(21,23)}(t))\\sigma_{21}^{X} \\\\ & + \\Omega_{d,22}(U_{46}^{(22,19)}(t)+U_{47}^{(22,25)}(t))\\sigma_{22}^{X} + \\Omega_{d,23}(U_{49}^{(23,24)}(t)+U_{48}^{(23,21)}(t))\\sigma_{23}^{X} \\\\ & + \\Omega_{d,24}(U_{50}^{(24,23)}(t)+U_{51}^{(24,25)}(t))\\sigma_{24}^{X} + \\Omega_{d,25}(U_{54}^{(25,26)}(t)+U_{53}^{(25,24)}(t)+U_{52}^{(25,22)}(t))\\sigma_{25}^{X} \\\\ & + \\Omega_{d,26}(U_{55}^{(26,25)}(t))\\sigma_{26}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,26,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,26,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,26,-delta{i}/2*O{i}]", "_SUM[i,0,26,omegad{i}*X{i}||D{i}]", "jq12q13*Sp12*Sm13", "jq12q13*Sm12*Sp13", "jq14q16*Sp14*Sm16", "jq14q16*Sm14*Sp16", "jq8q9*Sp8*Sm9", "jq8q9*Sm8*Sp9", "jq17q18*Sp17*Sm18", "jq17q18*Sm17*Sp18", "jq11q14*Sp11*Sm14", "jq11q14*Sm11*Sp14", "jq10q12*Sp10*Sm12", "jq10q12*Sm10*Sp12", "jq13q14*Sp13*Sm14", "jq13q14*Sm13*Sp14", "jq7q10*Sp7*Sm10", "jq7q10*Sm7*Sp10", "jq16q19*Sp16*Sm19", "jq16q19*Sm16*Sp19", "jq12q15*Sp12*Sm15", "jq12q15*Sm12*Sp15", "jq22q25*Sp22*Sm25", "jq22q25*Sm22*Sp25", "jq23q24*Sp23*Sm24", "jq23q24*Sm23*Sp24", "jq8q11*Sp8*Sm11", "jq8q11*Sm8*Sp11", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "jq19q20*Sp19*Sm20", "jq19q20*Sm19*Sp20", "jq6q7*Sp6*Sm7", "jq6q7*Sm6*Sp7", "jq24q25*Sp24*Sm25", "jq24q25*Sm24*Sp25", "jq18q21*Sp18*Sm21", "jq18q21*Sm18*Sp21", "jq4q7*Sp4*Sm7", "jq4q7*Sm4*Sp7", "jq21q23*Sp21*Sm23", "jq21q23*Sm21*Sp23", "jq3q5*Sp3*Sm5", "jq3q5*Sm3*Sp5", "jq5q8*Sp5*Sm8", "jq5q8*Sm5*Sp8", "jq1q4*Sp1*Sm4", "jq1q4*Sm1*Sp4", "jq2q3*Sp2*Sm3", "jq2q3*Sm2*Sp3", "jq19q22*Sp19*Sm22", "jq19q22*Sm19*Sp22", "jq15q18*Sp15*Sm18", "jq15q18*Sm15*Sp18", "jq25q26*Sp25*Sm26", "jq25q26*Sm25*Sp26", "omegad1*X0||U0", "omegad0*X1||U1", "omegad4*X1||U3", "omegad2*X1||U2", "omegad3*X2||U5", "omegad1*X2||U4", "omegad2*X3||U6", "omegad5*X3||U7", "omegad7*X4||U9", "omegad1*X4||U8", "omegad8*X5||U11", "omegad3*X5||U10", "omegad7*X6||U12", "omegad6*X7||U14", "omegad4*X7||U13", "omegad10*X7||U15", "omegad11*X8||U18", "omegad5*X8||U16", "omegad9*X8||U17", "omegad8*X9||U19", "omegad7*X10||U20", "omegad12*X10||U21", "omegad8*X11||U22", "omegad14*X11||U23", "omegad10*X12||U24", "omegad13*X12||U25", "omegad15*X12||U26", "omegad14*X13||U28", "omegad12*X13||U27", "omegad16*X14||U31", "omegad13*X14||U30", "omegad11*X14||U29", "omegad18*X15||U33", "omegad12*X15||U32", "omegad19*X16||U35", "omegad14*X16||U34", "omegad18*X17||U36", "omegad15*X18||U37", "omegad21*X18||U39", "omegad17*X18||U38", "omegad22*X19||U42", "omegad16*X19||U40", "omegad20*X19||U41", "omegad19*X20||U43", "omegad18*X21||U44", "omegad23*X21||U45", "omegad19*X22||U46", "omegad25*X22||U47", "omegad24*X23||U49", "omegad21*X23||U48", "omegad23*X24||U50", "omegad25*X24||U51", "omegad26*X25||U54", "omegad24*X25||U53", "omegad22*X25||U52", "omegad25*X26||U55"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3, "5": 3, "6": 3, "7": 3, "8": 3, "9": 3, "10": 3, "11": 3, "12": 3, "13": 3, "14": 3, "15": 3, "16": 3, "17": 3, "18": 3, "19": 3, "20": 3, "21": 3, "22": 3, "23": 3, "24": 3, "25": 3, "26": 3}, "vars": {"delta0": 0.0, "delta1": 0.0, "delta10": 0.0, "delta11": 0.0, "delta12": 0.0, "delta13": 0.0, "delta14": 0.0, "delta15": 0.0, "delta16": 0.0, "delta17": 0.0, "delta18": 0.0, "delta19": 0.0, "delta2": 0.0, "delta20": 0.0, "delta21": 0.0, "delta22": 0.0, "delta23": 0.0, "delta24": 0.0, "delta25": 0.0, "delta26": 0.0, "delta3": 0.0, "delta4": 0.0, "delta5": 0.0, "delta6": 0.0, "delta7": 0.0, "delta8": 0.0, "delta9": 0.0, "jq0q1": 0.0, "jq10q12": 0.0, "jq11q14": 0.0, "jq12q13": 0.0, "jq12q15": 0.0, "jq13q14": 0.0, "jq14q16": 0.0, "jq15q18": 0.0, "jq16q19": 0.0, "jq17q18": 0.0, "jq18q21": 0.0, "jq19q20": 0.0, "jq19q22": 0.0, "jq1q2": 0.0, "jq1q4": 0.0, "jq21q23": 0.0, "jq22q25": 0.0, "jq23q24": 0.0, "jq24q25": 0.0, "jq25q26": 0.0, "jq2q3": 0.0, "jq3q5": 0.0, "jq4q7": 0.0, "jq5q8": 0.0, "jq6q7": 0.0, "jq7q10": 0.0, "jq8q11": 0.0, "jq8q9": 0.0, "omegad0": 0.9181720937414065, "omegad1": 0.9983431293302415, "omegad10": 0.8892591473193672, "omegad11": 0.7959159064849877, "omegad12": 0.7677213119845951, "omegad13": 0.9120803371378936, "omegad14": 0.7814930104000664, "omegad15": 0.7333605012338975, "omegad16": 0.6340509869985926, "omegad17": 0.9485040008092525, "omegad18": 0.902632947658823, "omegad19": 0.9065481240812724, "omegad2": 1.0712262103185006, "omegad20": 0.767119184103482, "omegad21": 0.9459674125479653, "omegad22": 0.938633482119428, "omegad23": 0.9530409232224104, "omegad24": 0.9007258576818399, "omegad25": 0.7946840895048611, "omegad26": 1.1118710456243592, "omegad3": 0.8887175447004363, "omegad4": 1.0031365811276998, "omegad5": 0.9680446945780535, "omegad6": 0.8427586627834663, "omegad7": 0.7945471061152247, "omegad8": 0.8445044472664938, "omegad9": 0.8648115534193888, "wq0": 30.321037611712846, "wq1": 29.36051669093802, "wq10": 30.53022412048506, "wq11": 29.52546364472621, "wq12": 28.61539921062257, "wq13": 29.392654233803796, "wq14": 29.061805291528852, "wq15": 29.291581161055337, "wq16": 28.843772399084454, "wq17": 28.965994736734807, "wq18": 29.503045801209332, "wq19": 29.581854150615108, "wq2": 28.781377658635314, "wq20": 30.348774052148094, "wq21": 28.589373565365612, "wq22": 29.084453878838765, "wq23": 29.078353949487347, "wq24": 29.398814152420613, "wq25": 28.82548175185348, "wq26": 29.34180927201501, "wq3": 29.371505944473178, "wq4": 29.76719520037567, "wq5": 30.154586450957833, "wq6": 30.658711590716017, "wq7": 29.015821287258138, "wq8": 30.493819798934084, "wq9": 29.901595413435736}}, "channels": {"acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, "acquire10": {"operates": {"qubits": [10]}, "purpose": "acquire", "type": "acquire"}, "acquire11": {"operates": {"qubits": [11]}, "purpose": "acquire", "type": "acquire"}, "acquire12": {"operates": {"qubits": [12]}, "purpose": "acquire", "type": "acquire"}, "acquire13": {"operates": {"qubits": [13]}, "purpose": "acquire", "type": "acquire"}, "acquire14": {"operates": {"qubits": [14]}, "purpose": "acquire", "type": "acquire"}, "acquire15": {"operates": {"qubits": [15]}, "purpose": "acquire", "type": "acquire"}, "acquire16": {"operates": {"qubits": [16]}, "purpose": "acquire", "type": "acquire"}, "acquire17": {"operates": {"qubits": [17]}, "purpose": "acquire", "type": "acquire"}, "acquire18": {"operates": {"qubits": [18]}, "purpose": "acquire", "type": "acquire"}, "acquire19": {"operates": {"qubits": [19]}, "purpose": "acquire", "type": "acquire"}, "acquire2": {"operates": {"qubits": [2]}, "purpose": "acquire", "type": "acquire"}, "acquire20": {"operates": {"qubits": [20]}, "purpose": "acquire", "type": "acquire"}, "acquire21": {"operates": {"qubits": [21]}, "purpose": "acquire", "type": "acquire"}, "acquire22": {"operates": {"qubits": [22]}, "purpose": "acquire", "type": "acquire"}, "acquire23": {"operates": {"qubits": [23]}, "purpose": "acquire", "type": "acquire"}, "acquire24": {"operates": {"qubits": [24]}, "purpose": "acquire", "type": "acquire"}, "acquire25": {"operates": {"qubits": [25]}, "purpose": "acquire", "type": "acquire"}, "acquire26": {"operates": {"qubits": [26]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "acquire5": {"operates": {"qubits": [5]}, "purpose": "acquire", "type": "acquire"}, "acquire6": {"operates": {"qubits": [6]}, "purpose": "acquire", "type": "acquire"}, "acquire7": {"operates": {"qubits": [7]}, "purpose": "acquire", "type": "acquire"}, "acquire8": {"operates": {"qubits": [8]}, "purpose": "acquire", "type": "acquire"}, "acquire9": {"operates": {"qubits": [9]}, "purpose": "acquire", "type": "acquire"}, "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, "d10": {"operates": {"qubits": [10]}, "purpose": "drive", "type": "drive"}, "d11": {"operates": {"qubits": [11]}, "purpose": "drive", "type": "drive"}, "d12": {"operates": {"qubits": [12]}, "purpose": "drive", "type": "drive"}, "d13": {"operates": {"qubits": [13]}, "purpose": "drive", "type": "drive"}, "d14": {"operates": {"qubits": [14]}, "purpose": "drive", "type": "drive"}, "d15": {"operates": {"qubits": [15]}, "purpose": "drive", "type": "drive"}, "d16": {"operates": {"qubits": [16]}, "purpose": "drive", "type": "drive"}, "d17": {"operates": {"qubits": [17]}, "purpose": "drive", "type": "drive"}, "d18": {"operates": {"qubits": [18]}, "purpose": "drive", "type": "drive"}, "d19": {"operates": {"qubits": [19]}, "purpose": "drive", "type": "drive"}, "d2": {"operates": {"qubits": [2]}, "purpose": "drive", "type": "drive"}, "d20": {"operates": {"qubits": [20]}, "purpose": "drive", "type": "drive"}, "d21": {"operates": {"qubits": [21]}, "purpose": "drive", "type": "drive"}, "d22": {"operates": {"qubits": [22]}, "purpose": "drive", "type": "drive"}, "d23": {"operates": {"qubits": [23]}, "purpose": "drive", "type": "drive"}, "d24": {"operates": {"qubits": [24]}, "purpose": "drive", "type": "drive"}, "d25": {"operates": {"qubits": [25]}, "purpose": "drive", "type": "drive"}, "d26": {"operates": {"qubits": [26]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "d5": {"operates": {"qubits": [5]}, "purpose": "drive", "type": "drive"}, "d6": {"operates": {"qubits": [6]}, "purpose": "drive", "type": "drive"}, "d7": {"operates": {"qubits": [7]}, "purpose": "drive", "type": "drive"}, "d8": {"operates": {"qubits": [8]}, "purpose": "drive", "type": "drive"}, "d9": {"operates": {"qubits": [9]}, "purpose": "drive", "type": "drive"}, "m0": {"operates": {"qubits": [0]}, "purpose": "measure", "type": "measure"}, "m1": {"operates": {"qubits": [1]}, "purpose": "measure", "type": "measure"}, "m10": {"operates": {"qubits": [10]}, "purpose": "measure", "type": "measure"}, "m11": {"operates": {"qubits": [11]}, "purpose": "measure", "type": "measure"}, "m12": {"operates": {"qubits": [12]}, "purpose": "measure", "type": "measure"}, "m13": {"operates": {"qubits": [13]}, "purpose": "measure", "type": "measure"}, "m14": {"operates": {"qubits": [14]}, "purpose": "measure", "type": "measure"}, "m15": {"operates": {"qubits": [15]}, "purpose": "measure", "type": "measure"}, "m16": {"operates": {"qubits": [16]}, "purpose": "measure", "type": "measure"}, "m17": {"operates": {"qubits": [17]}, "purpose": "measure", "type": "measure"}, "m18": {"operates": {"qubits": [18]}, "purpose": "measure", "type": "measure"}, "m19": {"operates": {"qubits": [19]}, "purpose": "measure", "type": "measure"}, "m2": {"operates": {"qubits": [2]}, "purpose": "measure", "type": "measure"}, "m20": {"operates": {"qubits": [20]}, "purpose": "measure", "type": "measure"}, "m21": {"operates": {"qubits": [21]}, "purpose": "measure", "type": "measure"}, "m22": {"operates": {"qubits": [22]}, "purpose": "measure", "type": "measure"}, "m23": {"operates": {"qubits": [23]}, "purpose": "measure", "type": "measure"}, "m24": {"operates": {"qubits": [24]}, "purpose": "measure", "type": "measure"}, "m25": {"operates": {"qubits": [25]}, "purpose": "measure", "type": "measure"}, "m26": {"operates": {"qubits": [26]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "m5": {"operates": {"qubits": [5]}, "purpose": "measure", "type": "measure"}, "m6": {"operates": {"qubits": [6]}, "purpose": "measure", "type": "measure"}, "m7": {"operates": {"qubits": [7]}, "purpose": "measure", "type": "measure"}, "m8": {"operates": {"qubits": [8]}, "purpose": "measure", "type": "measure"}, "m9": {"operates": {"qubits": [9]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u10": {"operates": {"qubits": [5, 3]}, "purpose": "cross-resonance", "type": "control"}, "u11": {"operates": {"qubits": [5, 8]}, "purpose": "cross-resonance", "type": "control"}, "u12": {"operates": {"qubits": [6, 7]}, "purpose": "cross-resonance", "type": "control"}, "u13": {"operates": {"qubits": [7, 4]}, "purpose": "cross-resonance", "type": "control"}, "u14": {"operates": {"qubits": [7, 6]}, "purpose": "cross-resonance", "type": "control"}, "u15": {"operates": {"qubits": [7, 10]}, "purpose": "cross-resonance", "type": "control"}, "u16": {"operates": {"qubits": [8, 5]}, "purpose": "cross-resonance", "type": "control"}, "u17": {"operates": {"qubits": [8, 9]}, "purpose": "cross-resonance", "type": "control"}, "u18": {"operates": {"qubits": [8, 11]}, "purpose": "cross-resonance", "type": "control"}, "u19": {"operates": {"qubits": [9, 8]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u20": {"operates": {"qubits": [10, 7]}, "purpose": "cross-resonance", "type": "control"}, "u21": {"operates": {"qubits": [10, 12]}, "purpose": "cross-resonance", "type": "control"}, "u22": {"operates": {"qubits": [11, 8]}, "purpose": "cross-resonance", "type": "control"}, "u23": {"operates": {"qubits": [11, 14]}, "purpose": "cross-resonance", "type": "control"}, "u24": {"operates": {"qubits": [12, 10]}, "purpose": "cross-resonance", "type": "control"}, "u25": {"operates": {"qubits": [12, 13]}, "purpose": "cross-resonance", "type": "control"}, "u26": {"operates": {"qubits": [12, 15]}, "purpose": "cross-resonance", "type": "control"}, "u27": {"operates": {"qubits": [13, 12]}, "purpose": "cross-resonance", "type": "control"}, "u28": {"operates": {"qubits": [13, 14]}, "purpose": "cross-resonance", "type": "control"}, "u29": {"operates": {"qubits": [14, 11]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 4]}, "purpose": "cross-resonance", "type": "control"}, "u30": {"operates": {"qubits": [14, 13]}, "purpose": "cross-resonance", "type": "control"}, "u31": {"operates": {"qubits": [14, 16]}, "purpose": "cross-resonance", "type": "control"}, "u32": {"operates": {"qubits": [15, 12]}, "purpose": "cross-resonance", "type": "control"}, "u33": {"operates": {"qubits": [15, 18]}, "purpose": "cross-resonance", "type": "control"}, "u34": {"operates": {"qubits": [16, 14]}, "purpose": "cross-resonance", "type": "control"}, "u35": {"operates": {"qubits": [16, 19]}, "purpose": "cross-resonance", "type": "control"}, "u36": {"operates": {"qubits": [17, 18]}, "purpose": "cross-resonance", "type": "control"}, "u37": {"operates": {"qubits": [18, 15]}, "purpose": "cross-resonance", "type": "control"}, "u38": {"operates": {"qubits": [18, 17]}, "purpose": "cross-resonance", "type": "control"}, "u39": {"operates": {"qubits": [18, 21]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u40": {"operates": {"qubits": [19, 16]}, "purpose": "cross-resonance", "type": "control"}, "u41": {"operates": {"qubits": [19, 20]}, "purpose": "cross-resonance", "type": "control"}, "u42": {"operates": {"qubits": [19, 22]}, "purpose": "cross-resonance", "type": "control"}, "u43": {"operates": {"qubits": [20, 19]}, "purpose": "cross-resonance", "type": "control"}, "u44": {"operates": {"qubits": [21, 18]}, "purpose": "cross-resonance", "type": "control"}, "u45": {"operates": {"qubits": [21, 23]}, "purpose": "cross-resonance", "type": "control"}, "u46": {"operates": {"qubits": [22, 19]}, "purpose": "cross-resonance", "type": "control"}, "u47": {"operates": {"qubits": [22, 25]}, "purpose": "cross-resonance", "type": "control"}, "u48": {"operates": {"qubits": [23, 21]}, "purpose": "cross-resonance", "type": "control"}, "u49": {"operates": {"qubits": [23, 24]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [2, 3]}, "purpose": "cross-resonance", "type": "control"}, "u50": {"operates": {"qubits": [24, 23]}, "purpose": "cross-resonance", "type": "control"}, "u51": {"operates": {"qubits": [24, 25]}, "purpose": "cross-resonance", "type": "control"}, "u52": {"operates": {"qubits": [25, 22]}, "purpose": "cross-resonance", "type": "control"}, "u53": {"operates": {"qubits": [25, 24]}, "purpose": "cross-resonance", "type": "control"}, "u54": {"operates": {"qubits": [25, 26]}, "purpose": "cross-resonance", "type": "control"}, "u55": {"operates": {"qubits": [26, 25]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 2]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [3, 5]}, "purpose": "cross-resonance", "type": "control"}, "u8": {"operates": {"qubits": [4, 1]}, "purpose": "cross-resonance", "type": "control"}, "u9": {"operates": {"qubits": [4, 7]}, "purpose": "cross-resonance", "type": "control"}}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends/geneva/defs_geneva.json b/qiskit/providers/fake_provider/backends/geneva/defs_geneva.json new file mode 100644 index 000000000000..c29f802377c8 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/geneva/defs_geneva.json @@ -0,0 +1 @@ +{"qubit_freq_est": [4.825743015579376, 4.672871363094885, 4.580698523366451, 4.674620357115893, 4.73759625812113, 4.799251490561833, 4.879485498491239, 4.618011385738175, 4.853242154753866, 4.758986716382243, 4.85903608247861, 4.699123486138225, 4.554282232918502, 4.6779862119008, 4.625329967321017, 4.661899932759396, 4.590628954731868, 4.610081243925168, 4.6955555755290534, 4.7080983138938945, 4.830157407178421, 4.550140122828702, 4.6289346019454385, 4.627963768036649, 4.6789665933977105, 4.587717907812707, 4.669893984900796], "meas_freq_est": [7.143967359, 7.27005636134472, 7.157170563, 7.279815255000001, 7.226998877000001, 7.228239454000001, 7.352175679, 7.1181997500000005, 7.114026952000001, 7.3280825300000005, 7.175449583000001, 7.232633966000001, 7.361255517, 7.246867234000001, 7.289763409000001, 7.3274533360000005, 7.187732018, 7.399991996000001, 7.143169945, 7.118476778000001, 7.363684474, 7.2894360990000004, 7.267483029, 7.364085546, 7.21469172, 7.333297521, 7.215242262], "buffer": 0, "pulse_library": [{"name": "CX_d1_u0", "samples": [[-5.721628986066207e-05, 2.920574388554087e-06], [-0.00011578044359339401, 5.909949777560541e-06], [-0.00017570586351212114, 8.968810107035097e-06], [-0.00023700535530224442, 1.2097809303668328e-05], [-0.0002996911352965981, 1.5297569916583598e-05], [-0.0003637746849562973, 1.8568680388852954e-05], [-0.00042926688911393285, 2.1911693693255074e-05], [-0.0004961778759025037, 2.532712824176997e-05], [-0.0005645170458592474, 2.8815464247600175e-05], [-0.0006342928973026574, 3.2377134630223736e-05], [-0.0007055133464746177, 3.601254502427764e-05], [-0.0007781853200867772, 3.972204285673797e-05], [-0.000852314755320549, 4.350594099378213e-05], [-0.0009279069490730762, 4.7364505007863045e-05], [-0.0010049660922959447, 5.129794226377271e-05], [-0.0010834953282028437, 5.530642738449387e-05], [-0.0011634969851002097, 5.939006950939074e-05], [-0.001244972343556583, 6.354893412208185e-05], [-0.0013279214035719633, 6.778302486054599e-05], [-0.00141234346665442, 7.20922980690375e-05], [-0.0014982362044975162, 7.647665188414976e-05], [-0.0015855965903028846, 8.093591168290004e-05], [-0.0016744202002882957, 8.546986646251753e-05], [-0.0017647015629336238, 9.007822518469766e-05], [-0.001856433693319559, 9.476064587943256e-05], [-0.0019496086752042174, 9.951670654118061e-05], [-0.0020442171953618526, 0.00010434594878461212], [-0.002140248427167535, 0.00010924781236099079], [-0.0022376906126737595, 0.00011422169336583465], [-0.0023365304805338383, 0.0001192669224110432], [-0.002436753362417221, 0.00012438274279702455], [-0.002538342960178852, 0.0001295683323405683], [-0.0026412822771817446, 0.00013482281065080315], [-0.0027455519884824753, 0.00014014520274940878], [-0.0028511323034763336, 0.00014553449000231922], [-0.0029580011032521725, 0.00015098955191206187], [-0.0030661355704069138, 0.00015650920977350324], [-0.003175510559231043, 0.0001620922121219337], [-0.003286100458353758, 0.000167737205629237], [-0.0033978773280978203, 0.0001734427933115512], [-0.003510812297463417, 0.00017920749087352306], [-0.003624874399974942, 0.0001850297412602231], [-0.003740031970664859, 0.0001909079001052305], [-0.003856251249089837, 0.00019684025028254837], [-0.0039734975434839725, 0.00020282500190660357], [-0.004091733135282993, 0.0002088602923322469], [-0.004210921470075846, 0.00021494418615475297], [-0.004331022035330534, 0.00022107466065790504], [-0.004451994318515062, 0.00022724962036591023], [-0.0045737954787909985, 0.0002334668970433995], [-0.0046963817439973354, 0.00023972424969542772], [-0.004819707944989204, 0.00024601936456747353], [-0.004943727515637875, 0.0002523498551454395], [-0.005068391561508179, 0.0002587132912594825], [-0.005193651188164949, 0.0002651070826686919], [-0.00531945563852787, 0.0002715286973398179], [-0.005445752292871475, 0.0002779754577204585], [-0.0055724880658090115, 0.00028444459894672036], [-0.005699608009308577, 0.0002909333852585405], [-0.005827056244015694, 0.0002974389062728733], [-0.0059547750279307365, 0.000303958251606673], [-0.006082707084715366, 0.0003104884526692331], [-0.00621079234406352, 0.000317026482662186], [-0.006338969804346561, 0.0003235692565795034], [-0.006467178929597139, 0.00033011360210366547], [-0.00659535638988018, 0.00033665637602098286], [-0.006723438855260611, 0.0003431942604947835], [-0.006851361598819494, 0.0003497239958960563], [-0.006979059427976608, 0.00035624229349195957], [-0.007106466684490442, 0.000362745689926669], [-0.007233515847474337, 0.0003692308673635125], [-0.007360139396041632, 0.00037569430423900485], [-0.007486269809305668, 0.0003821325663011521], [-0.007611837703734636, 0.0003885421028826386], [-0.007736773695796728, 0.000394919392419979], [-0.007861007936298847, 0.00040126085514202714], [-0.007984470576047897, 0.0004075629694852978], [-0.008107091300189495, 0.0004138220683671534], [-0.00822879932820797, 0.0004200345429126173], [-0.008349522948265076, 0.0004261968133505434], [-0.008469191379845142, 0.0004323052417021245], [-0.008587732911109924, 0.0004383561317808926], [-0.008705077692866325, 0.00044434593291953206], [-0.008821153081953526, 0.0004502709489315748], [-0.008935889229178429, 0.0004561276000458747], [-0.00904921442270279, 0.0004619122191797942], [-0.009161058813333511, 0.00046762125566601753], [-0.009271352551877499, 0.00047325112973339856], [-0.00938002485781908, 0.0004787982616107911], [-0.00948700774461031, 0.00048425912973470986], [-0.00959223136305809, 0.0004896302125416696], [-0.009695627726614475, 0.0004949080175720155], [-0.009797130711376667, 0.0005000891978852451], [-0.009896673262119293, 0.0005051702610217035], [-0.009994189254939556, 0.0005101479473523796], [-0.010089614428579807, 0.0005150188808329403], [-0.010182885453104973, 0.0005197798018343747], [-0.010273938998579979, 0.0005244276253506541], [-0.010362713597714901, 0.0005289590917527676], [-0.010449149645864964, 0.0005333711160346866], [-0.010533187538385391, 0.0005376608460210264], [-0.010614770464599133, 0.0005418251967057586], [-0.010693841613829136, 0.0005458613159134984], [-0.010770346038043499, 0.0005497664678841829], [-0.010844231583178043, 0.0005535378586500883], [-0.010915445163846016, 0.0005571729270741343], [-0.010983938351273537, 0.0005606691120192409], [-0.011049661785364151, 0.0005640239687636495], [-0.011112569831311703, 0.0005672350525856018], [-0.01117261778563261, 0.0005703001515939832], [-0.011229761876165867, 0.0005732170538976789], [-0.011283963918685913, 0.0005759837804362178], [-0.011335182003676891, 0.0005785981775261462], [-0.01138338167220354, 0.0005810584989376366], [-0.011428527534008026, 0.0005833629402332008], [-0.01147058792412281, 0.0005855098715983331], [-0.011509530246257782, 0.0005874977214261889], [-0.011545328423380852, 0.0005893249763175845], [-0.011577955447137356, 0.0005909904139116406], [-0.011607388034462929, 0.0005924928118474782], [-0.011633604764938354, 0.0005938310059718788], [-0.01165658701211214, 0.0005950041231699288], [-0.011676316149532795, 0.0005960111739113927], [-0.011692780070006847, 0.0005968515761196613], [-0.011705965735018253, 0.0005975246313028038], [-0.011715862900018692, 0.0005980298155918717], [-0.011722465045750141, 0.0005983668379485607], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.011726181022822857, 0.0005985564785078168], [-0.01172329019755125, 0.0005983755108900368], [-0.011718153022229671, 0.0005980539717711508], [-0.011710451915860176, 0.0005975718959234655], [-0.011700192466378212, 0.0005969296325929463], [-0.01168738305568695, 0.0005961277638562024], [-0.011672032065689564, 0.000595166755374521], [-0.011654150672256947, 0.000594047422055155], [-0.011633751913905144, 0.0005927704623900354], [-0.011610851623117924, 0.0005913368659093976], [-0.01158546470105648, 0.0005897476803511381], [-0.011557611636817455, 0.0005880040698684752], [-0.011527311988174915, 0.000586107315029949], [-0.011494586244225502, 0.0005840586964040995], [-0.01145945955067873, 0.0005818597855977714], [-0.011421957053244114, 0.0005795120960101485], [-0.011382104828953743, 0.0005770173738710582], [-0.011339932680130005, 0.0005743774236179888], [-0.011295470409095287, 0.0005715940496884286], [-0.011248748749494553, 0.0005686692893505096], [-0.011199802160263062, 0.0005656052380800247], [-0.011148665100336075, 0.0005624039913527668], [-0.011095372959971428, 0.0005590679356828332], [-0.011039962992072105, 0.0005555993411689997], [-0.010982475243508816, 0.0005520005943253636], [-0.010922949761152267, 0.0005482742562890053], [-0.010861427523195744, 0.0005444229464046657], [-0.010797950439155102, 0.000540449284017086], [-0.010732562281191349, 0.0005363560630939901], [-0.010665309615433216, 0.0005321460193954408], [-0.01059623621404171, 0.000527822005096823], [-0.01052539050579071, 0.000523387105204165], [-0.010452819988131523, 0.0005188441136851907], [-0.010378572158515453, 0.0005141962319612503], [-0.010302698239684105, 0.0005094465450383723], [-0.010225247591733932, 0.000504598137922585], [-0.01014627143740654, 0.0004996542120352387], [-0.010065820999443531, 0.0004946180270053446], [-0.009983950294554234, 0.0004894929006695747], [-0.009900710545480251, 0.0004842821217607707], [-0.009816155768930912, 0.00047898897901177406], [-0.009730339981615543, 0.0004736169066745788], [-0.009643317200243473, 0.0004681693098973483], [-0.009555142372846603, 0.0004626495356205851], [-0.009465869516134262, 0.000457061076303944], [-0.009375554509460926, 0.0004514073661994189], [-0.009284252300858498, 0.00044569186866283417], [-0.009192018769681454, 0.00043991804705001414], [-0.009098907932639122, 0.0004340893356129527], [-0.009004977531731129, 0.00042820925591513515], [-0.008910280652344227, 0.00042228124220855534], [-0.008814873173832893, 0.0004163087287452072], [-0.00871881004422903, 0.00041029523708857596], [-0.008622147142887115, 0.00040424411417916417], [-0.008524938486516476, 0.00039815885247662663], [-0.008427238091826439, 0.00039204282802529633], [-0.008329099975526333, 0.0003858993877656758], [-0.008230578154325485, 0.000379731907742098], [-0.008131724782288074, 0.00037354370579123497], [-0.008032593876123428, 0.00036733809974975884], [-0.007933235727250576, 0.0003611182910390198], [-0.00783370342105627, 0.0003548875392880291], [-0.007734046317636967, 0.0003486490168143064], [-0.007634315639734268, 0.00034240586683154106], [-0.007534560281783342, 0.000336161203449592], [-0.0074348291382193565, 0.0003299180243629962], [-0.007335169706493616, 0.0003236793854739517], [-0.007235629949718714, 0.0003174481971655041], [-0.007136255968362093, 0.0003112273698206991], [-0.007037092465907335, 0.000305019726511091], [-0.0069381846114993095, 0.0002988280903082341], [-0.006839575245976448, 0.0002926551678683609], [-0.0067413076758384705, 0.00028650363674387336], [-0.006643423344939947, 0.00028037605807185173], [-0.006545962765812874, 0.00027427502209320664], [-0.006448965519666672, 0.0002682030026335269], [-0.0063524697907269, 0.00026216238620691], [-0.006256513297557831, 0.0002561555302236229], [-0.006161132827401161, 0.00025018470478244126], [-0.006066363304853439, 0.00024425212177447975], [-0.005972238723188639, 0.00023835992033127695], [-0.005878792144358158, 0.0002325101668247953], [-0.0057860552333295345, 0.00022670486941933632], [-0.005694059655070305, 0.0002209459344157949], [-0.005602834280580282, 0.0002152352244593203], [-0.005512407515197992, 0.0002095745294354856], [-0.005422807298600674, 0.00020396553736645728], [-0.005334058776497841, 0.00019840989261865616], [-0.005246187560260296, 0.0001929091667989269], [-0.005159217398613691, 0.00018746484420262277], [-0.005073171108961105, 0.00018207833636552095], [-0.004988069646060467, 0.00017675099661573768], [-0.0049039339646697044, 0.0001714840909698978], [-0.004820782691240311, 0.00016627881268505007], [-0.0047386339865624905, 0.0001611363113624975], [-0.004657504614442587, 0.00015605763474013656], [-0.004577410873025656, 0.00015104375779628754], [-0.0044983671978116035, 0.00014609562640544027], [-0.004420386627316475, 0.00014121405547484756], [-0.004343482665717602, 0.00013639985991176218], [-0.004267666023224592, 0.0001316537382081151], [-0.004192946944385767, 0.00012697633064817637], [-0.0041193352080881596, 0.00012236823386047035], [-0.004046838264912367, 0.00011782994988607243], [-0.0039754644967615604, 0.0001133619443862699], [-0.003905219491571188, 0.00010896460298681632], [-0.0038361086044460535, 0.00010463826765771955], [-0.0037681362591683865, 0.0001003831930574961], [-0.003701305715367198, 9.619961201678962e-05], [-0.0036356195341795683, 9.208766277879477e-05], [-0.0035710795782506466, 8.804745448287576e-05], [-0.0035076860804110765, 8.40790307847783e-05], [-0.003445439273491502, 8.018237713258713e-05], [-0.003384337993338704, 7.635744987055659e-05], [-0.0033243808429688215, 7.260412530740723e-05], [-0.0032655647955834866, 6.892225064802915e-05], [-0.0032078870572149754, 6.531162216560915e-05], [-0.0031513432040810585, 6.177198520163074e-05], [-0.0030959288123995066, 5.8303045079810545e-05], [-0.0030416385270655155, 5.49044634681195e-05], [-0.002988465828821063, 5.1575862016761675e-05], [-0.0029364044312387705, 4.831682599615306e-05], [-0.0028854471165686846, 4.512688974500634e-05], [-0.0028355857357382774, 4.200556577416137e-05], [-0.0027868119068443775, 3.895232657669112e-05], [-0.0027391165494918823, 3.5966608265880495e-05], [-0.0026924905832856894, 3.304781421320513e-05], [-0.002646923530846834, 3.0195325962267816e-05], [-0.002557887230068445, 2.462164957250934e-05], [-0.00251232017762959, 2.1769161321572028e-05], [-0.002465694211423397, 1.8850369087886065e-05], [-0.002417998854070902, 1.5864648958086036e-05], [-0.002369225025177002, 1.2811408851121087e-05], [-0.002319363644346595, 9.69008578977082e-06], [-0.0022684060968458652, 6.500151812360855e-06], [-0.0022163449320942163, 3.241113290641806e-06], [-0.002163172233849764, -8.74867538414037e-08], [-0.002108881715685129, -3.486067043922958e-06], [-0.0020534673240035772, -6.955006483622128e-06], [-0.001996923703700304, -1.0494643902347889e-05], [-0.001939245848916471, -1.410527420375729e-05], [-0.0018804299179464579, -1.778714795364067e-05], [-0.0018204726511612535, -2.1540472516790032e-05], [-0.0017593714874237776, -2.536540341679938e-05], [-0.0016971246805042028, -2.9262051612022333e-05], [-0.0016337311826646328, -3.3230477129109204e-05], [-0.0015691911103203893, -3.7270685425028205e-05], [-0.0015035050455480814, -4.1382634663023055e-05], [-0.001436674501746893, -4.556621934170835e-05], [-0.0013687021564692259, -4.982129030395299e-05], [-0.0012995912693440914, -5.414762927102856e-05], [-0.0012293461477383971, -5.854496703250334e-05], [-0.0011579722631722689, -6.301297253230587e-05], [-0.0010854756692424417, -6.755124923074618e-05], [-0.0010118638165295124, -7.215935329440981e-05], [-0.000937144854106009, -7.683676085434854e-05], [-0.0008613280951976776, -8.158288255799562e-05], [-0.0007844239007681608, -8.639708539703861e-05], [-0.0007064436795189977, -9.12786417757161e-05], [-0.0006273998878896236, -9.622678044252098e-05], [-0.0005473060882650316, -0.00010124065011041239], [-0.00046617694897577167, -0.00010631933400873095], [-0.00038402824429795146, -0.00011146183533128351], [-0.0003008769126608968, -0.00011666710634017363], [-0.00021674096933566034, -0.00012193401926197112], [-0.00013163959374651313, -0.0001272613590117544], [-4.5593114919029176e-05, -0.0001326478668488562], [4.1376992157893255e-05, -0.00013809218944516033], [0.00012924808834213763, -0.0001435929152648896], [0.00021799637761432678, -0.00014914856001269072], [0.0003075968998018652, -0.00015475755208171904], [0.00039802349056117237, -0.00016041824710555375], [0.0004892488941550255, -0.00016612895706202835], [0.0005812447052448988, -0.00017188789206556976], [0.000673981208819896, -0.00017769318947102875], [0.0007674277876503766, -0.0001835429429775104], [0.0008615524275228381, -0.00018943514442071319], [0.0009563221246935427, -0.0001953677274286747], [0.001051702769473195, -0.00020133855286985636], [0.0011476590298116207, -0.00020734540885314345], [0.0012441546423360705, -0.00021338602527976036], [0.0013411520048975945, -0.0002194580592913553], [0.0014386127004399896, -0.0002255590952700004], [0.001536497031338513, -0.0002316866593901068], [0.0016347646014764905, -0.00023783820506650954], [0.0017333737341687083, -0.00024401112750638276], [0.001832281704992056, -0.00025020274915732443], [0.0019314450910314918, -0.00025641039246693254], [0.002030819421634078, -0.00026263121981173754], [0.0021303591784089804, -0.00026886240812018514], [0.0022300181444734335, -0.00027510104700922966], [0.0023297492880374193, -0.00028134422609582543], [0.002429504645988345, -0.0002875888894777745], [0.0025292355567216873, -0.0002938320394605398], [0.0026288924273103476, -0.0003000705619342625], [0.0027284251991659403, -0.00030630131368525326], [0.002827783115208149, -0.0003125211223959923], [0.0029269144870340824, -0.0003187267284374684], [0.0030257676262408495, -0.0003249149303883314], [0.0031242896802723408, -0.0003310824104119092], [0.003222427563741803, -0.00033722585067152977], [0.00332012795843184, -0.0003433418751228601], [0.0034173368476331234, -0.0003494271368253976], [0.0035139997489750385, -0.0003554782597348094], [0.003610062412917614, -0.00036149175139144063], [0.003705469658598304, -0.0003674642648547888], [0.0038001665379852057, -0.0003733922785613686], [0.00389409763738513, -0.00037927235825918615], [0.003987208008766174, -0.0003851010696962476], [0.004079441539943218, -0.0003908748913090676], [0.004170743748545647, -0.00039659038884565234], [0.004261058755218983, -0.00040224409895017743], [0.004350331146270037, -0.0004078325582668185], [0.004438506439328194, -0.0004133523325435817], [0.004525529220700264, -0.0004187999584246427], [0.004611345008015633, -0.0004241720016580075], [0.004695899318903685, -0.0004294651444070041], [0.004779139067977667, -0.0004346759233158082], [0.004861010238528252, -0.0004398010787554085], [0.004941460210829973, -0.0004448372346814722], [0.005020436365157366, -0.000449781131464988], [0.005097887013107538, -0.00045462953858077526], [0.005173761397600174, -0.0004593792837113142], [0.0052480087615549564, -0.0004640271654352546], [0.005320579744875431, -0.00046857009874656796], [0.005391425918787718, -0.0004730050568468869], [0.005460498854517937, -0.0004773290129378438], [0.005527751985937357, -0.00048153905663639307], [0.005593139678239822, -0.0004856323357671499], [0.005656616296619177, -0.0004896059981547296], [0.005718139000236988, -0.0004934573080390692], [0.005777664948254824, -0.0004971835878677666], [0.005835152696818113, -0.0005007823347114027], [0.005890561733394861, -0.0005042509292252362], [0.005943853873759508, -0.0005075870431028306], [0.005994991399347782, -0.0005107882316224277], [0.0060439384542405605, -0.0005138523411005735], [0.006090659648180008, -0.0005167770432308316], [0.006135122384876013, -0.0005195604171603918], [0.006177294533699751, -0.0005222004256211221], [0.0062171462923288345, -0.0005246951477602124], [0.006254648789763451, -0.0005270427791401744], [0.006289775483310223, -0.0005292416899465024], [0.006322500761598349, -0.0005312903085723519], [0.006352801341563463, -0.0005331871216185391], [0.006380654405802488, -0.000534930732101202], [0.006406040862202644, -0.0005365199176594615], [0.006428941152989864, -0.0005379534559324384], [0.00644933944568038, -0.000539230415597558], [0.006467220839112997, -0.0005403498071245849], [0.006482572294771671, -0.0005413107573986053], [0.00649538217112422, -0.0005421126843430102], [0.006505641154944897, -0.0005427548894658685], [0.006513342261314392, -0.0005432369653135538], [0.006518478970974684, -0.0005435585626401007], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.00652136979624629, -0.0005437395302578807], [0.006519303657114506, -0.0005435672355815768], [0.006515631917864084, -0.000543261063285172], [0.0065101273357868195, -0.0005428021540865302], [0.0065027945674955845, -0.0005421907408162951], [0.00649363873526454, -0.000541427347343415], [0.00648266589269042, -0.0005405124393291771], [0.006469884887337685, -0.0005394468316808343], [0.006455305032432079, -0.0005382311646826565], [0.006438936572521925, -0.0005368663696572185], [0.006420791149139404, -0.0005353534361347556], [0.0064008827321231365, -0.0005336935282684863], [0.006379224825650454, -0.0005318877520039678], [0.0063558341935276985, -0.0005299374461174011], [0.00633072666823864, -0.0005278440658003092], [0.00630392087623477, -0.0005256090080365539], [0.006275436375290155, -0.0005232340190559626], [0.006245293188840151, -0.0005207207286730409], [0.006213512737303972, -0.0005180709413252771], [0.006180117838084698, -0.0005152865778654814], [0.00614513223990798, -0.000512369500938803], [0.006108581088483334, -0.0005093219224363565], [0.006070489529520273, -0.000506145937833935], [0.006030884571373463, -0.0005028437590226531], [0.005989794619381428, -0.0004994177725166082], [0.00594724714756012, -0.000495870248414576], [0.005903272889554501, -0.0004922037478536367], [0.005857901647686958, -0.0004884207737632096], [0.00581116508692503, -0.00048452397459186614], [0.005763094872236252, -0.0004805159696843475], [0.005713723599910736, -0.00047639949480071664], [0.005663085263222456, -0.0004721773730125278], [0.005611213855445385, -0.00046785242739133537], [0.005558144301176071, -0.0004634275974240154], [0.00550391199067235, -0.0004589057934936136], [0.005448552779853344, -0.00045429004239849746], [0.005392103455960751, -0.00044958340004086494], [0.00533460034057498, -0.00044478889321908355], [0.005276081617921591, -0.0004399097233545035], [0.005216584540903568, -0.00043494897545315325], [0.005156147759407759, -0.00042990988004021347], [0.005094809457659721, -0.00042479560943320394], [0.00503260875120759, -0.00041960939415730536], [0.004969583824276924, -0.00041435452294535935], [0.004905774723738432, -0.00040903425542637706], [0.004841221030801535, -0.00040365185122936964], [0.004775961395353079, -0.00039821062819100916], [0.004710035398602486, -0.00039271387504413724], [0.004643483553081751, -0.0003871648805215955], [0.004576344508677721, -0.00038156696246005595], [0.004508658312261105, -0.0003759234386961907], [0.004440464545041323, -0.0003702375397551805], [0.004371802322566509, -0.00036451261257752776], [0.004302710760384798, -0.00035875188768841326], [0.004233228974044323, -0.0003529586538206786], [0.004163396079093218, -0.000347136112395674], [0.004093250259757042, -0.00034128749393858016], [0.004022830165922642, -0.00033541597076691687], [0.003952173050493002, -0.0003295247443020344], [0.0038813173305243254, -0.0003236168995499611], [0.0038102997932583094, -0.0003176956088282168], [0.0037391569931060076, -0.00031176384072750807], [0.0036679254844784737, -0.0003058247093576938], [0.003596641356125474, -0.0002998811542056501], [0.0035253395326435566, -0.00029393614386208355], [0.0034540549386292696, -0.00028799258871003985], [0.0033828220330178738, -0.0002820533118210733], [0.0033116743434220552, -0.00027612116537056863], [0.003240644931793213, -0.00027019885601475835], [0.0031697661615908146, -0.00026428911951370537], [0.0030990701634436846, -0.00025839460431598127], [0.003028587670996785, -0.00025251792976632714], [0.002958349185064435, -0.0002466615696903318], [0.0028883847407996655, -0.00024082807067316025], [0.0028187232092022896, -0.0002350198192289099], [0.002749392529949546, -0.00022923917276784778], [0.0026804208755493164, -0.00022348843049257994], [0.002611834555864334, -0.00021776983339805156], [0.002543659647926688, -0.00021208553516771644], [0.0024759212974458933, -0.0002064376458292827], [0.0024086441844701767, -0.0002008282026508823], [0.0023418518248945475, -0.00019525917014107108], [0.00227556680329144, -0.00018973245460074395], [0.0022098112385720015, -0.00018424988957121968], [0.0021446063183248043, -0.0001788132358342409], [0.00207997253164649, -0.00017342418141197413], [0.0020159289706498384, -0.00016808435611892492], [0.001952494727447629, -0.0001627953170100227], [0.0018896873807534575, -0.000157558562932536], [0.0018275240436196327, -0.00015237550542224199], [0.0017660208977758884, -0.00014724748325534165], [0.001705193193629384, -0.00014217579155229032], [0.0016450557159259915, -0.00013716163812205195], [0.001585621852427721, -0.00013220615801401436], [0.001526904758065939, -0.00012731044262181967], [0.0014689163072034717, -0.0001224754669237882], [0.00141166802495718, -0.00011770221317419782], [0.0013551701558753848, -0.00011299152538413182], [0.0012994324788451195, -0.00010834422573680058], [0.0012444638414308429, -0.00010376104910392314], [0.0011902726255357265, -9.924267942551523e-05], [0.001136865932494402, -9.478974243393168e-05], [0.0010842506308108568, -9.040277655003592e-05], [0.0010324325412511826, -8.608227653894573e-05], [0.0009814169025048614, -8.182868623407558e-05], [0.0009312080219388008, -7.764236943330616e-05], [0.000881809857673943, -7.35236462787725e-05], [0.0008332254947163165, -6.94727641530335e-05], [0.0007854572613723576, -6.548994133481756e-05], [0.0007385070202872157, -6.157532334327698e-05], [0.000692375935614109, -5.772899748990312e-05], [0.000647064414806664, -5.3951011068420485e-05], [0.0006025724578648806, -5.024135680287145e-05], [0.0005588994245044887, -4.659997648559511e-05], [0.0005160439177416265, -4.3026768253184855e-05], [0.0004740042786579579, -3.9521582948509604e-05], [0.00043277809163555503, -3.608422048273496e-05], [0.0003923625044990331, -3.271444438723847e-05], [0.0003527541412040591, -2.9411974537651986e-05], [0.0003139491309411824, -2.617648715386167e-05], [0.00027594316634349525, -2.3007620256976224e-05], [0.00023873145983088762, -1.9904979126295075e-05], [0.00020230877271387726, -1.6868123566382565e-05], [0.00016666950250510126, -1.3896587915951386e-05], [0.00013180759560782462, -1.0989868314936757e-05], [9.771663462743163e-05, -8.147429070959333e-06], [6.438986019929871e-05, -5.368704933061963e-06], [3.182013097102754e-05, -2.653102455951739e-06]]}, {"name": "CX_d20_u41", "samples": [[-9.841147402767092e-05, 4.081204679096118e-06], [-0.00019914125732611865, 8.25855113362195e-06], [-0.0003022124001290649, 1.2532996152003761e-05], [-0.0004076469340361655, 1.6905452866922133e-05], [-0.0005154658574610949, 2.1376792574301362e-05], [-0.0006256889901123941, 2.5947834728867747e-05], [-0.0007383349584415555, 3.0619357858086005e-05], [-0.0008534211665391922, 3.539207682479173e-05], [-0.000970963854342699, 4.026667011203244e-05], [-0.0010909776901826262, 4.524374526226893e-05], [-0.0012134761782363057, 5.032385524827987e-05], [-0.0013384711928665638, 5.550750211114064e-05], [-0.001465973211452365, 6.0795115132350475e-05], [-0.001595991081558168, 6.618705810979009e-05], [-0.0017285319045186043, 7.168364390963688e-05], [-0.0018636015010997653, 7.72850908106193e-05], [-0.0020012035965919495, 8.299155888380483e-05], [-0.0021413404028862715, 8.880314999260008e-05], [-0.002284012036398053, 9.471985686104745e-05], [-0.0024292171001434326, 0.00010074162855744362], [-0.0025769518688321114, 0.0001068683122866787], [-0.0027272109873592854, 0.00011309967521810904], [-0.002879986772313714, 0.00011943541176151484], [-0.0030352696776390076, 0.00012587512901518494], [-0.0031930480618029833, 0.00013241832493804395], [-0.0033533081877976656, 0.0001390644465573132], [-0.0035160337574779987, 0.00014581280993297696], [-0.0036812066100537777, 0.00015266267291735858], [-0.0038488064892590046, 0.00015961316239554435], [-0.004018810112029314, 0.00016666334704495966], [-0.004191192332655191, 0.00017381217912770808], [-0.004365925677120686, 0.00018105852359440178], [-0.0045429798774421215, 0.0001884011144284159], [-0.004722323268651962, 0.00019583862740546465], [-0.0049039204604923725, 0.0002033696073340252], [-0.00508773373439908, 0.00021099249715916812], [-0.005273723509162664, 0.0002187056525144726], [-0.005461847875267267, 0.000226507312618196], [-0.0056520611979067326, 0.00023439562937710434], [-0.005844316445291042, 0.0002423686091788113], [-0.006038563326001167, 0.00025042417109943926], [-0.006234749220311642, 0.0002585601760074496], [-0.006432819180190563, 0.00026677429559640586], [-0.006632715463638306, 0.0002750641433522105], [-0.006834377069026232, 0.0002834272454492748], [-0.00703774206340313, 0.00029186095343902707], [-0.007242744322866201, 0.0003003625606652349], [-0.007449316326528788, 0.0003089292731601745], [-0.0076573872938752174, 0.00031755815143696964], [-0.007866884581744671, 0.0003262461395934224], [-0.008077731356024742, 0.0003349901526235044], [-0.008289851248264313, 0.0003437869600020349], [-0.008503163233399391, 0.00035263318568468094], [-0.008717584423720837, 0.0003615253954194486], [-0.008933030068874359, 0.0003704600967466831], [-0.009149412624537945, 0.00037943365168757737], [-0.009366641752421856, 0.0003884423349518329], [-0.00958462618291378, 0.0003974823048338294], [-0.009803270921111107, 0.00040654969052411616], [-0.01002248004078865, 0.0004156405047979206], [-0.010242155753076077, 0.0004247506440151483], [-0.010462197475135326, 0.00043387594632804394], [-0.010682502761483192, 0.00044301216257736087], [-0.010902967303991318, 0.00045215501450002193], [-0.01112348586320877, 0.0004613000783137977], [-0.011343949474394321, 0.0004704429011326283], [-0.011564250104129314, 0.0004795789427589625], [-0.011784275993704796, 0.0004887036047875881], [-0.012003915384411812, 0.0004978122306056321], [-0.01222305465489626, 0.0005069000762887299], [-0.012441577389836311, 0.0005159624270163476], [-0.01265936903655529, 0.0005249944515526295], [-0.012876312248408794, 0.0005339912604540586], [-0.013092287816107273, 0.0005429479060694575], [-0.013307176530361176, 0.0005518595571629703], [-0.013520858250558376, 0.0005607210914604366], [-0.013733213767409325, 0.0005695276195183396], [-0.013944119215011597, 0.00057827407727018], [-0.014153455384075642, 0.0005869554006494582], [-0.014361098408699036, 0.0005955665837973356], [-0.014566927216947079, 0.000604102446231991], [-0.014770817942917347, 0.0006125579820945859], [-0.01497264951467514, 0.0006209280691109598], [-0.01517229899764061, 0.0006292077014222741], [-0.015369643457233906, 0.0006373917567543685], [-0.015564562752842903, 0.0006454751710407436], [-0.015756934881210327, 0.0006534529966302216], [-0.015946637839078903, 0.0006613201694563031], [-0.01613355241715908, 0.0006690716836601496], [-0.016317561268806458, 0.0006767027080059052], [-0.016498545184731483, 0.0006842082366347313], [-0.016676386818289757, 0.0006915834965184331], [-0.016850970685482025, 0.0006988235982134938], [-0.017022183164954185, 0.0007059238851070404], [-0.017189908772706985, 0.0007128797005861998], [-0.01735403947532177, 0.0007196863298304379], [-0.017514465376734734, 0.0007263392326422036], [-0.017671076580882072, 0.0007328340434469283], [-0.01782376877963543, 0.0007391662802547216], [-0.017972437664866447, 0.0007453317521139979], [-0.018116982653737068, 0.0007513261516578496], [-0.018257303163409233, 0.0007571454043500125], [-0.01839330419898033, 0.0007627854938618839], [-0.0185248926281929, 0.0007682425202801824], [-0.018651973456144333, 0.0007735127001069486], [-0.01877446100115776, 0.0007785923080518842], [-0.01889226771891117, 0.0007834778516553342], [-0.019005311653017998, 0.0007881658966653049], [-0.019113512709736824, 0.0007926530670374632], [-0.01921679452061653, 0.0007969362777657807], [-0.01931508257985115, 0.0008010123856365681], [-0.01940830796957016, 0.0008048785384744406], [-0.019496405497193336, 0.0008085319423116744], [-0.019579308107495308, 0.0008119699778035283], [-0.019656958058476448, 0.0008151902002282441], [-0.01972929947078228, 0.0008181902812793851], [-0.019796282052993774, 0.0008209680672734976], [-0.019857853651046753, 0.0008235215209424496], [-0.019913973286747932, 0.0008258487796410918], [-0.01996459625661373, 0.0008279482135549188], [-0.020009689033031464, 0.0008298182510770857], [-0.020049216225743294, 0.0008314574952237308], [-0.020083151757717133, 0.0008328648400492966], [-0.02011146955192089, 0.0008340391796082258], [-0.020134149119257927, 0.0008349796989932656], [-0.02015117183327675, 0.0008356856415048242], [-0.02016252838075161, 0.000836156599689275], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020168917253613472, 0.000836421619169414], [-0.020165299996733665, 0.0008361588697880507], [-0.02015887014567852, 0.0008356919279322028], [-0.0201492328196764, 0.0008349919808097184], [-0.0201363917440176, 0.0008340594940818846], [-0.02012035995721817, 0.0008328952244482934], [-0.020101146772503853, 0.0008314999286085367], [-0.020078767091035843, 0.0008298746543005109], [-0.020053235813975334, 0.0008280205656774342], [-0.020024575293064117, 0.0008259391179308295], [-0.019992802292108536, 0.0008236317080445588], [-0.01995794102549553, 0.0008211000822484493], [-0.019920017570257187, 0.0008183459867723286], [-0.019879059866070747, 0.0008153715752996504], [-0.01983509585261345, 0.0008121788268908858], [-0.019788159057497978, 0.0008087701280601323], [-0.01973828114569187, 0.0008051479235291481], [-0.019685499370098114, 0.0008013148326426744], [-0.01962985098361969, 0.0007972735329531133], [-0.019571375101804733, 0.0007930269348435104], [-0.019510114565491676, 0.0007885780651122332], [-0.01944611221551895, 0.000783930066972971], [-0.01937941275537014, 0.0007790862582623959], [-0.019310064613819122, 0.0007740499568171799], [-0.01923811435699463, 0.0007688248297199607], [-0.01916361227631569, 0.000763414369430393], [-0.01908661238849163, 0.000757822475861758], [-0.019007166847586632, 0.0007520529325120151], [-0.01892532780766487, 0.0007461097557097673], [-0.018841156736016273, 0.0007399969617836177], [-0.018754705786705017, 0.000733718799892813], [-0.018666036427021027, 0.0007272794609889388], [-0.018575208261609077, 0.0007206833688542247], [-0.018482282757759094, 0.0007139348308555782], [-0.018387319520115852, 0.0007070385036058724], [-0.018290383741259575, 0.0006999988690949976], [-0.018191538751125336, 0.0006928205257281661], [-0.018090849742293358, 0.0006855083047412336], [-0.017988381907343864, 0.0006780668627470732], [-0.01788420043885708, 0.0006705010309815407], [-0.01777837425470352, 0.0006628156988881528], [-0.017670968547463417, 0.0006550157559104264], [-0.017562054097652435, 0.000647106091491878], [-0.0174516960978508, 0.0006390916532836854], [-0.01733996346592903, 0.0006309775053523481], [-0.01722692884504795, 0.0006227685953490436], [-0.01711265742778778, 0.0006144699873402715], [-0.016997218132019043, 0.0006060866871848702], [-0.016880683600902557, 0.0005976237007416785], [-0.016763122752308846, 0.0005890860920771956], [-0.01664460077881813, 0.0005804789252579212], [-0.01652519218623638, 0.0005718072061426938], [-0.01640496216714382, 0.0005630758823826909], [-0.016283981502056122, 0.0005542899598367512], [-0.016162317246198654, 0.0005454545025713742], [-0.01604003645479679, 0.0005365742836147547], [-0.015917209908366203, 0.0005276543670333922], [-0.015793902799487114, 0.0005186994676478207], [-0.015670180320739746, 0.0005097145331092179], [-0.015546109527349472, 0.0005007042782381177], [-0.015421755611896515, 0.000491673476062715], [-0.015297182835638523, 0.0004826267540920526], [-0.01517245452851057, 0.0004735687398351729], [-0.015047633089125156, 0.0004645040025934577], [-0.014922781847417355, 0.0004554370534606278], [-0.01479796040803194, 0.00044637228711508214], [-0.014673229306936264, 0.0004373140982352197], [-0.0145486481487751, 0.0004282667359802872], [-0.014424272812902927, 0.00041923439130187035], [-0.01430016290396452, 0.00041022125515155494], [-0.01417637150734663, 0.00040123131475411355], [-0.014052954502403736, 0.0003922685282304883], [-0.01392996497452259, 0.0003833367954939604], [-0.013807455077767372, 0.00037443990004248917], [-0.013685476034879684, 0.0003655815089587122], [-0.013564076274633408, 0.00035676523111760616], [-0.013443304225802422, 0.0003479945589788258], [-0.013323207385838032, 0.0003392728976905346], [-0.013203831389546394, 0.0003306035650894046], [-0.013085220009088516, 0.000321989762596786], [-0.01296741608530283, 0.0003134346043225378], [-0.012850460596382618, 0.00030494105885736644], [-0.01273439358919859, 0.0002965120365843177], [-0.012619253247976303, 0.00028815038967877626], [-0.012505077756941319, 0.00027985870838165283], [-0.012391901575028896, 0.0002716396702453494], [-0.012279760092496872, 0.0002634956908877939], [-0.012168684974312782, 0.0002554291859269142], [-0.01205870695412159, 0.000247442425461486], [-0.011949857696890831, 0.00023953753407113254], [-0.011842163279652596, 0.00023171660723164678], [-0.011735652573406696, 0.00022398158034775406], [-0.011630349792540073, 0.0002163343015126884], [-0.011526280082762241, 0.0002087765169562772], [-0.011423463933169842, 0.00020130985649302602], [-0.01132192462682724, 0.0001939358771778643], [-0.011221681721508503, 0.00018665599054656923], [-0.011122751981019974, 0.000179471549927257], [-0.011025154031813145, 0.0001723837631288916], [-0.010928901843726635, 0.00016539379430469126], [-0.010834011249244213, 0.000158502662088722], [-0.010740495286881924, 0.00015171131235547364], [-0.010648364201188087, 0.00014502058911602944], [-0.0105576291680336, 0.00013843123451806605], [-0.010468299500644207, 0.00013194391794968396], [-0.010380381718277931, 0.0001255592069355771], [-0.010293884202837944, 0.00011927758168894798], [-0.010208811610937119, 0.00011309944238746539], [-0.010125168599188328, 0.00010702508734539151], [-0.010042957030236721, 0.00010105474939337], [-0.009962179698050022, 9.518857405055314e-05], [-0.00988283846527338, 8.942661952460185e-05], [-0.009804931469261646, 8.376888581551611e-05], [-0.00972845871001482, 7.821528561180457e-05], [-0.009653417393565178, 7.276564429048449e-05], [-0.009579804725944996, 6.741975812474266e-05], [-0.009507616981863976, 6.217730697244406e-05], [-0.009436847642064095, 5.703793067368679e-05], [-0.00936749204993248, 5.2001207222929224e-05], [-0.00929954368621111, 4.706664549303241e-05], [-0.009232994168996811, 4.2233685235260054e-05], [-0.009167835116386414, 3.750172982108779e-05], [-0.009104058146476746, 3.287010622443631e-05], [-0.009041653014719486, 2.8338105039438233e-05], [-0.00898060854524374, 2.3904956833575852e-05], [-0.008920914493501186, 1.956984488060698e-05], [-0.00886255782097578, 1.5331908798543736e-05], [-0.008805527351796627, 1.1190240002179053e-05], [-0.008694091811776161, 3.0975461413618177e-06], [-0.008637061342597008, -1.0441219728818396e-06], [-0.008578704670071602, -5.282058737066109e-06], [-0.008519010618329048, -9.617170690034982e-06], [-0.008457966148853302, -1.4050319805392064e-05], [-0.008395561017096043, -1.8582320990390144e-05], [-0.008331784047186375, -2.321394276805222e-05], [-0.008266624994575977, -2.7945900001213886e-05], [-0.008200075477361679, -3.277885843999684e-05], [-0.008132127113640308, -3.771342380787246e-05], [-0.008062771521508694, -4.275014725863002e-05], [-0.007992002181708813, -4.7889519919408485e-05], [-0.007919814437627792, -5.313196743372828e-05], [-0.00784620177000761, -5.847786087542772e-05], [-0.007771160453557968, -6.39274949207902e-05], [-0.007694687694311142, -6.948110240045935e-05], [-0.007616781163960695, -7.513883610954508e-05], [-0.007537439465522766, -8.090078335953876e-05], [-0.0074566625989973545, -8.676696597831324e-05], [-0.007374451030045748, -9.273730393033475e-05], [-0.00729080755263567, -9.881165169645101e-05], [-0.007205734960734844, -0.00010498979827389121], [-0.007119237445294857, -0.00011127142352052033], [-0.0070313201285898685, -0.0001176561345346272], [-0.006941990461200476, -0.00012414345110300928], [-0.006851255428045988, -0.00013073280570097268], [-0.006759124342352152, -0.00013742352894041687], [-0.006665607914328575, -0.00014421487867366523], [-0.006570717319846153, -0.0001511060108896345], [-0.006474465597420931, -0.00015809597971383482], [-0.0063768671825528145, -0.00016518376651220024], [-0.006277937907725573, -0.00017236820713151246], [-0.006177694536745548, -0.00017964809376280755], [-0.0060761552304029465, -0.00018702207307796925], [-0.005973339546471834, -0.0001944887189893052], [-0.005869269371032715, -0.00020204651809763163], [-0.005763966590166092, -0.0002096937969326973], [-0.005657455883920193, -0.00021742882381659], [-0.0055497619323432446, -0.00022524975065607578], [-0.005440912209451199, -0.00023315464204642922], [-0.005330934654921293, -0.00024114141706377268], [-0.005219859536737204, -0.00024920792202465236], [-0.005107717588543892, -0.0002573518722783774], [-0.00499454140663147, -0.0002655709395185113], [-0.004880365915596485, -0.00027386259171180427], [-0.004765226040035486, -0.00028222426772117615], [-0.004649159032851458, -0.00029065326089039445], [-0.004532203543931246, -0.0002991468063555658], [-0.004414399154484272, -0.0003077019937336445], [-0.004295787774026394, -0.00031631579622626305], [-0.004176411312073469, -0.00032498512882739305], [-0.004056314937770367, -0.0003337067610118538], [-0.003935543354600668, -0.00034247743315063417], [-0.003814143594354391, -0.0003512937109917402], [-0.0036921638529747725, -0.0003601521020755172], [-0.003569653956219554, -0.00036904902663081884], [-0.003446664661169052, -0.00037798075936734676], [-0.003323247656226158, -0.00038694351678714156], [-0.003199456725269556, -0.00039593345718458295], [-0.003075346117839217, -0.0004049466224387288], [-0.002950971480458975, -0.0004139789380133152], [-0.002826389856636524, -0.0004230263002682477], [-0.0027016587555408478, -0.0004320845182519406], [-0.0025768375489860773, -0.0004411492554936558], [-0.002451986074447632, -0.00045021623373031616], [-0.0023271653335541487, -0.0004592809418682009], [-0.002202437026426196, -0.0004683389561250806], [-0.0020778640173375607, -0.00047738567809574306], [-0.0019535101018846035, -0.00048641650937497616], [-0.0018294394249096513, -0.0004954267642460763], [-0.001705717178992927, -0.0005044116987846792], [-0.001582409255206585, -0.0005133665399625897], [-0.0014595820102840662, -0.0005222865147516131], [-0.0013373024994507432, -0.0005311666755005717], [-0.0012156381271779537, -0.0005400021909736097], [-0.0010946569964289665, -0.0005487881135195494], [-0.0009744272101670504, -0.0005575193790718913], [-0.0008550176862627268, -0.0005661911563947797], [-0.0007364972843788564, -0.0005747983232140541], [-0.0006189350970089436, -0.0005833359318785369], [-0.0005024004494771361, -0.0005917989183217287], [-0.00038696269621141255, -0.0006001822184771299], [-0.0002726911334320903, -0.0006084808264859021], [-0.00015965505735948682, -0.0006166897364892066], [-4.7923618694767356e-05, -0.0006248038844205439], [6.243425741558895e-05, -0.0006328182644210756], [0.00017134992231149226, -0.0006407279288396239], [0.0002787550329230726, -0.0006485279300250113], [0.0003845817409455776, -0.0006562132621183991], [0.0004887625691480935, -0.0006637790938839316], [0.0005912307533435524, -0.000671220535878092], [0.0006919199950061738, -0.0006785327568650246], [0.0007907647523097694, -0.0006857110420241952], [0.0008877003565430641, -0.0006927506765350699], [0.000982662895694375, -0.0006996470619924366], [0.001075589214451611, -0.0007063955417834222], [0.001166417496278882, -0.0007129916921257973], [0.0012550866231322289, -0.0007194310310296714], [0.0013415367575362325, -0.0007257091929204762], [0.001425709342584014, -0.0007318219286389649], [0.001507546752691269, -0.0007377651636488736], [0.0015869931085035205, -0.0007435347069986165], [0.0016639934619888663, -0.0007491266005672514], [0.0017384947277605534, -0.0007545370026491582], [0.001810444868169725, -0.0007597621879540384], [0.0018797939410433173, -0.0007647984311915934], [0.001946493168361485, -0.0007696422981098294], [0.0020104956347495317, -0.0007742902962490916], [0.0020717564038932323, -0.0007787391077727079], [0.002130231587216258, -0.0007829857058823109], [0.002185879973694682, -0.000787027005571872], [0.0022386617492884398, -0.0007908601546660066], [0.0022885394282639027, -0.0007944823591969907], [0.0023354769218713045, -0.0007978910580277443], [0.002379440702497959, -0.000801083748228848], [0.002420398872345686, -0.0008040582179091871], [0.002458321861922741, -0.0008068122551776469], [0.0024931824300438166, -0.0008093439391814172], [0.0025249551981687546, -0.0008116512908600271], [0.0025536171160638332, -0.0008137327968142927], [0.0025791474618017673, -0.0008155868272297084], [0.0026015271432697773, -0.0008172121015377343], [0.0026207403279840946, -0.000818607397377491], [0.0026367728132754564, -0.0008197717252187431], [0.00264961295761168, -0.0008207042119465768], [0.0026592512149363756, -0.0008214041590690613], [0.0026656808331608772, -0.0008218711009249091], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.0026692987885326147, -0.0008221337920986116], [0.00266845291480422, -0.0008218733128160238], [0.0026669499929994345, -0.0008214104454964399], [0.0026646971236914396, -0.0008207164937630296], [0.002661695471033454, -0.0008197920979000628], [0.0026579478289932013, -0.0008186377817764878], [0.002653456525877118, -0.0008172545349225402], [0.002648225286975503, -0.0008156432304531336], [0.002642257371917367, -0.0008138051489368081], [0.0026355574373155832, -0.0008117416291497648], [0.0026281303726136684, -0.0008094541262835264], [0.002619981300085783, -0.0008069442701525986], [0.0026111165061593056, -0.0008042139234021306], [0.002601542277261615, -0.0008012651233002543], [0.0025912653654813766, -0.0007980998489074409], [0.0025802934542298317, -0.0007947205449454486], [0.0025686342269182205, -0.0007911295397207141], [0.0025562960654497147, -0.0007873294525779784], [0.002543287817388773, -0.0007833229610696435], [0.0025296187959611416, -0.0007791129755787551], [0.002515298780053854, -0.000774702406488359], [0.0025003377813845873, -0.0007700944552198052], [0.002484746277332306, -0.0007652923814021051], [0.0024685354437679052, -0.0007602995028719306], [0.0024517164565622807, -0.0007551193702965975], [0.002434301422908902, -0.0007497555343434215], [0.0024163019843399525, -0.0007442117785103619], [0.0023977309465408325, -0.0007384919445030391], [0.002378600649535656, -0.0007325999322347343], [0.0023589248303323984, -0.0007265398162417114], [0.0023387165274471045, -0.0007203157292678952], [0.0023179894778877497, -0.0007139319204725325], [0.0022967576514929533, -0.000707392580807209], [0.002275035483762622, -0.000700702250469476], [0.0022528371773660183, -0.0006938652950339019], [0.00223017786629498, -0.0006868862546980381], [0.0022070722188800573, -0.0006797698442824185], [0.0021835353691130877, -0.0006725205457769334], [0.002159582683816552, -0.0006651432486250997], [0.0021352297626435757, -0.0006576426094397902], [0.0021104919724166393, -0.000650023459456861], [0.0020853851456195116, -0.0006422906881198287], [0.0020599253475666046, -0.00063444918487221], [0.002034128410741687, -0.0006265037809498608], [0.0020080104004591703, -0.0006184595404192805], [0.0019815873820334673, -0.0006103213527239859], [0.0019548756536096334, -0.0006020942237228155], [0.001927891164086759, -0.0005937831592746079], [0.0019006504444405437, -0.0005853930488228798], [0.0018731694435700774, -0.0005769290146417916], [0.0018454643432050943, -0.0005683960043825209], [0.001817551557905972, -0.0005597989656962454], [0.0017894470365718007, -0.0005511428462341428], [0.0017611667281016707, -0.0005424326518550515], [0.001732726814225316, -0.0005336732720024884], [0.001704143127426505, -0.0005248695961199701], [0.0016754313837736845, -0.0005160264554433525], [0.001646607299335301, -0.0005071487394161522], [0.0016176863573491573, -0.0004982412210665643], [0.0015886839246377349, -0.0004893085570074618], [0.001559615251608193, -0.00048035554937087], [0.001530495472252369, -0.00047138676745817065], [0.001501339371316135, -0.00046240678057074547], [0.0014721615007147193, -0.0004534201289061457], [0.001442976645193994, -0.00044443129445426166], [0.0014137987745925784, -0.00043544461368583143], [0.0013846419751644135, -0.0004264644521754235], [0.0013555201003327966, -0.0004174950299784541], [0.0013264466542750597, -0.00040854050894267857], [0.001297434908337891, -0.0003996049927081913], [0.0012684979010373354, -0.00039069249760359526], [0.0012396483216434717, -0.0003818069526460022], [0.0012108986265957355, -0.00037295217043720186], [0.0011822610395029187, -0.00036413190537132323], [0.0011537474347278476, -0.00035534982453100383], [0.0011253694538027048, -0.0003466094785835594], [0.001097138156183064, -0.0003379143599886447], [0.0010690647177398205, -0.0003292678447905928], [0.0010411596158519387, -0.00032067319261841476], [0.0010134333278983831, -0.00031213360489346087], [0.000985895749181509, -0.0003036521375179291], [0.000958556542173028, -0.00029523175908252597], [0.0009314250783063471, -0.0002868753799702972], [0.0009045103215612471, -0.00027858573594130576], [0.000877820944879204, -0.0002703655045479536], [0.0008513652719557285, -0.00026221724692732096], [0.0008251512772403657, -0.00025414343690499663], [0.0007991865859366953, -0.00024614643189124763], [0.0007734785904176533, -0.0002382284583291039], [0.0007480341591872275, -0.0002303916699020192], [0.0007228599861264229, -0.00022263811843004078], [0.0006979622412472963, -0.00021496971021406353], [0.0006733470363542438, -0.00020738830789923668], [0.000649019842967391, -0.00019989562861155719], [0.0006249860161915421, -0.00019249330216553062], [0.0006012504454702139, -0.00018518284196034074], [0.0005778177874162793, -0.00017796567408367991], [0.000554692349396646, -0.00017084312275983393], [0.0005318780313245952, -0.00016381639579776675], [0.0005093785584904253, -0.0001568866427987814], [0.0004871971905231476, -0.00015005488239694387], [0.0004653370415326208, -0.00014332203136291355], [0.0004438007599674165, -0.00013668893370777369], [0.00042259079054929316, -0.00013015634613111615], [0.00040170925785787404, -0.00012372492346912622], [0.0003811580245383084, -0.00011739521141862497], [0.0003609385748859495, -0.00011116770474473014], [0.0003410522185731679, -0.0001050427817972377], [0.0003214999451301992, -9.902075544232503e-05], [0.00030228248215280473, -9.310185123467818e-05], [0.00028340029530227184, -8.728620741749182e-05], [0.0002648535883054137, -8.15738967503421e-05], [0.0002466423320583999, -7.596489740535617e-05], [0.0002287662646267563, -7.045913662295789e-05], [0.00021122486214153469, -6.505644705612212e-05], [0.00019401736790314317, -5.975661042612046e-05], [0.00017714285058900714, -5.45593211427331e-05], [0.00016060011694207788, -4.946422268403694e-05], [0.00014438778453040868, -4.447088940651156e-05], [0.00012850429629907012, -3.9578833820996806e-05], [0.00011294785508653149, -3.4787510230671614e-05], [9.77165182121098e-05, -3.0096314731054008e-05], [8.280814654426649e-05, -2.5504594304948114e-05], [6.822043360443786e-05, -2.101163408951834e-05], [5.3950909205013886e-05, -1.6616673747194e-05], [3.9996946725295857e-05, -1.2318907465669326e-05], [2.635577584442217e-05, -8.117478500935249e-06], [1.3024477084400132e-05, -4.011489181721117e-06]]}, {"name": "CX_d7_u12", "samples": [[-4.747937782667577e-05, 5.603913450613618e-06], [-9.607723768567666e-05, 1.1339840057189576e-05], [-0.00014580471906811, 1.7209093130077235e-05], [-0.0001966724230442196, 2.3212925952975638e-05], [-0.0002486904850229621, 2.9352533601922914e-05], [-0.0003018684801645577, 3.562904385034926e-05], [-0.00035621540155261755, 4.2043524445034564e-05], [-0.00041173966019414365, 4.859696127823554e-05], [-0.00046844902681186795, 5.5290274758590385e-05], [-0.0005263506318442523, 6.212430889718235e-05], [-0.0005854510236531496, 6.909982766956091e-05], [-0.0006457557901740074, 7.621750410180539e-05], [-0.0007072701118886471, 8.347794209839776e-05], [-0.0007699982379563153, 9.088163642445579e-05], [-0.0008339436026290059, 9.84290090855211e-05], [-0.0008991089998744428, 0.0001061203729477711], [-0.0009654962341301143, 0.00011395594628993422], [-0.001033106236718595, 0.00012193585280328989], [-0.0011019393568858504, 0.00013006009976379573], [-0.001171994605101645, 0.0001383286144118756], [-0.0012432703515514731, 0.00014674117846880108], [-0.0013157640350982547, 0.00015529748634435236], [-0.0013894719304516912, 0.0001639971014810726], [-0.0014643893809989095, 0.00017283948545809835], [-0.001540510798804462, 0.00018182398343924433], [-0.0016178294317796826, 0.00019094978051725775], [-0.0016963377129286528, 0.00020021597447339445], [-0.0017760266782715917, 0.00020962153212167323], [-0.001856886432506144, 0.00021916527475696057], [-0.0019389060325920582, 0.0002288459218107164], [-0.0020220731385052204, 0.00023866200353950262], [-0.0021063745953142643, 0.0002486119628883898], [-0.0021917959675192833, 0.0002586941118352115], [-0.002278321422636509, 0.000268906558630988], [-0.002365934196859598, 0.00027924738242290914], [-0.0024546165950596333, 0.0002897144004236907], [-0.0025443488266319036, 0.000300305342534557], [-0.002635110868141055, 0.0003110178222414106], [-0.002726880833506584, 0.00032184927840717137], [-0.002819635672494769, 0.0003327970043756068], [-0.002913351636379957, 0.0003438581479713321], [-0.0030080031137913465, 0.0003550297114998102], [-0.0031035635620355606, 0.0003663085517473519], [-0.0032000048086047173, 0.000377691350877285], [-0.003297298215329647, 0.0003891747328452766], [-0.0033954132813960314, 0.00040075508877635], [-0.0034943181090056896, 0.0004124286933802068], [-0.003593980334699154, 0.0004241916467435658], [-0.003694365732371807, 0.00043603996164165437], [-0.0037954391445964575, 0.0004479695053305477], [-0.003897164249792695, 0.0004599759413395077], [-0.0039995028637349606, 0.0004720548167824745], [-0.004102417267858982, 0.0004842015914618969], [-0.004205866251140833, 0.0004964115214534104], [-0.0043098097667098045, 0.0005086798337288201], [-0.004414204973727465, 0.0005210014060139656], [-0.004519009031355381, 0.0005333712324500084], [-0.004624177236109972, 0.0005457840743474662], [-0.0047296639531850815, 0.0005582345183938742], [-0.004835423082113266, 0.0005707171512767673], [-0.0049414075911045074, 0.000583226268645376], [-0.005047568120062351, 0.0005957562825642526], [-0.005153856240212917, 0.000608301255851984], [-0.005260221194475889, 0.0006208553095348179], [-0.005366611760109663, 0.0006334124482236803], [-0.005472976248711348, 0.0006459665019065142], [-0.005579262040555477, 0.000658511184155941], [-0.005685415118932724, 0.000671040266752243], [-0.005791381932795048, 0.0006835473468527198], [-0.005897107068449259, 0.0006960259634070098], [-0.006002535577863455, 0.0007084694807417691], [-0.006107610650360584, 0.0007208713213913143], [-0.00621227640658617, 0.0007332248496823013], [-0.006316475570201874, 0.0007455233135260642], [-0.006420150399208069, 0.0007577598444186151], [-0.006523242685943842, 0.0007699277484789491], [-0.006625695154070854, 0.0007820199825800955], [-0.0067274486646056175, 0.0007940297946333885], [-0.006828444078564644, 0.0008059501415118575], [-0.00692862318828702, 0.0008177740965038538], [-0.007027926854789257, 0.0008294947328977287], [-0.00712629547342658, 0.0008411050657741725], [-0.007223670836538076, 0.0008525981102138758], [-0.007319992873817682, 0.0008639668230898678], [-0.0074152033776044846, 0.0008752043941058218], [-0.0075092436745762825, 0.0008863037801347673], [-0.007602054625749588, 0.0008972581708803773], [-0.007693578954786062, 0.0009080605814233422], [-0.007783757522702217, 0.0009187042596749961], [-0.007872533984482288, 0.0009291823953390121], [-0.007959851063787937, 0.0009394882363267243], [-0.008045651949942112, 0.0009496152051724494], [-0.00812988169491291, 0.0009595566662028432], [-0.008212483488023281, 0.0009693061001598835], [-0.008293405175209045, 0.0009788570459932089], [-0.008372590877115726, 0.0009882033336907625], [-0.00844998937100172, 0.000997338443994522], [-0.008525547571480274, 0.0010062564397230744], [-0.008599215187132359, 0.0010149513836950064], [-0.008670941926538944, 0.001023417105898261], [-0.008740678429603577, 0.0010316480183973908], [-0.00880837719887495, 0.0010396384168416262], [-0.00887399259954691, 0.0010473828297108412], [-0.008937478065490723, 0.0010548759019002318], [-0.008998788893222809, 0.001062112394720316], [-0.009057884104549885, 0.001069087302312255], [-0.009114720858633518, 0.0010757956188172102], [-0.009169260039925575, 0.0010822328040376306], [-0.009221462532877922, 0.001088394201360643], [-0.009271291084587574, 0.0010942753870040178], [-0.00931871123611927, 0.0010998722864314914], [-0.00936368852853775, 0.0011051809415221214], [-0.009406191296875477, 0.0011101973941549659], [-0.009446188807487488, 0.0011149182682856917], [-0.00948365218937397, 0.0011193399550393224], [-0.009518553502857685, 0.0011234594276174903], [-0.009550869464874268, 0.0011272735428065062], [-0.009580575861036777, 0.0011307797394692898], [-0.009607650339603424, 0.0011339753400534391], [-0.009632074274122715, 0.0011368580162525177], [-0.009653829038143158, 0.0011394257890060544], [-0.009672899730503559, 0.0011416766792535782], [-0.0096892723813653, 0.0011436090571805835], [-0.009702933952212334, 0.0011452215258032084], [-0.009713876061141491, 0.0011465129209682345], [-0.00972208846360445, 0.0011474823113530874], [-0.009727567434310913, 0.001148128998465836], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009730651043355465, 0.0011484927963465452], [-0.009725634008646011, 0.0011480810353532434], [-0.009716720320284367, 0.001147349365055561], [-0.009703356772661209, 0.0011462523834779859], [-0.00968555361032486, 0.0011447910219430923], [-0.009663324803113937, 0.001142966328188777], [-0.009636685252189636, 0.0011407796991989017], [-0.009605655446648598, 0.0011382326483726501], [-0.009570258669555187, 0.0011353270383551717], [-0.00953051820397377, 0.0011320649646222591], [-0.009486465714871883, 0.0011284488718956709], [-0.009438131004571915, 0.0011244813213124871], [-0.009385551325976849, 0.0011201652232557535], [-0.00932876206934452, 0.0011155037209391594], [-0.009267807006835938, 0.0011105001904070377], [-0.009202728047966957, 0.0011051581241190434], [-0.009133572690188885, 0.0010994815966114402], [-0.009060390293598175, 0.0010934743331745267], [-0.008983233943581581, 0.001087140990421176], [-0.00890215765684843, 0.0010804857593029737], [-0.008817220106720924, 0.0010735136456787586], [-0.008728480897843838, 0.0010662294225767255], [-0.00863600242882967, 0.0010586383286863565], [-0.008539849892258644, 0.001050745602697134], [-0.008440091274678707, 0.0010425569489598274], [-0.008336794562637806, 0.0010340778389945626], [-0.00823003426194191, 0.0010253143263980746], [-0.00811988115310669, 0.0010162724647670984], [-0.008006413467228413, 0.0010069584241136909], [-0.007889708504080772, 0.0009973786072805524], [-0.007769845426082611, 0.0009875396499410272], [-0.0076469057239592075, 0.0009774480713531375], [-0.0075209722854197025, 0.0009671107982285321], [-0.007392129860818386, 0.0009565347572788596], [-0.00726046459749341, 0.0009457269334234297], [-0.007126063108444214, 0.0009346946026198566], [-0.0069890148006379604, 0.0009234449826180935], [-0.006849409081041813, 0.0009119854075834155], [-0.006707337219268084, 0.0009003233863040805], [-0.006562890484929085, 0.0008884664275683463], [-0.006416161544620991, 0.0008764221565797925], [-0.006267244461923838, 0.0008641982567496598], [-0.006116232834756374, 0.0008518024114891887], [-0.005963221658021212, 0.0008392424206249416], [-0.00580830592662096, 0.0008265261421911418], [-0.005651581566780806, 0.0008136613760143518], [-0.005493144039064646, 0.0008006559801287949], [-0.005333089269697666, 0.0007875178707763553], [-0.005171514116227627, 0.0007742549059912562], [-0.005008514039218426, 0.000760875060223043], [-0.004844185430556536, 0.0007473860750906169], [-0.004678624216467142, 0.0007337959250435233], [-0.004511925857514143, 0.0007201124681159854], [-0.004344185348600149, 0.0007063434459269047], [-0.004175497684627771, 0.0006924966583028436], [-0.004005956929177046, 0.0006785798468627036], [-0.0038356571458280087, 0.0006646007532253861], [-0.0036646907683461905, 0.0006505669443868101], [-0.0034931497648358345, 0.0006364859291352332], [-0.0033211258705705404, 0.0006223653326742351], [-0.0031487089581787586, 0.0006082124309614301], [-0.002975988667458296, 0.0005940346163697541], [-0.002803053008392453, 0.0005798391648568213], [-0.0026299888268113136, 0.0005656331777572632], [-0.002456882270053029, 0.0005514236399903893], [-0.002283817622810602, 0.0005372175946831703], [-0.0021108780056238174, 0.0005230217939242721], [-0.0019381454912945628, 0.0005088429898023605], [-0.0017657000571489334, 0.0004946878179907799], [-0.0015936206327751279, 0.0004805625940207392], [-0.0014219844015315175, 0.00046647380804643035], [-0.001250866916961968, 0.00045242757187224925], [-0.0010803421027958393, 0.0004384299973025918], [-0.0009104820783250034, 0.00042448699241504073], [-0.0007413573912344873, 0.00041060434887185693], [-0.0005730367265641689, 0.000396787712816149], [-0.00040558684850111604, 0.00038304252666421235], [-0.00023907277500256896, 0.00036937417462468147], [-7.355763227678835e-05, 0.0003557878371793777], [9.089737432077527e-05, 0.00034228849108330905], [0.000254232989391312, 0.0003288810548838228], [0.0004163918783888221, 0.00031557021429762244], [0.0005773186567239463, 0.0003023604804184288], [0.0007369600352831185, 0.00028925627702847123], [0.000895264616701752, 0.00027626179507933557], [0.0010521829826757312, 0.0002633811382111162], [0.0012076677521690726, 0.00025061811902560294], [0.0013616736978292465, 0.00023797649191692472], [0.0015141575131565332, 0.00022545982210431248], [0.0016650777542963624, 0.00021307150018401444], [0.0018143951892852783, 0.00020081472757738084], [0.001962072681635618, 0.00018869258929044008], [0.002108074724674225, 0.0001767079666024074], [0.0022523682564496994, 0.0001648635952733457], [0.0023949218448251486, 0.00015316205099225044], [0.002535706153139472, 0.00014160573482513428], [0.002674693940207362, 0.00013019688776694238], [0.002811859594658017, 0.00011893761256942526], [0.002947179600596428, 0.00010782983008539304], [0.0030806323047727346, 9.687533020041883e-05], [0.0032121979165822268, 8.607572090113536e-05], [0.0033418587408959866, 7.543248648289591e-05], [0.0034695982467383146, 6.494695116998628e-05], [0.0035954024642705917, 5.462029002956115e-05], [0.0037192583549767733, 4.445353624760173e-05], [0.0038411554414778948, 3.444758476689458e-05], [0.00396108441054821, 2.4603185011073947e-05], [0.004079037811607122, 1.4920958165021148e-05], [0.004195009358227253, 5.401387170422822e-06], [0.004308995325118303, -3.955173269787338e-06], [0.004420992452651262, -1.3148494872439187e-05], [0.004530999809503555, -2.2178475774126127e-05], [0.004639017395675182, -3.104513234575279e-05], [0.004745047073811293, -3.9748596464050934e-05], [0.00484909163787961, -4.828912642551586e-05], [0.004951155744493008, -5.666707147611305e-05], [0.005051244515925646, -6.488290091510862e-05], [0.005149365868419409, -7.29371968191117e-05], [0.005245526786893606, -8.083062130026519e-05], [0.005339737981557846, -8.856394561007619e-05], [0.005432008765637875, -9.613802831154317e-05], [0.005522351711988449, -0.0001035538298310712], [0.005610778462141752, -0.00011081239063059911], [0.005697303451597691, -0.00011791482393164188], [0.005781941581517458, -0.00012486234481912106], [0.005864707753062248, -0.00013165621203370392], [0.005945618264377117, -0.00013829780800733715], [0.00602469127625227, -0.00014478851517196745], [0.00617919722571969, -0.00015747117868158966], [0.006258270237594843, -0.00016396190039813519], [0.006339180748909712, -0.0001706034818198532], [0.006421946920454502, -0.00017739736358635128], [0.006506584584712982, -0.00018434486992191523], [0.006593110039830208, -0.0001914473104989156], [0.006681536789983511, -0.0001987058640224859], [0.0067718797363340855, -0.00020612166554201394], [0.006864150520414114, -0.00021369576279539615], [0.006958361249417067, -0.00022142908710520715], [0.007054522633552551, -0.00022932251158636063], [0.007152643986046314, -0.0002373767929384485], [0.007252732757478952, -0.0002455926442053169], [0.00735479686409235, -0.0002539705892559141], [0.007458841428160667, -0.0002625111083034426], [0.007564871106296778, -0.00027121457969769835], [0.007672888692468405, -0.000280081236269325], [0.007782896049320698, -0.0002891111944336444], [0.007894893176853657, -0.0002983045415021479], [0.00800887867808342, -0.0003076611028518528], [0.008124850690364838, -0.00031718064565211535], [0.008242803625762463, -0.00032686287886463106], [0.008362732827663422, -0.0003367072786204517], [0.008484629914164543, -0.00034671323373913765], [0.008608486503362656, -0.00035687998752109706], [0.008734290488064289, -0.00036720666685141623], [0.008862029761075974, -0.00037769219488836825], [0.00899169035255909, -0.0003883354365825653], [0.009123256430029869, -0.00039913502405397594], [0.00925670936703682, -0.00041008953121490777], [0.0093920286744833, -0.0004211973282508552], [0.009529194794595242, -0.0004324565816204995], [0.009668182581663132, -0.0004438654286786914], [0.009808966889977455, -0.00045542174484580755], [0.009951519779860973, -0.0004671233182307333], [0.010095813311636448, -0.00047896767500787973], [0.010241815820336342, -0.0004909522831439972], [0.010389492847025394, -0.0005030744359828532], [0.01053881086409092, -0.000515331223141402], [0.010689730755984783, -0.0005277195014059544], [0.010842214338481426, -0.0005402361857704818], [0.010996220633387566, -0.0005528778419829905], [0.011151705868542194, -0.0005656408029608428], [0.011308623477816582, -0.0005785215180367231], [0.011466928757727146, -0.0005915159708820283], [0.01162656955420971, -0.0006046202033758163], [0.011787496507167816, -0.0006178299081511796], [0.01194965559989214, -0.0006311407778412104], [0.012112990953028202, -0.0006445482140406966], [0.012277445755898952, -0.0006580475601367652], [0.01244296133518219, -0.0006716338684782386], [0.012609475292265415, -0.0006853022496215999], [0.012776925228536129, -0.0006990474066697061], [0.012945245951414108, -0.000712864042725414], [0.01311437040567398, -0.0007267466862685978], [0.0132842306047678, -0.0007406896911561489], [0.013454755768179893, -0.0007546872948296368], [0.013625873252749443, -0.0007687335018999875], [0.013797509483993053, -0.0007828223169781268], [0.013969588093459606, -0.000796947511844337], [0.014142033644020557, -0.0008111027418635786], [0.01431476604193449, -0.0008252814877778292], [0.014487706124782562, -0.0008394772885367274], [0.014660771004855633, -0.0008536833338439465], [0.014833876863121986, -0.0008678928716108203], [0.015006941743195057, -0.0008820988587103784], [0.015179877169430256, -0.0008962943684309721], [0.015352597460150719, -0.0009104721248149872], [0.015525014139711857, -0.0009246250265277922], [0.015697037801146507, -0.0009387456811964512], [0.01586857996881008, -0.0009528266382403672], [0.016039544716477394, -0.0009668604470789433], [0.01620984636247158, -0.0009808395989239216], [0.01637938618659973, -0.0009947563521564007], [0.016548072919249535, -0.0010086031397804618], [0.01671581342816353, -0.0010223721619695425], [0.016882512718439102, -0.0010360556188970804], [0.017048073932528496, -0.001049645827151835], [0.0172124020755291, -0.0010631347540766], [0.0173754021525383, -0.0010765145998448133], [0.01753697730600834, -0.0010897775646299124], [0.017697032541036606, -0.001102915732190013], [0.01785546913743019, -0.001115921069867909], [0.018012193962931633, -0.0011287858942523599], [0.01816711015999317, -0.0011415021726861596], [0.018320120871067047, -0.0011540621053427458], [0.018471132963895798, -0.001166457892395556], [0.018620049580931664, -0.0011786818504333496], [0.018766779452562332, -0.0011907260632142425], [0.018911225721240044, -0.0012025830801576376], [0.019053297117352486, -0.0012142451014369726], [0.019192904233932495, -0.0012257046764716506], [0.01932995207607746, -0.0012369543546810746], [0.01946435309946537, -0.0012479866854846478], [0.01959601789712906, -0.0012587944511324167], [0.019724860787391663, -0.00126937055028975], [0.019850794225931168, -0.0012797077652066946], [0.01997373439371586, -0.0012897993437945843], [0.02009359747171402, -0.0012996383011341095], [0.020210301503539085, -0.001309218117967248], [0.020323770120739937, -0.0013185321586206555], [0.020433923229575157, -0.0013275740202516317], [0.02054068259894848, -0.0013363375328481197], [0.02064397931098938, -0.0013448166428133845], [0.02074373885989189, -0.0013530052965506911], [0.020839890465140343, -0.0013608980225399137], [0.02093236893415451, -0.0013684891164302826], [0.021021109074354172, -0.0013757733395323157], [0.021106045693159103, -0.0013827455695718527], [0.02118712291121483, -0.001389400684274733], [0.021264279261231422, -0.0013957340270280838], [0.021337460726499557, -0.0014017412904649973], [0.021406617015600204, -0.0014074178179726005], [0.021471695974469185, -0.0014127598842605948], [0.021532651036977768, -0.0014177634147927165], [0.02158943936228752, -0.0014224249171093106], [0.021642019972205162, -0.0014267410151660442], [0.021690353751182556, -0.001430708565749228], [0.021734407171607018, -0.0014343246584758162], [0.02177414670586586, -0.0014375867322087288], [0.021809544414281845, -0.0014404923422262073], [0.021840574219822884, -0.0014430393930524588], [0.021867213770747185, -0.001445226022042334], [0.021889442577958107, -0.0014470507157966495], [0.021907245740294456, -0.001448512077331543], [0.02192060835659504, -0.0014496090589091182], [0.02192952297627926, -0.0014503407292068005], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021934539079666138, -0.0014507524902001023], [0.021927589550614357, -0.0014502928825095296], [0.021915240213274956, -0.0014494761126115918], [0.0218967255204916, -0.0014482515398412943], [0.021872062236070633, -0.0014466203283518553], [0.02184126526117325, -0.0014445834094658494], [0.021804358810186386, -0.0014421424129977822], [0.021761370822787285, -0.001439299201592803], [0.021712331101298332, -0.001436055637896061], [0.021657275035977364, -0.0014324142830446362], [0.021596243605017662, -0.0014283776981756091], [0.02152928151190281, -0.0014239487936720252], [0.021456437185406685, -0.0014191308291628957], [0.02137776091694832, -0.0014139271806925535], [0.021293314173817635, -0.0014083418063819408], [0.02120315283536911, -0.001402378547936678], [0.021107345819473267, -0.0013960418291389942], [0.021005958318710327, -0.0013893360737711191], [0.02089906483888626, -0.0013822661712765694], [0.020786741748452187, -0.0013748371275141835], [0.02066906914114952, -0.0013670541811734438], [0.02054612897336483, -0.0013589229201897979], [0.020418008789420128, -0.0013504490489140153], [0.020284799858927727, -0.001341638620942831], [0.02014659158885479, -0.0013324975734576583], [0.020003486424684525, -0.0013230325421318412], [0.019855579361319542, -0.0013132499298080802], [0.01970297284424305, -0.0013031566049903631], [0.019545774906873703, -0.0012927594361826777], [0.019384091719985008, -0.0012820656411349773], [0.01921803131699562, -0.001271082554012537], [0.019047711044549942, -0.00125981739256531], [0.018873242661356926, -0.0012482780730351806], [0.018694743514060974, -0.0012364721624180675], [0.018512332811951637, -0.001224407576955855], [0.018326133489608765, -0.0012120922328904271], [0.018136266618967056, -0.0011995343957096338], [0.01794285513460636, -0.001186742214486003], [0.017746029421687126, -0.001173724071122706], [0.0175459124147892, -0.0011604883475229144], [0.01734263263642788, -0.0011470434255897999], [0.01713632233440876, -0.0011333980364724994], [0.01692711003124714, -0.0011195606784895062], [0.01671512797474861, -0.0011055401992052794], [0.016500506550073624, -0.0010913452133536339], [0.01628337986767292, -0.001076984335668385], [0.016063880175352097, -0.0010624666465446353], [0.015842139720916748, -0.0010478007607161999], [0.015618293546140194, -0.0010329954093322158], [0.015392472967505455, -0.0010180596727877855], [0.015164811164140701, -0.0010030020494014025], [0.014935442246496677, -0.0009878316195681691], [0.014704497531056404, -0.0009725568816065788], [0.014472109265625477, -0.0009571866830810905], [0.014238408766686916, -0.0009417296969331801], [0.014003526419401169, -0.0009261945961043239], [0.013767591677606106, -0.0009105898789130151], [0.013530733995139599, -0.0008949241018854082], [0.01329308096319437, -0.0008792056469246745], [0.013054758310317993, -0.0008634429541416466], [0.01281589176505804, -0.0008476442890241742], [0.012576604261994362, -0.0008318178006447852], [0.012337017804384232, -0.0008159715798683465], [0.012097254395484924, -0.0008001136011444032], [0.011857431381940842, -0.0007842516642995179], [0.01161766704171896, -0.0007683936273679137], [0.011378075927495956, -0.0007525470573455095], [0.011138771660625935, -0.0007367194630205631], [0.010899865068495274, -0.0007209181203506887], [0.010661466047167778, -0.0007051503635011613], [0.01042367983609438, -0.0006894232355989516], [0.010186613537371159, -0.0006737436051480472], [0.009950367733836174, -0.0006581182824447751], [0.009715043008327484, -0.0006425539031624794], [0.009480737149715424, -0.0006270568701438606], [0.009247545152902603, -0.0006116335280239582], [0.00901555921882391, -0.0005962899303995073], [0.008784869685769081, -0.0005810321308672428], [0.008555564098060131, -0.0005658658919855952], [0.008327728137373924, -0.0005507967434823513], [0.008101441897451878, -0.0005358301568776369], [0.007876786403357983, -0.0005209714290685952], [0.007653838023543358, -0.0005062255659140646], [0.007432670332491398, -0.000491597515065223], [0.007213354576379061, -0.0004770919622387737], [0.006995959207415581, -0.0004627134185284376], [0.006780549883842468, -0.00044846622040495276], [0.00656718946993351, -0.00043435452971607447], [0.006355937570333481, -0.0004203823336865753], [0.006146852392703295, -0.0004065534158144146], [0.005939987022429705, -0.00039287132676690817], [0.005735394544899464, -0.0003793395298998803], [0.005533122457563877, -0.0003659612557385117], [0.005333217792212963, -0.00035273953108116984], [0.005135723389685154, -0.00033967723720707], [0.004940680228173733, -0.0003267770807724446], [0.004748126026242971, -0.00031404150649905205], [0.004558096174150705, -0.00030147293000482023], [0.004370623268187046, -0.00028907344676554203], [0.0041857375763356686, -0.00027684506494551897], [0.004003465641289949, -0.0002647896180860698], [0.003823833307251334, -0.0002529087068978697], [0.0036468624603003263, -0.00024120383022818714], [0.0034725728910416365, -0.00022967631230130792], [0.0033009822946041822, -0.00021832728816661984], [0.0031321055721491575, -0.00020715776190627366], [0.0029659555293619633, -0.00019616859208326787], [0.002802542643621564, -0.00018536043353378773], [0.0026418748311698437, -0.00017473386833444238], [0.002483958378434181, -0.0001642892457311973], [0.002328797010704875, -0.00015402685676235706], [0.0021763923577964306, -0.00014394680329132825], [0.002026744419708848, -0.00013404907076619565], [0.0018798505188897252, -0.00012433349911589175], [0.001735706813633442, -0.00011479981185402721], [0.0015943070175126195, -0.00010544761607889086], [0.0014556432142853737, -9.627638792153448e-05], [0.0013197059743106365, -8.72854798217304e-05], [0.0011864837724715471, -7.847414963180199e-05], [0.0010559636866673827, -6.984153878875077e-05], [0.000928131106775254, -6.138667959021404e-05], [0.0008029700256884098, -5.3108517022337765e-05], [0.0006804628064855933, -4.500587601796724e-05], [0.0005605905898846686, -3.707751602632925e-05], [0.00044333303230814636, -2.932209099526517e-05], [0.0003286685678176582, -2.1738171199103817e-05], [0.00021657440811395645, -1.4324253243103158e-05], [0.00010702657891670242, -7.078748240019195e-06]]}, {"name": "CX_d7_u20", "samples": [[-0.00011521264968905598, 6.5023482420656364e-06], [-0.0002331393916392699, 1.3157874491298571e-05], [-0.0003538072342053056, 1.9968101696576923e-05], [-0.0004772419633809477, 2.693448550417088e-05], [-0.0006034680991433561, 3.405841198400594e-05], [-0.0007325089536607265, 4.1341190808452666e-05], [-0.0008643862674944103, 4.878405889030546e-05], [-0.0009991205297410488, 5.638815855490975e-05], [-0.0011367304250597954, 6.415456300601363e-05], [-0.0012772335903719068, 7.208425085991621e-05], [-0.001420645508915186, 8.017809886951e-05], [-0.0015669800341129303, 8.843690739013255e-05], [-0.0017162497388198972, 9.686135308584198e-05], [-0.0018684646347537637, 0.00010545203258516267], [-0.002023633336648345, 0.00011420941882533953], [-0.002181762596592307, 0.00012313388288021088], [-0.0023428567219525576, 0.0001322256721323356], [-0.0025069182738661766, 0.0001414849393768236], [-0.002673947252333164, 0.0001509116991655901], [-0.0028439422603696585, 0.00016050583508331329], [-0.00301689887419343, 0.00017026712885126472], [-0.0031928105745464563, 0.00018019520211964846], [-0.003371668979525566, 0.00019028957467526197], [-0.003553462214767933, 0.00020054959168192], [-0.003738177241757512, 0.00021097449644003063], [-0.003925797529518604, 0.00022156337217893451], [-0.0041163042187690735, 0.00023231515660881996], [-0.004309676121920347, 0.0002432286273688078], [-0.0045058890245854855, 0.0002543024602346122], [-0.004704916384071112, 0.00026553511270321906], [-0.004906728398054838, 0.0002769249549601227], [-0.005111292935907841, 0.00028847012436017394], [-0.005318574607372284, 0.0003001686418429017], [-0.005528536159545183, 0.0003120184119325131], [-0.005741136148571968, 0.0003240170772187412], [-0.005956330802291632, 0.0003361621929798275], [-0.006174073554575443, 0.0003484511107672006], [-0.006394315045326948, 0.000360881065716967], [-0.006617002654820681, 0.00037344906013458967], [-0.006842080038040876, 0.0003861519508063793], [-0.007069489452987909, 0.00039898641989566386], [-0.007299169432371855, 0.0004119490331504494], [-0.007531054317951202, 0.0004250361234880984], [-0.007765077520161867, 0.000438243878306821], [-0.008001168258488178, 0.00045156831038184464], [-0.00823925156146288, 0.00046500522876158357], [-0.008479253388941288, 0.0004785503842867911], [-0.008721091784536839, 0.0004921992076560855], [-0.00896468572318554, 0.0005059471004642546], [-0.009209948591887951, 0.0005197892314754426], [-0.009456791914999485, 0.0005337205366231501], [-0.009705126285552979, 0.0005477359518408775], [-0.009954855777323246, 0.0005618301220238209], [-0.010205883532762527, 0.0005759976338595152], [-0.010458110831677914, 0.000590232782997191], [-0.010711435228586197, 0.0006045298068784177], [-0.010965750552713871, 0.0006188827683217824], [-0.011220949701964855, 0.0006332856719382107], [-0.01147692184895277, 0.0006477322313003242], [-0.011733556166291237, 0.0006622160435654223], [-0.011990735307335854, 0.0006767307058908045], [-0.012248343788087368, 0.0006912695243954659], [-0.01250626053661108, 0.0007058258051984012], [-0.012764363549649715, 0.000720392563380301], [-0.01302252896130085, 0.0007349628722295165], [-0.01328063104301691, 0.0007495295722037554], [-0.013538542203605175, 0.0007640855037607253], [-0.013796132057905197, 0.000778623332735151], [-0.014053269289433956, 0.0007931355503387749], [-0.014309819787740707, 0.0008076147641986609], [-0.014565650373697281, 0.0008220532326959074], [-0.014820624142885208, 0.0008364434470422566], [-0.01507460419088602, 0.0008507774909958243], [-0.0153274517506361, 0.0008650476229377091], [-0.015579027123749256, 0.0008792459848336875], [-0.015829190611839294, 0.0008933646604418755], [-0.0160777997225523, 0.0009073956171050668], [-0.016324711963534355, 0.0009213308221660554], [-0.01656978577375412, 0.0009351623011752963], [-0.016812879592180252, 0.0009488819050602615], [-0.017053848132491112, 0.0009624816011637449], [-0.017292547971010208, 0.0009759533568285406], [-0.0175288375467062, 0.0009892889065667987], [-0.017762571573257446, 0.001002480392344296], [-0.017993606626987457, 0.0010155196068808436], [-0.01822180300951004, 0.0010283984011039138], [-0.018447017297148705, 0.001041108975186944], [-0.01866910792887211, 0.0010536432964727283], [-0.01888793334364891, 0.0010659934487193823], [-0.019103357568383217, 0.0010781513992697], [-0.019315239042043686, 0.0010901095811277628], [-0.019523443654179573, 0.0011018600780516863], [-0.019727831706404686, 0.0011133954394608736], [-0.019928274676203728, 0.0011247078655287623], [-0.020124636590480804, 0.0011357901385053992], [-0.02031678706407547, 0.0011466346913948655], [-0.020504599437117577, 0.0011572345392778516], [-0.020687948912382126, 0.0011675822315737605], [-0.02086670882999897, 0.0011776711326092482], [-0.02104075998067856, 0.001187494141049683], [-0.02120998129248619, 0.0011970446212217212], [-0.021374259144067764, 0.001206316170282662], [-0.021533479914069176, 0.0012153021525591612], [-0.02168753184378147, 0.001223996514454484], [-0.021836308762431145, 0.0012323932023718953], [-0.02197970822453499, 0.001240486279129982], [-0.022117627784609795, 0.0012482701567932963], [-0.022249970585107803, 0.0012557393638417125], [-0.022376643493771553, 0.0012628885451704264], [-0.02249755896627903, 0.0012697126949205995], [-0.02261262759566307, 0.001276206923648715], [-0.02272176928818226, 0.0012823665747419], [-0.022824903950095177, 0.0012881873408332467], [-0.022921960800886154, 0.0012936650309711695], [-0.02301286906003952, 0.0012987955706194043], [-0.023097561672329903, 0.0013035754673182964], [-0.023175977170467377, 0.0013080011121928692], [-0.023248061537742615, 0.0013120693620294333], [-0.02331376075744629, 0.001315777306444943], [-0.02337302826344967, 0.0013191221514716744], [-0.023425817489624023, 0.0013221015688031912], [-0.023472094908356667, 0.0013247133465483785], [-0.023511823266744614, 0.0013269555056467652], [-0.023544974625110626, 0.0013288265326991677], [-0.023571526631712914, 0.001330325030721724], [-0.023591455072164536, 0.0013314498355612159], [-0.023604750633239746, 0.0013322001323103905], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023612231016159058, 0.0013326223706826568], [-0.023606281727552414, 0.0013322657905519009], [-0.02359570935368538, 0.001331632025539875], [-0.023579860106110573, 0.0013306819600984454], [-0.02355874516069889, 0.001329416292719543], [-0.023532381281256676, 0.0013278359547257423], [-0.02350078523159027, 0.0013259421102702618], [-0.023463983088731766, 0.0013237361563369632], [-0.02342200092971325, 0.0013212196063250303], [-0.02337486855685711, 0.0013183944392949343], [-0.02332262136042118, 0.0013152625178918242], [-0.0232652947306633, 0.0013118262868374586], [-0.023202933371067047, 0.0013080881908535957], [-0.023135580122470856, 0.0013040510239079595], [-0.023063283413648605, 0.0012997174635529518], [-0.022986099123954773, 0.001295090769417584], [-0.022904079407453537, 0.0012901743175461888], [-0.022817282006144524, 0.0012849716003984213], [-0.022725772112607956, 0.0012794863432645798], [-0.022629613056778908, 0.0012737223878502846], [-0.0225288737565279, 0.0012676839251071215], [-0.022423626855015755, 0.001261375262401998], [-0.02231394499540329, 0.001254800707101822], [-0.022199904546141624, 0.0012479649158194661], [-0.022081587463617325, 0.0012408727779984474], [-0.021959075704216957, 0.0012335291830822825], [-0.021832453086972237, 0.0012259392533451319], [-0.021701809018850327, 0.0012181081110611558], [-0.02156723290681839, 0.0012100414605811238], [-0.02142881602048874, 0.0012017445405945182], [-0.021286655217409134, 0.0011932230554521084], [-0.021140845492482185, 0.0011844829423353076], [-0.020991483703255653, 0.0011755300220102072], [-0.020838672295212746, 0.0011663702316582203], [-0.02068251371383667, 0.0011570097412914038], [-0.020523110404610634, 0.0011474547209218144], [-0.020360566675662994, 0.0011377115733921528], [-0.020194988697767258, 0.0011277865851297975], [-0.020026488229632378, 0.0011176862753927708], [-0.01985516957938671, 0.001107417163439095], [-0.019681144505739212, 0.0010969857685267925], [-0.019504522904753685, 0.0010863988427445292], [-0.019325418397784233, 0.0010756630217656493], [-0.01914394274353981, 0.0010647850576788187], [-0.01896020770072937, 0.0010537715861573815], [-0.018774328753352165, 0.0010426295921206474], [-0.018586415797472, 0.0010313658276572824], [-0.018396586179733276, 0.0010199870448559523], [-0.018204953521490097, 0.0010085002286359668], [-0.018011629581451416, 0.0009969121310859919], [-0.017816731706261635, 0.0009852295042946935], [-0.017620369791984558, 0.0009734592749737203], [-0.017422661185264587, 0.0009616081952117383], [-0.017223715782165527, 0.0009496830753050745], [-0.01702364720404148, 0.0009376905509270728], [-0.016822565346956253, 0.0009256374323740602], [-0.016620585694909096, 0.0009135302971117198], [-0.016417812556028366, 0.0009013758390210569], [-0.016214361414313316, 0.0008891805191524327], [-0.016010334715247154, 0.0008769507985562086], [-0.015805842354893684, 0.000864693196490407], [-0.015600991435348988, 0.0008524139993824065], [-0.015395884402096272, 0.0008401194936595857], [-0.015190624631941319, 0.0008278159075416625], [-0.014985314570367336, 0.0008155092364177108], [-0.014780054800212383, 0.0008032055920921266], [-0.014574943110346794, 0.0007909107953310013], [-0.014370077289640903, 0.000778630783315748], [-0.014165551401674747, 0.0007663711439818144], [-0.013961459510028362, 0.0007541375234723091], [-0.013757893815636635, 0.000741935393307358], [-0.013554942794144154, 0.0007297701667994261], [-0.013352694921195507, 0.0007176470244303346], [-0.01315123587846756, 0.0007055712048895657], [-0.012950648553669453, 0.0006935476558282971], [-0.012751014903187752, 0.0006815812666900456], [-0.0125524140894413, 0.0006696767522953451], [-0.012354923412203789, 0.0006578387692570686], [-0.012158617377281189, 0.0006460718577727675], [-0.01196356862783432, 0.0006343802670016885], [-0.011769847944378853, 0.0006227682461030781], [-0.01157752238214016, 0.0006112399278208613], [-0.011386658065021038, 0.0005997991538606584], [-0.011197318322956562, 0.0005884498241357505], [-0.011009563691914082, 0.0005771954893134534], [-0.010823453776538372, 0.0005660397000610828], [-0.01063904445618391, 0.0005549858324229717], [-0.010456387884914875, 0.0005440371460281312], [-0.010275538079440594, 0.000533196609467268], [-0.010096541605889797, 0.0005224672495387495], [-0.009919445961713791, 0.0005118518602102995], [-0.009744295850396156, 0.0005013530608266592], [-0.009571133181452751, 0.0004909733543172479], [-0.00939999707043171, 0.0004807150980923325], [-0.00923092383891344, 0.0004705805331468582], [-0.00906394887715578, 0.0004605717840604484], [-0.008899104781448841, 0.00045069074258208275], [-0.008736422285437584, 0.00044093924225308], [-0.008575928397476673, 0.00043131894199177623], [-0.008417649194598198, 0.00042183141340501606], [-0.008261608891189098, 0.000412478024372831], [-0.008107827045023441, 0.00040326008456759155], [-0.007956324145197868, 0.0003941786999348551], [-0.007807116024196148, 0.0003852349182125181], [-0.007660218980163336, 0.0003764296416193247], [-0.007515645120292902, 0.00036776362685486674], [-0.007373405620455742, 0.0003592375433072448], [-0.007233509328216314, 0.00035085188574157655], [-0.007095963228493929, 0.0003426071198191494], [-0.006960772443562746, 0.0003345035365782678], [-0.006827940233051777, 0.00032654133974574506], [-0.006697467993944883, 0.0003187206166330725], [-0.006569355726242065, 0.0003110413090325892], [-0.006443601567298174, 0.00030350335873663425], [-0.006320201326161623, 0.000296106532914564], [-0.00619915034621954, 0.00028885051142424345], [-0.006080441642552614, 0.0002817349159158766], [-0.005964066833257675, 0.00027475919341668487], [-0.005850016605108976, 0.00026792282005771995], [-0.005738279782235622, 0.0002612250973470509], [-0.005628843326121569, 0.0002546652976889163], [-0.005521694198250771, 0.00024824257707223296], [-0.005416817031800747, 0.00024195603327825665], [-0.005314195528626442, 0.00023580472043249756], [-0.005213812459260225, 0.000229787576245144], [-0.005115649197250605, 0.00022390349477063864], [-0.0050196866504848, 0.0002181513118557632], [-0.004925903398543596, 0.00021252979058772326], [-0.0047426545061171055, 0.00020154552476014942], [-0.004648871719837189, 0.00019592400349210948], [-0.004552909173071384, 0.00019017182057723403], [-0.004454745911061764, 0.00018428773910272866], [-0.004354362841695547, 0.0001782705949153751], [-0.004251741338521242, 0.00017211928206961602], [-0.0041468641720712185, 0.0001658327382756397], [-0.004039714578539133, 0.00015941001765895635], [-0.003930278588086367, 0.00015285021800082177], [-0.003818541532382369, 0.00014615249529015273], [-0.0037044913042336702, 0.00013931610737927258], [-0.003588116727769375, 0.00013234039943199605], [-0.0034694080241024494, 0.000125224789371714], [-0.0033483568113297224, 0.00011796876788139343], [-0.003224956803023815, 0.00011057194205932319], [-0.00309920241124928, 0.00010303399176336825], [-0.002971090143546462, 9.535470599075779e-05], [-0.0028406179044395685, 8.753396832617e-05], [-0.0027077856939285994, 7.957176421768963e-05], [-0.0025725949089974165, 7.146818097680807e-05], [-0.002435048809275031, 6.32234150543809e-05], [-0.0022951525170356035, 5.4837775678606704e-05], [-0.0021529130171984434, 4.631168121704832e-05], [-0.0020083391573280096, 3.7645666452590376e-05], [-0.0018614421132951975, 2.884038804040756e-05], [-0.0017122345743700862, 1.9896611775038764e-05], [-0.0015607314417138696, 1.0815238965733442e-05], [-0.0014069497119635344, 1.5972860865076655e-06], [-0.0012509087100625038, -7.75609805714339e-06], [-0.0010926296235993505, -1.724363937682938e-05], [-0.0009321357938461006, -2.686392872419674e-05], [-0.0007694530650041997, -3.661543087218888e-05], [-0.0006046092603355646, -4.6496465074596927e-05], [-0.0004376346187200397, -5.650522871292196e-05], [-0.0002685616200324148, -6.66397754685022e-05], [-9.7425036074128e-05, -7.689800986554474e-05], [7.57380184950307e-05, -8.727772365091369e-05], [0.00025088805705308914, -9.77765375864692e-05], [0.0004279832646716386, -0.0001083919414668344], [0.0006069794180803001, -0.00011912130139535293], [0.0007878299220465124, -0.00012996180157642812], [0.0009704857948236167, -0.00014091053162701428], [0.0011548956390470266, -0.0001519643992651254], [0.001341005670838058, -0.00016312017396558076], [0.0015287598362192512, -0.00017437449423596263], [0.0017180994618684053, -0.0001857238676166162], [0.001908963778987527, -0.00019716461247298867], [0.00210128934122622, -0.0002086929598590359], [0.0022950104903429747, -0.0002203049516538158], [0.0024900592397898436, -0.00023199652787297964], [0.0026863652747124434, -0.00024376348301302642], [0.0028838561847805977, -0.0002556014514993876], [0.00308245699852705, -0.0002675059367902577], [0.003282090649008751, -0.0002794723550323397], [0.0034826777409762144, -0.00029149590409360826], [0.0036841370165348053, -0.0003035717236343771], [0.003886384889483452, -0.0003156948368996382], [0.004089335445314646, -0.0003278600634075701], [0.0042929016053676605, -0.0003400621935725212], [0.004496993031352758, -0.0003522958140820265], [0.004701518453657627, -0.0003645554534159601], [0.004906384740024805, -0.00037683549453504384], [0.005111496429890394, -0.0003891302621923387], [0.0053167566657066345, -0.00040143393562175333], [0.0055220662616193295, -0.00041374057764187455], [0.0057273260317742825, -0.00042604419286362827], [0.0059324330650269985, -0.000438338698586449], [0.00613728491589427, -0.00045061789569444954], [0.0063417768105864525, -0.00046287549776025116], [0.00654580257833004, -0.0004751051892526448], [0.006749255117028952, -0.000487300509121269], [0.006952026858925819, -0.0004994550254195929], [0.007154007907956839, -0.0005115621024742723], [0.007355088368058205, -0.0005236152792349458], [0.007555157411843538, -0.0005356077454052866], [0.007754102814942598, -0.0005475328653119504], [0.007951811887323856, -0.0005593839450739324], [0.008148172870278358, -0.0005711541743949056], [0.008343071676790714, -0.000582836801186204], [0.00853639468550682, -0.0005944249569438398], [0.008728028275072575, -0.0006059117731638253], [0.008917857892811298, -0.0006172904977574944], [0.009105769917368889, -0.0006285543204285204], [0.009291649796068668, -0.0006396963144652545], [0.009475384838879108, -0.0006507096695713699], [0.009656860493123531, -0.0006615876918658614], [0.009835965000092983, -0.0006723235710524023], [0.010012585669755936, -0.0006829104968346655], [0.010186610743403435, -0.000693341891746968], [0.010357929393649101, -0.0007036110037006438], [0.010526430793106556, -0.0007137113134376705], [0.010692007839679718, -0.0007236363017000258], [0.010854551568627357, -0.0007333794492296875], [0.011013954877853394, -0.0007429344113916159], [0.011170114390552044, -0.0007522949017584324], [0.011322925798594952, -0.0007614546921104193], [0.011472286656498909, -0.0007704076124355197], [0.011618097312748432, -0.0007791477837599814], [0.011760259047150612, -0.0007876692106947303], [0.011898675002157688, -0.0007959661306813359], [0.012033251114189625, -0.0008040328393690288], [0.012163895182311535, -0.0008118638652376831], [0.01229051686823368, -0.0008194538531824946], [0.012413029558956623, -0.0008267974480986595], [0.012531346641480923, -0.0008338895859196782], [0.012645386159420013, -0.000840725377202034], [0.012755068950355053, -0.0008472999325022101], [0.012860316783189774, -0.0008536086534149945], [0.012961055152118206, -0.0008596471161581576], [0.013057214207947254, -0.0008654110715724528], [0.013148724101483822, -0.0008708963287062943], [0.01323552057147026, -0.0008760990458540618], [0.013317540287971497, -0.000881015497725457], [0.013394726440310478, -0.0008856421336531639], [0.01346702128648758, -0.0008899756358005106], [0.01353437453508377, -0.0008940129191614687], [0.013596736826002598, -0.0008977510151453316], [0.013654062524437904, -0.0009011872461996973], [0.013706310652196407, -0.0009043191093951464], [0.013753443025052547, -0.0009071442764252424], [0.013795426115393639, -0.0009096608264371753], [0.013832228258252144, -0.0009118667803704739], [0.0138638224452734, -0.0009137606248259544], [0.013890187256038189, -0.0009153409628197551], [0.013911301270127296, -0.0009166066301986575], [0.013927151449024677, -0.0009175566956400871], [0.013937723822891712, -0.000918190460652113], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013943673111498356, -0.0009185470407828689], [0.013939255848526955, -0.0009182560024783015], [0.013931404799222946, -0.0009177388274110854], [0.01391963567584753, -0.0009169635595753789], [0.013903956860303879, -0.0009159307228401303], [0.013884379528462887, -0.0009146410739049315], [0.013860918581485748, -0.0009130955440923572], [0.013833590783178806, -0.0009112953557632864], [0.013802416622638702, -0.0009092416730709374], [0.013767418451607227, -0.0009069361258298159], [0.013728621415793896, -0.0009043803438544273], [0.013686053454875946, -0.000901576189789921], [0.013639746233820915, -0.000898525700904429], [0.01358973328024149, -0.0008952310308814049], [0.013536049984395504, -0.0008916946244426072], [0.013478734530508518, -0.0008879189845174551], [0.013417830690741539, -0.0008839068468660116], [0.01335337944328785, -0.0008796611218713224], [0.013285428285598755, -0.000875184778124094], [0.01321402471512556, -0.0008704810752533376], [0.013139220885932446, -0.0008655532728880644], [0.013061068020761013, -0.0008604049799032509], [0.012979622930288315, -0.0008550396887585521], [0.012894942425191402, -0.000849461299367249], [0.012807085178792477, -0.000843673653434962], [0.012716112658381462, -0.0008376808254979551], [0.012622089125216007, -0.000831486948300153], [0.01252507884055376, -0.0008250963292084634], [0.01242514792829752, -0.0008185133920051157], [0.01232236623764038, -0.0008117425604723394], [0.01221680361777544, -0.0008047886076383293], [0.012108531780540943, -0.0007976560737006366], [0.011997622437775135, -0.0007903499063104391], [0.011884151957929134, -0.0007828749367035925], [0.01176819484680891, -0.0007752362289465964], [0.011649828404188156, -0.0007674387888982892], [0.01152913086116314, -0.0007594877388328314], [0.011406181380152702, -0.000751388375647366], [0.011281059123575687, -0.0007431458798237145], [0.011153845116496086, -0.0007347656064666808], [0.01102462224662304, -0.0007262529688887298], [0.010893471539020538, -0.0007176133804023266], [0.010760476812720299, -0.000708852254319936], [0.010625720955431461, -0.000699975120369345], [0.010489287786185741, -0.0006909875082783401], [0.010351261124014854, -0.0006818949477747083], [0.01021172571927309, -0.0006727030267938972], [0.010070767253637314, -0.0006634172750636935], [0.009928468614816666, -0.0006540432805195451], [0.00978491548448801, -0.0006445866310968995], [0.009640192613005638, -0.0006350529147312045], [0.009494383819401264, -0.0006254476611502469], [0.009347572922706604, -0.0006157764582894742], [0.009199844673275948, -0.0006060447776690125], [0.00905128289014101, -0.0005962581490166485], [0.008901969529688358, -0.0005864220438525081], [0.008751987479627132, -0.000576541933696717], [0.008601417765021324, -0.0005666230572387576], [0.008450343273580074, -0.0005566709442064166], [0.00829884223639965, -0.0005466907750815153], [0.008146995678544044, -0.0005366877885535359], [0.007994881831109524, -0.0005266672233119607], [0.007842578925192356, -0.0005166341434232891], [0.007690162397921085, -0.0005065936129540205], [0.007537708152085543, -0.0004965506377629936], [0.007385291159152985, -0.00048651007818989456], [0.0072329845279455185, -0.00047647676547057927], [0.00708085997030139, -0.0004664554726332426], [0.006928988266736269, -0.00045645085629075766], [0.006777438800781965, -0.00044646745664067566], [0.006626280024647713, -0.0004365097847767174], [0.006475577596575022, -0.000426582177169621], [0.00632539764046669, -0.0004166889993939549], [0.006175802554935217, -0.00040683435508981347], [0.006026855669915676, -0.00039702237700112164], [0.005878616590052843, -0.00038725705235265195], [0.005731144454330206, -0.00037754225195385516], [0.0055844965390861034, -0.00036788173019886017], [0.005438728258013725, -0.000358279183274135], [0.005293893627822399, -0.0003487381327431649], [0.0051500448025763035, -0.0003392620128579438], [0.005007232539355755, -0.00032985417055897415], [0.004865505266934633, -0.00032051780726760626], [0.004724910017102957, -0.0003112560079898685], [0.0045854924246668816, -0.00030207179952412844], [0.00444729533046484, -0.00029296797583810985], [0.00431036064401269, -0.0002839473308995366], [0.004174728412181139, -0.0002750125131569803], [0.004040436819195747, -0.0002661659673321992], [0.003907522186636925, -0.0002574101381469518], [0.0037760192062705755, -0.0002487473248038441], [0.003645960707217455, -0.00024017963733058423], [0.003517377423122525, -0.00023170914209913462], [0.0033902989234775305, -0.00022333778906613588], [0.0032647529151290655, -0.0002150673681171611], [0.0031407650094479322, -0.0002068995963782072], [0.003018359187990427, -0.0001988360600080341], [0.002897558268159628, -0.00019087822875007987], [0.0027783827390521765, -0.00018302747048437595], [0.0026608516927808523, -0.00017528505122754723], [0.0025449825916439295, -0.0001676521060289815], [0.0024307910352945328, -0.00016012968262657523], [0.0023182916920632124, -0.00015271871234290302], [0.0022074966691434383, -0.0001454200391890481], [0.0020984173752367496, -0.00013823439076077193], [0.001991063356399536, -0.00013116237823851407], [0.0018854426452890038, -0.0001242045545950532], [0.001781561877578497, -0.00011736135638784617], [0.0016794262919574976, -0.00011063311831094325], [0.0015790396137163043, -0.0001040200877469033], [0.0014804042875766754, -9.752243204275146e-05], [0.0013835214776918292, -9.114022395806387e-05], [0.001288390951231122, -8.487345621688291e-05], [0.001195011311210692, -7.872201967984438e-05], [0.001103379880078137, -7.268574699992314e-05], [0.0010134926997125149, -6.67643835186027e-05], [0.00092534493887797, -6.095759817981161e-05], [0.0008389303111471236, -5.526498716790229e-05], [0.0007542415987700224, -4.9686077545629814e-05], [0.0006712706526741385, -4.422031997819431e-05], [0.0005900081596337259, -3.8867106923135e-05], [0.0005104439333081245, -3.362576899235137e-05], [0.00043256671051494777, -2.8495567676145583e-05], [0.0003563645586837083, -2.3475708076148294e-05], [0.0002818245266098529, -1.856534436228685e-05], [0.00020893292094115168, -1.3763569768343586e-05], [0.00013767523341812193, -9.069431143871043e-06], [6.80362427374348e-05, -4.481924406718463e-06]]}, {"name": "QId_d0", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d1", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d10", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d11", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d12", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d13", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d14", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d15", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d16", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d17", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d18", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d19", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d2", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d20", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d21", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d22", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d23", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d24", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d25", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d26", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d3", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d4", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d5", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d6", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d7", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d8", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}, {"name": "QId_d9", "samples": [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]}], "cmd_def": [{"name": "cx", "qubits": [0, 1], "sequence": [{"name": "fc", "t0": 1680, "ch": "d0", "phase": -2.672354703084363}, {"name": "CX_d1_u0", "t0": 0, "ch": "d1"}, {"name": "fc", "t0": 1680, "ch": "d1", "phase": 0.013894260264923228}, {"name": "parametric_pulse", "t0": 0, "ch": "u0", "label": "CX_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22941187639312718, 0.12690736517838702], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 1680, "ch": "u0", "phase": 0.013894260264923228}, {"name": "fc", "t0": 1680, "ch": "u1", "phase": -2.672354703084363}, {"name": "fc", "t0": 1680, "ch": "u4", "phase": 0.013894260264923228}, {"name": "fc", "t0": 1680, "ch": "u8", "phase": 0.013894260264923228}]}, {"name": "cx", "qubits": [1, 0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [9.770409061041186e-06, 0.10377801308000216], "beta": -1.0149213161488795, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1840, "ch": "d0", "phase": -2.672354703084363}, {"name": "fc", "t0": 1840, "ch": "d0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1840, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [9.770409061041186e-06, 0.10377801308000216], "beta": -1.0149213161488795, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0008700854555585467, 0.09513967305102687], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "CX_d1_u0", "t0": 160, "ch": "d1"}, {"name": "fc", "t0": 1840, "ch": "d1", "phase": 0.013894260264923228}, {"name": "fc", "t0": 1840, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1840, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0008700854555585467, 0.09513967305102687], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u0", "label": "CX_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22941187639312718, 0.12690736517838702], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 1840, "ch": "u0", "phase": 0.013894260264923228}, {"name": "fc", "t0": 1840, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u1", "phase": -3.141592653589793}, {"name": "fc", "t0": 1840, "ch": "u1", "phase": -2.672354703084363}, {"name": "fc", "t0": 1840, "ch": "u1", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 1840, "ch": "u4", "phase": 0.013894260264923228}, {"name": "fc", "t0": 1840, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 1840, "ch": "u8", "phase": 0.013894260264923228}, {"name": "fc", "t0": 1840, "ch": "u8", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [1, 2], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Ym_d1", "pulse_shape": "drag", "parameters": {"amp": [-3.4875941653944765e-17, -0.18985578360621613], "beta": 0.42285170020425616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.18985578360621613, 0.0], "beta": 0.42285170020425616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.08886323708960032, 0.0010025377502923204], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "CR90p_d2_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044423234723716884, 0.001779313464491138], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d2", "label": "CR90m_d2_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044423234723716884, -0.0017793134644911327], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u2", "label": "CR90p_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05506675083348829, 0.2667945783293873], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u2", "label": "CR90m_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.055066750833488255, -0.2667945783293873], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u4", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [1, 4], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0008700854555585467, 0.09513967305102687], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02486912247953545, -0.00011779606006911412], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "d1", "label": "CR90m_d1_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02486912247953545, 0.00011779606006911717], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1504, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1504, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09513967305102687, -0.0008700854555585467], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0949613228743464, 0.001476724810580528], "beta": -3.2119733651985074, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 752, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.18894857072270585, 0.0], "beta": -3.2151369274275954, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1504, "ch": "d4", "label": "Y90m_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0014767248105804899, -0.0949613228743464], "beta": -3.2119733651985074, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 1504, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u13", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 1504, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u8", "label": "CR90p_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11065838780090582, -0.20422533658931907], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "u8", "label": "CR90m_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1106583878009058, 0.20422533658931907], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1504, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [2, 1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09513967305102687, -0.0008700854555585467], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.18985578360621613, 0.0], "beta": 0.42285170020425616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d1", "label": "Y90m_d1", "pulse_shape": "drag", "parameters": {"amp": [-0.0008700854555586004, -0.09513967305102687], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0010025377502923078, 0.08886323708960032], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "CR90p_d2_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044423234723716884, 0.001779313464491138], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d2", "label": "CR90m_d2_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044423234723716884, -0.0017793134644911327], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "d2", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1600, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.08886323708960032, 0.0010025377502923204], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u2", "label": "CR90p_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05506675083348829, 0.2667945783293873], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u2", "label": "CR90m_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.055066750833488255, -0.2667945783293873], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "u2", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u6", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [2, 3], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0010025377502923078, 0.08886323708960032], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "CR90p_d2_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.046604775776712286, 0.0014909491691699266], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d2", "label": "CR90m_d2_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.046604775776712286, -0.001490949169169921], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1760, "ch": "d2", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1760, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.08886323708960032, 0.0010025377502923204], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d3", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.10661547647704614, -0.0006070553922452572], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.21327499648153633, 0.0], "beta": -0.5742099875332195, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1760, "ch": "d3", "label": "Y90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.0006070553922452572, -0.10661547647704614], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 1760, "ch": "u2", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u6", "label": "CR90p_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2487544605560869, 0.19270533949326873], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u6", "label": "CR90m_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24875446055608694, -0.1927053394932687], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1760, "ch": "u6", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [3, 2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.08886323708960032, 0.0010025377502923204], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "CR90p_d2_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.046604775776712286, 0.0014909491691699266], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d2", "label": "CR90m_d2_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.046604775776712286, -0.001490949169169921], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 0, "ch": "d3", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Ym_d3", "pulse_shape": "drag", "parameters": {"amp": [-3.917798126689147e-17, -0.21327499648153633], "beta": -0.5742099875332195, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.21327499648153633, 0.0], "beta": -0.5742099875332195, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u6", "label": "CR90p_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2487544605560869, 0.19270533949326873], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u6", "label": "CR90m_u6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24875446055608694, -0.1927053394932687], "duration": 720, "sigma": 64, "width": 464}}]}, {"name": "cx", "qubits": [3, 5], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.0006070553922452678, 0.10661547647704614], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "CR90p_d3_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.034099467656396876, -0.002078341529476721], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d3", "label": "CR90m_d3_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.034099467656396876, 0.0020783415294767255], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "d3", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1568, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.10661547647704614, -0.0006070553922452572], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d5", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09816343223984954, 0.000240496505118405], "beta": -1.1305064781606282, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19579800279892245, 0.0], "beta": -1.117320206007128, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d5", "label": "Y90m_d5", "pulse_shape": "drag", "parameters": {"amp": [0.00024049650511836782, -0.09816343223984954], "beta": -1.1305064781606282, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u10", "label": "CR90p_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.39369962471143394, -0.07651464007146067], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u10", "label": "CR90m_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.39369962471143394, 0.07651464007146062], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "u10", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u16", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u5", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [4, 1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09513967305102687, -0.0008700854555585467], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02486912247953545, -0.00011779606006911412], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "d1", "label": "CR90m_d1_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02486912247953545, 0.00011779606006911717], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 0, "ch": "d4", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Ym_d4", "pulse_shape": "drag", "parameters": {"amp": [-3.470928935085435e-17, -0.18894857072270585], "beta": -3.2151369274275954, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 752, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.18894857072270585, 0.0], "beta": -3.2151369274275954, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u13", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u8", "label": "CR90p_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11065838780090582, -0.20422533658931907], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "u8", "label": "CR90m_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1106583878009058, 0.20422533658931907], "duration": 592, "sigma": 64, "width": 336}}]}, {"name": "cx", "qubits": [4, 7], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Ym_d4", "pulse_shape": "drag", "parameters": {"amp": [-3.470928935085435e-17, -0.18894857072270585], "beta": -3.2151369274275954, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1520, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.18894857072270585, 0.0], "beta": -3.2151369274275954, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.11943281622859635, -0.0022674042671533006], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d7", "label": "CR90p_d7_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0271482173816001, -0.0008047018218863505], "duration": 1360, "sigma": 64, "width": 1104}}, {"name": "parametric_pulse", "t0": 1680, "ch": "d7", "label": "CR90m_d7_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0271482173816001, 0.0008047018218863539], "duration": 1360, "sigma": 64, "width": 1104}}, {"name": "fc", "t0": 0, "ch": "u13", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u9", "label": "CR90p_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11312176373654503, -0.07866671423527843], "duration": 1360, "sigma": 64, "width": 1104}}, {"name": "parametric_pulse", "t0": 1680, "ch": "u9", "label": "CR90m_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11312176373654505, 0.07866671423527842], "duration": 1360, "sigma": 64, "width": 1104}}]}, {"name": "cx", "qubits": [5, 3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.10661547647704614, -0.0006070553922452572], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "CR90p_d3_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.034099467656396876, -0.002078341529476721], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d3", "label": "CR90m_d3_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.034099467656396876, 0.0020783415294767255], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "d5", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Ym_d5", "pulse_shape": "drag", "parameters": {"amp": [-3.596750961107173e-17, -0.19579800279892245], "beta": -1.117320206007128, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19579800279892245, 0.0], "beta": -1.117320206007128, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "u10", "label": "CR90p_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.39369962471143394, -0.07651464007146067], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u10", "label": "CR90m_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.39369962471143394, 0.07651464007146062], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u16", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [5, 8], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Ym_d5", "pulse_shape": "drag", "parameters": {"amp": [-3.596750961107173e-17, -0.19579800279892245], "beta": -1.117320206007128, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19579800279892245, 0.0], "beta": -1.117320206007128, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.11232769477288704, -0.001120665808023258], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.036775142442902, -0.0016169692678441256], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d8", "label": "CR90m_d8_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.036775142442902, 0.0016169692678441301], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 160, "ch": "u11", "label": "CR90p_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04437939448653144, 0.12261107640839938], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "u11", "label": "CR90m_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04437939448653143, -0.12261107640839938], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 0, "ch": "u16", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [6, 7], "sequence": [{"name": "fc", "t0": 1248, "ch": "d6", "phase": -0.7650587423473584}, {"name": "CX_d7_u12", "t0": 0, "ch": "d7"}, {"name": "fc", "t0": 1248, "ch": "d7", "phase": -0.005135835784204281}, {"name": "parametric_pulse", "t0": 0, "ch": "u12", "label": "CX_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10499752877735855, -0.36236803147443886], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "fc", "t0": 1248, "ch": "u12", "phase": -0.005135835784204281}, {"name": "fc", "t0": 1248, "ch": "u14", "phase": -0.7650587423473584}, {"name": "fc", "t0": 1248, "ch": "u20", "phase": -0.005135835784204281}, {"name": "fc", "t0": 1248, "ch": "u9", "phase": -0.005135835784204281}]}, {"name": "cx", "qubits": [7, 4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0949613228743464, 0.001476724810580528], "beta": -3.2119733651985074, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1520, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.18894857072270585, 0.0], "beta": -3.2151369274275954, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3040, "ch": "d4", "label": "Y90m_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0014767248105804899, -0.0949613228743464], "beta": -3.2119733651985074, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.002267404267153316, 0.11943281622859635], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d7", "label": "CR90p_d7_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0271482173816001, -0.0008047018218863505], "duration": 1360, "sigma": 64, "width": 1104}}, {"name": "parametric_pulse", "t0": 1680, "ch": "d7", "label": "CR90m_d7_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0271482173816001, 0.0008047018218863539], "duration": 1360, "sigma": 64, "width": 1104}}, {"name": "fc", "t0": 3040, "ch": "d7", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3040, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.11943281622859635, -0.0022674042671533006], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 3040, "ch": "u12", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u13", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 3040, "ch": "u20", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u9", "label": "CR90p_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11312176373654503, -0.07866671423527843], "duration": 1360, "sigma": 64, "width": 1104}}, {"name": "parametric_pulse", "t0": 1680, "ch": "u9", "label": "CR90m_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11312176373654505, 0.07866671423527842], "duration": 1360, "sigma": 64, "width": 1104}}, {"name": "fc", "t0": 3040, "ch": "u9", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [7, 6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Y90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.00026580459344425925, 0.11277479162236688], "beta": -0.3854241491495041, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1408, "ch": "d6", "phase": -0.7650587423473584}, {"name": "fc", "t0": 1408, "ch": "d6", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1408, "ch": "d6", "label": "Y90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.00026580459344425925, 0.11277479162236688], "beta": -0.3854241491495041, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.002267404267153316, 0.11943281622859635], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "CX_d7_u12", "t0": 160, "ch": "d7"}, {"name": "fc", "t0": 1408, "ch": "d7", "phase": -0.005135835784204281}, {"name": "fc", "t0": 1408, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1408, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.002267404267153316, 0.11943281622859635], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u12", "label": "CX_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10499752877735855, -0.36236803147443886], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "fc", "t0": 1408, "ch": "u12", "phase": -0.005135835784204281}, {"name": "fc", "t0": 1408, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u14", "phase": -3.141592653589793}, {"name": "fc", "t0": 1408, "ch": "u14", "phase": -0.7650587423473584}, {"name": "fc", "t0": 1408, "ch": "u14", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 1408, "ch": "u20", "phase": -0.005135835784204281}, {"name": "fc", "t0": 1408, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "fc", "t0": 1408, "ch": "u9", "phase": -0.005135835784204281}, {"name": "fc", "t0": 1408, "ch": "u9", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [7, 10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Y90p_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.0008449320557973282, 0.10679021181971572], "beta": -2.1538513301843003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1232, "ch": "d10", "phase": -0.15538815622621827}, {"name": "fc", "t0": 1232, "ch": "d10", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1232, "ch": "d10", "label": "Y90p_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.0008449320557973282, 0.10679021181971572], "beta": -2.1538513301843003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.002267404267153316, 0.11943281622859635], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "CX_d7_u20", "t0": 160, "ch": "d7"}, {"name": "fc", "t0": 1232, "ch": "d7", "phase": -0.01660331424282262}, {"name": "fc", "t0": 1232, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1232, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.002267404267153316, 0.11943281622859635], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 1232, "ch": "u12", "phase": -0.01660331424282262}, {"name": "fc", "t0": 1232, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u15", "phase": -3.141592653589793}, {"name": "fc", "t0": 1232, "ch": "u15", "phase": -0.15538815622621827}, {"name": "fc", "t0": 1232, "ch": "u15", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u20", "label": "CX_u20", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21104559958679092, 0.39050199495667665], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 1232, "ch": "u20", "phase": -0.01660331424282262}, {"name": "fc", "t0": 1232, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u24", "phase": -3.141592653589793}, {"name": "fc", "t0": 1232, "ch": "u24", "phase": -0.15538815622621827}, {"name": "fc", "t0": 1232, "ch": "u24", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "fc", "t0": 1232, "ch": "u9", "phase": -0.01660331424282262}, {"name": "fc", "t0": 1232, "ch": "u9", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [8, 5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09816343223984954, 0.000240496505118405], "beta": -1.1305064781606282, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19579800279892245, 0.0], "beta": -1.117320206007128, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2112, "ch": "d5", "label": "Y90m_d5", "pulse_shape": "drag", "parameters": {"amp": [0.00024049650511836782, -0.09816343223984954], "beta": -1.1305064781606282, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.0011206658080232768, 0.11232769477288704], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.036775142442902, -0.0016169692678441256], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d8", "label": "CR90m_d8_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.036775142442902, 0.0016169692678441301], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 2112, "ch": "d8", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2112, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.11232769477288704, -0.001120665808023258], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u11", "label": "CR90p_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04437939448653144, 0.12261107640839938], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "u11", "label": "CR90m_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04437939448653143, -0.12261107640839938], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 2112, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u16", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 2112, "ch": "u19", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 2112, "ch": "u22", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [8, 9], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.0011206658080232768, 0.11232769477288704], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024859814908763815, -0.0010898878316567657], "duration": 576, "sigma": 64, "width": 320}}, {"name": "parametric_pulse", "t0": 896, "ch": "d8", "label": "CR90m_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024859814908763815, 0.0010898878316567687], "duration": 576, "sigma": 64, "width": 320}}, {"name": "fc", "t0": 1472, "ch": "d8", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1472, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.11232769477288704, -0.001120665808023258], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d9", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "X90p_d9", "pulse_shape": "drag", "parameters": {"amp": [0.10976524219602081, 0.0010579794279775023], "beta": -2.401283303612347, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 736, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.21917054608657616, 0.0], "beta": -2.37751094183648, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1472, "ch": "d9", "label": "Y90m_d9", "pulse_shape": "drag", "parameters": {"amp": [0.0010579794279774676, -0.10976524219602081], "beta": -2.401283303612347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 1472, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u17", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u19", "label": "CR90p_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.6579198464721498, -0.10701068071954273], "duration": 576, "sigma": 64, "width": 320}}, {"name": "parametric_pulse", "t0": 896, "ch": "u19", "label": "CR90m_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.6579198464721498, 0.10701068071954264], "duration": 576, "sigma": 64, "width": 320}}, {"name": "fc", "t0": 1472, "ch": "u19", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 1472, "ch": "u22", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [8, 11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.11907891983300731, -0.0001779950856348504], "beta": -1.0102446887715897, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1344, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.23814229022749572, 0.0], "beta": -0.9255336656200099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2688, "ch": "d11", "label": "Y90m_d11", "pulse_shape": "drag", "parameters": {"amp": [-0.00017799508563490592, -0.11907891983300731], "beta": -1.0102446887715897, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.0011206658080232768, 0.11232769477288704], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02656426609087098, -0.0003335881338605717], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "parametric_pulse", "t0": 1504, "ch": "d8", "label": "CR90m_d8_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02656426609087098, 0.000333588133860575], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "fc", "t0": 2688, "ch": "d8", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2688, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.11232769477288704, -0.001120665808023258], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 2688, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u18", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 2688, "ch": "u19", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u22", "label": "CR90p_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.45680992432134426, 0.149442199803454], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "parametric_pulse", "t0": 1504, "ch": "u22", "label": "CR90m_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.45680992432134426, -0.14944219980345405], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "fc", "t0": 2688, "ch": "u22", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u29", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [9, 8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.11232769477288704, -0.001120665808023258], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024859814908763815, -0.0010898878316567657], "duration": 576, "sigma": 64, "width": 320}}, {"name": "parametric_pulse", "t0": 896, "ch": "d8", "label": "CR90m_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024859814908763815, 0.0010898878316567687], "duration": 576, "sigma": 64, "width": 320}}, {"name": "fc", "t0": 0, "ch": "d9", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "Ym_d9", "pulse_shape": "drag", "parameters": {"amp": [-4.026097615984544e-17, -0.21917054608657616], "beta": -2.37751094183648, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 736, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.21917054608657616, 0.0], "beta": -2.37751094183648, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u17", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u19", "label": "CR90p_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.6579198464721498, -0.10701068071954273], "duration": 576, "sigma": 64, "width": 320}}, {"name": "parametric_pulse", "t0": 896, "ch": "u19", "label": "CR90m_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.6579198464721498, 0.10701068071954264], "duration": 576, "sigma": 64, "width": 320}}]}, {"name": "cx", "qubits": [10, 7], "sequence": [{"name": "fc", "t0": 1072, "ch": "d10", "phase": -0.15538815622621827}, {"name": "CX_d7_u20", "t0": 0, "ch": "d7"}, {"name": "fc", "t0": 1072, "ch": "d7", "phase": -0.01660331424282262}, {"name": "fc", "t0": 1072, "ch": "u12", "phase": -0.01660331424282262}, {"name": "fc", "t0": 1072, "ch": "u15", "phase": -0.15538815622621827}, {"name": "parametric_pulse", "t0": 0, "ch": "u20", "label": "CX_u20", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21104559958679092, 0.39050199495667665], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 1072, "ch": "u20", "phase": -0.01660331424282262}, {"name": "fc", "t0": 1072, "ch": "u24", "phase": -0.15538815622621827}, {"name": "fc", "t0": 1072, "ch": "u9", "phase": -0.01660331424282262}]}, {"name": "cx", "qubits": [10, 12], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Ym_d10", "pulse_shape": "drag", "parameters": {"amp": [-3.9154117963317525e-17, -0.21314509070739499], "beta": -2.0749548741927826, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4960, "ch": "d10", "label": "Xp_d10", "pulse_shape": "drag", "parameters": {"amp": [0.21314509070739499, 0.0], "beta": -2.0749548741927826, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.12333410224784243, 0.0019417134346765398], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028683655194675146, -0.00037558260918872844], "duration": 4800, "sigma": 64, "width": 4544}}, {"name": "parametric_pulse", "t0": 5120, "ch": "d12", "label": "CR90m_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028683655194675146, 0.00037558260918873197], "duration": 4800, "sigma": 64, "width": 4544}}, {"name": "fc", "t0": 0, "ch": "u15", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u21", "label": "CR90p_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07224294276741221, -0.045620428953391357], "duration": 4800, "sigma": 64, "width": 4544}}, {"name": "parametric_pulse", "t0": 5120, "ch": "u21", "label": "CR90m_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07224294276741221, 0.04562042895339136], "duration": 4800, "sigma": 64, "width": 4544}}, {"name": "fc", "t0": 0, "ch": "u24", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [11, 8], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Ym_d11", "pulse_shape": "drag", "parameters": {"amp": [-4.374602902030839e-17, -0.23814229022749572], "beta": -0.9255336656200099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1344, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.23814229022749572, 0.0], "beta": -0.9255336656200099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.11232769477288704, -0.001120665808023258], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02656426609087098, -0.0003335881338605717], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "parametric_pulse", "t0": 1504, "ch": "d8", "label": "CR90m_d8_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02656426609087098, 0.000333588133860575], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "fc", "t0": 0, "ch": "u18", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u22", "label": "CR90p_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.45680992432134426, 0.149442199803454], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "parametric_pulse", "t0": 1504, "ch": "u22", "label": "CR90m_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.45680992432134426, -0.14944219980345405], "duration": 1184, "sigma": 64, "width": 928}}, {"name": "fc", "t0": 0, "ch": "u29", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [11, 14], "sequence": [{"name": "fc", "t0": 64, "ch": "d11", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 64, "ch": "d11", "label": "Ym_d11", "pulse_shape": "drag", "parameters": {"amp": [-4.374602902030839e-17, -0.23814229022749572], "beta": -0.9255336656200099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.23814229022749572, 0.0], "beta": -0.9255336656200099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0867691563869258, -0.0001786389737468895], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 224, "ch": "d14", "label": "CR90p_d14_u23", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0540494807863929, -0.0009322462648471789], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d14", "label": "CR90m_d14_u23", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0540494807863929, 0.0009322462648471855], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 64, "ch": "u18", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 224, "ch": "u23", "label": "CR90p_u23", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.25609538104349444, 0.04781789853351559], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u23", "label": "CR90m_u23", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.25609538104349444, -0.047817898533515625], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 64, "ch": "u29", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [12, 10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.10679021181971572, 0.00084493205579733], "beta": -2.1538513301843003, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d10", "label": "CR90p_d10_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0070030245137444255, 0.00017976622811867118], "duration": 3120, "sigma": 64, "width": 2864}}, {"name": "parametric_pulse", "t0": 3440, "ch": "d10", "label": "CR90m_d10_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0070030245137444255, -0.00017976622811867032], "duration": 3120, "sigma": 64, "width": 2864}}, {"name": "fc", "t0": 0, "ch": "d12", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Ym_d12", "pulse_shape": "drag", "parameters": {"amp": [-4.535260126556402e-17, -0.24688806218598577], "beta": -2.5269736401267258, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3280, "ch": "d12", "label": "Xp_d12", "pulse_shape": "drag", "parameters": {"amp": [0.24688806218598577, 0.0], "beta": -2.5269736401267258, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u24", "label": "CR90p_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1841918419693277, -0.36315970331013514], "duration": 3120, "sigma": 64, "width": 2864}}, {"name": "parametric_pulse", "t0": 3440, "ch": "u24", "label": "CR90m_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18419184196932775, 0.36315970331013514], "duration": 3120, "sigma": 64, "width": 2864}}, {"name": "fc", "t0": 0, "ch": "u27", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [12, 13], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Y90p_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.001941713434676521, 0.12333410224784243], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06526434945389241, 0.00041436686492511037], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d12", "label": "CR90m_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06526434945389241, -0.0004143668649251024], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1952, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.12333410224784243, 0.0019417134346765398], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d13", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.103773449007206, 0.00017622277418506848], "beta": -1.8869442543880832, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.2078119782442765, 0.0], "beta": -1.9469493626547842, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1952, "ch": "d13", "label": "Y90m_d13", "pulse_shape": "drag", "parameters": {"amp": [0.00017622277418506804, -0.103773449007206], "beta": -1.8869442543880832, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u21", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u25", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u27", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u27", "label": "CR90p_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.23294981254691402, 0.19712079542085015], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u27", "label": "CR90m_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.232949812546914, -0.19712079542085018], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u30", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u32", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [12, 15], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Y90p_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.001941713434676521, 0.12333410224784243], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.008260801986297413, -0.0008827901705241821], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d12", "label": "CR90m_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.008260801986297413, 0.000882790170524183], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 2080, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2080, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.12333410224784243, 0.0019417134346765398], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d15", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.12780615832633155, 0.0019970021606818145], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.25845572259154465, 0.0], "beta": -2.601509635945852, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2080, "ch": "d15", "label": "Y90m_d15", "pulse_shape": "drag", "parameters": {"amp": [0.001997002160681846, -0.12780615832633155], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "fc", "t0": 2080, "ch": "u21", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u26", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u27", "phase": -3.141592653589793}, {"name": "fc", "t0": 2080, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u32", "label": "CR90p_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.36798682564256685, -0.08192622752243602], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "u32", "label": "CR90m_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.36798682564256685, 0.08192622752243606], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 2080, "ch": "u32", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u37", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [13, 12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.12333410224784243, 0.0019417134346765398], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06526434945389241, 0.00041436686492511037], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d12", "label": "CR90m_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06526434945389241, -0.0004143668649251024], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "d13", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Ym_d13", "pulse_shape": "drag", "parameters": {"amp": [-3.817444109719989e-17, -0.2078119782442765], "beta": -1.9469493626547842, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.2078119782442765, 0.0], "beta": -1.9469493626547842, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u27", "label": "CR90p_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.23294981254691402, 0.19712079542085015], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u27", "label": "CR90m_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.232949812546914, -0.19712079542085018], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u30", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [13, 14], "sequence": [{"name": "fc", "t0": 64, "ch": "d13", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 64, "ch": "d13", "label": "Ym_d13", "pulse_shape": "drag", "parameters": {"amp": [-3.817444109719989e-17, -0.2078119782442765], "beta": -1.9469493626547842, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1488, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.2078119782442765, 0.0], "beta": -1.9469493626547842, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0867691563869258, -0.0001786389737468895], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 224, "ch": "d14", "label": "CR90p_d14_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028225276357741105, 0.00020512356287653318], "duration": 1264, "sigma": 64, "width": 1008}}, {"name": "parametric_pulse", "t0": 1648, "ch": "d14", "label": "CR90m_d14_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028225276357741105, -0.0002051235628765297], "duration": 1264, "sigma": 64, "width": 1008}}, {"name": "fc", "t0": 64, "ch": "u25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 224, "ch": "u28", "label": "CR90p_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.012845131635039878, -0.0944243854748521], "duration": 1264, "sigma": 64, "width": 1008}}, {"name": "parametric_pulse", "t0": 1648, "ch": "u28", "label": "CR90m_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.012845131635039865, 0.0944243854748521], "duration": 1264, "sigma": 64, "width": 1008}}, {"name": "fc", "t0": 64, "ch": "u30", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [14, 11], "sequence": [{"name": "fc", "t0": 64, "ch": "d11", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 64, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.11907891983300731, -0.0001779950856348504], "beta": -1.0102446887715897, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.23814229022749572, 0.0], "beta": -0.9255336656200099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1888, "ch": "d11", "label": "Y90m_d11", "pulse_shape": "drag", "parameters": {"amp": [-0.00017799508563490592, -0.11907891983300731], "beta": -1.0102446887715897, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d14", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Y90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.00017863897374688822, 0.0867691563869258], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 224, "ch": "d14", "label": "CR90p_d14_u23", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0540494807863929, -0.0009322462648471789], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d14", "label": "CR90m_d14_u23", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0540494807863929, 0.0009322462648471855], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1824, "ch": "d14", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0867691563869258, -0.0001786389737468895], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 64, "ch": "u18", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 224, "ch": "u23", "label": "CR90p_u23", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.25609538104349444, 0.04781789853351559], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u23", "label": "CR90m_u23", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.25609538104349444, -0.047817898533515625], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1824, "ch": "u23", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u28", "phase": -1.5707963267948966}, {"name": "fc", "t0": 64, "ch": "u29", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u34", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [14, 13], "sequence": [{"name": "fc", "t0": 64, "ch": "d13", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 64, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.103773449007206, 0.00017622277418506848], "beta": -1.8869442543880832, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1488, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.2078119782442765, 0.0], "beta": -1.9469493626547842, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2976, "ch": "d13", "label": "Y90m_d13", "pulse_shape": "drag", "parameters": {"amp": [0.00017622277418506804, -0.103773449007206], "beta": -1.8869442543880832, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d14", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Y90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.00017863897374688822, 0.0867691563869258], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 224, "ch": "d14", "label": "CR90p_d14_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028225276357741105, 0.00020512356287653318], "duration": 1264, "sigma": 64, "width": 1008}}, {"name": "parametric_pulse", "t0": 1648, "ch": "d14", "label": "CR90m_d14_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028225276357741105, -0.0002051235628765297], "duration": 1264, "sigma": 64, "width": 1008}}, {"name": "fc", "t0": 2912, "ch": "d14", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2912, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0867691563869258, -0.0001786389737468895], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -3.141592653589793}, {"name": "fc", "t0": 2912, "ch": "u23", "phase": -1.5707963267948966}, {"name": "fc", "t0": 64, "ch": "u25", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 224, "ch": "u28", "label": "CR90p_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.012845131635039878, -0.0944243854748521], "duration": 1264, "sigma": 64, "width": 1008}}, {"name": "parametric_pulse", "t0": 1648, "ch": "u28", "label": "CR90m_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.012845131635039865, 0.0944243854748521], "duration": 1264, "sigma": 64, "width": 1008}}, {"name": "fc", "t0": 2912, "ch": "u28", "phase": -1.5707963267948966}, {"name": "fc", "t0": 64, "ch": "u30", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -3.141592653589793}, {"name": "fc", "t0": 2912, "ch": "u34", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [14, 16], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Ym_d14", "pulse_shape": "drag", "parameters": {"amp": [-3.188903347716755e-17, -0.17359581281922776], "beta": 1.6832227623818992, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.17359581281922776, 0.0], "beta": 1.6832227623818992, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10747776649112639, -9.675217802450346e-05], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 224, "ch": "d16", "label": "CR90p_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044709872988402136, -0.0009141081039396015], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d16", "label": "CR90m_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044709872988402136, 0.000914108103939607], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 224, "ch": "u31", "label": "CR90p_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09461323070028362, -0.07890362337235855], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1408, "ch": "u31", "label": "CR90m_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0946132307002836, 0.07890362337235857], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 0, "ch": "u34", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [15, 12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.12333410224784243, 0.0019417134346765398], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.008260801986297413, -0.0008827901705241821], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d12", "label": "CR90m_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.008260801986297413, 0.000882790170524183], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 0, "ch": "d15", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Ym_d15", "pulse_shape": "drag", "parameters": {"amp": [-4.747754600895771e-17, -0.25845572259154465], "beta": -2.601509635945852, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.25845572259154465, 0.0], "beta": -2.601509635945852, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u26", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u32", "label": "CR90p_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.36798682564256685, -0.08192622752243602], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "u32", "label": "CR90m_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.36798682564256685, 0.08192622752243606], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 0, "ch": "u37", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [15, 18], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Y90p_d15", "pulse_shape": "drag", "parameters": {"amp": [-0.0019970021606818054, 0.12780615832633155], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d15", "label": "CR90p_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02472247971889065, 0.0004797150661554713], "duration": 1392, "sigma": 64, "width": 1136}}, {"name": "parametric_pulse", "t0": 1712, "ch": "d15", "label": "CR90m_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02472247971889065, -0.0004797150661554683], "duration": 1392, "sigma": 64, "width": 1136}}, {"name": "fc", "t0": 3104, "ch": "d15", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3104, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.12780615832633155, 0.0019970021606818145], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d18", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.10509771899692791, -0.00046413034620189874], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1552, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.20998704099452967, 0.0], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3104, "ch": "d18", "label": "Y90m_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.00046413034620195544, -0.10509771899692791], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u26", "phase": -3.141592653589793}, {"name": "fc", "t0": 3104, "ch": "u26", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u37", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u37", "label": "CR90p_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.031556175682002634, -0.0575477504416459], "duration": 1392, "sigma": 64, "width": 1136}}, {"name": "parametric_pulse", "t0": 1712, "ch": "u37", "label": "CR90m_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03155617568200263, 0.05754775044164591], "duration": 1392, "sigma": 64, "width": 1136}}, {"name": "fc", "t0": 3104, "ch": "u37", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [16, 14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0867691563869258, -0.0001786389737468895], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.17359581281922776, 0.0], "beta": 1.6832227623818992, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 2368, "ch": "d14", "label": "Y90m_d14", "pulse_shape": "drag", "parameters": {"amp": [-0.0001786389737469374, -0.0867691563869258], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 0, "ch": "d16", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Y90p_d16", "pulse_shape": "drag", "parameters": {"amp": [9.675217802451387e-05, 0.10747776649112639], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 224, "ch": "d16", "label": "CR90p_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044709872988402136, -0.0009141081039396015], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d16", "label": "CR90m_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044709872988402136, 0.000914108103939607], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 2368, "ch": "d16", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2368, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10747776649112639, -9.675217802450346e-05], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u31", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 224, "ch": "u31", "label": "CR90p_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09461323070028362, -0.07890362337235855], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1408, "ch": "u31", "label": "CR90m_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0946132307002836, 0.07890362337235857], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 2368, "ch": "u31", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u40", "phase": -3.141592653589793}, {"name": "fc", "t0": 2368, "ch": "u40", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [16, 19], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Y90p_d16", "pulse_shape": "drag", "parameters": {"amp": [9.675217802451387e-05, 0.10747776649112639], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 224, "ch": "d16", "label": "CR90p_d16_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05789121219872356, 3.7047078004946636e-06], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1232, "ch": "d16", "label": "CR90m_d16_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05789121219872356, -3.704707800487574e-06], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 2080, "ch": "d16", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2080, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10747776649112639, -9.675217802450346e-05], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 64, "ch": "d19", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 64, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.10472315050694099, 0.001404359413591613], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.20908015594565632, 0.0], "beta": -3.1449194923112707, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2144, "ch": "d19", "label": "Y90m_d19", "pulse_shape": "drag", "parameters": {"amp": [0.001404359413591633, -0.10472315050694099], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u31", "phase": -3.141592653589793}, {"name": "fc", "t0": 2080, "ch": "u31", "phase": -1.5707963267948966}, {"name": "fc", "t0": 64, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u40", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 224, "ch": "u40", "label": "CR90p_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07942114284240295, 0.31749624813222305], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1232, "ch": "u40", "label": "CR90m_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07942114284240291, -0.31749624813222305], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 2080, "ch": "u40", "phase": -1.5707963267948966}, {"name": "fc", "t0": 64, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 64, "ch": "u46", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [17, 18], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "Y90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.0012405533901464266, 0.10028012827985704], "beta": 0.650439081116248, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d17", "label": "CR90p_d17_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03397874828828952, -0.0009288502896280932], "duration": 928, "sigma": 64, "width": 672}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d17", "label": "CR90m_d17_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03397874828828952, 0.0009288502896280973], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 2176, "ch": "d17", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2176, "ch": "d17", "label": "X90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.10028012827985704, -0.0012405533901464092], "beta": 0.650439081116248, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d18", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.10509771899692791, -0.00046413034620189874], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.20998704099452967, 0.0], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2176, "ch": "d18", "label": "Y90m_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.00046413034620195544, -0.10509771899692791], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u38", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u38", "label": "CR90p_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2233102153377555, 0.044833514350599284], "duration": 928, "sigma": 64, "width": 672}}, {"name": "parametric_pulse", "t0": 1248, "ch": "u38", "label": "CR90m_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2233102153377555, -0.04483351435059931], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 2176, "ch": "u38", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [18, 15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.12780615832633155, 0.0019970021606818145], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d15", "label": "CR90p_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02472247971889065, 0.0004797150661554713], "duration": 1392, "sigma": 64, "width": 1136}}, {"name": "parametric_pulse", "t0": 1712, "ch": "d15", "label": "CR90m_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02472247971889065, -0.0004797150661554683], "duration": 1392, "sigma": 64, "width": 1136}}, {"name": "fc", "t0": 0, "ch": "d18", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Ym_d18", "pulse_shape": "drag", "parameters": {"amp": [-3.857399364245622e-17, -0.20998704099452967], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1552, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.20998704099452967, 0.0], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u37", "label": "CR90p_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.031556175682002634, -0.0575477504416459], "duration": 1392, "sigma": 64, "width": 1136}}, {"name": "parametric_pulse", "t0": 1712, "ch": "u37", "label": "CR90m_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03155617568200263, 0.05754775044164591], "duration": 1392, "sigma": 64, "width": 1136}}, {"name": "fc", "t0": 0, "ch": "u44", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [18, 17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "X90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.10028012827985704, -0.0012405533901464092], "beta": 0.650439081116248, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d17", "label": "CR90p_d17_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03397874828828952, -0.0009288502896280932], "duration": 928, "sigma": 64, "width": 672}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d17", "label": "CR90m_d17_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03397874828828952, 0.0009288502896280973], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 0, "ch": "d18", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Ym_d18", "pulse_shape": "drag", "parameters": {"amp": [-3.857399364245622e-17, -0.20998704099452967], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.20998704099452967, 0.0], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u38", "label": "CR90p_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2233102153377555, 0.044833514350599284], "duration": 928, "sigma": 64, "width": 672}}, {"name": "parametric_pulse", "t0": 1248, "ch": "u38", "label": "CR90m_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2233102153377555, -0.04483351435059931], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 0, "ch": "u44", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [18, 21], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Ym_d18", "pulse_shape": "drag", "parameters": {"amp": [-3.857399364245622e-17, -0.20998704099452967], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.20998704099452967, 0.0], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.10055957599496994, -0.001614157195272922], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d21", "label": "CR90p_d21_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.027192023175069316, -0.002052806681049806], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d21", "label": "CR90m_d21_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.027192023175069316, 0.0020528066810498093], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u39", "label": "CR90p_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09464595227717112, -0.18564345372396748], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "parametric_pulse", "t0": 1440, "ch": "u39", "label": "CR90m_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0946459522771711, 0.18564345372396748], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "fc", "t0": 0, "ch": "u44", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [19, 16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10747776649112639, -9.675217802450346e-05], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "parametric_pulse", "t0": 224, "ch": "d16", "label": "CR90p_d16_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05789121219872356, 3.7047078004946636e-06], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1232, "ch": "d16", "label": "CR90m_d16_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05789121219872356, -3.704707800487574e-06], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 64, "ch": "d19", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 64, "ch": "d19", "label": "Ym_d19", "pulse_shape": "drag", "parameters": {"amp": [-3.840740156161162e-17, -0.20908015594565632], "beta": -3.1449194923112707, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.20908015594565632, 0.0], "beta": -3.1449194923112707, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 64, "ch": "u35", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 224, "ch": "u40", "label": "CR90p_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07942114284240295, 0.31749624813222305], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1232, "ch": "u40", "label": "CR90m_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07942114284240291, -0.31749624813222305], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 64, "ch": "u43", "phase": 1.5707963267948966}, {"name": "fc", "t0": 64, "ch": "u46", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [19, 20], "sequence": [{"name": "fc", "t0": 1744, "ch": "d19", "phase": 0.12631909523827917}, {"name": "CX_d20_u41", "t0": 0, "ch": "d20"}, {"name": "fc", "t0": 1744, "ch": "d20", "phase": -0.011888241260744527}, {"name": "fc", "t0": 1744, "ch": "u35", "phase": 0.12631909523827917}, {"name": "parametric_pulse", "t0": 0, "ch": "u41", "label": "CX_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19013752845375925, 0.42399381620856724], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 1744, "ch": "u41", "phase": -0.011888241260744527}, {"name": "fc", "t0": 1744, "ch": "u43", "phase": 0.12631909523827917}, {"name": "fc", "t0": 1744, "ch": "u46", "phase": 0.12631909523827917}]}, {"name": "cx", "qubits": [19, 22], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Y90p_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.0014043594135915993, 0.10472315050694099], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d19", "label": "CR90p_d19_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.038161536066229476, 0.0009531971408767625], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d19", "label": "CR90m_d19_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.038161536066229476, -0.0009531971408767579], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d19", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.10472315050694099, 0.001404359413591613], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d22", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10215481542130887, 0.001026211691743867], "beta": -1.4661821229995018, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.20193314480317487, 0.0], "beta": -1.4239236928422578, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d22", "label": "Y90m_d22", "pulse_shape": "drag", "parameters": {"amp": [0.0010262116917438534, -0.10215481542130887], "beta": -1.4661821229995018, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u42", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u46", "label": "CR90p_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24974967098806886, 0.011858490107280111], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u46", "label": "CR90m_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24974967098806886, -0.011858490107280142], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u46", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u52", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [20, 19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Y90p_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.0014043594135915993, 0.10472315050694099], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 1904, "ch": "d19", "phase": 0.12631909523827917}, {"name": "fc", "t0": 1904, "ch": "d19", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1904, "ch": "d19", "label": "Y90p_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.0014043594135915993, 0.10472315050694099], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d20", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "Y90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.0002954714864645744, 0.12401715565059833], "beta": -0.4358998158420476, "duration": 160, "sigma": 40}}, {"name": "CX_d20_u41", "t0": 160, "ch": "d20"}, {"name": "fc", "t0": 1904, "ch": "d20", "phase": -0.011888241260744527}, {"name": "fc", "t0": 1904, "ch": "d20", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1904, "ch": "d20", "label": "Y90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.0002954714864645744, 0.12401715565059833], "beta": -0.4358998158420476, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -3.141592653589793}, {"name": "fc", "t0": 1904, "ch": "u35", "phase": 0.12631909523827917}, {"name": "fc", "t0": 1904, "ch": "u35", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u41", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u41", "label": "CX_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19013752845375925, 0.42399381620856724], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 1904, "ch": "u41", "phase": -0.011888241260744527}, {"name": "fc", "t0": 1904, "ch": "u41", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -3.141592653589793}, {"name": "fc", "t0": 1904, "ch": "u43", "phase": 0.12631909523827917}, {"name": "fc", "t0": 1904, "ch": "u43", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u46", "phase": -3.141592653589793}, {"name": "fc", "t0": 1904, "ch": "u46", "phase": 0.12631909523827917}, {"name": "fc", "t0": 1904, "ch": "u46", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [21, 18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.10509771899692791, -0.00046413034620189874], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.20998704099452967, 0.0], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2560, "ch": "d18", "label": "Y90m_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.00046413034620195544, -0.10509771899692791], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d21", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Y90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.0016141571952729271, 0.10055957599496994], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d21", "label": "CR90p_d21_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.027192023175069316, -0.002052806681049806], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d21", "label": "CR90m_d21_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.027192023175069316, 0.0020528066810498093], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "fc", "t0": 2560, "ch": "d21", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2560, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.10055957599496994, -0.001614157195272922], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u39", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u39", "label": "CR90p_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09464595227717112, -0.18564345372396748], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "parametric_pulse", "t0": 1440, "ch": "u39", "label": "CR90m_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0946459522771711, 0.18564345372396748], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "fc", "t0": 2560, "ch": "u39", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u48", "phase": -3.141592653589793}, {"name": "fc", "t0": 2560, "ch": "u48", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [21, 23], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Y90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.0016141571952729271, 0.10055957599496994], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d21", "label": "CR90p_d21_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024006973887567798, 6.917627438865443e-05], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "parametric_pulse", "t0": 1856, "ch": "d21", "label": "CR90m_d21_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024006973887567798, -6.917627438865149e-05], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 3392, "ch": "d21", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3392, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.10055957599496994, -0.001614157195272922], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d23", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09966491293126645, 0.0007347229897852622], "beta": -2.5699967175031464, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1696, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.19888046579575155, 0.0], "beta": -2.4571800963807013, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3392, "ch": "d23", "label": "Y90m_d23", "pulse_shape": "drag", "parameters": {"amp": [0.0007347229897852598, -0.09966491293126645], "beta": -2.5699967175031464, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u39", "phase": -3.141592653589793}, {"name": "fc", "t0": 3392, "ch": "u39", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u45", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u48", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u48", "label": "CR90p_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.029165049131582722, -0.08886596923395927], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "parametric_pulse", "t0": 1856, "ch": "u48", "label": "CR90m_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.029165049131582733, 0.08886596923395927], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 3392, "ch": "u48", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u50", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [22, 19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.10472315050694099, 0.001404359413591613], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d19", "label": "CR90p_d19_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.038161536066229476, 0.0009531971408767625], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d19", "label": "CR90m_d19_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.038161536066229476, -0.0009531971408767579], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "d22", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Ym_d22", "pulse_shape": "drag", "parameters": {"amp": [-3.709451691374506e-17, -0.20193314480317487], "beta": -1.4239236928422578, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.20193314480317487, 0.0], "beta": -1.4239236928422578, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u42", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u46", "label": "CR90p_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24974967098806886, 0.011858490107280111], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u46", "label": "CR90m_u46", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24974967098806886, -0.011858490107280142], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u52", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [22, 25], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Ym_d22", "pulse_shape": "drag", "parameters": {"amp": [-3.709451691374506e-17, -0.20193314480317487], "beta": -1.4239236928422578, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.20193314480317487, 0.0], "beta": -1.4239236928422578, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.1182983094904508, -0.0007061463483446628], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04249774484882339, 0.0024321327395304443], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d25", "label": "CR90m_d25_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04249774484882339, -0.002432132739530439], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u42", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u47", "label": "CR90p_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10221945129321065, 0.005945838177380025], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u47", "label": "CR90m_u47", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10221945129321065, -0.005945838177380013], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u52", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [23, 21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.10055957599496994, -0.001614157195272922], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d21", "label": "CR90p_d21_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024006973887567798, 6.917627438865443e-05], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "parametric_pulse", "t0": 1856, "ch": "d21", "label": "CR90m_d21_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024006973887567798, -6.917627438865149e-05], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 0, "ch": "d23", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Ym_d23", "pulse_shape": "drag", "parameters": {"amp": [-3.6533748877455266e-17, -0.19888046579575155], "beta": -2.4571800963807013, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1696, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.19888046579575155, 0.0], "beta": -2.4571800963807013, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u45", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u48", "label": "CR90p_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.029165049131582722, -0.08886596923395927], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "parametric_pulse", "t0": 1856, "ch": "u48", "label": "CR90m_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.029165049131582733, 0.08886596923395927], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 0, "ch": "u50", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [23, 24], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Ym_d23", "pulse_shape": "drag", "parameters": {"amp": [-3.6533748877455266e-17, -0.19888046579575155], "beta": -2.4571800963807013, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.19888046579575155, 0.0], "beta": -2.4571800963807013, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.10509208156374965, -0.0004234540234449305], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03455491246414818, -0.001212846023541904], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d24", "label": "CR90m_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03455491246414818, 0.0012128460235419083], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u45", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u49", "label": "CR90p_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17715320584090247, 0.04440926876845253], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u49", "label": "CR90m_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17715320584090247, -0.04440926876845251], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u50", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [24, 23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09966491293126645, 0.0007347229897852622], "beta": -2.5699967175031464, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.19888046579575155, 0.0], "beta": -2.4571800963807013, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d23", "label": "Y90m_d23", "pulse_shape": "drag", "parameters": {"amp": [0.0007347229897852598, -0.09966491293126645], "beta": -2.5699967175031464, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d24", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Y90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.00042345402344494827, 0.10509208156374965], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03455491246414818, -0.001212846023541904], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d24", "label": "CR90m_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03455491246414818, 0.0012128460235419083], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d24", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.10509208156374965, -0.0004234540234449305], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u45", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u49", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u49", "label": "CR90p_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17715320584090247, 0.04440926876845253], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u49", "label": "CR90m_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17715320584090247, -0.04440926876845251], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u49", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u50", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u53", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u53", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [24, 25], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Ym_d24", "pulse_shape": "drag", "parameters": {"amp": [-3.865566657035069e-17, -0.21043164770590328], "beta": -0.5631209330522283, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d24", "label": "Xp_d24", "pulse_shape": "drag", "parameters": {"amp": [0.21043164770590328, 0.0], "beta": -0.5631209330522283, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.1182983094904508, -0.0007061463483446628], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03164237316367921, -0.0012960226757690234], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "parametric_pulse", "t0": 1328, "ch": "d25", "label": "CR90m_d25_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03164237316367921, 0.0012960226757690273], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 0, "ch": "u49", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u51", "label": "CR90p_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20687323205168864, 0.07196618343832084], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "parametric_pulse", "t0": 1328, "ch": "u51", "label": "CR90m_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.20687323205168864, -0.07196618343832087], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 0, "ch": "u53", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [25, 22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10215481542130887, 0.001026211691743867], "beta": -1.4661821229995018, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "CR90p_d22_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03711643467543796, -0.00037476765818634513], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d22", "label": "CR90m_d22_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03711643467543796, 0.0003747676581863497], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 0, "ch": "d25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Ym_d25", "pulse_shape": "drag", "parameters": {"amp": [-4.381383742145316e-17, -0.23851142197057992], "beta": 0.913064895986392, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.23851142197057992, 0.0], "beta": 0.913064895986392, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u52", "label": "CR90p_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17657740166922253, -0.04598065793180122], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "u52", "label": "CR90m_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17657740166922253, 0.0459806579318012], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 0, "ch": "u55", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [25, 24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.10509208156374965, -0.0004234540234449305], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d24", "label": "Xp_d24", "pulse_shape": "drag", "parameters": {"amp": [0.21043164770590328, 0.0], "beta": -0.5631209330522283, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2336, "ch": "d24", "label": "Y90m_d24", "pulse_shape": "drag", "parameters": {"amp": [-0.00042345402344491444, -0.10509208156374965], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d25", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Y90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.0007061463483446582, 0.1182983094904508], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03164237316367921, -0.0012960226757690234], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "parametric_pulse", "t0": 1328, "ch": "d25", "label": "CR90m_d25_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03164237316367921, 0.0012960226757690273], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 2336, "ch": "d25", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2336, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.1182983094904508, -0.0007061463483446628], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": -3.141592653589793}, {"name": "fc", "t0": 2336, "ch": "u47", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u49", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u51", "label": "CR90p_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20687323205168864, 0.07196618343832084], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "parametric_pulse", "t0": 1328, "ch": "u51", "label": "CR90m_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.20687323205168864, -0.07196618343832087], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 2336, "ch": "u51", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u53", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u55", "phase": -3.141592653589793}, {"name": "fc", "t0": 2336, "ch": "u55", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [25, 26], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Y90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.0007061463483446582, 0.1182983094904508], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09956139244246727, 0.0], "duration": 416, "sigma": 64, "width": 160}}, {"name": "parametric_pulse", "t0": 736, "ch": "d25", "label": "CR90m_d25_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09956139244246727, 1.2192754057332102e-17], "duration": 416, "sigma": 64, "width": 160}}, {"name": "fc", "t0": 1152, "ch": "d25", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1152, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.1182983094904508, -0.0007061463483446628], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d26", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.0854607765253132, -0.0008496528450102033], "beta": 0.6053670972416939, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 576, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.1704704930653871, 0.0], "beta": 0.6301150997678077, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d26", "label": "Y90m_d26", "pulse_shape": "drag", "parameters": {"amp": [-0.0008496528450101955, -0.0854607765253132], "beta": 0.6053670972416939, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": -3.141592653589793}, {"name": "fc", "t0": 1152, "ch": "u47", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": -3.141592653589793}, {"name": "fc", "t0": 1152, "ch": "u51", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u54", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u55", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u55", "label": "CR90p_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.9006789054430967, 0.3259568256782879], "duration": 416, "sigma": 64, "width": 160}}, {"name": "parametric_pulse", "t0": 736, "ch": "u55", "label": "CR90m_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.9006789054430967, -0.32595682567828776], "duration": 416, "sigma": 64, "width": 160}}, {"name": "fc", "t0": 1152, "ch": "u55", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [26, 25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.1182983094904508, -0.0007061463483446628], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09956139244246727, 0.0], "duration": 416, "sigma": 64, "width": 160}}, {"name": "parametric_pulse", "t0": 736, "ch": "d25", "label": "CR90m_d25_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09956139244246727, 1.2192754057332102e-17], "duration": 416, "sigma": 64, "width": 160}}, {"name": "fc", "t0": 0, "ch": "d26", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Ym_d26", "pulse_shape": "drag", "parameters": {"amp": [-3.1314921552239606e-17, -0.1704704930653871], "beta": 0.6301150997678077, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 576, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.1704704930653871, 0.0], "beta": 0.6301150997678077, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u54", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u55", "label": "CR90p_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.9006789054430967, 0.3259568256782879], "duration": 416, "sigma": 64, "width": 160}}, {"name": "parametric_pulse", "t0": 736, "ch": "u55", "label": "CR90m_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.9006789054430967, -0.32595682567828776], "duration": 416, "sigma": 64, "width": 160}}]}, {"name": "id", "qubits": [0], "sequence": [{"name": "QId_d0", "t0": 0, "ch": "d0"}]}, {"name": "id", "qubits": [1], "sequence": [{"name": "QId_d1", "t0": 0, "ch": "d1"}]}, {"name": "id", "qubits": [2], "sequence": [{"name": "QId_d2", "t0": 0, "ch": "d2"}]}, {"name": "id", "qubits": [3], "sequence": [{"name": "QId_d3", "t0": 0, "ch": "d3"}]}, {"name": "id", "qubits": [4], "sequence": [{"name": "QId_d4", "t0": 0, "ch": "d4"}]}, {"name": "id", "qubits": [5], "sequence": [{"name": "QId_d5", "t0": 0, "ch": "d5"}]}, {"name": "id", "qubits": [6], "sequence": [{"name": "QId_d6", "t0": 0, "ch": "d6"}]}, {"name": "id", "qubits": [7], "sequence": [{"name": "QId_d7", "t0": 0, "ch": "d7"}]}, {"name": "id", "qubits": [8], "sequence": [{"name": "QId_d8", "t0": 0, "ch": "d8"}]}, {"name": "id", "qubits": [9], "sequence": [{"name": "QId_d9", "t0": 0, "ch": "d9"}]}, {"name": "id", "qubits": [10], "sequence": [{"name": "QId_d10", "t0": 0, "ch": "d10"}]}, {"name": "id", "qubits": [11], "sequence": [{"name": "QId_d11", "t0": 0, "ch": "d11"}]}, {"name": "id", "qubits": [12], "sequence": [{"name": "QId_d12", "t0": 0, "ch": "d12"}]}, {"name": "id", "qubits": [13], "sequence": [{"name": "QId_d13", "t0": 0, "ch": "d13"}]}, {"name": "id", "qubits": [14], "sequence": [{"name": "QId_d14", "t0": 0, "ch": "d14"}]}, {"name": "id", "qubits": [15], "sequence": [{"name": "QId_d15", "t0": 0, "ch": "d15"}]}, {"name": "id", "qubits": [16], "sequence": [{"name": "QId_d16", "t0": 0, "ch": "d16"}]}, {"name": "id", "qubits": [17], "sequence": [{"name": "QId_d17", "t0": 0, "ch": "d17"}]}, {"name": "id", "qubits": [18], "sequence": [{"name": "QId_d18", "t0": 0, "ch": "d18"}]}, {"name": "id", "qubits": [19], "sequence": [{"name": "QId_d19", "t0": 0, "ch": "d19"}]}, {"name": "id", "qubits": [20], "sequence": [{"name": "QId_d20", "t0": 0, "ch": "d20"}]}, {"name": "id", "qubits": [21], "sequence": [{"name": "QId_d21", "t0": 0, "ch": "d21"}]}, {"name": "id", "qubits": [22], "sequence": [{"name": "QId_d22", "t0": 0, "ch": "d22"}]}, {"name": "id", "qubits": [23], "sequence": [{"name": "QId_d23", "t0": 0, "ch": "d23"}]}, {"name": "id", "qubits": [24], "sequence": [{"name": "QId_d24", "t0": 0, "ch": "d24"}]}, {"name": "id", "qubits": [25], "sequence": [{"name": "QId_d25", "t0": 0, "ch": "d25"}]}, {"name": "id", "qubits": [26], "sequence": [{"name": "QId_d26", "t0": 0, "ch": "d26"}]}, {"name": "measure", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12266217950601949, 0.10273261273243786], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m0", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12266217950601949, 0.10273261273243786], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m0", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13619469826841404, -0.03241919436962709], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m1", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m10", "label": "M_m10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22500055605161653, -0.19843071782480087], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m10", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m11", "label": "M_m11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3760811841099962, 0.06045336416960721], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m11", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m12", "label": "M_m12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07963442504111665, 0.007639263601341006], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m12", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m13", "label": "M_m13", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12239057017057665, -0.10305604462291941], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m13", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m14", "label": "M_m14", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14109725989956104, 0.05090739876320263], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m14", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m15", "label": "M_m15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1230893652892274, 0.08572635623129644], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m15", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m16", "label": "M_m16", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1593931342404477, 0.013922239654833551], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m16", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m17", "label": "M_m17", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.055360458087106774, -0.16073338072841528], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m17", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m18", "label": "M_m18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07686040988571065, 0.25322226263146874], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m18", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m19", "label": "M_m19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10540076410988734, -0.03147505242333812], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m19", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09705410035689166, 0.024093600891406858], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m2", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m20", "label": "M_m20", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12039156890079071, 0.0894755281493558], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m20", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m21", "label": "M_m21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13304446902232653, 0.2688850484176597], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m21", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m22", "label": "M_m22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05947624125027703, -0.0925341922034166], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m22", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m23", "label": "M_m23", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06990064374139505, -0.0037282709851308975], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m23", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m24", "label": "M_m24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.046939642799484614, -0.2455538025237174], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m24", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m25", "label": "M_m25", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07504300425794548, 0.09364052280899533], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m25", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m26", "label": "M_m26", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2439807079397257, -0.17456636031386533], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m26", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05186548643842263, 0.16219167236611717], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m3", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1606587262374525, -0.05557673689376964], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m4", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09817282147599087, -0.17424722988743102], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m5", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18464046076916754, -0.1685464335040926], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m6", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m7", "label": "M_m7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04066807756576532, 0.16506394962893897], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m7", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m8", "label": "M_m8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18843466313384427, 0.06702520219764087], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m8", "duration": 1872}, {"name": "parametric_pulse", "t0": 0, "ch": "m9", "label": "M_m9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3537913887564507, -0.2500778853593056], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m9", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13619469826841404, -0.03241919436962709], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m1", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09705410035689166, 0.024093600891406858], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m2", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05186548643842263, 0.16219167236611717], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m3", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1606587262374525, -0.05557673689376964], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m4", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09817282147599087, -0.17424722988743102], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m5", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18464046076916754, -0.1685464335040926], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m6", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m7", "label": "M_m7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04066807756576532, 0.16506394962893897], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m7", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m8", "label": "M_m8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18843466313384427, 0.06702520219764087], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m8", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m9", "label": "M_m9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3537913887564507, -0.2500778853593056], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m9", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m10", "label": "M_m10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22500055605161653, -0.19843071782480087], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m10", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m11", "label": "M_m11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3760811841099962, 0.06045336416960721], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m11", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m12", "label": "M_m12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07963442504111665, 0.007639263601341006], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m12", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m13", "label": "M_m13", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12239057017057665, -0.10305604462291941], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m13", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m14", "label": "M_m14", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14109725989956104, 0.05090739876320263], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m14", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m15", "label": "M_m15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1230893652892274, 0.08572635623129644], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m15", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m16", "label": "M_m16", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1593931342404477, 0.013922239654833551], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m16", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m17", "label": "M_m17", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.055360458087106774, -0.16073338072841528], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m17", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m18", "label": "M_m18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07686040988571065, 0.25322226263146874], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m18", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m19", "label": "M_m19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10540076410988734, -0.03147505242333812], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m19", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m20", "label": "M_m20", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12039156890079071, 0.0894755281493558], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m20", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m21", "label": "M_m21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13304446902232653, 0.2688850484176597], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m21", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m22", "label": "M_m22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05947624125027703, -0.0925341922034166], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m22", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m23", "label": "M_m23", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06990064374139505, -0.0037282709851308975], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m23", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m24", "label": "M_m24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.046939642799484614, -0.2455538025237174], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m24", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m25", "label": "M_m25", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07504300425794548, 0.09364052280899533], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m25", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "measure", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m26", "label": "M_m26", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2439807079397257, -0.17456636031386533], "duration": 4480, "sigma": 64, "width": 4224}}, {"name": "delay", "t0": 4480, "ch": "m26", "duration": 1872}, {"name": "acquire", "t0": 0, "duration": 4480, "qubits": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "memory_slot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]}]}, {"name": "rz", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P0)"}]}, {"name": "sx", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.10377801308000216, -9.770409061042122e-06], "beta": -1.0149213161488795, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09513967305102687, -0.0008700854555585467], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.08886323708960032, 0.0010025377502923204], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.10661547647704614, -0.0006070553922452572], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0949613228743464, 0.001476724810580528], "beta": -3.2119733651985074, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09816343223984954, 0.000240496505118405], "beta": -1.1305064781606282, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.11277479162236688, -0.0002658045934442615], "beta": -0.3854241491495041, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.11943281622859635, -0.0022674042671533006], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.11232769477288704, -0.001120665808023258], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "X90p_d9", "pulse_shape": "drag", "parameters": {"amp": [0.10976524219602081, 0.0010579794279775023], "beta": -2.401283303612347, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.10679021181971572, 0.00084493205579733], "beta": -2.1538513301843003, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.11907891983300731, -0.0001779950856348504], "beta": -1.0102446887715897, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.12333410224784243, 0.0019417134346765398], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.103773449007206, 0.00017622277418506848], "beta": -1.8869442543880832, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0867691563869258, -0.0001786389737468895], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}]}, {"name": "sx", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.12780615832633155, 0.0019970021606818145], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10747776649112639, -9.675217802450346e-05], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}]}, {"name": "sx", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "X90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.10028012827985704, -0.0012405533901464092], "beta": 0.650439081116248, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.10509771899692791, -0.00046413034620189874], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.10472315050694099, 0.001404359413591613], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.12401715565059833, -0.00029547148646456454], "beta": -0.4358998158420476, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.10055957599496994, -0.001614157195272922], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10215481542130887, 0.001026211691743867], "beta": -1.4661821229995018, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09966491293126645, 0.0007347229897852622], "beta": -2.5699967175031464, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.10509208156374965, -0.0004234540234449305], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.1182983094904508, -0.0007061463483446628], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.0854607765253132, -0.0008496528450102033], "beta": 0.6053670972416939, "duration": 160, "sigma": 40}}]}, {"name": "u1", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [9.770409061041186e-06, 0.10377801308000216], "beta": -1.0149213161488795, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0008700854555585467, 0.09513967305102687], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u8", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.0010025377502923078, 0.08886323708960032], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u6", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.0006070553922452678, 0.10661547647704614], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u5", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.0014767248105805226, 0.0949613228743464], "beta": -3.2119733651985074, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u3", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.00024049650511840165, 0.09816343223984954], "beta": -1.1305064781606282, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Y90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.00026580459344425925, 0.11277479162236688], "beta": -0.3854241491495041, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u14", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.002267404267153316, 0.11943281622859635], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.0011206658080232768, 0.11232769477288704], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u22", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "Y90p_d9", "pulse_shape": "drag", "parameters": {"amp": [-0.0010579794279775056, 0.10976524219602081], "beta": -2.401283303612347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u17", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Y90p_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.0008449320557973282, 0.10679021181971572], "beta": -2.1538513301843003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u24", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Y90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.0001779950856348649, 0.11907891983300731], "beta": -1.0102446887715897, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u29", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Y90p_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.001941713434676521, 0.12333410224784243], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u32", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Y90p_d13", "pulse_shape": "drag", "parameters": {"amp": [-0.00017622277418505772, 0.103773449007206], "beta": -1.8869442543880832, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u30", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Y90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.00017863897374688822, 0.0867691563869258], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 224, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P1)"}, {"name": "fc", "t0": 224, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P1)"}, {"name": "fc", "t0": 224, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P1)"}, {"name": "fc", "t0": 224, "ch": "u34", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Y90p_d15", "pulse_shape": "drag", "parameters": {"amp": [-0.0019970021606818054, 0.12780615832633155], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u37", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Y90p_d16", "pulse_shape": "drag", "parameters": {"amp": [9.675217802451387e-05, 0.10747776649112639], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 224, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P1)"}, {"name": "fc", "t0": 224, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P1)"}, {"name": "fc", "t0": 224, "ch": "u40", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "Y90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.0012405533901464266, 0.10028012827985704], "beta": 0.650439081116248, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u38", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Y90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.0004641303462018959, 0.10509771899692791], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u44", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Y90p_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.0014043594135915993, 0.10472315050694099], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u46", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "Y90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.0002954714864645744, 0.12401715565059833], "beta": -0.4358998158420476, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u41", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Y90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.0016141571952729271, 0.10055957599496994], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u48", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Y90p_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.001026211691743866, 0.10215481542130887], "beta": -1.4661821229995018, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u52", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Y90p_d23", "pulse_shape": "drag", "parameters": {"amp": [-0.0007347229897852498, 0.09966491293126645], "beta": -2.5699967175031464, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u50", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Y90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.00042345402344494827, 0.10509208156374965], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d24", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u53", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Y90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.0007061463483446582, 0.1182983094904508], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u55", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Y90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.000849652845010204, 0.0854607765253132], "beta": 0.6053670972416939, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u54", "phase": "-(P0)"}]}, {"name": "u3", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.10377801308000216, -9.770409061042122e-06], "beta": -1.0149213161488795, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d0", "label": "X90m_d0", "pulse_shape": "drag", "parameters": {"amp": [-0.10377801308000216, 9.770409061070583e-06], "beta": -1.0149213161488795, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u1", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [1], "sequence": [{"name": "fc", "t0": 0, "ch": "d1", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.09513967305102687, -0.0008700854555585467], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d1", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "X90m_d1", "pulse_shape": "drag", "parameters": {"amp": [-0.09513967305102687, 0.0008700854555585524], "beta": 0.3960683326669556, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d1", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u8", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u8", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.08886323708960032, 0.0010025377502923204], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "X90m_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.08886323708960032, -0.0010025377502923222], "beta": -2.2376745831561644, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d2", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u6", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [3], "sequence": [{"name": "fc", "t0": 0, "ch": "d3", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.10661547647704614, -0.0006070553922452572], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "X90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.10661547647704614, 0.0006070553922452507], "beta": -0.5176138331574068, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d3", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u5", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u5", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [4], "sequence": [{"name": "fc", "t0": 0, "ch": "d4", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0949613228743464, 0.001476724810580528], "beta": -3.2119733651985074, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "X90m_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.0949613228743464, -0.0014767248105804957], "beta": -3.2119733651985074, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u13", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u3", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.09816343223984954, 0.000240496505118405], "beta": -1.1305064781606282, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "X90m_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.09816343223984954, -0.00024049650511837384], "beta": -1.1305064781606282, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d5", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u16", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u7", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u7", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.11277479162236688, -0.0002658045934442615], "beta": -0.3854241491495041, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d6", "label": "X90m_d6", "pulse_shape": "drag", "parameters": {"amp": [-0.11277479162236688, 0.00026580459344426613], "beta": -0.3854241491495041, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d6", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u14", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u14", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.11943281622859635, -0.0022674042671533006], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d7", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d7", "label": "X90m_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.11943281622859635, 0.0022674042671533235], "beta": 1.1463424017426946, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d7", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u12", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u20", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u9", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.11232769477288704, -0.001120665808023258], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d8", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "X90m_d8", "pulse_shape": "drag", "parameters": {"amp": [-0.11232769477288704, 0.0011206658080232586], "beta": 1.1280238973136587, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d8", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u19", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u22", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u22", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "X90p_d9", "pulse_shape": "drag", "parameters": {"amp": [0.10976524219602081, 0.0010579794279775023], "beta": -2.401283303612347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d9", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d9", "label": "X90m_d9", "pulse_shape": "drag", "parameters": {"amp": [-0.10976524219602081, -0.0010579794279774743], "beta": -2.401283303612347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d9", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u17", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u17", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.10679021181971572, 0.00084493205579733], "beta": -2.1538513301843003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d10", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d10", "label": "X90m_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.10679021181971572, -0.000844932055797298], "beta": -2.1538513301843003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d10", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u15", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u24", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u24", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.11907891983300731, -0.0001779950856348504], "beta": -1.0102446887715897, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d11", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d11", "label": "X90m_d11", "pulse_shape": "drag", "parameters": {"amp": [-0.11907891983300731, 0.00017799508563484572], "beta": -1.0102446887715897, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d11", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u18", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u29", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u29", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.12333410224784243, 0.0019417134346765398], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d12", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "X90m_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.12333410224784243, -0.0019417134346765134], "beta": -2.567893950899014, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d12", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u21", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u27", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u32", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u32", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.103773449007206, 0.00017622277418506848], "beta": -1.8869442543880832, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d13", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d13", "label": "X90m_d13", "pulse_shape": "drag", "parameters": {"amp": [-0.103773449007206, -0.00017622277418507441], "beta": -1.8869442543880832, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d13", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u25", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u30", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u30", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0867691563869258, -0.0001786389737468895], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 224, "ch": "d14", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 224, "ch": "d14", "label": "X90m_d14", "pulse_shape": "drag", "parameters": {"amp": [-0.0867691563869258, 0.00017863897374689356], "beta": 1.6381616092190798, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 448, "ch": "d14", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P2)"}, {"name": "fc", "t0": 224, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 448, "ch": "u23", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P2)"}, {"name": "fc", "t0": 224, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 448, "ch": "u28", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P2)"}, {"name": "fc", "t0": 224, "ch": "u34", "phase": "-(P0)"}, {"name": "fc", "t0": 448, "ch": "u34", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.12780615832633155, 0.0019970021606818145], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d15", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d15", "label": "X90m_d15", "pulse_shape": "drag", "parameters": {"amp": [-0.12780615832633155, -0.0019970021606817976], "beta": -2.5638015828946914, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d15", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u26", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u37", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u37", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10747776649112639, -9.675217802450346e-05], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 224, "ch": "d16", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 224, "ch": "d16", "label": "X90m_d16", "pulse_shape": "drag", "parameters": {"amp": [-0.10747776649112639, 9.675217802449658e-05], "beta": -0.675308043309437, "duration": 224, "sigma": 56}}, {"name": "fc", "t0": 448, "ch": "d16", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P2)"}, {"name": "fc", "t0": 224, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 448, "ch": "u31", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P2)"}, {"name": "fc", "t0": 224, "ch": "u40", "phase": "-(P0)"}, {"name": "fc", "t0": 448, "ch": "u40", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "X90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.10028012827985704, -0.0012405533901464092], "beta": 0.650439081116248, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d17", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d17", "label": "X90m_d17", "pulse_shape": "drag", "parameters": {"amp": [-0.10028012827985704, 0.0012405533901464327], "beta": 0.650439081116248, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d17", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u38", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u38", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.10509771899692791, -0.00046413034620189874], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d18", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "X90m_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.10509771899692791, 0.0004641303462019023], "beta": -0.2302046639392253, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d18", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u33", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u36", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u44", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u44", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.10472315050694099, 0.001404359413591613], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d19", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d19", "label": "X90m_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.10472315050694099, -0.0014043594135915928], "beta": -3.1348249974094102, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d19", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u35", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u43", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u46", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u46", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.12401715565059833, -0.00029547148646456454], "beta": -0.4358998158420476, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d20", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d20", "label": "X90m_d20", "pulse_shape": "drag", "parameters": {"amp": [-0.12401715565059833, 0.00029547148646458195], "beta": -0.4358998158420476, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d20", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u41", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u41", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.10055957599496994, -0.001614157195272922], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d21", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d21", "label": "X90m_d21", "pulse_shape": "drag", "parameters": {"amp": [-0.10055957599496994, 0.0016141571952729558], "beta": 3.3019402371998003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d21", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u39", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u48", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u48", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10215481542130887, 0.001026211691743867], "beta": -1.4661821229995018, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d22", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "X90m_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.10215481542130887, -0.0010262116917438596], "beta": -1.4661821229995018, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d22", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u42", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u52", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u52", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.09966491293126645, 0.0007347229897852622], "beta": -2.5699967175031464, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d23", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d23", "label": "X90m_d23", "pulse_shape": "drag", "parameters": {"amp": [-0.09966491293126645, -0.0007347229897852658], "beta": -2.5699967175031464, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d23", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u45", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u50", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u50", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [24], "sequence": [{"name": "fc", "t0": 0, "ch": "d24", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.10509208156374965, -0.0004234540234449305], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d24", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "X90m_d24", "pulse_shape": "drag", "parameters": {"amp": [-0.10509208156374965, 0.0004234540234449547], "beta": -0.614208421484813, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d24", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u49", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u53", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u53", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.1182983094904508, -0.0007061463483446628], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d25", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "X90m_d25", "pulse_shape": "drag", "parameters": {"amp": [-0.1182983094904508, 0.0007061463483446653], "beta": 0.8067793714645428, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d25", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u47", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u51", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u55", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u55", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.0854607765253132, -0.0008496528450102033], "beta": 0.6053670972416939, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d26", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d26", "label": "X90m_d26", "pulse_shape": "drag", "parameters": {"amp": [-0.0854607765253132, 0.0008496528450102282], "beta": 0.6053670972416939, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d26", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u54", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u54", "phase": "-(P1)"}]}, {"name": "x", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.206433212088743, 0.0], "beta": -1.0462743263145418, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.18985578360621613, 0.0], "beta": 0.42285170020425616, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.17693856837843275, 0.0], "beta": -2.366495281879335, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.21327499648153633, 0.0], "beta": -0.5742099875332195, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.18894857072270585, 0.0], "beta": -3.2151369274275954, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19579800279892245, 0.0], "beta": -1.117320206007128, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.22490568935729358, 0.0], "beta": -0.33763314549034373, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Xp_d7", "pulse_shape": "drag", "parameters": {"amp": [0.23855254311194146, 0.0], "beta": 1.069546030555969, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Xp_d8", "pulse_shape": "drag", "parameters": {"amp": [0.22444076840383925, 0.0], "beta": 1.077780150248116, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.21917054608657616, 0.0], "beta": -2.37751094183648, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Xp_d10", "pulse_shape": "drag", "parameters": {"amp": [0.21314509070739499, 0.0], "beta": -2.0749548741927826, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.23814229022749572, 0.0], "beta": -0.9255336656200099, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Xp_d12", "pulse_shape": "drag", "parameters": {"amp": [0.24688806218598577, 0.0], "beta": -2.5269736401267258, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.2078119782442765, 0.0], "beta": -1.9469493626547842, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.17359581281922776, 0.0], "beta": 1.6832227623818992, "duration": 224, "sigma": 56}}]}, {"name": "x", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.25845572259154465, 0.0], "beta": -2.601509635945852, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Xp_d16", "pulse_shape": "drag", "parameters": {"amp": [0.21396370478808385, 0.0], "beta": -0.5013376612687733, "duration": 224, "sigma": 56}}]}, {"name": "x", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.19983176029960872, 0.0], "beta": 0.7182849803753812, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.20998704099452967, 0.0], "beta": -0.2169641209301092, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.20908015594565632, 0.0], "beta": -3.1449194923112707, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "Xp_d20", "pulse_shape": "drag", "parameters": {"amp": [0.24708185274149755, 0.0], "beta": -0.27363682146922064, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.20036759389652775, 0.0], "beta": 2.130656231196732, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.20193314480317487, 0.0], "beta": -1.4239236928422578, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.19888046579575155, 0.0], "beta": -2.4571800963807013, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Xp_d24", "pulse_shape": "drag", "parameters": {"amp": [0.21043164770590328, 0.0], "beta": -0.5631209330522283, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.23851142197057992, 0.0], "beta": 0.913064895986392, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.1704704930653871, 0.0], "beta": 0.6301150997678077, "duration": 160, "sigma": 40}}]}], "meas_kernel": {"name": "hw_qmfk", "params": {}}, "discriminator": {"name": "hw_qmfk", "params": {}}, "_data": {}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends/geneva/fake_geneva.py b/qiskit/providers/fake_provider/backends/geneva/fake_geneva.py new file mode 100644 index 000000000000..693b0967c5f2 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/geneva/fake_geneva.py @@ -0,0 +1,29 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + + +""" +Fake Geneva device (27 qubits). +""" + +import os +from qiskit.providers.fake_provider import fake_backend + + +class FakeGeneva(fake_backend.FakeBackendV2): + """A fake 27 qubit backend.""" + + dirname = os.path.dirname(__file__) + conf_filename = "conf_geneva.json" + props_filename = "props_geneva.json" + defs_filename = "defs_geneva.json" + backend_name = "fake_geneva" diff --git a/qiskit/providers/fake_provider/backends/geneva/props_geneva.json b/qiskit/providers/fake_provider/backends/geneva/props_geneva.json new file mode 100644 index 000000000000..ece4c71247a2 --- /dev/null +++ b/qiskit/providers/fake_provider/backends/geneva/props_geneva.json @@ -0,0 +1 @@ +{"backend_name": "ibm_geneva", "backend_version": "1.0.0", "last_update_date": "2022-06-24T23:00:30+02:00", "qubits": [[{"date": "2022-06-24T13:50:52+02:00", "name": "T1", "unit": "us", "value": 487.9070849087785}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 364.52561156080526}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.825735321099647}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.023600000000000065}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.018000000000000016}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0292}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:33:28+02:00", "name": "T1", "unit": "us", "value": 296.1624902663555}, {"date": "2022-06-22T06:47:31+02:00", "name": "T2", "unit": "us", "value": 288.2315166861065}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.672882730661185}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.024399999999999977}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.02400000000000002}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0248}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:30:37+02:00", "name": "T1", "unit": "us", "value": 370.5116049597909}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 363.8275730376444}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.5807033741199525}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.034599999999999964}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0294}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.03979999999999995}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T05:24:37+02:00", "name": "T1", "unit": "us", "value": 371.9660617889001}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 309.6708495479936}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.674677140115402}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.037900000000000045}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.031399999999999983}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0444}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T18:00:11+02:00", "name": "T1", "unit": "us", "value": 386.0470015462169}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 356.5933145970715}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.7375843012469}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.026899999999999924}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0252}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.02859999999999996}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:30:37+02:00", "name": "T1", "unit": "us", "value": 414.8911084683994}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 320.9309944158441}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.799227589416612}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.035699999999999954}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0296}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.04179999999999995}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:30:37+02:00", "name": "T1", "unit": "us", "value": 302.218398895039}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 417.6395571316735}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.879495348461902}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.025900000000000034}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.027}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.024800000000000044}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T09:45:03+02:00", "name": "T1", "unit": "us", "value": 361.48522863194466}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 91.38202868827939}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.618040839710748}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.03289999999999993}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.02959999999999996}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0362}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T18:14:53+02:00", "name": "T1", "unit": "us", "value": 330.2285992012619}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 171.41155109399645}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.853255709517841}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.023600000000000065}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.024399999999999977}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0228}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:30:37+02:00", "name": "T1", "unit": "us", "value": 445.8464958656772}, {"date": "2022-06-19T06:31:23+02:00", "name": "T2", "unit": "us", "value": 438.8374077976734}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.759012480759683}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.02529999999999999}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0254}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0252}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:30:37+02:00", "name": "T1", "unit": "us", "value": 310.0944813693592}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 309.7954250990415}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.859045247047054}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T19:47:31+02:00", "name": "readout_error", "unit": "", "value": 0.018333333333333313}, {"date": "2022-06-24T19:47:31+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.013333333333333308}, {"date": "2022-06-24T19:47:31+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.023333333333333334}, {"date": "2022-06-24T19:47:31+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T18:00:11+02:00", "name": "T1", "unit": "us", "value": 396.6123933934131}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 213.79734313522167}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.699117849755265}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.01990000000000003}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.020199999999999996}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0196}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:33:28+02:00", "name": "T1", "unit": "us", "value": 474.78030129591826}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 24.417435993578938}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.554280185755752}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T19:47:31+02:00", "name": "readout_error", "unit": "", "value": 0.025000000000000022}, {"date": "2022-06-24T19:47:31+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.020000000000000018}, {"date": "2022-06-24T19:47:31+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.03}, {"date": "2022-06-24T19:47:31+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T17:26:58+02:00", "name": "T1", "unit": "us", "value": 373.87298475038244}, {"date": "2022-06-23T09:14:18+02:00", "name": "T2", "unit": "us", "value": 368.4028194366711}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.677985718729803}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.045399999999999996}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03539999999999999}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0554}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-23T08:57:50+02:00", "name": "T1", "unit": "us", "value": 464.2083679170187}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 201.8240122294295}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.625309935573857}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.11450000000000005}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.10799999999999998}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.121}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T06:50:38+02:00", "name": "T1", "unit": "us", "value": 304.2705682704628}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 253.66532759453546}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.661971057300068}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.1257999999999999}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.12219999999999998}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.1294}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T18:00:11+02:00", "name": "T1", "unit": "us", "value": 404.01689068196066}, {"date": "2022-06-23T09:14:18+02:00", "name": "T2", "unit": "us", "value": 338.5590979494528}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.590398793245317}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.14139999999999997}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.13739999999999997}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.1454}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:30:37+02:00", "name": "T1", "unit": "us", "value": 372.81891739058506}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 245.25012743054003}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.610081120896085}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.019500000000000073}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.023}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.016000000000000014}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T22:33:28+02:00", "name": "T1", "unit": "us", "value": 144.95222152557906}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 41.307352579973056}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.6955575957594125}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.013800000000000034}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0162}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.011399999999999966}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T09:45:03+02:00", "name": "T1", "unit": "us", "value": 123.84485005459157}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 162.33182281978569}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.708139184005674}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.020499999999999963}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.02}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.02100000000000002}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T18:00:11+02:00", "name": "T1", "unit": "us", "value": 307.7570234137895}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 184.54821492915053}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.830173042903818}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.031299999999999994}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.049}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.013599999999999945}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T06:50:38+02:00", "name": "T1", "unit": "us", "value": 383.85567998115835}, {"date": "2022-06-21T08:14:05+02:00", "name": "T2", "unit": "us", "value": 359.23359168150546}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.550090405591869}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.03949999999999998}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03259999999999996}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0464}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T05:20:25+02:00", "name": "T1", "unit": "us", "value": 390.9438377333062}, {"date": "2022-06-23T09:14:18+02:00", "name": "T2", "unit": "us", "value": 436.0622150079949}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.6289866241126845}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.039100000000000024}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0342}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.04400000000000004}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T09:45:03+02:00", "name": "T1", "unit": "us", "value": 107.17373012427926}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 451.9454064599081}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.627881549881101}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.02950000000000008}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.022800000000000042}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0362}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T19:48:43+02:00", "name": "T1", "unit": "us", "value": 365.4366188769805}, {"date": "2022-06-23T09:14:18+02:00", "name": "T2", "unit": "us", "value": 414.2355869115461}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.678946307938037}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T19:47:31+02:00", "name": "readout_error", "unit": "", "value": 0.02499999999999991}, {"date": "2022-06-24T19:47:31+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.013333333333333334}, {"date": "2022-06-24T19:47:31+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.036666666666666625}, {"date": "2022-06-24T19:47:31+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T18:14:53+02:00", "name": "T1", "unit": "us", "value": 459.2231818747381}, {"date": "2022-06-24T06:59:40+02:00", "name": "T2", "unit": "us", "value": 410.769217214854}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.596386531721908}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T19:47:31+02:00", "name": "readout_error", "unit": "", "value": 0.030000000000000027}, {"date": "2022-06-24T19:47:31+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.033333333333333326}, {"date": "2022-06-24T19:47:31+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.02666666666666667}, {"date": "2022-06-24T19:47:31+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}], [{"date": "2022-06-24T18:00:11+02:00", "name": "T1", "unit": "us", "value": 391.38584731800245}, {"date": "2022-06-24T06:54:14+02:00", "name": "T2", "unit": "us", "value": 493.264613393496}, {"date": "2022-06-24T23:00:30+02:00", "name": "frequency", "unit": "GHz", "value": 4.669859579391738}, {"date": "2022-06-24T23:00:30+02:00", "name": "anharmonicity", "unit": "GHz", "value": 0}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_error", "unit": "", "value": 0.04190000000000005}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0318}, {"date": "2022-06-24T06:45:06+02:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.052000000000000046}, {"date": "2022-06-24T06:45:06+02:00", "name": "readout_length", "unit": "ns", "value": 1411.5555555555554}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00013038147938616084}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00019270976568275602}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00010970704160830165}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00015310935262366902}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00029332565181845125}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [5], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00014631854702407474}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id5"}, {"qubits": [6], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 9.170819313280846e-05}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id6"}, {"qubits": [7], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0001654650694544736}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id7"}, {"qubits": [8], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00011969348848821518}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id8"}, {"qubits": [9], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00016980106649375307}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id9"}, {"qubits": [10], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0001225536925261963}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id10"}, {"qubits": [11], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0002700225240273589}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id11"}, {"qubits": [12], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0003721839433431682}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id12"}, {"qubits": [13], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00017905393319239842}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id13"}, {"qubits": [14], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00033204741346142935}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 49.77777777777777}], "name": "id14"}, {"qubits": [15], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0010173961620447492}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id15"}, {"qubits": [16], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0003711840812518652}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 49.77777777777777}], "name": "id16"}, {"qubits": [17], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0020630452712244417}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id17"}, {"qubits": [18], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0006959934330447976}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id18"}, {"qubits": [19], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00011042251486345903}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id19"}, {"qubits": [20], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0006215842520366939}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id20"}, {"qubits": [21], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0001758375553909665}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id21"}, {"qubits": [22], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0018458262666584894}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id22"}, {"qubits": [23], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00019854530645619322}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id23"}, {"qubits": [24], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00015909895737076696}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id24"}, {"qubits": [25], "gate": "id", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0007750264555684673}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id25"}, {"qubits": [26], "gate": "id", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00018799166419215644}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id26"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [5], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz5"}, {"qubits": [6], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz6"}, {"qubits": [7], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz7"}, {"qubits": [8], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz8"}, {"qubits": [9], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz9"}, {"qubits": [10], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz10"}, {"qubits": [11], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz11"}, {"qubits": [12], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz12"}, {"qubits": [13], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz13"}, {"qubits": [14], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz14"}, {"qubits": [15], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz15"}, {"qubits": [16], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz16"}, {"qubits": [17], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz17"}, {"qubits": [18], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz18"}, {"qubits": [19], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz19"}, {"qubits": [20], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz20"}, {"qubits": [21], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz21"}, {"qubits": [22], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz22"}, {"qubits": [23], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz23"}, {"qubits": [24], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz24"}, {"qubits": [25], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz25"}, {"qubits": [26], "gate": "rz", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz26"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00013038147938616084}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00019270976568275602}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00010970704160830165}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00015310935262366902}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00029332565181845125}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [5], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00014631854702407474}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx5"}, {"qubits": [6], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 9.170819313280846e-05}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx6"}, {"qubits": [7], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0001654650694544736}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx7"}, {"qubits": [8], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00011969348848821518}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx8"}, {"qubits": [9], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00016980106649375307}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx9"}, {"qubits": [10], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0001225536925261963}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx10"}, {"qubits": [11], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0002700225240273589}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx11"}, {"qubits": [12], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0003721839433431682}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx12"}, {"qubits": [13], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00017905393319239842}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx13"}, {"qubits": [14], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00033204741346142935}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 49.77777777777777}], "name": "sx14"}, {"qubits": [15], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0010173961620447492}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx15"}, {"qubits": [16], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0003711840812518652}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 49.77777777777777}], "name": "sx16"}, {"qubits": [17], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0020630452712244417}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx17"}, {"qubits": [18], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0006959934330447976}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx18"}, {"qubits": [19], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00011042251486345903}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx19"}, {"qubits": [20], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0006215842520366939}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx20"}, {"qubits": [21], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0001758375553909665}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx21"}, {"qubits": [22], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0018458262666584894}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx22"}, {"qubits": [23], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00019854530645619322}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx23"}, {"qubits": [24], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00015909895737076696}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx24"}, {"qubits": [25], "gate": "sx", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0007750264555684673}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx25"}, {"qubits": [26], "gate": "sx", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00018799166419215644}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx26"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00013038147938616084}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00019270976568275602}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00010970704160830165}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00015310935262366902}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00029332565181845125}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [5], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00014631854702407474}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x5"}, {"qubits": [6], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 9.170819313280846e-05}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x6"}, {"qubits": [7], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0001654650694544736}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x7"}, {"qubits": [8], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00011969348848821518}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x8"}, {"qubits": [9], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00016980106649375307}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x9"}, {"qubits": [10], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0001225536925261963}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x10"}, {"qubits": [11], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0002700225240273589}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x11"}, {"qubits": [12], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0003721839433431682}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x12"}, {"qubits": [13], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00017905393319239842}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x13"}, {"qubits": [14], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00033204741346142935}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 49.77777777777777}], "name": "x14"}, {"qubits": [15], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0010173961620447492}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x15"}, {"qubits": [16], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0003711840812518652}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 49.77777777777777}], "name": "x16"}, {"qubits": [17], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0020630452712244417}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x17"}, {"qubits": [18], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0006959934330447976}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x18"}, {"qubits": [19], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00011042251486345903}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x19"}, {"qubits": [20], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0006215842520366939}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x20"}, {"qubits": [21], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0001758375553909665}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x21"}, {"qubits": [22], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.0018458262666584894}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x22"}, {"qubits": [23], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.00019854530645619322}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x23"}, {"qubits": [24], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00015909895737076696}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x24"}, {"qubits": [25], "gate": "x", "parameters": [{"date": "2022-06-24T07:09:30+02:00", "name": "gate_error", "unit": "", "value": 0.0007750264555684673}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x25"}, {"qubits": [26], "gate": "x", "parameters": [{"date": "2022-06-24T07:03:35+02:00", "name": "gate_error", "unit": "", "value": 0.00018799166419215644}, {"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x26"}, {"qubits": [24, 25], "gate": "cx", "parameters": [{"date": "2022-06-24T19:37:40+02:00", "name": "gate_error", "unit": "", "value": 0.03793982950243319}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "cx24_25"}, {"qubits": [25, 24], "gate": "cx", "parameters": [{"date": "2022-06-24T19:37:40+02:00", "name": "gate_error", "unit": "", "value": 0.03793982950243319}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 554.6666666666666}], "name": "cx25_24"}, {"qubits": [23, 24], "gate": "cx", "parameters": [{"date": "2022-06-24T19:26:23+02:00", "name": "gate_error", "unit": "", "value": 0.007780639337768069}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx23_24"}, {"qubits": [24, 23], "gate": "cx", "parameters": [{"date": "2022-06-24T19:26:23+02:00", "name": "gate_error", "unit": "", "value": 0.007780639337768069}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx24_23"}, {"qubits": [13, 14], "gate": "cx", "parameters": [{"date": "2022-06-24T19:22:05+02:00", "name": "gate_error", "unit": "", "value": 0.01049227682364573}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 647.1111111111111}], "name": "cx13_14"}, {"qubits": [14, 13], "gate": "cx", "parameters": [{"date": "2022-06-24T19:22:05+02:00", "name": "gate_error", "unit": "", "value": 0.01049227682364573}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 696.8888888888888}], "name": "cx14_13"}, {"qubits": [5, 3], "gate": "cx", "parameters": [{"date": "2022-06-24T19:14:15+02:00", "name": "gate_error", "unit": "", "value": 0.004723029241100629}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx5_3"}, {"qubits": [3, 5], "gate": "cx", "parameters": [{"date": "2022-06-24T19:14:15+02:00", "name": "gate_error", "unit": "", "value": 0.004723029241100629}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx3_5"}, {"qubits": [22, 25], "gate": "cx", "parameters": [{"date": "2022-06-24T19:14:15+02:00", "name": "gate_error", "unit": "", "value": 0.02933451803096196}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx22_25"}, {"qubits": [15, 12], "gate": "cx", "parameters": [{"date": "2022-06-24T19:06:05+02:00", "name": "gate_error", "unit": "", "value": 0.04223846746067922}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx15_12"}, {"qubits": [22, 19], "gate": "cx", "parameters": [{"date": "2022-06-24T19:06:05+02:00", "name": "gate_error", "unit": "", "value": 0.008309815959425731}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx22_19"}, {"qubits": [19, 22], "gate": "cx", "parameters": [{"date": "2022-06-24T19:06:05+02:00", "name": "gate_error", "unit": "", "value": 0.008309815959425731}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx19_22"}, {"qubits": [12, 10], "gate": "cx", "parameters": [{"date": "2022-06-24T18:59:27+02:00", "name": "gate_error", "unit": "", "value": 0.016293167652782742}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1457.7777777777776}], "name": "cx12_10"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2022-06-24T18:52:47+02:00", "name": "gate_error", "unit": "", "value": 0.005433789282729057}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx1_2"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2022-06-24T18:52:47+02:00", "name": "gate_error", "unit": "", "value": 0.005433789282729057}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx2_1"}, {"qubits": [11, 14], "gate": "cx", "parameters": [{"date": "2022-06-24T18:52:47+02:00", "name": "gate_error", "unit": "", "value": 0.006620861933892552}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx11_14"}, {"qubits": [14, 11], "gate": "cx", "parameters": [{"date": "2022-06-24T18:52:47+02:00", "name": "gate_error", "unit": "", "value": 0.006620861933892552}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 455.1111111111111}], "name": "cx14_11"}, {"qubits": [26, 25], "gate": "cx", "parameters": [{"date": "2022-06-24T18:46:53+02:00", "name": "gate_error", "unit": "", "value": 0.008012006371157954}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 256}], "name": "cx26_25"}, {"qubits": [25, 26], "gate": "cx", "parameters": [{"date": "2022-06-24T18:46:53+02:00", "name": "gate_error", "unit": "", "value": 0.008012006371157954}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 291.55555555555554}], "name": "cx25_26"}, {"qubits": [4, 7], "gate": "cx", "parameters": [{"date": "2022-06-24T18:40:45+02:00", "name": "gate_error", "unit": "", "value": 0.004798261042562951}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 675.5555555555555}], "name": "cx4_7"}, {"qubits": [7, 4], "gate": "cx", "parameters": [{"date": "2022-06-24T18:40:45+02:00", "name": "gate_error", "unit": "", "value": 0.004798261042562951}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 711.1111111111111}], "name": "cx7_4"}, {"qubits": [23, 21], "gate": "cx", "parameters": [{"date": "2022-06-24T18:40:45+02:00", "name": "gate_error", "unit": "", "value": 0.0106382767505942}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 753.7777777777777}], "name": "cx23_21"}, {"qubits": [21, 23], "gate": "cx", "parameters": [{"date": "2022-06-24T18:40:45+02:00", "name": "gate_error", "unit": "", "value": 0.0106382767505942}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 789.3333333333333}], "name": "cx21_23"}, {"qubits": [18, 17], "gate": "cx", "parameters": [{"date": "2022-06-24T18:33:08+02:00", "name": "gate_error", "unit": "", "value": 0.012744638146883952}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "cx18_17"}, {"qubits": [17, 18], "gate": "cx", "parameters": [{"date": "2022-06-24T18:33:08+02:00", "name": "gate_error", "unit": "", "value": 0.012744638146883952}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "cx17_18"}, {"qubits": [19, 16], "gate": "cx", "parameters": [{"date": "2022-06-24T18:33:08+02:00", "name": "gate_error", "unit": "", "value": 0.010215343808732263}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx19_16"}, {"qubits": [16, 19], "gate": "cx", "parameters": [{"date": "2022-06-24T18:33:08+02:00", "name": "gate_error", "unit": "", "value": 0.010215343808732263}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 512}], "name": "cx16_19"}, {"qubits": [14, 16], "gate": "cx", "parameters": [{"date": "2022-06-24T18:25:14+02:00", "name": "gate_error", "unit": "", "value": 0.02351279736572251}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 526.2222222222222}], "name": "cx14_16"}, {"qubits": [18, 21], "gate": "cx", "parameters": [{"date": "2022-06-24T18:25:14+02:00", "name": "gate_error", "unit": "", "value": 0.012679568612064068}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 568.8888888888889}], "name": "cx18_21"}, {"qubits": [21, 18], "gate": "cx", "parameters": [{"date": "2022-06-24T18:25:14+02:00", "name": "gate_error", "unit": "", "value": 0.012679568612064068}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 604.4444444444445}], "name": "cx21_18"}, {"qubits": [11, 8], "gate": "cx", "parameters": [{"date": "2022-06-24T18:13:38+02:00", "name": "gate_error", "unit": "", "value": 0.0036374726489654674}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 597.3333333333333}], "name": "cx11_8"}, {"qubits": [8, 11], "gate": "cx", "parameters": [{"date": "2022-06-24T18:13:38+02:00", "name": "gate_error", "unit": "", "value": 0.0036374726489654674}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 632.8888888888888}], "name": "cx8_11"}, {"qubits": [18, 15], "gate": "cx", "parameters": [{"date": "2022-06-24T18:13:38+02:00", "name": "gate_error", "unit": "", "value": 0.014468840399930238}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 689.7777777777777}], "name": "cx18_15"}, {"qubits": [4, 1], "gate": "cx", "parameters": [{"date": "2022-06-24T17:29:05+02:00", "name": "gate_error", "unit": "", "value": 0.009476193203188293}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx4_1"}, {"qubits": [1, 4], "gate": "cx", "parameters": [{"date": "2022-06-24T17:29:05+02:00", "name": "gate_error", "unit": "", "value": 0.009476193203188293}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx1_4"}, {"qubits": [9, 8], "gate": "cx", "parameters": [{"date": "2022-06-24T17:29:05+02:00", "name": "gate_error", "unit": "", "value": 0.0051695682581706925}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 327.1111111111111}], "name": "cx9_8"}, {"qubits": [8, 9], "gate": "cx", "parameters": [{"date": "2022-06-24T17:29:05+02:00", "name": "gate_error", "unit": "", "value": 0.0051695682581706925}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 362.66666666666663}], "name": "cx8_9"}, {"qubits": [3, 2], "gate": "cx", "parameters": [{"date": "2022-06-24T17:04:08+02:00", "name": "gate_error", "unit": "", "value": 0.0041657105529510075}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx3_2"}, {"qubits": [2, 3], "gate": "cx", "parameters": [{"date": "2022-06-24T17:04:08+02:00", "name": "gate_error", "unit": "", "value": 0.0041657105529510075}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx2_3"}, {"qubits": [13, 12], "gate": "cx", "parameters": [{"date": "2022-06-24T17:04:08+02:00", "name": "gate_error", "unit": "", "value": 0.005234139802573895}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx13_12"}, {"qubits": [25, 22], "gate": "cx", "parameters": [{"date": "2022-06-24T17:04:08+02:00", "name": "gate_error", "unit": "", "value": 0.007989504507625977}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 448}], "name": "cx25_22"}, {"qubits": [10, 7], "gate": "cx", "parameters": [{"date": "2022-06-24T16:15:17+02:00", "name": "gate_error", "unit": "", "value": 0.004024289832987499}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 238.2222222222222}], "name": "cx10_7"}, {"qubits": [7, 10], "gate": "cx", "parameters": [{"date": "2022-06-24T16:15:17+02:00", "name": "gate_error", "unit": "", "value": 0.004024289832987499}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 309.3333333333333}], "name": "cx7_10"}, {"qubits": [6, 7], "gate": "cx", "parameters": [{"date": "2022-06-24T15:55:03+02:00", "name": "gate_error", "unit": "", "value": 0.008698027488511645}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 277.3333333333333}], "name": "cx6_7"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2022-06-24T15:38:53+02:00", "name": "gate_error", "unit": "", "value": 0.009436652319724764}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 373.3333333333333}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2022-06-24T15:38:53+02:00", "name": "gate_error", "unit": "", "value": 0.009436652319724764}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 444.4444444444444}], "name": "cx1_0"}, {"qubits": [19, 20], "gate": "cx", "parameters": [{"date": "2022-06-24T15:38:53+02:00", "name": "gate_error", "unit": "", "value": 0.015235706317329872}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 387.55555555555554}], "name": "cx19_20"}, {"qubits": [12, 15], "gate": "cx", "parameters": [{"date": "2022-06-22T21:26:56+02:00", "name": "gate_error", "unit": "", "value": 0.11299665401373056}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "cx12_15"}, {"qubits": [15, 18], "gate": "cx", "parameters": [{"date": "2022-06-22T16:28:02+02:00", "name": "gate_error", "unit": "", "value": 0.026928792951891406}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 725.3333333333333}], "name": "cx15_18"}, {"qubits": [12, 13], "gate": "cx", "parameters": [{"date": "2022-06-22T16:08:25+02:00", "name": "gate_error", "unit": "", "value": 0.004136301919980739}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx12_13"}, {"qubits": [7, 6], "gate": "cx", "parameters": [{"date": "2022-06-22T15:37:56+02:00", "name": "gate_error", "unit": "", "value": 0.005987676569414985}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx7_6"}, {"qubits": [10, 12], "gate": "cx", "parameters": [{"date": "2022-06-22T08:17:07+02:00", "name": "gate_error", "unit": "", "value": 0.008620644691067214}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 2204.4444444444443}], "name": "cx10_12"}, {"qubits": [5, 8], "gate": "cx", "parameters": [{"date": "2022-06-22T07:17:38+02:00", "name": "gate_error", "unit": "", "value": 0.009271043345643881}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx5_8"}, {"qubits": [8, 5], "gate": "cx", "parameters": [{"date": "2022-06-22T07:17:38+02:00", "name": "gate_error", "unit": "", "value": 0.009271043345643881}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 504.88888888888886}], "name": "cx8_5"}, {"qubits": [20, 19], "gate": "cx", "parameters": [{"date": "2022-06-24T23:04:01.429907+02:00", "name": "gate_error", "unit": "", "value": 1}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 458.66666666666663}], "name": "cx20_19"}, {"qubits": [16, 14], "gate": "cx", "parameters": [{"date": "2022-06-24T23:04:01.430723+02:00", "name": "gate_error", "unit": "", "value": 1}, {"date": "2022-06-21T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 576}], "name": "cx16_14"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1475.5555555555554}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset4"}, {"qubits": [5], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset5"}, {"qubits": [6], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset6"}, {"qubits": [7], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset7"}, {"qubits": [8], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset8"}, {"qubits": [9], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset9"}, {"qubits": [10], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset10"}, {"qubits": [11], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset11"}, {"qubits": [12], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset12"}, {"qubits": [13], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1461.3333333333333}], "name": "reset13"}, {"qubits": [14], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1475.5555555555554}], "name": "reset14"}, {"qubits": [15], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset15"}, {"qubits": [16], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1560.888888888889}], "name": "reset16"}, {"qubits": [17], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset17"}, {"qubits": [18], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset18"}, {"qubits": [19], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset19"}, {"qubits": [20], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset20"}, {"qubits": [21], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset21"}, {"qubits": [22], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1461.3333333333333}], "name": "reset22"}, {"qubits": [23], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1589.3333333333333}], "name": "reset23"}, {"qubits": [24], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset24"}, {"qubits": [25], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1447.111111111111}], "name": "reset25"}, {"qubits": [26], "gate": "reset", "parameters": [{"date": "2022-06-24T23:00:30+02:00", "name": "gate_length", "unit": "ns", "value": 1546.6666666666665}], "name": "reset26"}], "general": [{"date": "2022-06-24T23:00:30+02:00", "name": "jq_1213", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1213", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1416", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1416", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_89", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_89", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1718", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1718", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1114", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1114", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1012", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1012", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1314", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1314", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_710", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_710", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1619", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1619", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1215", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1215", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_2225", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_2225", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_2324", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_2324", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_811", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_811", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_01", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_01", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_12", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_12", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1920", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1920", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_67", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_67", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_2425", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_2425", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1821", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1821", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_47", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_47", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_2123", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_2123", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_35", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_35", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_58", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_58", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_14", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_14", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_23", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_23", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1922", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1922", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_1518", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_1518", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "jq_2526", "unit": "GHz", "value": 0}, {"date": "2022-06-24T23:00:30+02:00", "name": "zz_2526", "unit": "GHz", "value": 0}]} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/fake_provider.py b/qiskit/providers/fake_provider/fake_provider.py index 8fbb1d27abee..2d8501f5021d 100644 --- a/qiskit/providers/fake_provider/fake_provider.py +++ b/qiskit/providers/fake_provider/fake_provider.py @@ -101,6 +101,7 @@ def __init__(self): FakeCambridgeV2(), FakeCasablancaV2(), FakeEssexV2(), + FakeGeneva(), FakeGuadalupeV2(), FakeHanoiV2(), FakeJakartaV2(), diff --git a/releasenotes/notes/ibm_geneva-34b848b0a49278dc.yaml b/releasenotes/notes/ibm_geneva-34b848b0a49278dc.yaml new file mode 100644 index 000000000000..134c5692272e --- /dev/null +++ b/releasenotes/notes/ibm_geneva-34b848b0a49278dc.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + The fake backend :class:`~FakeGeneva` was added with the information from IBM Quantum `ibm_geneva` system. From db53e46cb2735cb71d4c82697739803d78322cd4 Mon Sep 17 00:00:00 2001 From: Takashi Imamichi <31178928+t-imamichi@users.noreply.github.com> Date: Thu, 22 Sep 2022 00:51:39 +0900 Subject: [PATCH 30/56] Remove `parameters` arguments for `run` method of Primitives (#8684) * remove `parameters` arguments for `run` method * fix lint * update docstring and reno Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/primitives/base_estimator.py | 30 ------------------- qiskit/primitives/base_sampler.py | 26 ---------------- qiskit/primitives/estimator.py | 6 ++-- qiskit/primitives/sampler.py | 6 ++-- .../notes/primitive-run-5d1afab3655330a6.yaml | 7 +++-- 5 files changed, 8 insertions(+), 67 deletions(-) diff --git a/qiskit/primitives/base_estimator.py b/qiskit/primitives/base_estimator.py index 446aaebd9156..37ded5e2a061 100644 --- a/qiskit/primitives/base_estimator.py +++ b/qiskit/primitives/base_estimator.py @@ -36,10 +36,6 @@ * observables: a list of the observables. -* parameters: a list of parameters of the quantum circuits. - (:class:`~qiskit.circuit.parametertable.ParameterView` or - a list of :class:`~qiskit.circuit.Parameter`). - * parameter values (:math:`\theta_k`): list of sets of values to be bound to the parameters of the quantum circuits. (list of list of float) @@ -67,9 +63,6 @@ psi1 = RealAmplitudes(num_qubits=2, reps=2) psi2 = RealAmplitudes(num_qubits=2, reps=3) - params1 = psi1.parameters - params2 = psi2.parameters - H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)]) H2 = SparsePauliOp.from_list([("IZ", 1)]) H3 = SparsePauliOp.from_list([("ZI", 1), ("ZZ", 1)]) @@ -425,7 +418,6 @@ def run( circuits: Sequence[QuantumCircuit], observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]] | None = None, - parameters: Sequence[Sequence[Parameter]] | None = None, **run_options, ) -> Job: """Run the job of the estimation of expectation value(s). @@ -453,10 +445,6 @@ def run( circuits: the list of circuit objects. observables: the list of observable objects. parameter_values: concrete parameters to be bound. - parameters: Parameters of quantum circuits, specifying the order in which values - will be bound. Defaults to ``[circ.parameters for circ in circuits]`` - The indexing is such that ``parameters[i, j]`` is the j-th formal parameter of - ``circuits[i]``. run_options: runtime options used for circuit execution. Returns: @@ -479,22 +467,6 @@ def run( ) parameter_values = [[]] * len(circuits) - if parameters is None: - parameter_views = [circ.parameters for circ in circuits] - else: - parameter_views = [ParameterView(par) for par in parameters] - if len(self._parameters) != len(self._circuits): - raise QiskitError( - f"Different number of parameters ({len(self._parameters)}) and " - f"circuits ({len(self._circuits)})" - ) - for i, (circ, params) in enumerate(zip(self._circuits, self._parameters)): - if circ.num_parameters != len(params): - raise QiskitError( - f"Different numbers of parameters of {i}-th circuit: " - f"expected {circ.num_parameters}, actual {len(params)}." - ) - # Validation if len(circuits) != len(observables): raise QiskitError( @@ -528,7 +500,6 @@ def run( circuits, observables, parameter_values, - parameter_views, **run_opts.__dict__, ) @@ -549,7 +520,6 @@ def _run( circuits: Sequence[QuantumCircuit], observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]], - parameters: list[ParameterView], **run_options, ) -> Job: raise NotImplementedError( diff --git a/qiskit/primitives/base_sampler.py b/qiskit/primitives/base_sampler.py index f36469d09630..8f97b61d6db9 100644 --- a/qiskit/primitives/base_sampler.py +++ b/qiskit/primitives/base_sampler.py @@ -21,10 +21,6 @@ * quantum circuits (:math:`\psi_i(\theta)`): list of (parameterized) quantum circuits. (a list of :class:`~qiskit.circuit.QuantumCircuit`)) -* parameters: a list of parameters of the quantum circuits. - (:class:`~qiskit.circuit.parametertable.ParameterView` or - a list of :class:`~qiskit.circuit.Parameter`). - The sampler is run with the following inputs. * circuits: a list of QuantumCircuit objects to evaluate. @@ -60,7 +56,6 @@ print([q.binary_probabilities() for q in result.quasi_dists]) # executes three Bell circuits - # Argument `parameters` is optional. sampler = Sampler() result = sampler.run([bell, bell, bell]).result() print([q.binary_probabilities() for q in result.quasi_dists]) @@ -322,7 +317,6 @@ def run( self, circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]] | None = None, - parameters: Sequence[Sequence[Parameter]] | None = None, **run_options, ) -> Job: """Run the job of the sampling of bitstrings. @@ -330,8 +324,6 @@ def run( Args: circuits: the list of circuit objects. parameter_values: Parameters to be bound to the circuit. - parameters: Parameters of each of the quantum circuits. - Defaults to ``[circ.parameters for circ in circuits]``. run_options: Backend runtime options used for circuit execution. Returns: @@ -355,22 +347,6 @@ def run( ) parameter_values = [[]] * len(circuits) - if parameters is None: - parameter_views = [circ.parameters for circ in circuits] - else: - parameter_views = [ParameterView(par) for par in parameters] - if len(self._parameters) != len(self._circuits): - raise QiskitError( - f"Different number of parameters ({len(self._parameters)}) and " - f"circuits ({len(self._circuits)})" - ) - for i, (circ, params) in enumerate(zip(self._circuits, self._parameters)): - if circ.num_parameters != len(params): - raise QiskitError( - f"Different numbers of parameters of {i}-th circuit: " - f"expected {circ.num_parameters}, actual {len(params)}." - ) - # Validation if len(circuits) != len(parameter_values): raise QiskitError( @@ -407,7 +383,6 @@ def run( return self._run( circuits, parameter_values, - parameter_views, **run_opts.__dict__, ) @@ -426,7 +401,6 @@ def _run( self, circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]], - parameters: Sequence[ParameterView], **run_options, ) -> Job: raise NotImplementedError( diff --git a/qiskit/primitives/estimator.py b/qiskit/primitives/estimator.py index bc26b242e14a..121b12abee09 100644 --- a/qiskit/primitives/estimator.py +++ b/qiskit/primitives/estimator.py @@ -21,7 +21,6 @@ import numpy as np from qiskit.circuit import Parameter, QuantumCircuit -from qiskit.circuit.parametertable import ParameterView from qiskit.exceptions import QiskitError from qiskit.opflow import PauliSumOp from qiskit.quantum_info import Statevector @@ -152,11 +151,10 @@ def _run( circuits: Sequence[QuantumCircuit], observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]], - parameters: Sequence[ParameterView], **run_options, ) -> PrimitiveJob: circuit_indices = [] - for i, circuit in enumerate(circuits): + for circuit in circuits: key = _circuit_key(circuit) index = self._circuit_ids.get(key) if index is not None: @@ -165,7 +163,7 @@ def _run( circuit_indices.append(len(self._circuits)) self._circuit_ids[key] = len(self._circuits) self._circuits.append(circuit) - self._parameters.append(parameters[i]) + self._parameters.append(circuit.parameters) observable_indices = [] for observable in observables: index = self._observable_ids.get(id(observable)) diff --git a/qiskit/primitives/sampler.py b/qiskit/primitives/sampler.py index 398a26b6d8b1..306adecef742 100644 --- a/qiskit/primitives/sampler.py +++ b/qiskit/primitives/sampler.py @@ -21,7 +21,6 @@ import numpy as np from qiskit.circuit import Parameter, QuantumCircuit -from qiskit.circuit.parametertable import ParameterView from qiskit.exceptions import QiskitError from qiskit.quantum_info import Statevector from qiskit.result import QuasiDistribution @@ -140,11 +139,10 @@ def _run( self, circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]], - parameters: Sequence[ParameterView], **run_options, ) -> PrimitiveJob: circuit_indices = [] - for i, circuit in enumerate(circuits): + for circuit in circuits: key = _circuit_key(circuit) index = self._circuit_ids.get(key) if index is not None: @@ -155,7 +153,7 @@ def _run( circuit, qargs = self._preprocess_circuit(circuit) self._circuits.append(circuit) self._qargs_list.append(qargs) - self._parameters.append(parameters[i]) + self._parameters.append(circuit.parameters) job = PrimitiveJob(self._call, circuit_indices, parameter_values, **run_options) job.submit() return job diff --git a/releasenotes/notes/primitive-run-5d1afab3655330a6.yaml b/releasenotes/notes/primitive-run-5d1afab3655330a6.yaml index fd4c5965dc04..e7ee26c00755 100644 --- a/releasenotes/notes/primitive-run-5d1afab3655330a6.yaml +++ b/releasenotes/notes/primitive-run-5d1afab3655330a6.yaml @@ -23,10 +23,10 @@ deprecations: .. code-block:: python - estimator = Estimator(circuits, observables, parameters) + estimator = Estimator() result = estimator.run(circuits, observables, parameter_values).result() - sampler = Sampler(circuits, parameters) + sampler = Sampler() result = sampler.run(circuits, parameter_values).result() Context manager for primitives was deprecated. @@ -34,4 +34,5 @@ deprecations: the session's context manager provides equivalent functionality. ``circuits``, ``observables``, and ``parameters`` in the constructor was deprecated. - These objects can be passed from ``run`` methods. + ``circuits`` and ``observables`` can be passed from ``run`` methods. + ``run`` methods do not support ``parameters``. Users need to resort parameter values by themselves. From f94647212dfd4a332622c33087f900957622541d Mon Sep 17 00:00:00 2001 From: Manoel Marques Date: Wed, 21 Sep 2022 14:39:24 -0400 Subject: [PATCH 31/56] Fix release notes code block format (#8777) --- .../add-fidelity-interface-primitives-dc543d079ecaa8dd.yaml | 3 ++- .../notes/add-gradients-with-primitives-561cf9cf75a7ccb8.yaml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/releasenotes/notes/add-fidelity-interface-primitives-dc543d079ecaa8dd.yaml b/releasenotes/notes/add-fidelity-interface-primitives-dc543d079ecaa8dd.yaml index 96e1977096ba..90f603342adc 100644 --- a/releasenotes/notes/add-fidelity-interface-primitives-dc543d079ecaa8dd.yaml +++ b/releasenotes/notes/add-fidelity-interface-primitives-dc543d079ecaa8dd.yaml @@ -7,7 +7,8 @@ features: there is now an implementation of the compute-uncompute method that leverages the sampler primitive (:class:`qiskit.algorithms.state_fidelities.ComputeUncompute`). - Example:: + For example: + .. code-block:: python import numpy as np diff --git a/releasenotes/notes/add-gradients-with-primitives-561cf9cf75a7ccb8.yaml b/releasenotes/notes/add-gradients-with-primitives-561cf9cf75a7ccb8.yaml index da0bc9dd6497..310eff9357c3 100644 --- a/releasenotes/notes/add-gradients-with-primitives-561cf9cf75a7ccb8.yaml +++ b/releasenotes/notes/add-gradients-with-primitives-561cf9cf75a7ccb8.yaml @@ -6,7 +6,8 @@ features: gradient classes (Finite Difference, Parameter Shift, Linear Combination of Unitary, and SPSA) for a sampler and estimator. - Example:: + For example: + .. code-block:: python estimator = Estimator(...) From 418b7cc802c30e38d31e5505a6137dbf199a0df6 Mon Sep 17 00:00:00 2001 From: Ryan Hill Date: Wed, 21 Sep 2022 18:37:26 -0500 Subject: [PATCH 32/56] add state_to_latex prefix kwarg (#8461) --- qiskit/visualization/state_visualization.py | 5 +++-- .../notes/rh1_state_to_latex_fix-e36e47cbdb25033e.yaml | 6 ++++++ test/python/quantum_info/states/test_statevector.py | 9 +++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/rh1_state_to_latex_fix-e36e47cbdb25033e.yaml diff --git a/qiskit/visualization/state_visualization.py b/qiskit/visualization/state_visualization.py index 3fb24bba970c..140e3729ac63 100644 --- a/qiskit/visualization/state_visualization.py +++ b/qiskit/visualization/state_visualization.py @@ -1311,13 +1311,14 @@ def numbers_to_latex_terms(numbers: List[complex]) -> List[str]: return terms -def _state_to_latex_ket(data: List[complex], max_size: int = 12) -> str: +def _state_to_latex_ket(data: List[complex], max_size: int = 12, prefix: str = "") -> str: """Convert state vector to latex representation Args: data: State vector max_size: Maximum number of non-zero terms in the expression. If the number of non-zero terms is larger than the max_size, then the representation is truncated. + prefix: Latex string to be prepended to the latex, intended for labels. Returns: String with LaTeX representation of the state vector @@ -1346,7 +1347,7 @@ def ket_name(i): term = latex_terms[idx] ket = ket_name(ket_idx) latex_str += f"{term} |{ket}\\rangle" - return latex_str + return prefix + latex_str class TextMatrix: diff --git a/releasenotes/notes/rh1_state_to_latex_fix-e36e47cbdb25033e.yaml b/releasenotes/notes/rh1_state_to_latex_fix-e36e47cbdb25033e.yaml new file mode 100644 index 000000000000..d530a41c6c9e --- /dev/null +++ b/releasenotes/notes/rh1_state_to_latex_fix-e36e47cbdb25033e.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fixed an issue with the :func:`~.visualization.state_visualization.state_to_latex` + function: passing a latex string to the optional ``prefix`` argument of the function + would raise an error. Fixed `#8460 `__ diff --git a/test/python/quantum_info/states/test_statevector.py b/test/python/quantum_info/states/test_statevector.py index 398d1ec45eba..bcb948387045 100644 --- a/test/python/quantum_info/states/test_statevector.py +++ b/test/python/quantum_info/states/test_statevector.py @@ -1130,6 +1130,15 @@ def test_state_to_latex_for_large_statevector(self): " |111111111111101\\rangle+ |111111111111110\\rangle+ |111111111111111\\rangle", ) + def test_state_to_latex_with_prefix(self): + """Test adding prefix to state vector latex output""" + psi = Statevector(np.array([np.sqrt(1 / 2), 0, 0, np.sqrt(1 / 2)])) + prefix = "|\\psi_{AB}\\rangle = " + latex_sv = state_to_latex(psi) + latex_expected = prefix + latex_sv + latex_representation = state_to_latex(psi, prefix=prefix) + self.assertEqual(latex_representation, latex_expected) + def test_state_to_latex_for_large_sparse_statevector(self): """Test conversion of large sparse state vector""" sv = Statevector(np.eye(2**15, 1)) From 007cc25bc44ad39955ff5ea8bfb988dff38c044b Mon Sep 17 00:00:00 2001 From: Takashi Imamichi <31178928+t-imamichi@users.noreply.github.com> Date: Thu, 22 Sep 2022 11:45:05 +0900 Subject: [PATCH 33/56] Update `ProbDistribution` and `QuasiDistribution` to store the number of bits if bitstrings w/o prefix are given (#8464) * Update ProbDistribution and QuasiDistribution to store data as bit-strings * fix sampler tests * Revert the internal data from bitstrings to integers * Store the information of number of bits when bitstrings w/o prefix, e.g., "00101", are given. * update reno * Revised `num_bits`, comments, and tests. Co-authored-by: Julien Gacon Co-authored-by: Julien Gacon Co-authored-by: Paul Nation Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/result/distributions/probability.py | 30 +++++---- qiskit/result/distributions/quasi.py | 30 +++++---- .../update-prob-quasi-2044285a46219d14.yaml | 21 ++++++ test/python/result/test_probability.py | 58 +++++++++++++++++ test/python/result/test_quasi.py | 64 +++++++++++++++++++ 5 files changed, 179 insertions(+), 24 deletions(-) create mode 100644 releasenotes/notes/update-prob-quasi-2044285a46219d14.yaml diff --git a/qiskit/result/distributions/probability.py b/qiskit/result/distributions/probability.py index e1de82e529d0..425160334dc3 100644 --- a/qiskit/result/distributions/probability.py +++ b/qiskit/result/distributions/probability.py @@ -45,20 +45,23 @@ def __init__(self, data, shots=None): ValueError: If the string format of the keys is incorrect """ self.shots = shots + self._num_bits = 0 if data: first_key = next(iter(data.keys())) if isinstance(first_key, int): - pass + # `self._num_bits` is not always the exact number of qubits measured, + # but the number of bits to represent the largest key. + self._num_bits = len(bin(max(data.keys()))) - 2 elif isinstance(first_key, str): - if first_key.startswith("0x"): - hex_raw = data - data = {int(key, 0): value for key, value in hex_raw.items()} - elif first_key.startswith("0b"): - bin_raw = data - data = {int(key, 0): value for key, value in bin_raw.items()} + if first_key.startswith("0x") or first_key.startswith("0b"): + data = {int(key, 0): value for key, value in data.items()} + # `self._num_bits` is not always the exact number of qubits measured, + # but the number of bits to represent the largest key. + self._num_bits = len(bin(max(data.keys()))) - 2 elif self._bitstring_regex.search(first_key): - bin_raw = data - data = {int("0b" + key, 0): value for key, value in bin_raw.items()} + # `self._num_bits` is the exact number of qubits measured. + self._num_bits = max(len(key) for key in data) + data = {int(key, 2): value for key, value in data.items()} else: raise ValueError( "The input keys are not a valid string format, must either " @@ -74,14 +77,17 @@ def binary_probabilities(self, num_bits=None): Parameters: num_bits (int): number of bits in the binary bitstrings (leading - zeros will be padded). If None, the length will be derived - from the largest key present. + zeros will be padded). If None, a default value will be used. + If keys are given as integers or strings with binary or hex prefix, + the default value will be derived from the largest key present. + If keys are given as bitstrings without prefix, + the default value will be derived from the largest key length. Returns: dict: A dictionary where the keys are binary strings in the format ``"0110"`` """ - n = len(bin(max(self.keys(), default=0))) - 2 if num_bits is None else num_bits + n = self._num_bits if num_bits is None else num_bits return {format(key, "b").zfill(n): value for key, value in self.items()} def hex_probabilities(self): diff --git a/qiskit/result/distributions/quasi.py b/qiskit/result/distributions/quasi.py index b251677213c1..c774d3ee99d3 100644 --- a/qiskit/result/distributions/quasi.py +++ b/qiskit/result/distributions/quasi.py @@ -50,20 +50,23 @@ def __init__(self, data, shots=None, stddev_upper_bound=None): """ self.shots = shots self._stddev_upper_bound = stddev_upper_bound + self._num_bits = 0 if data: first_key = next(iter(data.keys())) if isinstance(first_key, int): - pass + # `self._num_bits` is not always the exact number of qubits measured, + # but the number of bits to represent the largest key. + self._num_bits = len(bin(max(data.keys()))) - 2 elif isinstance(first_key, str): - if first_key.startswith("0x"): - hex_raw = data - data = {int(key, 0): value for key, value in hex_raw.items()} - elif first_key.startswith("0b"): - bin_raw = data - data = {int(key, 0): value for key, value in bin_raw.items()} + if first_key.startswith("0x") or first_key.startswith("0b"): + data = {int(key, 0): value for key, value in data.items()} + # `self._num_bits` is not always the exact number of qubits measured, + # but the number of bits to represent the largest key. + self._num_bits = len(bin(max(data.keys()))) - 2 elif self._bitstring_regex.search(first_key): - bin_raw = data - data = {int("0b" + key, 0): value for key, value in bin_raw.items()} + # `self._num_bits` is the exact number of qubits measured. + self._num_bits = max(len(key) for key in data) + data = {int(key, 2): value for key, value in data.items()} else: raise ValueError( "The input keys are not a valid string format, must either " @@ -112,14 +115,17 @@ def binary_probabilities(self, num_bits=None): Parameters: num_bits (int): number of bits in the binary bitstrings (leading - zeros will be padded). If None, the length will be derived - from the largest key present. + zeros will be padded). If None, a default value will be used. + If keys are given as integers or strings with binary or hex prefix, + the default value will be derived from the largest key present. + If keys are given as bitstrings without prefix, + the default value will be derived from the largest key length. Returns: dict: A dictionary where the keys are binary strings in the format ``"0110"`` """ - n = len(bin(max(self.keys(), default=0))) - 2 if num_bits is None else num_bits + n = self._num_bits if num_bits is None else num_bits return {format(key, "b").zfill(n): value for key, value in self.items()} def hex_probabilities(self): diff --git a/releasenotes/notes/update-prob-quasi-2044285a46219d14.yaml b/releasenotes/notes/update-prob-quasi-2044285a46219d14.yaml new file mode 100644 index 000000000000..cd052278ff65 --- /dev/null +++ b/releasenotes/notes/update-prob-quasi-2044285a46219d14.yaml @@ -0,0 +1,21 @@ +--- +upgrade: + - | + Updated :class:`~qiskit.result.ProbDistribution` and :class:`~qiskit.result.QuasiDistribution` + to store the information of the number of bits if bitstrings without prefix "0b" are given. + :meth:`~qiskit.result.ProbDistribution.binary_probabilities` and + :meth:`~qiskit.result.QuasiDistribution.binary_probabilities` use the stored number of bits + as the default value of the number of bits. + + .. code-block: python + + import qiskit.result import ProbDistribution, QuasiDistribution + + prob = ProbDistribution({"00": 0.5, "01": 0.5}) + quasi = QuasiDistribution({"00": 0.5, "01": 0.5}) + + print(prob.binary_probabilities()) + # {'00': 0.5, '01': 0.5} + + print(quasi.binary_probabilities()) + # {'00': 0.5, '01': 0.5} diff --git a/test/python/result/test_probability.py b/test/python/result/test_probability.py index 9e6314eda7db..8da709847b08 100644 --- a/test/python/result/test_probability.py +++ b/test/python/result/test_probability.py @@ -93,6 +93,59 @@ def test_bin_no_prefix_probs_bin_out(self): probs = ProbDistribution(in_probs) self.assertEqual(in_probs, probs.binary_probabilities()) + def test_bin_no_prefix_w_heading_zeros_probs_bin_out(self): + """Test binary input without a 0b prefix with heading 0 and binary output.""" + in_probs = {"00000": 2 / 7, "00001": 1 / 7, "00010": 1 / 7, "00011": 1 / 7, "00100": 2 / 7} + probs = ProbDistribution(in_probs) + self.assertEqual(in_probs, probs.binary_probabilities()) + + def test_bin_no_prefix_w_diff_heading_zero_probs_bin_out(self): + """Test binary input without a 0b prefix with heading 0 of different sizes and binary output.""" + in_probs = { + "0": 3 / 5, + "01": 1 / 2, + "10": 7 / 20, + "011": 1 / 10, + "00100": -11 / 20, + } + probs = ProbDistribution(in_probs) + expected = { + "00000": 3 / 5, + "00001": 1 / 2, + "00010": 7 / 20, + "00011": 1 / 10, + "00100": -11 / 20, + } + self.assertEqual(expected, probs.binary_probabilities()) + + def test_bin_no_prefix_w_diff_heading_zero_probs_bin_out_padded(self): + """Test binary input without a 0b prefix with heading 0 of different sizes and binary output, + padded with zeros.""" + in_probs = { + "0": 3 / 5, + "01": 1 / 2, + "10": 7 / 20, + "011": 1 / 10, + "00100": -11 / 20, + } + probs = ProbDistribution(in_probs) + expected = { + "0000000": 3 / 5, + "0000001": 1 / 2, + "0000010": 7 / 20, + "0000011": 1 / 10, + "0000100": -11 / 20, + } + self.assertEqual(expected, probs.binary_probabilities(7)) + + def test_bin_no_prefix_out_padded(self): + """Test binary input without a 0b prefix, padded with zeros.""" + n = 5 + in_probs = {"0": 1} + probs = ProbDistribution(in_probs) + expected = {"0" * n: 1} + self.assertEqual(expected, probs.binary_probabilities(num_bits=n)) + def test_hex_probs_bin_out_padded(self): """Test hexadecimal input and binary output, padded with zeros.""" in_probs = {"0x0": 2 / 7, "0x1": 1 / 7, "0x2": 1 / 7, "0x3": 1 / 7, "0x4": 2 / 7} @@ -115,6 +168,11 @@ def test_empty_bin_out(self): probs = ProbDistribution({}) self.assertEqual(probs.binary_probabilities(), {}) + def test_empty_bin_out_padding(self): + """Test empty input with binary output and padding.""" + probs = ProbDistribution({}) + self.assertEqual(probs.binary_probabilities(5), {}) + def test_invalid_keys(self): """Test invalid key type raises.""" with self.assertRaises(TypeError): diff --git a/test/python/result/test_quasi.py b/test/python/result/test_quasi.py index 5bf80b123987..3225e98aaa9b 100644 --- a/test/python/result/test_quasi.py +++ b/test/python/result/test_quasi.py @@ -84,6 +84,65 @@ def test_bin_no_prefix_quasi_bin_out(self): quasi = QuasiDistribution(qprobs) self.assertEqual(qprobs, quasi.binary_probabilities()) + def test_bin_no_prefix_w_heading_zero_quasi_bin_out(self): + """Test binary input without a 0b prefix with heading 0 and binary output.""" + qprobs = { + "00000": 3 / 5, + "00001": 1 / 2, + "00010": 7 / 20, + "00011": 1 / 10, + "00100": -11 / 20, + } + quasi = QuasiDistribution(qprobs) + self.assertEqual(qprobs, quasi.binary_probabilities()) + + def test_bin_no_prefix_w_diff_heading_zero_quasi_bin_out(self): + """Test binary input without a 0b prefix with heading 0 of different sizes and binary output.""" + qprobs = { + "0": 3 / 5, + "01": 1 / 2, + "10": 7 / 20, + "011": 1 / 10, + "00100": -11 / 20, + } + quasi = QuasiDistribution(qprobs) + expected = { + "00000": 3 / 5, + "00001": 1 / 2, + "00010": 7 / 20, + "00011": 1 / 10, + "00100": -11 / 20, + } + self.assertEqual(expected, quasi.binary_probabilities()) + + def test_bin_no_prefix_w_diff_heading_zero_quasi_bin_out_padded(self): + """Test binary input without a 0b prefix with heading 0 of different sizes and binary output, + padded with zeros.""" + qprobs = { + "0": 3 / 5, + "01": 1 / 2, + "10": 7 / 20, + "011": 1 / 10, + "00100": -11 / 20, + } + quasi = QuasiDistribution(qprobs) + expected = { + "0000000": 3 / 5, + "0000001": 1 / 2, + "0000010": 7 / 20, + "0000011": 1 / 10, + "0000100": -11 / 20, + } + self.assertEqual(expected, quasi.binary_probabilities(7)) + + def test_bin_no_prefix_out_padded(self): + """Test binary input without a 0b prefix, padded with zeros.""" + n = 5 + qprobs = {"0": 1} + quasi = QuasiDistribution(qprobs) + expected = {"0" * n: 1} + self.assertEqual(expected, quasi.binary_probabilities(num_bits=n)) + def test_hex_quasi_bin_out_padded(self): """Test hexadecimal input and binary output, padded with zeros.""" qprobs = {"0x0": 3 / 5, "0x1": 1 / 2, "0x2": 7 / 20, "0x3": 1 / 10, "0x4": -11 / 20} @@ -106,6 +165,11 @@ def test_empty_bin_out(self): quasi = QuasiDistribution({}) self.assertEqual(quasi.binary_probabilities(), {}) + def test_empty_bin_out_padding(self): + """Test empty input with binary output and padding.""" + quasi = QuasiDistribution({}) + self.assertEqual(quasi.binary_probabilities(5), {}) + def test_invalid_keys(self): """Test invalid key type raises.""" with self.assertRaises(TypeError): From 0f688eb30555b9d59b040f6869aff4871fdf96dc Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Thu, 22 Sep 2022 15:52:08 +0200 Subject: [PATCH 34/56] Fix flipping of gate direction in transpiler for CZ gate (#8625) * fix flipping of the symmetric cz gate * complete test * black * pylint * black * add release notes Co-authored-by: Pieter Eendebak --- .../transpiler/passes/utils/gate_direction.py | 19 ++++++++++++++++++- ...fix-flipping-cz-gate-fd08305ca12d9a79.yaml | 5 +++++ test/python/transpiler/test_gate_direction.py | 16 ++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/fix-flipping-cz-gate-fd08305ca12d9a79.yaml diff --git a/qiskit/transpiler/passes/utils/gate_direction.py b/qiskit/transpiler/passes/utils/gate_direction.py index 90e66821a268..3c331441d83e 100644 --- a/qiskit/transpiler/passes/utils/gate_direction.py +++ b/qiskit/transpiler/passes/utils/gate_direction.py @@ -20,7 +20,7 @@ from qiskit.circuit import QuantumRegister from qiskit.dagcircuit import DAGCircuit -from qiskit.circuit.library.standard_gates import RYGate, HGate, CXGate, ECRGate, RZXGate +from qiskit.circuit.library.standard_gates import RYGate, HGate, CXGate, CZGate, ECRGate, RZXGate class GateDirection(TransformationPass): @@ -78,6 +78,11 @@ def __init__(self, coupling_map, target=None): self._ecr_dag.apply_operation_back(HGate(), [qr[0]], []) self._ecr_dag.apply_operation_back(HGate(), [qr[1]], []) + self._cz_dag = DAGCircuit() + qr = QuantumRegister(2) + self._cz_dag.add_qreg(qr) + self._cz_dag.apply_operation_back(CZGate(), [qr[1], qr[0]], []) + @staticmethod def _rzx_dag(parameter): _rzx_dag = DAGCircuit() @@ -138,6 +143,8 @@ def run(self, dag): if (physical_q0, physical_q1) not in cmap_edges: if node.name == "cx": dag.substitute_node_with_dag(node, self._cx_dag) + elif node.name == "cz": + dag.substitute_node_with_dag(node, self._cz_dag) elif node.name == "ecr": dag.substitute_node_with_dag(node, self._ecr_dag) elif node.name == "rzx": @@ -169,6 +176,16 @@ def run(self, dag): "The circuit requires a connection between physical " "qubits %s and %s for cx" % (physical_q0, physical_q1) ) + elif node.name == "cz": + if (physical_q0, physical_q1) in self.target["cz"]: + continue + if (physical_q1, physical_q0) in self.target["cz"]: + dag.substitute_node_with_dag(node, self._cz_dag) + else: + raise TranspilerError( + "The circuit requires a connection between physical " + "qubits %s and %s for cz" % (physical_q0, physical_q1) + ) elif node.name == "ecr": if (physical_q0, physical_q1) in self.target["ecr"]: continue diff --git a/releasenotes/notes/fix-flipping-cz-gate-fd08305ca12d9a79.yaml b/releasenotes/notes/fix-flipping-cz-gate-fd08305ca12d9a79.yaml new file mode 100644 index 000000000000..4c27b40a2255 --- /dev/null +++ b/releasenotes/notes/fix-flipping-cz-gate-fd08305ca12d9a79.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fix a problem in the `GateDirection` transpiler pass for the CZ gate. The CZ is symmetric, so flipping the qubit arguments is allowed to match the directed coupling map. + diff --git a/test/python/transpiler/test_gate_direction.py b/test/python/transpiler/test_gate_direction.py index 0960c840ddad..59fa04a517a2 100644 --- a/test/python/transpiler/test_gate_direction.py +++ b/test/python/transpiler/test_gate_direction.py @@ -15,6 +15,7 @@ from math import pi from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit +from qiskit.compiler import transpile from qiskit.transpiler import TranspilerError from qiskit.transpiler import CouplingMap from qiskit.transpiler.passes import GateDirection @@ -245,6 +246,21 @@ def test_preserves_conditions(self): self.assertEqual(circuit_to_dag(expected), after) + def test_regression_gh_8387(self): + """Regression test for flipping of CZ gate""" + qc = QuantumCircuit(3) + qc.cz(1, 0) + qc.barrier() + qc.cz(2, 0) + + coupling_map = CouplingMap([[0, 1], [1, 2]]) + _ = transpile( + qc, + basis_gates=["cz", "cx", "u3", "u2", "u1"], + coupling_map=coupling_map, + optimization_level=2, + ) + if __name__ == "__main__": unittest.main() From cde535cf3dc19719e743e60ee092870b094e1a94 Mon Sep 17 00:00:00 2001 From: dlasecki Date: Thu, 22 Sep 2022 21:06:14 +0200 Subject: [PATCH 35/56] Implemented PVQD algorithm with primitives. (#8705) * Implemented observables_evaluator.py with primitives. * Added evolvers problems and interfaces to time_evolvers package. * Mostly updated trotter_qrte.py to use primitives. * Added observables_evaluator.py that uses primitives. * Added observables_evaluator.py that uses primitives. * Updated trotter_qrte.py to use primitives. * Updated imports * Added estimator to pvqd.py (draft) * Updated typehints and limited use of opflow. * Updated typehints and limited use of opflow. * Removed files out of scope for this PR. * Added annotations import. * Added observables_evaluator.py with primitives. * Added ListOrDict support to observables_evaluator.py. * Drafted pvqd.py with the fidelity primitive; type hints updated. * Accepting fidelity primitive. * Included CR suggestions. * Applied some CR comments. * Applied some CR comments. * Added reno. * Added reno. * Accepting Statevector. * Added attributes docs. * Support for 0 operator. * Implemented pvqd unit tests with primitives; code refactoring. * Added reno. * Updated algorithms init. * Code refactoring. * Removed old pvqd algorithm and related files. * Add pending deprecation for evolvers * Renamed classes and linked to algorithms init. * fix docstring * Improved reno. * Updated classes names. * Code refactoring. * Applied CR comments. * Removed unnecessary files. * Applied CR comments. * Black fix. * Applied CR comments. * Init updates. * Reduced number of cyclic import. * Fix for cyclic import * Doc fix * Updated init. * Added error raising and unit test. * Apply suggestions from code review Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> * Fixed code example. Co-authored-by: Manoel Marques Co-authored-by: woodsp-ibm Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/algorithms/__init__.py | 6 +- .../state_fidelities/base_state_fidelity.py | 2 +- .../pvqd/__init__.py | 0 .../{evolvers => time_evolvers}/pvqd/pvqd.py | 169 ++++++++++-------- .../pvqd/pvqd_result.py | 22 ++- .../{evolvers => time_evolvers}/pvqd/utils.py | 47 +++-- ...dynamics-primitives-6003336d0866ca19.yaml} | 25 +-- .../{evolvers => time_evolvers}/test_pvqd.py | 161 +++++++++-------- 8 files changed, 234 insertions(+), 198 deletions(-) rename qiskit/algorithms/{evolvers => time_evolvers}/pvqd/__init__.py (100%) rename qiskit/algorithms/{evolvers => time_evolvers}/pvqd/pvqd.py (74%) rename qiskit/algorithms/{evolvers => time_evolvers}/pvqd/pvqd_result.py (74%) rename qiskit/algorithms/{evolvers => time_evolvers}/pvqd/utils.py (72%) rename releasenotes/notes/{project-dynamics-2f848a5f89655429.yaml => project-dynamics-primitives-6003336d0866ca19.yaml} (58%) rename test/python/algorithms/{evolvers => time_evolvers}/test_pvqd.py (73%) diff --git a/qiskit/algorithms/__init__.py b/qiskit/algorithms/__init__.py index 987951253ee3..d70f1cde60b3 100644 --- a/qiskit/algorithms/__init__.py +++ b/qiskit/algorithms/__init__.py @@ -113,8 +113,6 @@ RealEvolver ImaginaryEvolver TrotterQRTE - PVQD - PVQDResult EvolutionResult EvolutionProblem @@ -132,6 +130,8 @@ RealTimeEvolver ImaginaryTimeEvolver + PVQD + PVQDResult TimeEvolutionResult TimeEvolutionProblem @@ -310,7 +310,7 @@ from .observables_evaluator import estimate_observables from .evolvers.trotterization import TrotterQRTE -from .evolvers.pvqd import PVQD, PVQDResult +from .time_evolvers.pvqd import PVQD, PVQDResult __all__ = [ "AlgorithmJob", diff --git a/qiskit/algorithms/state_fidelities/base_state_fidelity.py b/qiskit/algorithms/state_fidelities/base_state_fidelity.py index 75f4d632396d..a711adacf0fa 100644 --- a/qiskit/algorithms/state_fidelities/base_state_fidelity.py +++ b/qiskit/algorithms/state_fidelities/base_state_fidelity.py @@ -19,7 +19,7 @@ import numpy as np from qiskit import QuantumCircuit -from qiskit.algorithms import AlgorithmJob +from qiskit.algorithms.algorithm_job import AlgorithmJob from qiskit.circuit import ParameterVector from .state_fidelity_result import StateFidelityResult diff --git a/qiskit/algorithms/evolvers/pvqd/__init__.py b/qiskit/algorithms/time_evolvers/pvqd/__init__.py similarity index 100% rename from qiskit/algorithms/evolvers/pvqd/__init__.py rename to qiskit/algorithms/time_evolvers/pvqd/__init__.py diff --git a/qiskit/algorithms/evolvers/pvqd/pvqd.py b/qiskit/algorithms/time_evolvers/pvqd/pvqd.py similarity index 74% rename from qiskit/algorithms/evolvers/pvqd/pvqd.py rename to qiskit/algorithms/time_evolvers/pvqd/pvqd.py index 323f32aa9db5..bb2418640e8d 100644 --- a/qiskit/algorithms/evolvers/pvqd/pvqd.py +++ b/qiskit/algorithms/time_evolvers/pvqd/pvqd.py @@ -11,33 +11,32 @@ # that they have been altered from the originals. """The projected Variational Quantum Dynamics Algorithm.""" - -from typing import Optional, Union, List, Tuple, Callable +from __future__ import annotations import logging +from typing import Callable + import numpy as np -from qiskit import QiskitError -from qiskit.algorithms.optimizers import Optimizer, Minimizer -from qiskit.circuit import QuantumCircuit, ParameterVector +from qiskit.circuit import QuantumCircuit, ParameterVector, Parameter from qiskit.circuit.library import PauliEvolutionGate -from qiskit.extensions import HamiltonianGate -from qiskit.providers import Backend -from qiskit.opflow import OperatorBase, CircuitSampler, ExpectationBase, StateFn, MatrixOp +from qiskit.opflow import PauliSumOp +from qiskit.primitives import BaseEstimator +from qiskit.quantum_info.operators.base_operator import BaseOperator from qiskit.synthesis import EvolutionSynthesis, LieTrotter -from qiskit.utils import QuantumInstance - +from ...exceptions import AlgorithmError, QiskitError from .pvqd_result import PVQDResult from .utils import _get_observable_evaluator, _is_gradient_supported - -from ..evolution_problem import EvolutionProblem -from ..evolution_result import EvolutionResult -from ..real_evolver import RealEvolver +from ..time_evolution_problem import TimeEvolutionProblem +from ..time_evolution_result import TimeEvolutionResult +from ..real_time_evolver import RealTimeEvolver +from ...state_fidelities.base_state_fidelity import BaseStateFidelity +from ...optimizers import Optimizer, Minimizer logger = logging.getLogger(__name__) -class PVQD(RealEvolver): +class PVQD(RealTimeEvolver): """The projected Variational Quantum Dynamics (p-VQD) Algorithm. In each timestep, this algorithm computes the next state with a Trotter formula @@ -52,7 +51,6 @@ class PVQD(RealEvolver): ansatz (QuantumCircuit): The parameterized circuit representing the time-evolved state. initial_parameters (np.ndarray): The parameters of the ansatz at time 0. - expectation (ExpectationBase): The method to compute expectation values. optimizer (Optional[Union[Optimizer, Minimizer]]): The classical optimization routine used to maximize the fidelity of the Trotter step and ansatz. num_timesteps (Optional[int]): The number of timesteps to take. If None, it is automatically @@ -73,14 +71,19 @@ class PVQD(RealEvolver): import numpy as np + from qiskit.algorithms.state_fidelities import ComputeUncompute + from qiskit.algorithms.time_evolvers.pvqd import PVQD + from qiskit.primitives import Estimator from qiskit import BasicAer from qiskit.circuit.library import EfficientSU2 - from qiskit.opflow import X, Z, I, MatrixExpectation - - backend = BasicAer.get_backend("statevector_simulator") - expectation = MatrixExpectation() - hamiltonian = 0.1 * (Z ^ Z) + (I ^ X) + (X ^ I) - observable = Z ^ Z + from qiskit.quantum_info import Pauli, SparsePauliOp + from qiskit.algorithms.optimizers import L_BFGS_B + + sampler = Sampler() + fidelity = ComputeUncompute(sampler) + estimator = Estimator() + hamiltonian = 0.1 * SparsePauliOp([Pauli("ZZ"), Pauli("IX"), Pauli("XI")]) + observable = Pauli("ZZ") ansatz = EfficientSU2(2, reps=1) initial_parameters = np.zeros(ansatz.num_parameters) @@ -89,12 +92,12 @@ class PVQD(RealEvolver): # setup the algorithm pvqd = PVQD( + fidelity, ansatz, + estimator, initial_parameters, num_timesteps=100, optimizer=optimizer, - quantum_instance=backend, - expectation=expectation ) # specify the evolution problem @@ -114,30 +117,32 @@ class PVQD(RealEvolver): def __init__( self, + fidelity: BaseStateFidelity, ansatz: QuantumCircuit, initial_parameters: np.ndarray, - expectation: ExpectationBase, - optimizer: Optional[Union[Optimizer, Minimizer]] = None, - num_timesteps: Optional[int] = None, - evolution: Optional[EvolutionSynthesis] = None, + estimator: BaseEstimator | None = None, + optimizer: Optimizer | Minimizer | None = None, + num_timesteps: int | None = None, + evolution: EvolutionSynthesis | None = None, use_parameter_shift: bool = True, - initial_guess: Optional[np.ndarray] = None, - quantum_instance: Optional[Union[Backend, QuantumInstance]] = None, + initial_guess: np.ndarray | None = None, ) -> None: """ Args: + fidelity: A fidelity primitive used by the algorithm. ansatz: A parameterized circuit preparing the variational ansatz to model the time evolved quantum state. initial_parameters: The initial parameters for the ansatz. Together with the ansatz, these define the initial state of the time evolution. - expectation: The expectation converter to evaluate expectation values. + estimator: An estimator primitive used for calculating expected values of auxiliary + operators (if provided via the problem). optimizer: The classical optimizers used to minimize the overlap between Trotterization and ansatz. Can be either a :class:`.Optimizer` or a callable using the :class:`.Minimizer` protocol. This argument is optional since it is not required for :meth:`get_loss`, but it has to be set before :meth:`evolve` is called. - num_timestep: The number of time steps. If ``None`` it will be set such that the timestep - is close to 0.01. + num_timesteps: The number of time steps. If ``None`` it will be set such that the + timestep is close to 0.01. evolution: The evolution synthesis to use for the construction of the Trotter step. Defaults to first-order Lie-Trotter decomposition, see also :mod:`~qiskit.synthesis.evolution` for different options. @@ -147,7 +152,6 @@ def __init__( initial_guess: The initial guess for the first VQE optimization. Afterwards the previous iteration result is used as initial guess. If None, this is set to a random vector with elements in the interval :math:`[-0.01, 0.01]`. - quantum_instance: The backend or quantum instance used to evaluate the circuits. """ super().__init__() if evolution is None: @@ -158,36 +162,19 @@ def __init__( self.num_timesteps = num_timesteps self.optimizer = optimizer self.initial_guess = initial_guess - self.expectation = expectation + self.estimator = estimator + self.fidelity_primitive = fidelity self.evolution = evolution self.use_parameter_shift = use_parameter_shift - self._sampler = None - self.quantum_instance = quantum_instance - - @property - def quantum_instance(self) -> Optional[QuantumInstance]: - """Return the current quantum instance.""" - return self._quantum_instance - - @quantum_instance.setter - def quantum_instance(self, quantum_instance: Optional[Union[Backend, QuantumInstance]]) -> None: - """Set the quantum instance and circuit sampler.""" - if quantum_instance is not None: - if not isinstance(quantum_instance, QuantumInstance): - quantum_instance = QuantumInstance(quantum_instance) - self._sampler = CircuitSampler(quantum_instance) - - self._quantum_instance = quantum_instance - def step( self, - hamiltonian: OperatorBase, + hamiltonian: BaseOperator | PauliSumOp, ansatz: QuantumCircuit, theta: np.ndarray, dt: float, initial_guess: np.ndarray, - ) -> Tuple[np.ndarray, float]: + ) -> tuple[np.ndarray, float]: """Perform a single time step. Args: @@ -223,11 +210,11 @@ def step( def get_loss( self, - hamiltonian: OperatorBase, + hamiltonian: BaseOperator | PauliSumOp, ansatz: QuantumCircuit, dt: float, current_parameters: np.ndarray, - ) -> Tuple[Callable[[np.ndarray], float], Optional[Callable[[np.ndarray], np.ndarray]]]: + ) -> tuple[Callable[[np.ndarray], float], Callable[[np.ndarray], np.ndarray]] | None: """Get a function to evaluate the infidelity between Trotter step and ansatz. @@ -247,23 +234,15 @@ def get_loss( # use Trotterization to evolve the current state trotterized = ansatz.bind_parameters(current_parameters) - if isinstance(hamiltonian, MatrixOp): - evolution_gate = HamiltonianGate(hamiltonian.primitive, time=dt) - else: - evolution_gate = PauliEvolutionGate(hamiltonian, time=dt, synthesis=self.evolution) + evolution_gate = PauliEvolutionGate(hamiltonian, time=dt, synthesis=self.evolution) trotterized.append(evolution_gate, ansatz.qubits) # define the overlap of the Trotterized state and the ansatz x = ParameterVector("w", ansatz.num_parameters) shifted = ansatz.assign_parameters(current_parameters + x) - overlap = StateFn(trotterized).adjoint() @ StateFn(shifted) - converted = self.expectation.convert(overlap) - - def evaluate_loss( - displacement: Union[np.ndarray, List[np.ndarray]] - ) -> Union[float, List[float]]: + def evaluate_loss(displacement: np.ndarray | list[np.ndarray]) -> float | list[float]: """Evaluate the overlap of the ansatz with the Trotterized evolution. Args: @@ -271,6 +250,9 @@ def evaluate_loss( Returns: The fidelity of the ansatz with parameters ``theta`` and the Trotterized evolution. + + Raises: + AlgorithmError: If a primitive job fails. """ if isinstance(displacement, list): displacement = np.asarray(displacement) @@ -278,11 +260,24 @@ def evaluate_loss( else: value_dict = dict(zip(x, displacement)) - sampled = self._sampler.convert(converted, params=value_dict) - - # in principle we could add different loss functions here, but we're currently + param_dicts = self._transpose_param_dicts(value_dict) + num_of_param_sets = len(param_dicts) + states1 = [trotterized] * num_of_param_sets + states2 = [shifted] * num_of_param_sets + param_dicts2 = [list(param_dict.values()) for param_dict in param_dicts] + # the first state does not have free parameters so values_1 will be None by default + try: + job = self.fidelity_primitive.run(states1, states2, values_2=param_dicts2) + fidelities = job.result().fidelities + except Exception as exc: + raise AlgorithmError("The primitive job failed!") from exc + + if len(fidelities) == 1: + fidelities = fidelities[0] + + # in principle, we could add different loss functions here, but we're currently # not aware of a use-case for a different one than in the paper - return 1 - np.abs(sampled.eval()) ** 2 + return 1 - np.abs(fidelities) ** 2 if _is_gradient_supported(ansatz) and self.use_parameter_shift: @@ -314,8 +309,25 @@ def evaluate_gradient(displacement: np.ndarray) -> np.ndarray: return evaluate_loss, evaluate_gradient - def evolve(self, evolution_problem: EvolutionProblem) -> EvolutionResult: - """ + def _transpose_param_dicts(self, params: dict) -> list[dict[Parameter, float]]: + p_0 = list(params.values())[0] + if isinstance(p_0, (list, np.ndarray)): + num_parameterizations = len(p_0) + param_bindings = [ + {param: value_list[i] for param, value_list in params.items()} # type: ignore + for i in range(num_parameterizations) + ] + else: + param_bindings = [params] + + return param_bindings + + def evolve(self, evolution_problem: TimeEvolutionProblem) -> TimeEvolutionResult: + r"""Perform real time evolution :math:`\exp(-i t H)|\Psi\rangle`. + + Evolves an initial state :math:`|\Psi\rangle` for a time :math:`t` + under a Hamiltonian :math:`H`, as provided in the ``evolution_problem``. + Args: evolution_problem: The evolution problem containing the hamiltonian, total evolution time and observables to evaluate. @@ -324,7 +336,8 @@ def evolve(self, evolution_problem: EvolutionProblem) -> EvolutionResult: A result object containing the evolution information and evaluated observables. Raises: - ValueError: If the evolution time is not positive or the timestep is too small. + ValueError: If ``aux_operators`` provided in the time evolution problem but no estimator + provided to the algorithm. NotImplementedError: If the evolution problem contains an initial state. """ self._validate_setup() @@ -346,8 +359,12 @@ def evolve(self, evolution_problem: EvolutionProblem) -> EvolutionResult: # get the function to evaluate the observables for a given set of ansatz parameters if observables is not None: + if self.estimator is None: + raise ValueError( + "The evolution problem contained aux_operators but no estimator was provided. " + ) evaluate_observables = _get_observable_evaluator( - self.ansatz, observables, self.expectation, self._sampler + self.ansatz, observables, self.estimator ) observable_values = [evaluate_observables(self.initial_parameters)] @@ -392,7 +409,7 @@ def _validate_setup(self, skip=None): if skip is None: skip = {} - required_attributes = {"quantum_instance", "optimizer"}.difference(skip) + required_attributes = {"optimizer"}.difference(skip) for attr in required_attributes: if getattr(self, attr, None) is None: diff --git a/qiskit/algorithms/evolvers/pvqd/pvqd_result.py b/qiskit/algorithms/time_evolvers/pvqd/pvqd_result.py similarity index 74% rename from qiskit/algorithms/evolvers/pvqd/pvqd_result.py rename to qiskit/algorithms/time_evolvers/pvqd/pvqd_result.py index e14e7a0c9db5..6f8a34cb89a9 100644 --- a/qiskit/algorithms/evolvers/pvqd/pvqd_result.py +++ b/qiskit/algorithms/time_evolvers/pvqd/pvqd_result.py @@ -11,28 +11,26 @@ # that they have been altered from the originals. """Result object for p-VQD.""" +from __future__ import annotations -from typing import Union, Optional, List, Tuple import numpy as np from qiskit.circuit import QuantumCircuit -from qiskit.opflow import StateFn, OperatorBase +from ..time_evolution_result import TimeEvolutionResult -from ..evolution_result import EvolutionResult - -class PVQDResult(EvolutionResult): +class PVQDResult(TimeEvolutionResult): """The result object for the p-VQD algorithm.""" def __init__( self, - evolved_state: Union[StateFn, QuantumCircuit, OperatorBase], - aux_ops_evaluated: Optional[List[Tuple[complex, complex]]] = None, - times: Optional[List[float]] = None, - parameters: Optional[List[np.ndarray]] = None, - fidelities: Optional[List[float]] = None, - estimated_error: Optional[float] = None, - observables: Optional[List[List[float]]] = None, + evolved_state: QuantumCircuit, + aux_ops_evaluated: list[tuple[complex, complex]] | None = None, + times: list[float] | None = None, + parameters: list[np.ndarray] | None = None, + fidelities: list[float] | None = None, + estimated_error: float | None = None, + observables: list[list[float]] | None = None, ): """ Args: diff --git a/qiskit/algorithms/evolvers/pvqd/utils.py b/qiskit/algorithms/time_evolvers/pvqd/utils.py similarity index 72% rename from qiskit/algorithms/evolvers/pvqd/utils.py rename to qiskit/algorithms/time_evolvers/pvqd/utils.py index 589f12005de8..47e638d97011 100644 --- a/qiskit/algorithms/evolvers/pvqd/utils.py +++ b/qiskit/algorithms/time_evolvers/pvqd/utils.py @@ -12,17 +12,19 @@ """Utilities for p-VQD.""" - -from typing import Union, List, Callable +from __future__ import annotations import logging +from typing import Callable import numpy as np from qiskit.circuit import QuantumCircuit, Parameter, ParameterExpression from qiskit.compiler import transpile from qiskit.exceptions import QiskitError -from qiskit.opflow import ListOp, CircuitSampler, ExpectationBase, StateFn, OperatorBase from qiskit.opflow.gradients.circuit_gradients import ParamShift +from qiskit.primitives import BaseEstimator +from qiskit.quantum_info.operators.base_operator import BaseOperator +from ...exceptions import AlgorithmError logger = logging.getLogger(__name__) @@ -70,21 +72,12 @@ def _is_gradient_supported(ansatz: QuantumCircuit) -> bool: def _get_observable_evaluator( ansatz: QuantumCircuit, - observables: Union[OperatorBase, List[OperatorBase]], - expectation: ExpectationBase, - sampler: CircuitSampler, -) -> Callable[[np.ndarray], Union[float, List[float]]]: + observables: BaseOperator | list[BaseOperator], + estimator: BaseEstimator, +) -> Callable[[np.ndarray], float | list[float]]: """Get a callable to evaluate a (list of) observable(s) for given circuit parameters.""" - if isinstance(observables, list): - observables = ListOp(observables) - - expectation_value = StateFn(observables, is_measurement=True) @ StateFn(ansatz) - converted = expectation.convert(expectation_value) - - ansatz_parameters = ansatz.parameters - - def evaluate_observables(theta: np.ndarray) -> Union[float, List[float]]: + def evaluate_observables(theta: np.ndarray) -> float | list[float]: """Evaluate the observables for the ansatz parameters ``theta``. Args: @@ -92,9 +85,25 @@ def evaluate_observables(theta: np.ndarray) -> Union[float, List[float]]: Returns: The observables evaluated at the ansatz parameters. + + Raises: + AlgorithmError: If a primitive job fails. """ - value_dict = dict(zip(ansatz_parameters, theta)) - sampled = sampler.convert(converted, params=value_dict) - return sampled.eval() + if isinstance(observables, list): + num_observables = len(observables) + obs = observables + else: + num_observables = 1 + obs = [observables] + states = [ansatz] * num_observables + parameter_values = [theta] * num_observables + + try: + estimator_job = estimator.run(states, obs, parameter_values=parameter_values) + results = estimator_job.result().values + except Exception as exc: + raise AlgorithmError("The primitive job failed!") from exc + + return results return evaluate_observables diff --git a/releasenotes/notes/project-dynamics-2f848a5f89655429.yaml b/releasenotes/notes/project-dynamics-primitives-6003336d0866ca19.yaml similarity index 58% rename from releasenotes/notes/project-dynamics-2f848a5f89655429.yaml rename to releasenotes/notes/project-dynamics-primitives-6003336d0866ca19.yaml index a33fdfefed28..a665b63319b5 100644 --- a/releasenotes/notes/project-dynamics-2f848a5f89655429.yaml +++ b/releasenotes/notes/project-dynamics-primitives-6003336d0866ca19.yaml @@ -1,7 +1,7 @@ features: - | - Added the :class:`PVQD` class to the time evolution framework. This class implements the - projected Variational Quantum Dynamics (p-VQD) algorithm as :class:`.PVQD` of + Added the primitives-enabled :class:`PVQD` class to the time evolution framework. This class + implements the projected Variational Quantum Dynamics (p-VQD) algorithm as :class:`.PVQD` of `Barison et al. `_. In each timestep this algorithm computes the next state with a Trotter formula and projects it @@ -12,14 +12,19 @@ features: import numpy as np + from qiskit.algorithms.state_fidelities import ComputeUncompute + from qiskit.algorithms.time_evolvers.pvqd import PVQD + from qiskit.primitives import Estimator from qiskit import BasicAer from qiskit.circuit.library import EfficientSU2 - from qiskit.opflow import X, Z, I, MatrixExpectation - - backend = BasicAer.get_backend("statevector_simulator") - expectation = MatrixExpectation() - hamiltonian = 0.1 * (Z ^ Z) + (I ^ X) + (X ^ I) - observable = Z ^ Z + from qiskit.quantum_info import Pauli, SparsePauliOp + from qiskit.algorithms.optimizers import L_BFGS_B + + sampler = Sampler() + fidelity = ComputeUncompute(sampler) + estimator = Estimator() + hamiltonian = 0.1 * SparsePauliOp([Pauli("ZZ"), Pauli("IX"), Pauli("XI")]) + observable = Pauli("ZZ") ansatz = EfficientSU2(2, reps=1) initial_parameters = np.zeros(ansatz.num_parameters) @@ -28,12 +33,12 @@ features: # setup the algorithm pvqd = PVQD( + fidelity, ansatz, + estimator, initial_parameters, num_timesteps=100, optimizer=optimizer, - quantum_instance=backend, - expectation=expectation ) # specify the evolution problem diff --git a/test/python/algorithms/evolvers/test_pvqd.py b/test/python/algorithms/time_evolvers/test_pvqd.py similarity index 73% rename from test/python/algorithms/evolvers/test_pvqd.py rename to test/python/algorithms/time_evolvers/test_pvqd.py index 5c450fa24822..8d52b284f0d7 100644 --- a/test/python/algorithms/evolvers/test_pvqd.py +++ b/test/python/algorithms/time_evolvers/test_pvqd.py @@ -11,20 +11,23 @@ # that they have been altered from the originals. """Tests for PVQD.""" - +import unittest from functools import partial + from ddt import ddt, data, unpack import numpy as np +from qiskit.algorithms.state_fidelities import ComputeUncompute +from qiskit.opflow import PauliSumOp +from qiskit.primitives import Sampler, Estimator +from qiskit.quantum_info import Pauli, SparsePauliOp from qiskit.test import QiskitTestCase - -from qiskit import BasicAer, QiskitError +from qiskit import QiskitError from qiskit.circuit import QuantumCircuit, Parameter, Gate from qiskit.algorithms.evolvers import EvolutionProblem -from qiskit.algorithms.evolvers.pvqd import PVQD +from qiskit.algorithms.time_evolvers.pvqd import PVQD from qiskit.algorithms.optimizers import L_BFGS_B, GradientDescent, SPSA, OptimizerResult from qiskit.circuit.library import EfficientSU2 -from qiskit.opflow import X, Z, I, MatrixExpectation, PauliExpectation # pylint: disable=unused-argument, invalid-name @@ -39,7 +42,7 @@ def gradient_supplied(fun, x0, jac, info): class WhatAmI(Gate): - """An custom opaque gate that can be inverted but not decomposed.""" + """A custom opaque gate that can be inverted but not decomposed.""" def __init__(self, angle): super().__init__(name="whatami", num_qubits=2, params=[angle]) @@ -54,31 +57,23 @@ class TestPVQD(QiskitTestCase): def setUp(self): super().setUp() - self.sv_backend = BasicAer.get_backend("statevector_simulator") - self.qasm_backend = BasicAer.get_backend("qasm_simulator") - self.expectation = MatrixExpectation() - self.hamiltonian = 0.1 * (Z ^ Z) + (I ^ X) + (X ^ I) - self.observable = Z ^ Z + self.hamiltonian = 0.1 * SparsePauliOp([Pauli("ZZ"), Pauli("IX"), Pauli("XI")]) + self.observable = Pauli("ZZ") self.ansatz = EfficientSU2(2, reps=1) self.initial_parameters = np.zeros(self.ansatz.num_parameters) - @data( - ("ising", MatrixExpectation, True, "sv", 2), - ("ising_matrix", MatrixExpectation, True, "sv", None), - ("ising", PauliExpectation, True, "qasm", 2), - ("pauli", PauliExpectation, False, "qasm", None), - ) + @data(("ising", True, 2), ("pauli", False, None), ("pauli_sum_op", True, 2)) @unpack - def test_pvqd(self, hamiltonian_type, expectation_cls, gradient, backend_type, num_timesteps): + def test_pvqd(self, hamiltonian_type, gradient, num_timesteps): """Test a simple evolution.""" time = 0.02 if hamiltonian_type == "ising": hamiltonian = self.hamiltonian - elif hamiltonian_type == "ising_matrix": - hamiltonian = self.hamiltonian.to_matrix_op() + elif hamiltonian_type == "pauli_sum_op": + hamiltonian = PauliSumOp(self.hamiltonian) else: # hamiltonian_type == "pauli": - hamiltonian = X ^ X + hamiltonian = Pauli("XX") # parse input arguments if gradient: @@ -86,17 +81,18 @@ def test_pvqd(self, hamiltonian_type, expectation_cls, gradient, backend_type, n else: optimizer = L_BFGS_B(maxiter=1) - backend = self.sv_backend if backend_type == "sv" else self.qasm_backend - expectation = expectation_cls() + sampler = Sampler() + estimator = Estimator() + fidelity_primitive = ComputeUncompute(sampler) # run pVQD keeping track of the energy and the magnetization pvqd = PVQD( + fidelity_primitive, self.ansatz, self.initial_parameters, - num_timesteps=num_timesteps, + estimator, optimizer=optimizer, - quantum_instance=backend, - expectation=expectation, + num_timesteps=num_timesteps, ) problem = EvolutionProblem(hamiltonian, time, aux_operators=[hamiltonian, self.observable]) result = pvqd.evolve(problem) @@ -112,19 +108,21 @@ def test_pvqd(self, hamiltonian_type, expectation_cls, gradient, backend_type, n def test_step(self): """Test calling the step method directly.""" - + sampler = Sampler() + estimator = Estimator() + fidelity_primitive = ComputeUncompute(sampler) pvqd = PVQD( + fidelity_primitive, self.ansatz, self.initial_parameters, + estimator, optimizer=L_BFGS_B(maxiter=100), - quantum_instance=self.sv_backend, - expectation=MatrixExpectation(), ) # perform optimization for a timestep of 0, then the optimal parameters are the current # ones and the fidelity is 1 theta_next, fidelity = pvqd.step( - self.hamiltonian.to_matrix_op(), + self.hamiltonian, self.ansatz, self.initial_parameters, dt=0.0, @@ -137,11 +135,15 @@ def test_step(self): def test_get_loss(self): """Test getting the loss function directly.""" + sampler = Sampler() + estimator = Estimator() + fidelity_primitive = ComputeUncompute(sampler) + pvqd = PVQD( + fidelity_primitive, self.ansatz, self.initial_parameters, - quantum_instance=self.sv_backend, - expectation=MatrixExpectation(), + estimator, use_parameter_shift=False, ) @@ -161,13 +163,16 @@ def test_get_loss(self): def test_invalid_num_timestep(self): """Test raises if the num_timestep is not positive.""" + sampler = Sampler() + estimator = Estimator() + fidelity_primitive = ComputeUncompute(sampler) pvqd = PVQD( + fidelity_primitive, self.ansatz, self.initial_parameters, - num_timesteps=0, + estimator, optimizer=L_BFGS_B(), - quantum_instance=self.sv_backend, - expectation=self.expectation, + num_timesteps=0, ) problem = EvolutionProblem( self.hamiltonian, time=0.01, aux_operators=[self.hamiltonian, self.observable] @@ -179,15 +184,18 @@ def test_invalid_num_timestep(self): def test_initial_guess_and_observables(self): """Test doing no optimizations stays at initial guess.""" initial_guess = np.zeros(self.ansatz.num_parameters) + sampler = Sampler() + estimator = Estimator() + fidelity_primitive = ComputeUncompute(sampler) pvqd = PVQD( + fidelity_primitive, self.ansatz, self.initial_parameters, - num_timesteps=10, + estimator, optimizer=SPSA(maxiter=0, learning_rate=0.1, perturbation=0.01), + num_timesteps=10, initial_guess=initial_guess, - quantum_instance=self.sv_backend, - expectation=self.expectation, ) problem = EvolutionProblem( self.hamiltonian, time=0.1, aux_operators=[self.hamiltonian, self.observable] @@ -199,46 +207,17 @@ def test_initial_guess_and_observables(self): self.assertEqual(observables[0], 0.1) # expected energy self.assertEqual(observables[1], 1) # expected magnetization - def test_missing_attributesquantum_instance(self): - """Test appropriate error is raised if the quantum instance is missing.""" - pvqd = PVQD( - self.ansatz, - self.initial_parameters, - optimizer=L_BFGS_B(maxiter=1), - expectation=self.expectation, - ) - problem = EvolutionProblem(self.hamiltonian, time=0.01) - - attrs_to_test = [ - ("optimizer", L_BFGS_B(maxiter=1)), - ("quantum_instance", self.qasm_backend), - ] - - for attr, value in attrs_to_test: - with self.subTest(msg=f"missing: {attr}"): - # set attribute to None to invalidate the setup - setattr(pvqd, attr, None) - - with self.assertRaises(ValueError): - _ = pvqd.evolve(problem) - - # set the correct value again - setattr(pvqd, attr, value) - - with self.subTest(msg="all set again"): - result = pvqd.evolve(problem) - self.assertIsNotNone(result.evolved_state) - def test_zero_parameters(self): """Test passing an ansatz with zero parameters raises an error.""" problem = EvolutionProblem(self.hamiltonian, time=0.02) + sampler = Sampler() + fidelity_primitive = ComputeUncompute(sampler) pvqd = PVQD( + fidelity_primitive, QuantumCircuit(2), np.array([]), optimizer=SPSA(maxiter=10, learning_rate=0.1, perturbation=0.01), - quantum_instance=self.sv_backend, - expectation=self.expectation, ) with self.assertRaises(QiskitError): @@ -255,26 +234,46 @@ def test_initial_state_raises(self): initial_state=initial_state, ) + sampler = Sampler() + fidelity_primitive = ComputeUncompute(sampler) + pvqd = PVQD( + fidelity_primitive, self.ansatz, self.initial_parameters, optimizer=SPSA(maxiter=0, learning_rate=0.1, perturbation=0.01), - quantum_instance=self.sv_backend, - expectation=self.expectation, ) with self.assertRaises(NotImplementedError): _ = pvqd.evolve(problem) + def test_aux_ops_raises(self): + """Test passing auxiliary operators with no estimator raises an error.""" + + problem = EvolutionProblem( + self.hamiltonian, time=0.02, aux_operators=[self.hamiltonian, self.observable] + ) + + sampler = Sampler() + fidelity_primitive = ComputeUncompute(sampler) + + pvqd = PVQD( + fidelity_primitive, + self.ansatz, + self.initial_parameters, + optimizer=SPSA(maxiter=0, learning_rate=0.1, perturbation=0.01), + ) + + with self.assertRaises(ValueError): + _ = pvqd.evolve(problem) + class TestPVQDUtils(QiskitTestCase): """Test some utility functions for PVQD.""" def setUp(self): super().setUp() - self.sv_backend = BasicAer.get_backend("statevector_simulator") - self.expectation = MatrixExpectation() - self.hamiltonian = 0.1 * (Z ^ Z) + (I ^ X) + (X ^ I) + self.hamiltonian = 0.1 * SparsePauliOp([Pauli("ZZ"), Pauli("IX"), Pauli("XI")]) self.ansatz = EfficientSU2(2, reps=1) def test_gradient_supported(self): @@ -309,12 +308,16 @@ def test_gradient_supported(self): info = {"has_gradient": None} optimizer = partial(gradient_supplied, info=info) + sampler = Sampler() + estimator = Estimator() + fidelity_primitive = ComputeUncompute(sampler) + pvqd = PVQD( + fidelity=fidelity_primitive, ansatz=None, initial_parameters=np.array([]), + estimator=estimator, optimizer=optimizer, - quantum_instance=self.sv_backend, - expectation=self.expectation, ) problem = EvolutionProblem(self.hamiltonian, time=0.01) for circuit, expected_support in tests: @@ -323,3 +326,7 @@ def test_gradient_supported(self): pvqd.initial_parameters = np.zeros(circuit.num_parameters) _ = pvqd.evolve(problem) self.assertEqual(info["has_gradient"], expected_support) + + +if __name__ == "__main__": + unittest.main() From bdb2e3c15f9d717574b15b4a29f49f68b6ad7462 Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Thu, 22 Sep 2022 16:20:03 -0400 Subject: [PATCH 36/56] Remove stestr cap (#8781) The recently release stestr 4.0.0 should have fixed the issue we were encountering in CI that caused us to cap the version <4.0.0. This commit removes the cap (but excludes the broken 4.0.0 release) so we can continue getting updated versions of stestr. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index fab7f79a23d9..c33c118abd3e 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ black[jupyter]~=22.0 pydot astroid==2.5.6 pylint==2.8.3 -stestr>=2.0.0,<4.0.0 +stestr>=2.0.0,!=4.0.0 pylatexenc>=1.4 ddt>=1.2.0,!=1.4.0,!=1.4.3 seaborn>=0.9.0 From b7d5f4af39a37982d9d5637dd786c7f1f74132e6 Mon Sep 17 00:00:00 2001 From: a-matsuo <47442626+a-matsuo@users.noreply.github.com> Date: Fri, 23 Sep 2022 08:44:27 +0900 Subject: [PATCH 37/56] Support `Sampler` in `Grover` (#8647) * wip added sampler * added sampler * fix lint * assert warns * fix reno * Add deprecation * fix unit tests for pending deprecation * remove unnecessary jupyter notebook * add pend.deprecation test * Update qiskit/algorithms/amplitude_amplifiers/grover.py Co-authored-by: Julien Gacon * added error handling * fix * use algorithm error * fix lint * fix * Update qiskit/algorithms/amplitude_amplifiers/grover.py Co-authored-by: Julien Gacon * Update qiskit/algorithms/amplitude_amplifiers/grover.py Co-authored-by: Julien Gacon * filter warnings * added unittests * lint * fix * fix * fix * fix * fix * lint * remove print * update sampler's options * changed the shots test to TODO * lint * added _prepare_grover in the unittest * fix test * changed the code-block in the release note * Update releasenotes/notes/add-grover-primitives-10f81efdba93703d.yaml * Update qiskit/algorithms/amplitude_amplifiers/grover.py * Update qiskit/algorithms/amplitude_amplifiers/grover.py * Apply suggestions from code review * Apply suggestions from code review * Apply suggestions from code review Co-authored-by: Manoel Marques Co-authored-by: Julien Gacon Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../amplitude_amplifier.py | 2 + .../algorithms/amplitude_amplifiers/grover.py | 144 ++++++++++++++---- ...pression_phaseoracle-1802be3016c83fa8.yaml | 18 ++- ...dd-grover-primitives-10f81efdba93703d.yaml | 27 ++++ test/python/algorithms/test_backendv1.py | 6 +- test/python/algorithms/test_backendv2.py | 6 +- test/python/algorithms/test_grover.py | 137 +++++++++++------ 7 files changed, 250 insertions(+), 90 deletions(-) create mode 100644 releasenotes/notes/add-grover-primitives-10f81efdba93703d.yaml diff --git a/qiskit/algorithms/amplitude_amplifiers/amplitude_amplifier.py b/qiskit/algorithms/amplitude_amplifiers/amplitude_amplifier.py index 5759fe377f3b..dd32dc96ec47 100644 --- a/qiskit/algorithms/amplitude_amplifiers/amplitude_amplifier.py +++ b/qiskit/algorithms/amplitude_amplifiers/amplitude_amplifier.py @@ -46,6 +46,8 @@ def __init__(self) -> None: self._top_measurement = None self._assignment = None self._oracle_evaluation = None + self._circuit_results = None + self._max_probability = None @property def top_measurement(self) -> Optional[str]: diff --git a/qiskit/algorithms/amplitude_amplifiers/grover.py b/qiskit/algorithms/amplitude_amplifiers/grover.py index bc9a729a691b..17dd9f00952a 100644 --- a/qiskit/algorithms/amplitude_amplifiers/grover.py +++ b/qiskit/algorithms/amplitude_amplifiers/grover.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2018, 2021. +# (C) Copyright IBM 2018, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -15,13 +15,17 @@ import itertools import operator from typing import Iterator, List, Optional, Union +import warnings import numpy as np from qiskit import ClassicalRegister, QuantumCircuit +from qiskit.algorithms.exceptions import AlgorithmError +from qiskit.primitives import BaseSampler from qiskit.providers import Backend from qiskit.quantum_info import partial_trace from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_function from .amplification_problem import AmplificationProblem from .amplitude_amplifier import AmplitudeAmplifier, AmplitudeAmplifierResult @@ -113,6 +117,7 @@ def __init__( growth_rate: Optional[float] = None, sample_from_iterations: bool = False, quantum_instance: Optional[Union[QuantumInstance, Backend]] = None, + sampler: Optional[BaseSampler] = None, ) -> None: r""" Args: @@ -131,7 +136,8 @@ def __init__( sample_from_iterations: If True, instead of taking the values in ``iterations`` as powers of the Grover operator, a random integer sample between 0 and smaller value than the iteration is used as a power, see [1], Section 4. - quantum_instance: A Quantum Instance or Backend to run the circuits. + quantum_instance: Pending deprecation: A Quantum Instance or Backend to run the circuits. + sampler: A Sampler to use for sampling the results of the circuits. Raises: ValueError: If ``growth_rate`` is a float but not larger than 1. @@ -156,24 +162,58 @@ def __init__( else: self._iterations = iterations + if quantum_instance is not None and sampler is not None: + raise ValueError("Only one of quantum_instance or sampler can be passed, not both!") + + # check positionally passing the sampler in the place of quantum_instance + # which will be removed in future + if isinstance(quantum_instance, BaseSampler): + sampler = quantum_instance + quantum_instance = None + self._quantum_instance = None if quantum_instance is not None: - self.quantum_instance = quantum_instance + warnings.warn( + "The quantum_instance argument has been superseded by the sampler argument. " + "This argument will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + stacklevel=2, + ) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=PendingDeprecationWarning) + self.quantum_instance = quantum_instance + + self._sampler = sampler self._sample_from_iterations = sample_from_iterations self._iterations_arg = iterations @property + @deprecate_function( + "The Grover.quantum_instance getter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def quantum_instance(self) -> Optional[QuantumInstance]: - """Get the quantum instance. + r"""Pending deprecation\; Get the quantum instance. + Returns: The quantum instance used to run this algorithm. """ return self._quantum_instance @quantum_instance.setter + @deprecate_function( + "The Grover.quantum_instance setter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None: - """Set quantum instance. + r"""Pending deprecation\; Set quantum instance. + Args: quantum_instance: The quantum instance used to run this algorithm. """ @@ -181,6 +221,24 @@ def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> quantum_instance = QuantumInstance(quantum_instance) self._quantum_instance = quantum_instance + @property + def sampler(self) -> Optional[BaseSampler]: + """Get the sampler. + + Returns: + The sampler used to run this algorithm. + """ + return self._sampler + + @sampler.setter + def sampler(self, sampler: BaseSampler) -> None: + """Set the sampler. + + Args: + sampler: The sampler used to run this algorithm. + """ + self._sampler = sampler + def amplify(self, amplification_problem: AmplificationProblem) -> "GroverResult": """Run the Grover algorithm. @@ -192,9 +250,17 @@ def amplify(self, amplification_problem: AmplificationProblem) -> "GroverResult" as ``result.top_measurement``. Raises: + ValueError: If a quantum instance or sampler is not set. + AlgorithmError: If a sampler job fails. TypeError: If ``is_good_state`` is not provided and is required (i.e. when iterations is ``None`` or a ``list``) """ + if self._sampler is None and self._quantum_instance is None: + raise ValueError("A quantum instance or sampler must be provided.") + + if self._quantum_instance is not None and self._sampler is not None: + raise ValueError("Only one of quantum_instance or sampler can be passed, not both!") + if isinstance(self._iterations, list): max_iterations = len(self._iterations) max_power = np.inf # no cap on the power @@ -228,34 +294,50 @@ def amplify(self, amplification_problem: AmplificationProblem) -> "GroverResult" if self._sample_from_iterations: power = np.random.randint(power) # Run a grover experiment for a given power of the Grover operator. - if self._quantum_instance.is_statevector: - qc = self.construct_circuit(amplification_problem, power, measurement=False) - circuit_results = self._quantum_instance.execute(qc).get_statevector() + if self._sampler is not None: + qc = self.construct_circuit(amplification_problem, power, measurement=True) + job = self._sampler.run([qc]) + + try: + results = job.result() + except Exception as exc: + raise AlgorithmError("Sampler job failed.") from exc + num_bits = len(amplification_problem.objective_qubits) + circuit_results = { + np.binary_repr(k, num_bits): v for k, v in results.quasi_dists[0].items() + } + top_measurement, max_probability = max(circuit_results.items(), key=lambda x: x[1]) - # trace out work qubits - if qc.width() != num_bits: - indices = [ - i - for i in range(qc.num_qubits) - if i not in amplification_problem.objective_qubits - ] - rho = partial_trace(circuit_results, indices) - circuit_results = np.diag(rho.data) - - max_amplitude = max(circuit_results.max(), circuit_results.min(), key=abs) - max_amplitude_idx = np.where(circuit_results == max_amplitude)[0][0] - top_measurement = np.binary_repr(max_amplitude_idx, num_bits) - max_probability = np.abs(max_amplitude) ** 2 - shots = 1 else: - qc = self.construct_circuit(amplification_problem, power, measurement=True) - circuit_results = self._quantum_instance.execute(qc).get_counts(qc) - top_measurement = max(circuit_results.items(), key=operator.itemgetter(1))[0] - shots = sum(circuit_results.values()) - max_probability = ( - max(circuit_results.items(), key=operator.itemgetter(1))[1] / shots - ) + if self._quantum_instance.is_statevector: + qc = self.construct_circuit(amplification_problem, power, measurement=False) + circuit_results = self._quantum_instance.execute(qc).get_statevector() + num_bits = len(amplification_problem.objective_qubits) + + # trace out work qubits + if qc.width() != num_bits: + indices = [ + i + for i in range(qc.num_qubits) + if i not in amplification_problem.objective_qubits + ] + rho = partial_trace(circuit_results, indices) + circuit_results = np.diag(rho.data) + + max_amplitude = max(circuit_results.max(), circuit_results.min(), key=abs) + max_amplitude_idx = np.where(circuit_results == max_amplitude)[0][0] + top_measurement = np.binary_repr(max_amplitude_idx, num_bits) + max_probability = np.abs(max_amplitude) ** 2 + shots = 1 + else: + qc = self.construct_circuit(amplification_problem, power, measurement=True) + circuit_results = self._quantum_instance.execute(qc).get_counts(qc) + top_measurement = max(circuit_results.items(), key=operator.itemgetter(1))[0] + shots = sum(circuit_results.values()) + max_probability = ( + max(circuit_results.items(), key=operator.itemgetter(1))[1] / shots + ) all_circuit_results.append(circuit_results) @@ -341,8 +423,6 @@ class GroverResult(AmplitudeAmplifierResult): def __init__(self) -> None: super().__init__() self._iterations = None - self._circuit_results = None - self._shots = None @property def iterations(self) -> List[int]: diff --git a/releasenotes/notes/0.17/bool_expression_phaseoracle-1802be3016c83fa8.yaml b/releasenotes/notes/0.17/bool_expression_phaseoracle-1802be3016c83fa8.yaml index 135444615a3a..abd484e2465f 100644 --- a/releasenotes/notes/0.17/bool_expression_phaseoracle-1802be3016c83fa8.yaml +++ b/releasenotes/notes/0.17/bool_expression_phaseoracle-1802be3016c83fa8.yaml @@ -10,7 +10,7 @@ features: from qiskit.circuit import QuantumCircuit from qiskit.circuit.classicalfunction import BooleanExpression - + expression = BooleanExpression('~x & (y | z)') circuit = QuantumCircuit(4) circuit.append(expression, [0, 1, 2, 3]) @@ -56,9 +56,9 @@ features: .. parsed-literal:: q_0: ──o────o──────────── - │ │ + │ │ q_1: ──■────o────■─────── - │ │ │ + │ │ │ q_2: ──■────┼────o────■── ┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐ q_3: ┤ X ├┤ X ├┤ X ├┤ X ├ @@ -75,7 +75,7 @@ features: oracle = PhaseOracle('x1 & x2 & (not x3)') oracle.draw('mpl') - + These phase oracles can be used as part of a larger algorithm, for example with :class:`qiskit.algorithms.AmplificationProblem`: @@ -83,14 +83,16 @@ features: from qiskit.algorithms import AmplificationProblem, Grover from qiskit import BasicAer - + backend = BasicAer.get_backend('qasm_simulator') - + problem = AmplificationProblem(oracle, is_good_state=oracle.evaluate_bitstring) grover = Grover(quantum_instance=backend) result = grover.amplify(problem) result.top_measurement + would generate '011'. + The :class:`~qiskit.circuit.library.PhaseOracle` class also includes a :meth:`~qiskit.circuit.library.PhaseOracle.from_dimacs_file` method which enables constructing a phase oracle from a file describing a formula in the @@ -105,9 +107,9 @@ features: oracle.draw('text') .. parsed-literal:: - + state_0: ─o───────o────────────── - │ ┌───┐ │ ┌───┐ + │ ┌───┐ │ ┌───┐ state_1: ─■─┤ X ├─■─┤ X ├─■────── │ └───┘ └───┘ │ ┌───┐ state_2: ─■───────────────o─┤ Z ├ diff --git a/releasenotes/notes/add-grover-primitives-10f81efdba93703d.yaml b/releasenotes/notes/add-grover-primitives-10f81efdba93703d.yaml new file mode 100644 index 000000000000..63ac8886ea96 --- /dev/null +++ b/releasenotes/notes/add-grover-primitives-10f81efdba93703d.yaml @@ -0,0 +1,27 @@ +--- +features: + - | + :class:`~.Grover` supports the primitives and can use :class:`~.BaseSampler` to + calculate the results. Accordingly, ``quantum instance`` in :class:`~.Grover` + is pending deprecation and will be deprecated in a future release. + + Example: + + .. code-block:: python + + from qiskit import QuantumCircuit + from qiskit.primitives import Sampler + from qiskit.algorithms import Grover, AmplificationProblem + + sampler = Sampler() + oracle = QuantumCircuit(2) + oracle.cz(0, 1) + problem = AmplificationProblem(oracle, is_good_state=["11"]) + grover = Grover(sampler=sampler) + result = grover.amplify(problem) + +deprecations: + - | + Using a :class:`~.QuantumInstance` in :class:`~.Grover` is + pending deprecation and will be deprecated in a future release. Instead, use + a :class:`.BaseSampler` to calculate the results, see also the features of this release. diff --git a/test/python/algorithms/test_backendv1.py b/test/python/algorithms/test_backendv1.py index 21674d1c953e..7d725fd26294 100644 --- a/test/python/algorithms/test_backendv1.py +++ b/test/python/algorithms/test_backendv1.py @@ -85,7 +85,8 @@ def test_run_circuit_oracle(self): qi = QuantumInstance( self._provider.get_backend("fake_vigo"), seed_simulator=12, seed_transpiler=32 ) - grover = Grover(quantum_instance=qi) + with self.assertWarns(PendingDeprecationWarning): + grover = Grover(quantum_instance=qi) result = grover.amplify(problem) self.assertIn(result.top_measurement, ["11"]) @@ -97,7 +98,8 @@ def test_run_circuit_oracle_single_experiment_backend(self): backend = self._provider.get_backend("fake_vigo") backend._configuration.max_experiments = 1 qi = QuantumInstance(backend, seed_simulator=12, seed_transpiler=32) - grover = Grover(quantum_instance=qi) + with self.assertWarns(PendingDeprecationWarning): + grover = Grover(quantum_instance=qi) result = grover.amplify(problem) self.assertIn(result.top_measurement, ["11"]) diff --git a/test/python/algorithms/test_backendv2.py b/test/python/algorithms/test_backendv2.py index 4b86bfc35139..99edda452ac3 100644 --- a/test/python/algorithms/test_backendv2.py +++ b/test/python/algorithms/test_backendv2.py @@ -85,7 +85,8 @@ def test_run_circuit_oracle(self): qi = QuantumInstance( self._provider.get_backend("fake_yorktown"), seed_simulator=12, seed_transpiler=32 ) - grover = Grover(quantum_instance=qi) + with self.assertWarns(PendingDeprecationWarning): + grover = Grover(quantum_instance=qi) result = grover.amplify(problem) self.assertIn(result.top_measurement, ["11"]) @@ -99,7 +100,8 @@ def test_run_circuit_oracle_single_experiment_backend(self): qi = QuantumInstance( self._provider.get_backend("fake_yorktown"), seed_simulator=12, seed_transpiler=32 ) - grover = Grover(quantum_instance=qi) + with self.assertWarns(PendingDeprecationWarning): + grover = Grover(quantum_instance=qi) result = grover.amplify(problem) self.assertIn(result.top_measurement, ["11"]) diff --git a/test/python/algorithms/test_grover.py b/test/python/algorithms/test_grover.py index 625aaf1af9ca..ad38b59a507d 100644 --- a/test/python/algorithms/test_grover.py +++ b/test/python/algorithms/test_grover.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2018, 2020. +# (C) Copyright IBM 2018, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -16,12 +16,14 @@ from test.python.algorithms import QiskitAlgorithmsTestCase import itertools import numpy as np -from ddt import ddt, data +from ddt import ddt, data, idata, unpack + from qiskit import BasicAer, QuantumCircuit from qiskit.utils import QuantumInstance from qiskit.algorithms import Grover, AmplificationProblem from qiskit.circuit.library import GroverOperator, PhaseOracle +from qiskit.primitives import Sampler from qiskit.quantum_info import Operator, Statevector @@ -95,41 +97,48 @@ def setUp(self): self.qasm = QuantumInstance( BasicAer.get_backend("qasm_simulator"), seed_simulator=12, seed_transpiler=32 ) + self._sampler = Sampler() + self._sampler_with_shots = Sampler(options={"shots": 1024, "seed": 123}) - def test_implicit_phase_oracle_is_good_state(self): + @data("ideal", "shots", False) + def test_implicit_phase_oracle_is_good_state(self, use_sampler): """Test implicit default for is_good_state with PhaseOracle.""" - grover = Grover(iterations=2, quantum_instance=self.statevector) - oracle = PhaseOracle("x | x") + grover = self._prepare_grover(use_sampler) + oracle = PhaseOracle("x & y") problem = AmplificationProblem(oracle) result = grover.amplify(problem) - self.assertEqual(result.top_measurement, "0") + self.assertEqual(result.top_measurement, "11") - @data([1, 2, 3], None, 2) - def test_iterations_with_good_state(self, iterations): + @idata(itertools.product(["ideal", "shots", False], [[1, 2, 3], None, 2])) + @unpack + def test_iterations_with_good_state(self, use_sampler, iterations): """Test the algorithm with different iteration types and with good state""" - grover = Grover(iterations, quantum_instance=self.statevector) + grover = self._prepare_grover(use_sampler, iterations) problem = AmplificationProblem(Statevector.from_label("111"), is_good_state=["111"]) result = grover.amplify(problem) self.assertEqual(result.top_measurement, "111") - def test_fixed_iterations_without_good_state(self): + @data("ideal", "shots", False) + def test_fixed_iterations_without_good_state(self, use_sampler): """Test the algorithm with iterations as an int and without good state""" - grover = Grover(iterations=2, quantum_instance=self.statevector) + grover = self._prepare_grover(use_sampler, iterations=2) problem = AmplificationProblem(Statevector.from_label("111")) result = grover.amplify(problem) self.assertEqual(result.top_measurement, "111") - @data([1, 2, 3], None) - def test_iterations_without_good_state(self, iterations): + @idata(itertools.product(["ideal", "shots", False], [[1, 2, 3], None])) + @unpack + def test_iterations_without_good_state(self, use_sampler, iterations): """Test the correct error is thrown for none/list of iterations and without good state""" - grover = Grover(iterations, quantum_instance=self.statevector) + grover = self._prepare_grover(use_sampler, iterations=iterations) problem = AmplificationProblem(Statevector.from_label("111")) with self.assertRaisesRegex( TypeError, "An is_good_state function is required with the provided oracle" ): grover.amplify(problem) - def test_iterator(self): + @data("ideal", "shots", False) + def test_iterator(self, use_sampler): """Test running the algorithm on an iterator.""" # step-function iterator @@ -141,59 +150,63 @@ def iterator(): if count % wait == 0: value += 1 - grover = Grover(iterations=iterator(), quantum_instance=self.statevector) + grover = self._prepare_grover(use_sampler, iterations=iterator()) problem = AmplificationProblem(Statevector.from_label("111"), is_good_state=["111"]) result = grover.amplify(problem) self.assertEqual(result.top_measurement, "111") - def test_growth_rate(self): + @data("ideal", "shots", False) + def test_growth_rate(self, use_sampler): """Test running the algorithm on a growth rate""" - grover = Grover(growth_rate=8 / 7, quantum_instance=self.statevector) + grover = self._prepare_grover(use_sampler, growth_rate=8 / 7) problem = AmplificationProblem(Statevector.from_label("111"), is_good_state=["111"]) result = grover.amplify(problem) self.assertEqual(result.top_measurement, "111") - def test_max_num_iterations(self): + @data("ideal", "shots", False) + def test_max_num_iterations(self, use_sampler): """Test the iteration stops when the maximum number of iterations is reached.""" def zero(): while True: yield 0 - grover = Grover(iterations=zero(), quantum_instance=self.statevector) + grover = self._prepare_grover(use_sampler, iterations=zero()) n = 5 problem = AmplificationProblem(Statevector.from_label("1" * n), is_good_state=["1" * n]) result = grover.amplify(problem) self.assertEqual(len(result.iterations), 2**n) - def test_max_power(self): + @data("ideal", "shots", False) + def test_max_power(self, use_sampler): """Test the iteration stops when the maximum power is reached.""" lam = 10.0 - grover = Grover(growth_rate=lam, quantum_instance=self.statevector) + grover = self._prepare_grover(use_sampler, growth_rate=lam) problem = AmplificationProblem(Statevector.from_label("111"), is_good_state=["111"]) result = grover.amplify(problem) self.assertEqual(len(result.iterations), 0) - def test_run_circuit_oracle(self): + @data("ideal", "shots", False) + def test_run_circuit_oracle(self, use_sampler): """Test execution with a quantum circuit oracle""" oracle = QuantumCircuit(2) oracle.cz(0, 1) problem = AmplificationProblem(oracle, is_good_state=["11"]) - - grover = Grover(quantum_instance=self.qasm) + grover = self._prepare_grover(use_sampler) result = grover.amplify(problem) self.assertIn(result.top_measurement, ["11"]) - def test_run_state_vector_oracle(self): + @data("ideal", "shots", False) + def test_run_state_vector_oracle(self, use_sampler): """Test execution with a state vector oracle""" mark_state = Statevector.from_label("11") problem = AmplificationProblem(mark_state, is_good_state=["11"]) - - grover = Grover(quantum_instance=self.qasm) + grover = self._prepare_grover(use_sampler) result = grover.amplify(problem) self.assertIn(result.top_measurement, ["11"]) - def test_run_custom_grover_operator(self): + @data("ideal", "shots", False) + def test_run_custom_grover_operator(self, use_sampler): """Test execution with a grover operator oracle""" oracle = QuantumCircuit(2) oracle.cz(0, 1) @@ -201,8 +214,7 @@ def test_run_custom_grover_operator(self): problem = AmplificationProblem( oracle=oracle, grover_operator=grover_op, is_good_state=["11"] ) - - grover = Grover(quantum_instance=self.qasm) + grover = self._prepare_grover(use_sampler) ret = grover.amplify(problem) self.assertIn(ret.top_measurement, ["11"]) @@ -230,40 +242,73 @@ def test_construct_circuit(self): self.assertTrue(Operator(constructed).equiv(Operator(expected))) - def test_circuit_result(self): + @data("ideal", "shots", False) + def test_circuit_result(self, use_sampler): """Test circuit_result""" oracle = QuantumCircuit(2) oracle.cz(0, 1) # is_good_state=['00'] is intentionally selected to obtain a list of results problem = AmplificationProblem(oracle, is_good_state=["00"]) - grover = Grover(iterations=[1, 2, 3, 4], quantum_instance=self.qasm) + grover = self._prepare_grover(use_sampler, iterations=[1, 2, 3, 4]) result = grover.amplify(problem) - expected_results = [ - {"11": 1024}, - {"00": 238, "01": 253, "10": 263, "11": 270}, - {"00": 238, "01": 253, "10": 263, "11": 270}, - {"11": 1024}, - ] - self.assertEqual(result.circuit_results, expected_results) - - def test_max_probability(self): + if use_sampler: + for i, dist in enumerate(result.circuit_results): + keys, values = zip(*sorted(dist.items())) + self.assertTupleEqual(keys, ("00", "01", "10", "11")) + if i in (0, 3): + np.testing.assert_allclose(values, [0, 0, 0, 1], atol=0.2) + else: + np.testing.assert_allclose(values, [0.25, 0.25, 0.25, 0.25], atol=0.2) + else: + expected_results = [ + {"11": 1024}, + {"00": 238, "01": 253, "10": 263, "11": 270}, + {"00": 238, "01": 253, "10": 263, "11": 270}, + {"11": 1024}, + ] + self.assertEqual(result.circuit_results, expected_results) + + @data("ideal", "shots", False) + def test_max_probability(self, use_sampler): """Test max_probability""" oracle = QuantumCircuit(2) oracle.cz(0, 1) problem = AmplificationProblem(oracle, is_good_state=["11"]) - grover = Grover(quantum_instance=self.qasm) + grover = self._prepare_grover(use_sampler) result = grover.amplify(problem) - self.assertEqual(result.max_probability, 1.0) + self.assertAlmostEqual(result.max_probability, 1.0) - def test_oracle_evaluation(self): + @data("ideal", "shots", False) + def test_oracle_evaluation(self, use_sampler): """Test oracle_evaluation for PhaseOracle""" oracle = PhaseOracle("x1 & x2 & (not x3)") problem = AmplificationProblem(oracle, is_good_state=oracle.evaluate_bitstring) - grover = Grover(quantum_instance=self.qasm) + grover = self._prepare_grover(use_sampler) result = grover.amplify(problem) self.assertTrue(result.oracle_evaluation) self.assertEqual("011", result.top_measurement) + def test_sampler_setter(self): + """Test sampler setter""" + grover = Grover() + grover.sampler = self._sampler + self.assertEqual(grover.sampler, self._sampler) + + def _prepare_grover(self, use_sampler, iterations=None, growth_rate=None): + """Prepare Grover instance for test""" + if use_sampler == "ideal": + grover = Grover(sampler=self._sampler, iterations=iterations, growth_rate=growth_rate) + elif use_sampler == "shots": + grover = Grover( + sampler=self._sampler_with_shots, iterations=iterations, growth_rate=growth_rate + ) + else: + with self.assertWarns(PendingDeprecationWarning): + grover = Grover( + quantum_instance=self.qasm, iterations=iterations, growth_rate=growth_rate + ) + return grover + if __name__ == "__main__": unittest.main() From cb715a34d9114800a094b2671cdeea46d7dbf1c4 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Fri, 23 Sep 2022 18:48:12 +0200 Subject: [PATCH 38/56] Fix for `None` in `state_to_latex` latex output (#8273) * term might be None * Test Co-authored-by: Rishabh Chakrabarti * a better solution * simpler example * reno * rounding * remove _round_if_close * black * revert test * black * max_size * max_size -> decimals * max_siz=0 -> decimals=10 Co-authored-by: Rishabh Chakrabarti Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/visualization/state_visualization.py | 23 +++++++--------- ...te_to_latex_for_none-da834de3811640ce.yaml | 6 +++++ .../quantum_info/states/test_statevector.py | 26 ++++++++++++++++++- 3 files changed, 40 insertions(+), 15 deletions(-) create mode 100644 releasenotes/notes/state_to_latex_for_none-da834de3811640ce.yaml diff --git a/qiskit/visualization/state_visualization.py b/qiskit/visualization/state_visualization.py index 140e3729ac63..b847a7b0ec85 100644 --- a/qiskit/visualization/state_visualization.py +++ b/qiskit/visualization/state_visualization.py @@ -1223,19 +1223,13 @@ def state_to_latex( return prefix + latex_str + suffix -def _round_if_close(data): - """Round real and imaginary parts of complex number of close to zero""" - data = np.real_if_close(data) - data = -1j * np.real_if_close(data * 1j) - return data - - -def num_to_latex_ket(raw_value: complex, first_term: bool) -> Optional[str]: +def num_to_latex_ket(raw_value: complex, first_term: bool, decimals: int = 10) -> Optional[str]: """Convert a complex number to latex code suitable for a ket expression Args: raw_value: Value to convert first_term: If True then generate latex code for the first term in an expression + decimals: Number of decimal places to round to (default: 10). Returns: String with latex code or None if no term is required """ @@ -1246,7 +1240,7 @@ def num_to_latex_ket(raw_value: complex, first_term: bool) -> Optional[str]: real_value = 0 imag_value = 0 else: - raw_value = _round_if_close(raw_value) + raw_value = np.around(raw_value, decimals=decimals) value = sympy.nsimplify(raw_value, constants=(sympy.pi,), rational=False) real_value = float(sympy.re(value)) imag_value = float(sympy.im(value)) @@ -1291,20 +1285,21 @@ def num_to_latex_ket(raw_value: complex, first_term: bool) -> Optional[str]: return None -def numbers_to_latex_terms(numbers: List[complex]) -> List[str]: +def numbers_to_latex_terms(numbers: List[complex], decimals: int = 10) -> List[str]: """Convert a list of numbers to latex formatted terms The first non-zero term is treated differently. For this term a leading + is suppressed. Args: numbers: List of numbers to format + decimals: Number of decimal places to round to (default: 10). Returns: List of formatted terms """ first_term = True terms = [] for number in numbers: - term = num_to_latex_ket(number, first_term) + term = num_to_latex_ket(number, first_term, decimals) if term is not None: first_term = False terms.append(term) @@ -1328,16 +1323,16 @@ def _state_to_latex_ket(data: List[complex], max_size: int = 12, prefix: str = " def ket_name(i): return bin(i)[2:].zfill(num) - data = _round_if_close(data) + data = np.around(data, max_size) nonzero_indices = np.where(data != 0)[0].tolist() if len(nonzero_indices) > max_size: nonzero_indices = ( nonzero_indices[: max_size // 2] + [0] + nonzero_indices[-max_size // 2 + 1 :] ) - latex_terms = numbers_to_latex_terms(data[nonzero_indices]) + latex_terms = numbers_to_latex_terms(data[nonzero_indices], max_size) nonzero_indices[max_size // 2] = None else: - latex_terms = numbers_to_latex_terms(data[nonzero_indices]) + latex_terms = numbers_to_latex_terms(data[nonzero_indices], max_size) latex_str = "" for idx, ket_idx in enumerate(nonzero_indices): diff --git a/releasenotes/notes/state_to_latex_for_none-da834de3811640ce.yaml b/releasenotes/notes/state_to_latex_for_none-da834de3811640ce.yaml new file mode 100644 index 000000000000..d339fa601cd0 --- /dev/null +++ b/releasenotes/notes/state_to_latex_for_none-da834de3811640ce.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + The function :func:`~qiskit.visualization.state_visualization.state_to_latex` produced not valid LaTeX in + presence of close-to-zero values, resulting in errors when :func:`~qiskit.visualization.state_visualization.state_drawer` is called. + Fixed `#8169 `__. diff --git a/test/python/quantum_info/states/test_statevector.py b/test/python/quantum_info/states/test_statevector.py index bcb948387045..c7eec1faa38a 100644 --- a/test/python/quantum_info/states/test_statevector.py +++ b/test/python/quantum_info/states/test_statevector.py @@ -1118,6 +1118,30 @@ def test_drawings(self): with self.subTest(msg=" draw('latex', convention='vector')"): sv.draw("latex", convention="vector") + def test_state_to_latex_for_none(self): + """ + Test for `\rangleNone` output in latex representation + See https://github.com/Qiskit/qiskit-terra/issues/8169 + """ + sv = Statevector( + [ + 7.07106781e-01 - 8.65956056e-17j, + -5.55111512e-17 - 8.65956056e-17j, + 7.85046229e-17 + 8.65956056e-17j, + -7.07106781e-01 + 8.65956056e-17j, + 0.00000000e00 + 0.00000000e00j, + -0.00000000e00 + 0.00000000e00j, + -0.00000000e00 + 0.00000000e00j, + 0.00000000e00 - 0.00000000e00j, + ], + dims=(2, 2, 2), + ) + latex_representation = state_to_latex(sv) + self.assertEqual( + latex_representation, + "\\frac{\\sqrt{2}}{2} |000\\rangle- \\frac{\\sqrt{2}}{2} |011\\rangle", + ) + def test_state_to_latex_for_large_statevector(self): """Test conversion of large dense state vector""" sv = Statevector(np.ones((2**15, 1))) @@ -1163,7 +1187,7 @@ def test_number_to_latex_terms(self): ([1 + np.sqrt(2)], ["(1 + \\sqrt{2})"]), ] for numbers, latex_terms in cases: - terms = numbers_to_latex_terms(numbers) + terms = numbers_to_latex_terms(numbers, 15) self.assertListEqual(terms, latex_terms) def test_statevector_draw_latex_regression(self): From e721d13603edec6115ea414fc960ec36f702b154 Mon Sep 17 00:00:00 2001 From: ewinston Date: Fri, 23 Sep 2022 15:30:27 -0400 Subject: [PATCH 39/56] add control flow support to Optimize1qDecomposition pass (#8766) * add tests * fix if_else test Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../optimization/optimize_1q_decomposition.py | 2 + .../test_optimize_1q_decomposition.py | 65 +++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py b/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py index 04295fa498fb..7b8fbf9a60ef 100644 --- a/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +++ b/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py @@ -19,6 +19,7 @@ from qiskit.circuit.library.standard_gates import U3Gate from qiskit.transpiler.basepasses import TransformationPass +from qiskit.transpiler.passes.utils import control_flow from qiskit.quantum_info.synthesis import one_qubit_decompose from qiskit.converters import circuit_to_dag @@ -139,6 +140,7 @@ def _substitution_checks(self, dag, old_run, new_circ, new_basis): or isinstance(old_run[0].op, U3Gate) ) + @control_flow.trivial_recurse def run(self, dag): """Run the Optimize1qGatesDecomposition pass on `dag`. diff --git a/test/python/transpiler/test_optimize_1q_decomposition.py b/test/python/transpiler/test_optimize_1q_decomposition.py index 84161dac6956..51740a2cb605 100644 --- a/test/python/transpiler/test_optimize_1q_decomposition.py +++ b/test/python/transpiler/test_optimize_1q_decomposition.py @@ -542,6 +542,71 @@ def test_no_warning_on_hadamard(self): msg = f"expected:\n{expected}\nresult:\n{result}" self.assertEqual(expected, result, msg=msg) + def test_if_else(self): + """Test that the pass recurses in a simple if-else.""" + basis = ["cx", "sx", "u", "rz", "if_else"] + num_qubits = 4 + + qr = QuantumRegister(num_qubits) + cr = ClassicalRegister(1) + + test = QuantumCircuit(qr, cr) + test.h(0) + test.measure(0, 0) + test_true = QuantumCircuit(qr) + test_true.h(qr[0]) + test_true.h(qr[0]) + test_true.h(qr[0]) + test.if_else((0, True), test_true.copy(), None, range(num_qubits), [0]) + + expected = QuantumCircuit(qr, cr) + expected.u(np.pi / 2, 0, np.pi, 0) + expected.measure(0, 0) + expected_true = QuantumCircuit(qr) + expected_true.u(np.pi / 2, 0, -np.pi, qr[0]) + expected.if_else((0, True), expected_true, None, range(num_qubits), [0]) + + passmanager = PassManager() + passmanager.append(BasisTranslator(sel, basis)) + passmanager.append(Optimize1qGatesDecomposition(basis)) + result = passmanager.run(test) + self.assertEqual(result, expected) + + def test_nested_control_flow(self): + """Test that collection recurses into nested control flow.""" + + basis = ["cx", "u", "if_else", "for_loop"] + num_qubits = 4 + + qr = QuantumRegister(num_qubits) + cr = ClassicalRegister(1) + + test = QuantumCircuit(qr, cr) + test.h(0) + test.measure(0, 0) + test_true = QuantumCircuit(qr, cr) + test_for = QuantumCircuit(qr, cr) + test_for.h(qr[0]) + test_for.h(qr[0]) + test_for.h(qr[0]) + test_true.for_loop(range(4), body=test_for, qubits=qr, clbits=cr) + test.if_else((0, True), test_true.copy(), None, range(num_qubits), [0]) + + expected = QuantumCircuit(qr, cr) + expected.u(np.pi / 2, 0, np.pi, 0) + expected.measure(0, 0) + expected_true = QuantumCircuit(qr, cr) + expected_for = QuantumCircuit(qr, cr) + expected_for.u(np.pi / 2, 0, -np.pi, qr[0]) + expected_true.for_loop(range(4), body=expected_for, qubits=qr, clbits=cr) + expected.if_else((0, True), expected_true, None, range(num_qubits), [0]) + + passmanager = PassManager() + passmanager.append(BasisTranslator(sel, basis)) + passmanager.append(Optimize1qGatesDecomposition(basis)) + result = passmanager.run(test) + self.assertEqual(result, expected) + if __name__ == "__main__": unittest.main() From 13d93119ff958824196d4d63dc7c01736e011588 Mon Sep 17 00:00:00 2001 From: dlasecki Date: Fri, 23 Sep 2022 22:46:47 +0200 Subject: [PATCH 40/56] Implemented TrotterQRTE algorithm with primitives. (#8706) * Implemented observables_evaluator.py with primitives. * Added evolvers problems and interfaces to time_evolvers package. * Mostly updated trotter_qrte.py to use primitives. * Added observables_evaluator.py that uses primitives. * Added observables_evaluator.py that uses primitives. * Updated trotter_qrte.py to use primitives. * Updated imports * Updated typehints and limited use of opflow. * Updated typehints and limited use of opflow. * Removed files out of scope for this PR. * Added annotations import. * Added trotter_qrte.py with unit tests. * Refactored trotter_qrte.py. * Added observables_evaluator.py with primitives. * Added ListOrDict support to observables_evaluator.py. * Updated trotter_qrte.py unit tests; code refactoring. * Included CR suggestions. * Applied some CR comments. * Applied some CR comments. * Added reno. * Added reno. * Accepting Statevector. * Added attributes docs. * Support for 0 operator. * Code refactoring. * Updated init. * Add pending deprecation * Add pending deprecation for evolvers * Code refactoring. * Code refactoring. * Renamed classes and linked to algorithms init. * fix docstring * Improved reno. * Improved reno. * Returning variances and shots. * Code refactoring. * Updated classes and applied CR suggestions. * Added reno. * Reduced use of opflow in tests. * Black fix. * Unit test fix. * Reduced use of opflow. * Handle empty inputs gracefully. * Applied CR comments. * Applied CR comments. * Updated method names. * Applied CR comments. * Eliminated cyclic import. * Drafted reduced use of opflow. * Drafted reduced use of opflow. * Removed use of opflow. * Code refactoring. * Addressed CR comments. * Added more tests for error paths. * Added Trotter section in algorithms init. * Changed init. * Apply suggestions from code review Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> * Co-located TrotterQRTE with time evolvers in docs. Co-authored-by: Manoel Marques Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/algorithms/__init__.py | 13 ++ .../time_evolvers/trotterization/__init__.py | 29 +++ .../trotterization/trotter_qrte.py | 174 +++++++++++++++ ...tter-qrte-primitives-8b3e495738b57fc3.yaml | 12 ++ .../time_evolvers/test_trotter_qrte.py | 198 ++++++++++++++++++ 5 files changed, 426 insertions(+) create mode 100644 qiskit/algorithms/time_evolvers/trotterization/__init__.py create mode 100644 qiskit/algorithms/time_evolvers/trotterization/trotter_qrte.py create mode 100644 releasenotes/notes/trotter-qrte-primitives-8b3e495738b57fc3.yaml create mode 100644 test/python/algorithms/time_evolvers/test_trotter_qrte.py diff --git a/qiskit/algorithms/__init__.py b/qiskit/algorithms/__init__.py index d70f1cde60b3..322acba21dac 100644 --- a/qiskit/algorithms/__init__.py +++ b/qiskit/algorithms/__init__.py @@ -136,6 +136,17 @@ TimeEvolutionProblem +Trotterization-based Quantum Real Time Evolution +------------------------------------------------ + +Package for primitives-enabled Trotterization-based quantum time evolution algorithm - TrotterQRTE. + +.. autosummary:: + :toctree: ../stubs/ + + time_evolvers.trotterization + + Factorizers ----------- @@ -231,6 +242,7 @@ state_fidelities + Exceptions ---------- @@ -251,6 +263,7 @@ eval_observables estimate_observables + Utility classes --------------- diff --git a/qiskit/algorithms/time_evolvers/trotterization/__init__.py b/qiskit/algorithms/time_evolvers/trotterization/__init__.py new file mode 100644 index 000000000000..c5e7e128728d --- /dev/null +++ b/qiskit/algorithms/time_evolvers/trotterization/__init__.py @@ -0,0 +1,29 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. +"""This package contains Trotterization-based Quantum Real Time Evolution algorithm. +It is compliant with the new Quantum Time Evolution Framework and makes use of +:class:`qiskit.synthesis.evolution.ProductFormula` and +:class:`~qiskit.circuit.library.PauliEvolutionGate` implementations. + +Trotterization-based Quantum Real Time Evolution +------------------------------------------------ + +.. autosummary:: + :toctree: ../stubs/ + :nosignatures: + + TrotterQRTE +""" + +from qiskit.algorithms.time_evolvers.trotterization.trotter_qrte import TrotterQRTE + +__all__ = ["TrotterQRTE"] diff --git a/qiskit/algorithms/time_evolvers/trotterization/trotter_qrte.py b/qiskit/algorithms/time_evolvers/trotterization/trotter_qrte.py new file mode 100644 index 000000000000..d244f718cef4 --- /dev/null +++ b/qiskit/algorithms/time_evolvers/trotterization/trotter_qrte.py @@ -0,0 +1,174 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2021, 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""An algorithm to implement a Trotterization real time-evolution.""" + +from __future__ import annotations + +from qiskit import QuantumCircuit +from qiskit.algorithms.time_evolvers.time_evolution_problem import TimeEvolutionProblem +from qiskit.algorithms.time_evolvers.time_evolution_result import TimeEvolutionResult +from qiskit.algorithms.time_evolvers.real_time_evolver import RealTimeEvolver +from qiskit.algorithms.observables_evaluator import estimate_observables +from qiskit.opflow import PauliSumOp +from qiskit.circuit.library import PauliEvolutionGate +from qiskit.primitives import BaseEstimator +from qiskit.quantum_info import Pauli +from qiskit.synthesis import ProductFormula, LieTrotter + + +class TrotterQRTE(RealTimeEvolver): + """Quantum Real Time Evolution using Trotterization. + Type of Trotterization is defined by a ``ProductFormula`` provided. + + Examples: + + .. code-block:: python + + from qiskit.opflow import PauliSumOp + from qiskit.quantum_info import Pauli, SparsePauliOp + from qiskit import QuantumCircuit + from qiskit.algorithms import TimeEvolutionProblem + from qiskit.algorithms.time_evolvers import TrotterQRTE + from qiskit.primitives import Estimator + + operator = PauliSumOp(SparsePauliOp([Pauli("X"), Pauli("Z")])) + initial_state = QuantumCircuit(1) + time = 1 + evolution_problem = TimeEvolutionProblem(operator, time, initial_state) + # LieTrotter with 1 rep + estimator = Estimator() + trotter_qrte = TrotterQRTE(estimator=estimator) + evolved_state = trotter_qrte.evolve(evolution_problem).evolved_state + """ + + def __init__( + self, + product_formula: ProductFormula | None = None, + estimator: BaseEstimator | None = None, + ) -> None: + """ + Args: + product_formula: A Lie-Trotter-Suzuki product formula. If ``None`` provided, the + Lie-Trotter first order product formula with a single repetition is used. + estimator: An estimator primitive used for calculating expectation values of + ``TimeEvolutionProblem.aux_operators``. + """ + + self.product_formula = product_formula + self.estimator = estimator + + @property + def product_formula(self) -> ProductFormula: + """Returns a product formula.""" + return self._product_formula + + @product_formula.setter + def product_formula(self, product_formula: ProductFormula | None): + """Sets a product formula. If ``None`` provided, sets the Lie-Trotter first order product + formula with a single repetition.""" + if product_formula is None: + product_formula = LieTrotter() + self._product_formula = product_formula + + @property + def estimator(self) -> BaseEstimator | None: + """ + Returns an estimator. + """ + return self._estimator + + @estimator.setter + def estimator(self, estimator: BaseEstimator) -> None: + """ + Sets an estimator. + """ + self._estimator = estimator + + @classmethod + def supports_aux_operators(cls) -> bool: + """ + Whether computing the expectation value of auxiliary operators is supported. + + Returns: + ``True`` if ``aux_operators`` expectations in the ``TimeEvolutionProblem`` can be + evaluated, ``False`` otherwise. + """ + return True + + def evolve(self, evolution_problem: TimeEvolutionProblem) -> TimeEvolutionResult: + """ + Evolves a quantum state for a given time using the Trotterization method + based on a product formula provided. The result is provided in the form of a quantum + circuit. If auxiliary operators are included in the ``evolution_problem``, they are + evaluated on an evolved state using an estimator primitive provided. + + .. note:: + Time-dependent Hamiltonians are not supported. + + Args: + evolution_problem: Instance defining evolution problem. For the included Hamiltonian, + ``Pauli`` or ``PauliSumOp`` are supported by TrotterQRTE. + + Returns: + Evolution result that includes an evolved state as a quantum circuit and, optionally, + auxiliary operators evaluated for a resulting state on an estimator primitive. + + Raises: + ValueError: If ``t_param`` is not set to ``None`` in the ``TimeEvolutionProblem`` + (feature not currently supported). + ValueError: If ``aux_operators`` provided in the time evolution problem but no estimator + provided to the algorithm. + ValueError: If the ``initial_state`` is not provided in the ``TimeEvolutionProblem``. + ValueError: If an unsupported Hamiltonian type is provided. + """ + evolution_problem.validate_params() + if evolution_problem.t_param is not None: + raise ValueError( + "TrotterQRTE does not accept a time dependent Hamiltonian," + "``t_param`` from the ``TimeEvolutionProblem`` should be set to ``None``." + ) + + if evolution_problem.aux_operators is not None and self.estimator is None: + raise ValueError( + "The time evolution problem contained ``aux_operators`` but no estimator was " + "provided. The algorithm continues without calculating these quantities. " + ) + hamiltonian = evolution_problem.hamiltonian + if not isinstance(hamiltonian, (Pauli, PauliSumOp)): + raise ValueError( + f"TrotterQRTE only accepts Pauli | PauliSumOp, {type(hamiltonian)} provided." + ) + # the evolution gate + evolution_gate = PauliEvolutionGate( + hamiltonian, evolution_problem.time, synthesis=self.product_formula + ) + + if evolution_problem.initial_state is not None: + initial_state = evolution_problem.initial_state + evolved_state = QuantumCircuit(initial_state.num_qubits) + evolved_state.append(initial_state, evolved_state.qubits) + evolved_state.append(evolution_gate, evolved_state.qubits) + + else: + raise ValueError("``initial_state`` must be provided in the ``TimeEvolutionProblem``.") + + evaluated_aux_ops = None + if evolution_problem.aux_operators is not None: + evaluated_aux_ops = estimate_observables( + self.estimator, + evolved_state, + evolution_problem.aux_operators, + evolution_problem.truncation_threshold, + ) + + return TimeEvolutionResult(evolved_state, evaluated_aux_ops) diff --git a/releasenotes/notes/trotter-qrte-primitives-8b3e495738b57fc3.yaml b/releasenotes/notes/trotter-qrte-primitives-8b3e495738b57fc3.yaml new file mode 100644 index 000000000000..1f8b3e25e928 --- /dev/null +++ b/releasenotes/notes/trotter-qrte-primitives-8b3e495738b57fc3.yaml @@ -0,0 +1,12 @@ +--- +features: + - | + Added :class:`qiskit.algorithms.time_evolvers.trotterization.TrotterQRTE` with + :class:`qiskit.primitives.BaseEstimator` as ``init`` parameter. It replaces + :class:`qiskit.algorithms.TrotterQRTE`. +deprecations: + - | + Using :class:`qiskit.algorithms.TrotterQRTE` will now issue a + ``PendingDeprecationWarning``. This algorithm will be deprecated in a future release and + subsequently removed after that. This is being replaced by the new + :class:`qiskit.algorithms.time_evolvers.trotterization.TrotterQRTE` primitive-enabled class. diff --git a/test/python/algorithms/time_evolvers/test_trotter_qrte.py b/test/python/algorithms/time_evolvers/test_trotter_qrte.py new file mode 100644 index 000000000000..fbdbb0161590 --- /dev/null +++ b/test/python/algorithms/time_evolvers/test_trotter_qrte.py @@ -0,0 +1,198 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2021, 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +""" Test TrotterQRTE. """ + +import unittest + +from test.python.algorithms import QiskitAlgorithmsTestCase +from ddt import ddt, data, unpack +import numpy as np +from numpy.testing import assert_raises + +from qiskit.algorithms.time_evolvers.time_evolution_problem import TimeEvolutionProblem +from qiskit.algorithms.time_evolvers.trotterization.trotter_qrte import TrotterQRTE +from qiskit.primitives import Estimator +from qiskit import QuantumCircuit +from qiskit.circuit.library import ZGate +from qiskit.quantum_info import Statevector, Pauli, SparsePauliOp +from qiskit.utils import algorithm_globals +from qiskit.circuit import Parameter +from qiskit.opflow import PauliSumOp, X, MatrixOp +from qiskit.synthesis import SuzukiTrotter, QDrift + + +@ddt +class TestTrotterQRTE(QiskitAlgorithmsTestCase): + """TrotterQRTE tests.""" + + def setUp(self): + super().setUp() + self.seed = 50 + algorithm_globals.random_seed = self.seed + + @data( + ( + None, + Statevector([0.29192658 - 0.45464871j, 0.70807342 - 0.45464871j]), + ), + ( + SuzukiTrotter(), + Statevector([0.29192658 - 0.84147098j, 0.0 - 0.45464871j]), + ), + ) + @unpack + def test_trotter_qrte_trotter_single_qubit(self, product_formula, expected_state): + """Test for default TrotterQRTE on a single qubit.""" + operator = PauliSumOp(SparsePauliOp([Pauli("X"), Pauli("Z")])) + initial_state = QuantumCircuit(1) + time = 1 + evolution_problem = TimeEvolutionProblem(operator, time, initial_state) + + trotter_qrte = TrotterQRTE(product_formula=product_formula) + evolution_result_state_circuit = trotter_qrte.evolve(evolution_problem).evolved_state + + np.testing.assert_array_almost_equal( + Statevector.from_instruction(evolution_result_state_circuit).data, expected_state.data + ) + + def test_trotter_qrte_trotter_single_qubit_aux_ops(self): + """Test for default TrotterQRTE on a single qubit with auxiliary operators.""" + operator = PauliSumOp(SparsePauliOp([Pauli("X"), Pauli("Z")])) + # LieTrotter with 1 rep + aux_ops = [Pauli("X"), Pauli("Y")] + + initial_state = QuantumCircuit(1) + time = 3 + evolution_problem = TimeEvolutionProblem(operator, time, initial_state, aux_ops) + estimator = Estimator() + + expected_evolved_state = Statevector([0.98008514 + 0.13970775j, 0.01991486 + 0.13970775j]) + + algorithm_globals.random_seed = 0 + trotter_qrte = TrotterQRTE(estimator=estimator) + evolution_result = trotter_qrte.evolve(evolution_problem) + + np.testing.assert_array_almost_equal( + Statevector.from_instruction(evolution_result.evolved_state).data, + expected_evolved_state.data, + ) + + aux_ops_result = evolution_result.aux_ops_evaluated + expected_aux_ops_result = [(0.078073, (0.0, 0.0)), (0.268286, (0.0, 0.0))] + + means = [element[0] for element in aux_ops_result] + expected_means = [element[0] for element in expected_aux_ops_result] + np.testing.assert_array_almost_equal(means, expected_means) + + vars_and_shots = [element[1] for element in aux_ops_result] + expected_vars_and_shots = [element[1] for element in expected_aux_ops_result] + np.testing.assert_array_equal(vars_and_shots, expected_vars_and_shots) + + @data( + ( + PauliSumOp(SparsePauliOp([Pauli("XY"), Pauli("YX")])), + Statevector([-0.41614684 + 0.0j, 0.0 + 0.0j, 0.0 + 0.0j, 0.90929743 + 0.0j]), + ), + ( + PauliSumOp(SparsePauliOp([Pauli("ZZ"), Pauli("ZI"), Pauli("IZ")])), + Statevector([-0.9899925 - 0.14112001j, 0.0 + 0.0j, 0.0 + 0.0j, 0.0 + 0.0j]), + ), + ( + Pauli("YY"), + Statevector([0.54030231 + 0.0j, 0.0 + 0.0j, 0.0 + 0.0j, 0.0 + 0.84147098j]), + ), + ) + @unpack + def test_trotter_qrte_trotter_two_qubits(self, operator, expected_state): + """Test for TrotterQRTE on two qubits with various types of a Hamiltonian.""" + # LieTrotter with 1 rep + initial_state = QuantumCircuit(2) + evolution_problem = TimeEvolutionProblem(operator, 1, initial_state) + + trotter_qrte = TrotterQRTE() + evolution_result = trotter_qrte.evolve(evolution_problem) + + np.testing.assert_array_almost_equal( + Statevector.from_instruction(evolution_result.evolved_state).data, expected_state.data + ) + + @data( + (QuantumCircuit(1), Statevector([0.23071786 - 0.69436148j, 0.4646314 - 0.49874749j])), + ( + QuantumCircuit(1).compose(ZGate(), [0]), + Statevector([0.23071786 - 0.69436148j, 0.4646314 - 0.49874749j]), + ), + ) + @unpack + def test_trotter_qrte_qdrift(self, initial_state, expected_state): + """Test for TrotterQRTE with QDrift.""" + operator = PauliSumOp(SparsePauliOp([Pauli("X"), Pauli("Z")])) + time = 1 + evolution_problem = TimeEvolutionProblem(operator, time, initial_state) + + algorithm_globals.random_seed = 0 + trotter_qrte = TrotterQRTE(product_formula=QDrift()) + evolution_result = trotter_qrte.evolve(evolution_problem) + + np.testing.assert_array_almost_equal( + Statevector.from_instruction(evolution_result.evolved_state).data, expected_state.data + ) + + @data((Parameter("t"), {}), (None, {Parameter("x"): 2}), (None, None)) + @unpack + def test_trotter_qrte_trotter_param_errors(self, t_param, param_value_dict): + """Test TrotterQRTE with raising errors for parameters.""" + operator = Parameter("t") * PauliSumOp(SparsePauliOp([Pauli("X")])) + PauliSumOp( + SparsePauliOp([Pauli("Z")]) + ) + initial_state = QuantumCircuit(1) + self._run_error_test(initial_state, operator, None, None, t_param, param_value_dict) + + @data(([Pauli("X"), Pauli("Y")], None)) + @unpack + def test_trotter_qrte_trotter_aux_ops_errors(self, aux_ops, estimator): + """Test TrotterQRTE with raising errors.""" + operator = PauliSumOp(SparsePauliOp([Pauli("X")])) + PauliSumOp(SparsePauliOp([Pauli("Z")])) + initial_state = QuantumCircuit(1) + self._run_error_test(initial_state, operator, aux_ops, estimator, None, None) + + @data( + (SparsePauliOp([Pauli("X"), Pauli("Z")]), QuantumCircuit(1)), + (X, QuantumCircuit(1)), + (MatrixOp([[1, 1], [0, 1]]), QuantumCircuit(1)), + (PauliSumOp(SparsePauliOp([Pauli("X")])) + PauliSumOp(SparsePauliOp([Pauli("Z")])), None), + ) + @unpack + def test_trotter_qrte_trotter_hamiltonian_errors(self, operator, initial_state): + """Test TrotterQRTE with raising errors for evolution problem content.""" + self._run_error_test(initial_state, operator, None, None, None, None) + + @staticmethod + def _run_error_test(initial_state, operator, aux_ops, estimator, t_param, param_value_dict): + time = 1 + algorithm_globals.random_seed = 0 + trotter_qrte = TrotterQRTE(estimator=estimator) + with assert_raises(ValueError): + evolution_problem = TimeEvolutionProblem( + operator, + time, + initial_state, + aux_ops, + t_param=t_param, + param_value_map=param_value_dict, + ) + _ = trotter_qrte.evolve(evolution_problem) + + +if __name__ == "__main__": + unittest.main() From 4c1042e4cc4cfcee695076c33131640a826a14b2 Mon Sep 17 00:00:00 2001 From: dlasecki Date: Sat, 24 Sep 2022 00:07:06 +0200 Subject: [PATCH 41/56] Quantum Phase Estimation algorithms with primitives. (#8666) * Added samplers in place (draft) * Implemented unit tests with primitives. * Implemented unit tests with primitives. Updated typhints. * Added exception handling for sampler. * add pending deprecation msgs * Added code review suggestions. * Added release notes. * Added release notes. * Removed shots argument. * Implemented CR suggestions. * Removed shots. * Drafted the usage of EvolutionSynthesis. * Applied some CR comments. * Updated reno. * Extended bound calculation to other types. * Fixed bound calculation. * Fixed unitary calculation. * Made unit tests work. * Code refactoring. * Added Mapping; code refactoring. * Fixed SparsePauliOp handling, reduced use of opflow in new tests. * Removed opflow from primitive version unit tests. * Updated reno; removed dead code. * Added Statevector unit test. * Added Statevector unit test. * Changed run_options to options. * Code refactoring. * Removed deprecated pe_circuit. * Made types more specific. * Lint * Improved docs for allowed types. Co-authored-by: Manoel Marques Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../hamiltonian_phase_estimation.py | 209 +++++++++----- .../hamiltonian_phase_estimation_result.py | 10 +- qiskit/algorithms/phase_estimators/ipe.py | 69 +++-- .../phase_estimators/phase_estimation.py | 95 ++++--- .../phase_estimation_result.py | 11 +- .../phase_estimation_scale.py | 43 ++- .../phase_estimators/phase_estimator.py | 14 +- ...lgorithms-primitives-3605bdfa5ab1bfef.yaml | 39 +++ .../python/algorithms/test_phase_estimator.py | 258 +++++++++++++++++- 9 files changed, 595 insertions(+), 153 deletions(-) create mode 100644 releasenotes/notes/qpe-algorithms-primitives-3605bdfa5ab1bfef.yaml diff --git a/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation.py b/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation.py index d84d262249a6..0dcc4deb87ec 100644 --- a/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation.py +++ b/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2020. +# (C) Copyright IBM 2020, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -12,23 +12,30 @@ """Phase estimation for the spectrum of a Hamiltonian""" -from typing import Optional, Union +from __future__ import annotations + +import warnings + from qiskit import QuantumCircuit from qiskit.utils import QuantumInstance from qiskit.opflow import ( - EvolutionBase, - PauliTrotterEvolution, - OperatorBase, SummedOp, PauliOp, MatrixOp, PauliSumOp, StateFn, + EvolutionBase, + PauliTrotterEvolution, + I, ) from qiskit.providers import Backend from .phase_estimation import PhaseEstimation from .hamiltonian_phase_estimation_result import HamiltonianPhaseEstimationResult from .phase_estimation_scale import PhaseEstimationScale +from ...circuit.library import PauliEvolutionGate +from ...primitives import BaseSampler +from ...quantum_info import SparsePauliOp, Statevector, Pauli +from ...synthesis import EvolutionSynthesis class HamiltonianPhaseEstimation: @@ -70,7 +77,7 @@ class HamiltonianPhaseEstimation: bound to obtain a scale factor, scaling the operator, and shifting and scaling the measured phases to recover the eigenvalues. - Note that, although we speak of "evolving" the state according the the Hamiltonian, in the + Note that, although we speak of "evolving" the state according the Hamiltonian, in the present algorithm, we are not actually considering time evolution. Rather, the role of time is played by the scaling factor, which is chosen to best extract the eigenvalues of the Hamiltonian. @@ -88,54 +95,79 @@ class HamiltonianPhaseEstimation: def __init__( self, num_evaluation_qubits: int, - quantum_instance: Optional[Union[QuantumInstance, Backend]] = None, + quantum_instance: QuantumInstance | Backend | None = None, + sampler: BaseSampler | None = None, ) -> None: - """ + r""" Args: num_evaluation_qubits: The number of qubits used in estimating the phase. The phase will be estimated as a binary string with this many bits. - quantum_instance: The quantum instance on which the circuit will be run. + quantum_instance: Pending deprecation\: The quantum instance on which + the circuit will be run. + sampler: The sampler primitive on which the circuit will be sampled. """ + if quantum_instance is not None: + warnings.warn( + "The quantum_instance argument has been superseded by the sampler argument. " + "This argument will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) self._phase_estimation = PhaseEstimation( - num_evaluation_qubits=num_evaluation_qubits, quantum_instance=quantum_instance + num_evaluation_qubits=num_evaluation_qubits, + quantum_instance=quantum_instance, + sampler=sampler, ) - def _get_scale(self, hamiltonian, bound=None) -> None: + def _get_scale(self, hamiltonian, bound=None) -> PhaseEstimationScale: if bound is None: return PhaseEstimationScale.from_pauli_sum(hamiltonian) return PhaseEstimationScale(bound) - def _get_unitary(self, hamiltonian, pe_scale, evolution) -> QuantumCircuit: + def _get_unitary( + self, hamiltonian, pe_scale, evolution: EvolutionSynthesis | EvolutionBase + ) -> QuantumCircuit: """Evolve the Hamiltonian to obtain a unitary. Apply the scaling to the Hamiltonian that has been computed from an eigenvalue bound and compute the unitary by applying the evolution object. """ - # scale so that phase does not wrap. - scaled_hamiltonian = -pe_scale.scale * hamiltonian - unitary = evolution.convert(scaled_hamiltonian.exp_i()) - if not isinstance(unitary, QuantumCircuit): - unitary_circuit = unitary.to_circuit() + + if self._phase_estimation._sampler is not None: + + evo = PauliEvolutionGate(hamiltonian, -pe_scale.scale, synthesis=evolution) + unitary = QuantumCircuit(evo.num_qubits) + unitary.append(evo, unitary.qubits) + + return unitary.decompose().decompose() else: - unitary_circuit = unitary + # scale so that phase does not wrap. + scaled_hamiltonian = -pe_scale.scale * hamiltonian + unitary = evolution.convert(scaled_hamiltonian.exp_i()) + if not isinstance(unitary, QuantumCircuit): + unitary = unitary.to_circuit() + + return unitary.decompose().decompose() # Decomposing twice allows some 1Q Hamiltonians to give correct results # when using MatrixEvolution(), that otherwise would give incorrect results. # It does not break any others that we tested. - return unitary_circuit.decompose().decompose() def estimate( self, - hamiltonian: OperatorBase, - state_preparation: Optional[StateFn] = None, - evolution: Optional[EvolutionBase] = None, - bound: Optional[float] = None, + hamiltonian: PauliOp | MatrixOp | SummedOp | Pauli | SparsePauliOp | PauliSumOp, + state_preparation: StateFn | QuantumCircuit | Statevector | None = None, + evolution: EvolutionSynthesis | EvolutionBase | None = None, + bound: float | None = None, ) -> HamiltonianPhaseEstimationResult: """Run the Hamiltonian phase estimation algorithm. Args: - hamiltonian: A Hermitian operator. + hamiltonian: A Hermitian operator. If the algorithm is used with a ``Sampler`` + primitive, the allowed types are ``Pauli``, ``SparsePauliOp``, and ``PauliSumOp``. + If the algorithm is used with a ``QuantumInstance``, ``PauliOp, ``MatrixOp``, + ``PauliSumOp``, and ``SummedOp`` types are allowed. state_preparation: The ``StateFn`` to be prepared, whose eigenphase will be measured. If this parameter is omitted, no preparation circuit will be run and input state will be the all-zero state in the computational basis. @@ -148,60 +180,84 @@ def estimate( the higher the resolution of computed phases. Returns: - HamiltonianPhaseEstimationResult instance containing the result of the estimation + ``HamiltonianPhaseEstimationResult`` instance containing the result of the estimation and diagnostic information. Raises: + TypeError: If ``evolution`` is not of type ``EvolutionSynthesis`` when a ``Sampler`` is + provided. + TypeError: If ``hamiltonian`` type is not ``Pauli`` or ``SparsePauliOp`` or + ``PauliSumOp`` when a ``Sampler`` is provided. ValueError: If ``bound`` is ``None`` and ``hamiltonian`` is not a Pauli sum, i.e. a ``PauliSumOp`` or a ``SummedOp`` whose terms are of type ``PauliOp``. - TypeError: If ``evolution`` is not of type ``EvolutionBase``. + TypeError: If ``evolution`` is not of type ``EvolutionBase`` when no ``Sampler`` is + provided. """ - if evolution is None: - evolution = PauliTrotterEvolution() - elif not isinstance(evolution, EvolutionBase): - raise TypeError(f"Expecting type EvolutionBase, got {type(evolution)}") - - if isinstance(hamiltonian, PauliSumOp): - hamiltonian = hamiltonian.to_pauli_op() - elif isinstance(hamiltonian, PauliOp): - hamiltonian = SummedOp([hamiltonian]) - - if isinstance(hamiltonian, SummedOp): - # remove identitiy terms - # The term propto the identity is removed from hamiltonian. - # This is done for three reasons: - # 1. Work around an unknown bug that otherwise causes the energies to be wrong in some - # cases. - # 2. Allow working with a simpler Hamiltonian, one with fewer terms. - # 3. Tighten the bound on the eigenvalues so that the spectrum is better resolved, i.e. - # occupies more of the range of values representable by the qubit register. - # The coefficient of this term will be added to the eigenvalues. - id_coefficient, hamiltonian_no_id = _remove_identity(hamiltonian) - - # get the rescaling object + if self._phase_estimation._sampler is not None: + if evolution is not None and not isinstance(evolution, EvolutionSynthesis): + raise TypeError(f"Expecting type EvolutionSynthesis, got {type(evolution)}") + if not isinstance(hamiltonian, (Pauli, SparsePauliOp, PauliSumOp)): + raise TypeError( + f"Expecting Hamiltonian type Pauli, SparsePauliOp or PauliSumOp, " + f"got {type(hamiltonian)}." + ) + + if isinstance(state_preparation, Statevector): + circuit = QuantumCircuit(state_preparation.num_qubits) + circuit.prepare_state(state_preparation.data) + state_preparation = circuit + if isinstance(hamiltonian, PauliSumOp): + id_coefficient, hamiltonian_no_id = _remove_identity_pauli_sum_op(hamiltonian) + else: + id_coefficient = 0.0 + hamiltonian_no_id = hamiltonian pe_scale = self._get_scale(hamiltonian_no_id, bound) - - # get the unitary unitary = self._get_unitary(hamiltonian_no_id, pe_scale, evolution) - - elif isinstance(hamiltonian, MatrixOp): - if bound is None: - raise ValueError("bound must be specified if Hermitian operator is MatrixOp") - - # Do not subtract an identity term from the matrix, so do not compensate. - id_coefficient = 0.0 - pe_scale = self._get_scale(hamiltonian, bound) - unitary = self._get_unitary(hamiltonian, pe_scale, evolution) else: - raise TypeError(f"Hermitian operator of type {type(hamiltonian)} not supported.") - - if state_preparation is not None: + if evolution is None: + evolution = PauliTrotterEvolution() + elif not isinstance(evolution, EvolutionBase): + raise TypeError(f"Expecting type EvolutionBase, got {type(evolution)}") + + if isinstance(hamiltonian, PauliSumOp): + hamiltonian = hamiltonian.to_pauli_op() + elif isinstance(hamiltonian, PauliOp): + hamiltonian = SummedOp([hamiltonian]) + + if isinstance(hamiltonian, SummedOp): + # remove identitiy terms + # The term prop to the identity is removed from hamiltonian. + # This is done for three reasons: + # 1. Work around an unknown bug that otherwise causes the energies to be wrong in some + # cases. + # 2. Allow working with a simpler Hamiltonian, one with fewer terms. + # 3. Tighten the bound on the eigenvalues so that the spectrum is better resolved, i.e. + # occupies more of the range of values representable by the qubit register. + # The coefficient of this term will be added to the eigenvalues. + id_coefficient, hamiltonian_no_id = _remove_identity(hamiltonian) + # get the rescaling object + pe_scale = self._get_scale(hamiltonian_no_id, bound) + + # get the unitary + unitary = self._get_unitary(hamiltonian_no_id, pe_scale, evolution) + + elif isinstance(hamiltonian, MatrixOp): + if bound is None: + raise ValueError("bound must be specified if Hermitian operator is MatrixOp") + + # Do not subtract an identity term from the matrix, so do not compensate. + id_coefficient = 0.0 + pe_scale = self._get_scale(hamiltonian, bound) + unitary = self._get_unitary(hamiltonian, pe_scale, evolution) + else: + raise TypeError(f"Hermitian operator of type {type(hamiltonian)} not supported.") + + if state_preparation is not None and isinstance(state_preparation, StateFn): state_preparation = state_preparation.to_circuit_op().to_circuit() # run phase estimation phase_estimation_result = self._phase_estimation.estimate( unitary=unitary, state_preparation=state_preparation ) - return HamiltonianPhaseEstimationResult( phase_estimation_result=phase_estimation_result, id_coefficient=id_coefficient, @@ -209,7 +265,7 @@ def estimate( ) -def _remove_identity(pauli_sum): +def _remove_identity(pauli_sum: SummedOp): """Remove any identity operators from `pauli_sum`. Return the sum of the coefficients of the identities and the new operator. """ @@ -223,3 +279,26 @@ def _remove_identity(pauli_sum): idcoeff += op.coeff return idcoeff, SummedOp(ops) + + +def _remove_identity_pauli_sum_op(pauli_sum: PauliSumOp | SparsePauliOp): + """Remove any identity operators from ``pauli_sum``. Return + the sum of the coefficients of the identities and the new operator. + """ + + def _get_identity(size): + identity = I + for _ in range(size - 1): + identity = identity ^ I + return identity + + idcoeff = 0.0 + if isinstance(pauli_sum, PauliSumOp): + for operator in pauli_sum: + if operator.primitive.paulis == ["I" * pauli_sum.num_qubits]: + idcoeff += operator.primitive.coeffs[0] + pauli_sum = pauli_sum - operator.primitive.coeffs[0] * _get_identity( + pauli_sum.num_qubits + ) + + return idcoeff, pauli_sum.reduce() diff --git a/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation_result.py b/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation_result.py index 2ece1b12a8fc..b76924fcd2e5 100644 --- a/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation_result.py +++ b/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation_result.py @@ -12,8 +12,8 @@ """Result from running HamiltonianPhaseEstimation""" - -from typing import Dict, Union, cast +from __future__ import annotations +from typing import cast, Mapping from qiskit.algorithms.algorithm_result import AlgorithmResult from .phase_estimation_result import PhaseEstimationResult from .phase_estimation_scale import PhaseEstimationScale @@ -53,7 +53,7 @@ def __init__( def filter_phases( self, cutoff: float = 0.0, scaled: bool = True, as_float: bool = True - ) -> Dict[Union[str, float], float]: + ) -> Mapping[str | float, float]: """Filter phases as does `PhaseEstimatorResult.filter_phases`, with the addition that `phi` is shifted and translated to return eigenvalues of the Hamiltonian. @@ -78,10 +78,10 @@ def filter_phases( phases = self._phase_estimation_result.filter_phases(cutoff, as_float=as_float) if scaled: return cast( - Dict, self._phase_estimation_scale.scale_phases(phases, self._id_coefficient) + dict, self._phase_estimation_scale.scale_phases(phases, self._id_coefficient) ) else: - return cast(Dict, phases) + return cast(dict, phases) @property def phase(self) -> float: diff --git a/qiskit/algorithms/phase_estimators/ipe.py b/qiskit/algorithms/phase_estimators/ipe.py index 67236617a9c3..276fb096c783 100644 --- a/qiskit/algorithms/phase_estimators/ipe.py +++ b/qiskit/algorithms/phase_estimators/ipe.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2021. +# (C) Copyright IBM 2021, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -13,16 +13,21 @@ """The Iterative Quantum Phase Estimation Algorithm.""" +from __future__ import annotations + +import warnings -from typing import Optional, Union import numpy + import qiskit from qiskit.circuit import QuantumCircuit, QuantumRegister from qiskit.circuit.classicalregister import ClassicalRegister from qiskit.providers import Backend from qiskit.utils import QuantumInstance +from qiskit.algorithms.exceptions import AlgorithmError from .phase_estimator import PhaseEstimator from .phase_estimator import PhaseEstimatorResult +from ...primitives import BaseSampler class IterativePhaseEstimation(PhaseEstimator): @@ -38,29 +43,44 @@ class IterativePhaseEstimation(PhaseEstimator): def __init__( self, num_iterations: int, - quantum_instance: Optional[Union[QuantumInstance, Backend]] = None, + quantum_instance: QuantumInstance | Backend | None = None, + sampler: BaseSampler | None = None, ) -> None: - - """Args: - num_iterations: The number of iterations (rounds) of the phase estimation to run. - quantum_instance: The quantum instance on which the circuit will be run. + r"""Args: + num_iterations: The number of iterations (rounds) of the phase estimation to run. + quantum_instance: Pending deprecation\: The quantum instance on which the + circuit will be run. + sampler: The sampler primitive on which the circuit will be sampled. Raises: - ValueError: if num_iterations is not greater than zero. + ValueError: if num_iterations is not greater than zero. + AlgorithmError: If neither sampler nor quantum instance is provided. """ + if sampler is None and quantum_instance is None: + raise AlgorithmError( + "Neither a sampler nor a quantum instance was provided. Please provide one of them." + ) + if quantum_instance is not None: + warnings.warn( + "The quantum_instance argument has been superseded by the sampler argument. " + "This argument will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) if isinstance(quantum_instance, Backend): quantum_instance = QuantumInstance(quantum_instance) self._quantum_instance = quantum_instance if num_iterations <= 0: raise ValueError("`num_iterations` must be greater than zero.") self._num_iterations = num_iterations + self._sampler = sampler def construct_circuit( self, unitary: QuantumCircuit, state_preparation: QuantumCircuit, k: int, - omega: float = 0, + omega: float = 0.0, measurement: bool = False, ) -> QuantumCircuit: """Construct the kth iteration Quantum Phase Estimation circuit. @@ -69,15 +89,15 @@ def construct_circuit( Args: unitary: The circuit representing the unitary operator whose eigenvalue (via phase) - will be measured. + will be measured. state_preparation: The circuit that prepares the state whose eigenphase will be - measured. If this parameter is omitted, no preparation circuit - will be run and input state will be the all-zero state in the - computational basis. + measured. If this parameter is omitted, no preparation circuit + will be run and input state will be the all-zero state in the + computational basis. k: the iteration idx. omega: the feedback angle. measurement: Boolean flag to indicate if measurement should - be included in the circuit. + be included in the circuit. Returns: QuantumCircuit: the quantum circuit per iteration @@ -117,7 +137,20 @@ def _estimate_phase_iteratively(self, unitary, state_preparation): # k runs from the number of iterations back to 1 for k in range(self._num_iterations, 0, -1): omega_coef /= 2 - if self._quantum_instance.is_statevector: + + if self._sampler is not None: + + qc = self.construct_circuit( + unitary, state_preparation, k, -2 * numpy.pi * omega_coef, True + ) + try: + sampler_job = self._sampler.run([qc]) + result = sampler_job.result().quasi_dists[0] + except Exception as exc: + raise AlgorithmError("The primitive job failed!") from exc + x = 1 if result.get(1, 0) > result.get(0, 0) else 0 + + elif self._quantum_instance.is_statevector: qc = self.construct_circuit( unitary, state_preparation, k, -2 * numpy.pi * omega_coef, measurement=False ) @@ -140,7 +173,7 @@ def _estimate_phase_iteratively(self, unitary, state_preparation): omega_coef = omega_coef + x / 2 return omega_coef - # pylint: disable=arguments-differ + # pylint: disable=signature-differs def estimate( self, unitary: QuantumCircuit, state_preparation: QuantumCircuit ) -> "IterativePhaseEstimationResult": @@ -157,8 +190,10 @@ def estimate( Returns: Estimated phase in an IterativePhaseEstimationResult object. - """ + Raises: + AlgorithmError: If neither sampler nor quantum instance is provided. + """ phase = self._estimate_phase_iteratively(unitary, state_preparation) return IterativePhaseEstimationResult(self._num_iterations, phase) diff --git a/qiskit/algorithms/phase_estimators/phase_estimation.py b/qiskit/algorithms/phase_estimators/phase_estimation.py index a833152f6c14..bf18efcdcf95 100644 --- a/qiskit/algorithms/phase_estimators/phase_estimation.py +++ b/qiskit/algorithms/phase_estimators/phase_estimation.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2020. +# (C) Copyright IBM 2020, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -13,10 +13,11 @@ """The Quantum Phase Estimation Algorithm.""" - +from __future__ import annotations import warnings -from typing import Optional, Union + import numpy + from qiskit.circuit import QuantumCircuit import qiskit from qiskit import circuit @@ -24,8 +25,10 @@ from qiskit.providers import Backend from qiskit.utils import QuantumInstance from qiskit.result import Result +from qiskit.algorithms.exceptions import AlgorithmError from .phase_estimation_result import PhaseEstimationResult, _sort_phases from .phase_estimator import PhaseEstimator +from ...primitives import BaseSampler class PhaseEstimation(PhaseEstimator): @@ -59,7 +62,7 @@ class PhaseEstimation(PhaseEstimator): For phase estimation, there are two methods: first. `estimate`, which takes a state preparation circuit to prepare an input state, and - a unitary that will act on the the input state. In this case, an instance of + a unitary that will act on the input state. In this case, an instance of :class:`qiskit.circuit.PhaseEstimation`, a QPE circuit, containing the state preparation and input unitary will be constructed. second. `estimate_from_pe_circuit`, which takes a quantum-phase-estimation circuit in which @@ -81,15 +84,31 @@ class PhaseEstimation(PhaseEstimator): def __init__( self, num_evaluation_qubits: int, - quantum_instance: Optional[Union[QuantumInstance, Backend]] = None, + quantum_instance: QuantumInstance | Backend | None = None, + sampler: BaseSampler | None = None, ) -> None: - """ + r""" Args: num_evaluation_qubits: The number of qubits used in estimating the phase. The phase will be estimated as a binary string with this many bits. - quantum_instance: The quantum instance on which the circuit will be run. - """ + quantum_instance: Pending deprecation\: The quantum instance on which the + circuit will be run. + sampler: The sampler primitive on which the circuit will be sampled. + Raises: + AlgorithmError: If neither sampler nor quantum instance is provided. + """ + if sampler is None and quantum_instance is None: + raise AlgorithmError( + "Neither a sampler nor a quantum instance was provided. Please provide one of them." + ) + if quantum_instance is not None: + warnings.warn( + "The quantum_instance argument has been superseded by the sampler argument. " + "This argument will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) self._measurements_added = False if num_evaluation_qubits is not None: self._num_evaluation_qubits = num_evaluation_qubits @@ -97,9 +116,10 @@ def __init__( if isinstance(quantum_instance, Backend): quantum_instance = QuantumInstance(quantum_instance) self._quantum_instance = quantum_instance + self._sampler = sampler def construct_circuit( - self, unitary: QuantumCircuit, state_preparation: Optional[QuantumCircuit] = None + self, unitary: QuantumCircuit, state_preparation: QuantumCircuit | None = None ) -> QuantumCircuit: """Return the circuit to be executed to estimate phases. @@ -122,7 +142,7 @@ def construct_circuit( return pe_circuit def _add_measurement_if_required(self, pe_circuit): - if not self._quantum_instance.is_statevector: + if self._sampler is not None or not self._quantum_instance.is_statevector: # Measure only the evaluation qubits. regname = "meas" creg = ClassicalRegister(self._num_evaluation_qubits, regname) @@ -136,7 +156,7 @@ def _add_measurement_if_required(self, pe_circuit): def _compute_phases( self, num_unitary_qubits: int, circuit_result: Result - ) -> Union[numpy.ndarray, qiskit.result.Counts]: + ) -> numpy.ndarray | qiskit.result.Counts: """Compute frequencies/counts of phases from the result of running the QPE circuit. How the frequencies are computed depends on whether the backend computes amplitude or @@ -188,7 +208,7 @@ def _compute_phases( def estimate_from_pe_circuit( self, pe_circuit: QuantumCircuit, num_unitary_qubits: int ) -> PhaseEstimationResult: - """Run the the phase estimation algorithm on a phase estimation circuit + """Run the phase estimation algorithm on a phase estimation circuit Args: pe_circuit: The phase estimation circuit. @@ -196,22 +216,38 @@ def estimate_from_pe_circuit( Returns: An instance of qiskit.algorithms.phase_estimator_result.PhaseEstimationResult. + + Raises: + AlgorithmError: Primitive job failed. """ + self._add_measurement_if_required(pe_circuit) - circuit_result = self._quantum_instance.execute(pe_circuit) - phases = self._compute_phases(num_unitary_qubits, circuit_result) + + if self._sampler is not None: + try: + circuit_job = self._sampler.run([pe_circuit]) + circuit_result = circuit_job.result() + except Exception as exc: + raise AlgorithmError("The primitive job failed!") from exc + phases = circuit_result.quasi_dists[0] + phases_bitstrings = {} + for key, phase in phases.items(): + bitstring_key = self._get_reversed_bitstring(self._num_evaluation_qubits, key) + phases_bitstrings[bitstring_key] = phase + phases = phases_bitstrings + + else: + circuit_result = self._quantum_instance.execute(pe_circuit) + phases = self._compute_phases(num_unitary_qubits, circuit_result) return PhaseEstimationResult( self._num_evaluation_qubits, circuit_result=circuit_result, phases=phases ) - # pylint: disable=missing-raises-doc # pylint: disable=missing-param-doc def estimate( self, - unitary: Optional[QuantumCircuit] = None, - state_preparation: Optional[QuantumCircuit] = None, - pe_circuit: Optional[QuantumCircuit] = None, - num_unitary_qubits: Optional[int] = None, + unitary: QuantumCircuit, + state_preparation: QuantumCircuit | None = None, ) -> PhaseEstimationResult: """Build a phase estimation circuit and run the corresponding algorithm. @@ -226,24 +262,7 @@ def estimate( Returns: An instance of qiskit.algorithms.phase_estimator_result.PhaseEstimationResult. """ - if unitary is not None: - if pe_circuit is not None: - raise ValueError("Only one of `pe_circuit` and `unitary` may be passed.") - pe_circuit = self.construct_circuit(unitary, state_preparation) - num_unitary_qubits = unitary.num_qubits - - elif pe_circuit is not None: - warnings.warn( - "Passing `pe_circuit` to the PhaseEstimation.estimate() method " - "is deprecated as of 0.18, and will be removed no earlier than " - "3 months after that release date. " - "You should use the PhaseEstimation.estimate_from_pe_circuit() method " - "instead.", - DeprecationWarning, - stacklevel=2, - ) - - else: - raise ValueError("One of `pe_circuit` and `unitary` must be passed.") + pe_circuit = self.construct_circuit(unitary, state_preparation) + num_unitary_qubits = unitary.num_qubits return self.estimate_from_pe_circuit(pe_circuit, num_unitary_qubits) diff --git a/qiskit/algorithms/phase_estimators/phase_estimation_result.py b/qiskit/algorithms/phase_estimators/phase_estimation_result.py index d9606fe03f65..0a9b8299758b 100644 --- a/qiskit/algorithms/phase_estimators/phase_estimation_result.py +++ b/qiskit/algorithms/phase_estimators/phase_estimation_result.py @@ -11,8 +11,7 @@ # that they have been altered from the originals. """Result of running PhaseEstimation""" - -from typing import Dict, Union +from __future__ import annotations import numpy from qiskit.utils.deprecation import deprecate_function @@ -36,7 +35,7 @@ def __init__( self, num_evaluation_qubits: int, circuit_result: Result, - phases: Union[numpy.ndarray, Dict[str, float]], + phases: numpy.ndarray | dict[str, float], ) -> None: """ Args: @@ -52,7 +51,7 @@ def __init__( self._circuit_result = circuit_result @property - def phases(self) -> Union[numpy.ndarray, dict]: + def phases(self) -> numpy.ndarray | dict: """Return all phases and their frequencies computed by QPE. This is an array or dict whose values correspond to weights on bit strings. @@ -97,7 +96,7 @@ def phase(self) -> float: phase = _bit_string_to_phase(binary_phase_string) return phase - def filter_phases(self, cutoff: float = 0.0, as_float: bool = True) -> Dict: + def filter_phases(self, cutoff: float = 0.0, as_float: bool = True) -> dict: """Return a filtered dict of phases (keys) and frequencies (values). Only phases with frequencies (counts) larger than `cutoff` are included. @@ -163,7 +162,7 @@ def _bit_string_to_phase(binary_string: str) -> float: return int(binary_string, 2) / (2**n_qubits) -def _sort_phases(phases: Dict) -> Dict: +def _sort_phases(phases: dict) -> dict: """Sort a dict of bit strings representing phases (keys) and frequencies (values) by bit string. The bit strings are sorted according to increasing phase. This relies on Python diff --git a/qiskit/algorithms/phase_estimators/phase_estimation_scale.py b/qiskit/algorithms/phase_estimators/phase_estimation_scale.py index 53e612d53eb8..268f1a9aae31 100644 --- a/qiskit/algorithms/phase_estimators/phase_estimation_scale.py +++ b/qiskit/algorithms/phase_estimators/phase_estimation_scale.py @@ -11,10 +11,12 @@ # that they have been altered from the originals. """Scaling for Hamiltonian and eigenvalues to avoid phase wrapping""" +from __future__ import annotations +import numpy as np -from typing import Union, Dict, List -import numpy -from qiskit.opflow import SummedOp +from qiskit.opflow import SummedOp, PauliSumOp +from qiskit.quantum_info import SparsePauliOp, Operator +from qiskit.quantum_info.operators.base_operator import BaseOperator class PhaseEstimationScale: @@ -62,7 +64,7 @@ def scale(self) -> float: Returns: The scale factor. """ - return numpy.pi / self._bound + return np.pi / self._bound def scale_phase(self, phi: float, id_coefficient: float = 0.0) -> float: r"""Convert a phase into an eigenvalue. @@ -91,9 +93,7 @@ def scale_phase(self, phi: float, id_coefficient: float = 0.0) -> float: else: return (phi - 1) * w + id_coefficient - def scale_phases( - self, phases: Union[List, Dict], id_coefficient: float = 0.0 - ) -> Union[Dict, List]: + def scale_phases(self, phases: list | dict, id_coefficient: float = 0.0) -> dict | list: """Convert a list or dict of phases to eigenvalues. The values in the list, or keys in the dict, are values of ``phi` and @@ -115,7 +115,9 @@ def scale_phases( return phases @classmethod - def from_pauli_sum(cls, pauli_sum: SummedOp) -> "PhaseEstimationScale": + def from_pauli_sum( + cls, pauli_sum: SummedOp | PauliSumOp | SparsePauliOp | Operator + ) -> "PhaseEstimationScale" | float: """Create a PhaseEstimationScale from a `SummedOp` representing a sum of Pauli Operators. It is assumed that the ``pauli_sum`` is the sum of ``PauliOp`` objects. The bound on @@ -132,12 +134,27 @@ def from_pauli_sum(cls, pauli_sum: SummedOp) -> "PhaseEstimationScale": Returns: A ``PhaseEstimationScale`` object """ - if pauli_sum.primitive_strings() != {"Pauli"}: + if isinstance(pauli_sum, PauliSumOp): + bound = abs(pauli_sum.coeff) * sum(abs(coeff) for coeff in pauli_sum.coeffs) + return PhaseEstimationScale(bound) + elif isinstance(pauli_sum, SparsePauliOp): + bound = sum(abs(coeff) for coeff in pauli_sum.coeffs) + return PhaseEstimationScale(bound) + elif isinstance(pauli_sum, Operator): + bound = np.sum(np.abs(np.eigvalsh(pauli_sum))) + return PhaseEstimationScale(bound) + elif isinstance(pauli_sum, BaseOperator): raise ValueError( - "`pauli_sum` must be a sum of Pauli operators. Got primitives {}.".format( - pauli_sum.primitive_strings() - ) + f"For the operator of type {type(pauli_sum)} the bound needs to be provided in the " + f"algorithm." ) + else: + if pauli_sum.primitive_strings() != {"Pauli"}: + raise ValueError( + "`pauli_sum` must be a sum of Pauli operators. Got primitives {}.".format( + pauli_sum.primitive_strings() + ) + ) - bound = abs(pauli_sum.coeff) * sum(abs(pauli.coeff) for pauli in pauli_sum) + bound = abs(pauli_sum.coeff) * sum(abs(pauli.coeff) for pauli in pauli_sum) return PhaseEstimationScale(bound) diff --git a/qiskit/algorithms/phase_estimators/phase_estimator.py b/qiskit/algorithms/phase_estimators/phase_estimator.py index 3ea7618b5046..09f8113e5f4a 100644 --- a/qiskit/algorithms/phase_estimators/phase_estimator.py +++ b/qiskit/algorithms/phase_estimators/phase_estimator.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2020. +# (C) Copyright IBM 2020, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -12,7 +12,7 @@ """The Phase Estimator interface.""" -from typing import Optional +from __future__ import annotations from abc import ABC, abstractmethod from qiskit.circuit import QuantumCircuit from qiskit.algorithms.algorithm_result import AlgorithmResult @@ -32,14 +32,16 @@ class PhaseEstimator(ABC): @abstractmethod def estimate( self, - unitary: Optional[QuantumCircuit] = None, - state_preparation: Optional[QuantumCircuit] = None, - pe_circuit: Optional[QuantumCircuit] = None, - num_unitary_qubits: Optional[int] = None, + unitary: QuantumCircuit, + state_preparation: QuantumCircuit | None = None, ) -> "PhaseEstimatorResult": """Estimate the phase.""" raise NotImplementedError + @staticmethod + def _get_reversed_bitstring(length: int, number: int) -> str: + return f"{number:b}".zfill(length)[::-1] + class PhaseEstimatorResult(AlgorithmResult): """Phase Estimator Result.""" diff --git a/releasenotes/notes/qpe-algorithms-primitives-3605bdfa5ab1bfef.yaml b/releasenotes/notes/qpe-algorithms-primitives-3605bdfa5ab1bfef.yaml new file mode 100644 index 000000000000..3435b6980b0d --- /dev/null +++ b/releasenotes/notes/qpe-algorithms-primitives-3605bdfa5ab1bfef.yaml @@ -0,0 +1,39 @@ +--- +features: + - | + Added :class:`~qiskit.primitives.BaseSampler` as ``init`` parameter + for the following phase estimation algorithms: + :class:`~qiskit.algorithms.IterativePhaseEstimation`, + :class:`~qiskit.algorithms.PhaseEstimation`, + :class:`~qiskit.algorithms.HamiltonianPhaseEstimation`. + + .. code-block:: python + + from qiskit.primitives import Sampler + from qiskit.algorithms.phase_estimators import HamiltonianPhaseEstimation + from qiskit.synthesis import MatrixExponential + from qiskit.quantum_info import SparsePauliOp + from qiskit.opflow import PauliSumOp + + + sampler = Sampler() + num_evaluation_qubits = 6 + phase_est = HamiltonianPhaseEstimation( + num_evaluation_qubits=num_evaluation_qubits, sampler=sampler + ) + + hamiltonian = PauliSumOp(SparsePauliOp.from_list([("X", 0.5), ("Y", 0.6), ("I", 0.7)])) + result = phase_est.estimate( + hamiltonian=hamiltonian, + state_preparation=None, + evolution=MatrixExponential(), + bound=1.05, + ) +deprecations: + - | + Using :class:`~qiskit.utils.QuantumInstance` or :class:`~qiskit.providers.Backend` as + ``init`` parameters will now issue a ``PendingDeprecationWarning`` + for the following phase estimation algorithms: + :class:`~qiskit.algorithms.IterativePhaseEstimation`, + :class:`~qiskit.algorithms.PhaseEstimation`, + :class:`~qiskit.algorithms.HamiltonianPhaseEstimation` diff --git a/test/python/algorithms/test_phase_estimator.py b/test/python/algorithms/test_phase_estimator.py index 83e213f9b64a..015077de9d74 100644 --- a/test/python/algorithms/test_phase_estimator.py +++ b/test/python/algorithms/test_phase_estimator.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2018, 2020. +# (C) Copyright IBM 2018, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -13,18 +13,22 @@ """Test phase estimation""" import unittest + from test.python.algorithms import QiskitAlgorithmsTestCase from ddt import ddt, data, unpack import numpy as np +from qiskit.circuit.library import ZGate, XGate, HGate, IGate +from qiskit.quantum_info import Pauli, SparsePauliOp, Statevector +from qiskit.synthesis import MatrixExponential, SuzukiTrotter +from qiskit.primitives import Sampler from qiskit.algorithms.phase_estimators import ( PhaseEstimation, HamiltonianPhaseEstimation, IterativePhaseEstimation, ) -from qiskit.opflow.evolutions import PauliTrotterEvolution, MatrixEvolution import qiskit from qiskit import QuantumCircuit -from qiskit.opflow import H, X, Y, Z, I, StateFn +from qiskit.opflow import H, X, Y, Z, I, StateFn, PauliTrotterEvolution, MatrixEvolution, PauliSumOp @ddt @@ -111,6 +115,7 @@ def test_H2_hamiltonian(self): ) state_preparation = StateFn((I ^ H).to_circuit()) evo = PauliTrotterEvolution(trotter_mode="suzuki", reps=4) + result = self.hamiltonian_pe(hamiltonian, state_preparation, evolution=evo) with self.subTest("Most likely eigenvalues"): self.assertAlmostEqual(result.most_likely_eigenvalue, -1.855, delta=0.001) @@ -177,6 +182,116 @@ def test_trotter_from_bound(self): self.assertAlmostEqual(phases[0], 1.5, delta=0.001) self.assertAlmostEqual(phases[1], -1.5, delta=0.001) + # sampler tests + def hamiltonian_pe_sampler( + self, + hamiltonian, + state_preparation=None, + num_evaluation_qubits=6, + evolution=None, + bound=None, + ): + """Run HamiltonianPhaseEstimation and return result with all phases.""" + sampler = Sampler() + phase_est = HamiltonianPhaseEstimation( + num_evaluation_qubits=num_evaluation_qubits, sampler=sampler + ) + result = phase_est.estimate( + hamiltonian=hamiltonian, + state_preparation=state_preparation, + evolution=evolution, + bound=bound, + ) + return result + + @data(MatrixExponential(), SuzukiTrotter(reps=4)) + def test_pauli_sum_1_sampler(self, evolution): + """Two eigenvalues from Pauli sum with X, Z""" + hamiltonian = PauliSumOp(SparsePauliOp.from_list([("X", 0.5), ("Z", 1)])) + state_preparation = QuantumCircuit(1).compose(HGate()) + + result = self.hamiltonian_pe_sampler(hamiltonian, state_preparation, evolution=evolution) + phase_dict = result.filter_phases(0.162, as_float=True) + phases = list(phase_dict.keys()) + phases.sort() + + self.assertAlmostEqual(phases[0], -1.125, delta=0.001) + self.assertAlmostEqual(phases[1], 1.125, delta=0.001) + + @data(MatrixExponential(), SuzukiTrotter(reps=3)) + def test_pauli_sum_2_sampler(self, evolution): + """Two eigenvalues from Pauli sum with X, Y, Z""" + hamiltonian = PauliSumOp(SparsePauliOp.from_list([("X", 0.5), ("Z", 1), ("Y", 1)])) + state_preparation = None + + result = self.hamiltonian_pe_sampler(hamiltonian, state_preparation, evolution=evolution) + phase_dict = result.filter_phases(0.1, as_float=True) + phases = list(phase_dict.keys()) + phases.sort() + + self.assertAlmostEqual(phases[0], -1.484, delta=0.001) + self.assertAlmostEqual(phases[1], 1.484, delta=0.001) + + def test_single_pauli_op_sampler(self): + """Two eigenvalues from Pauli sum with X, Y, Z""" + hamiltonian = SparsePauliOp(Pauli("Z")) + state_preparation = None + + result = self.hamiltonian_pe_sampler(hamiltonian, state_preparation, evolution=None) + eigv = result.most_likely_eigenvalue + with self.subTest("First eigenvalue"): + self.assertAlmostEqual(eigv, 1.0, delta=0.001) + + state_preparation = QuantumCircuit(1).compose(XGate()) + + result = self.hamiltonian_pe_sampler(hamiltonian, state_preparation, bound=1.05) + eigv = result.most_likely_eigenvalue + with self.subTest("Second eigenvalue"): + self.assertAlmostEqual(eigv, -0.98, delta=0.01) + + @data( + Statevector(QuantumCircuit(2).compose(IGate()).compose(HGate())), + QuantumCircuit(2).compose(IGate()).compose(HGate()), + ) + def test_H2_hamiltonian_sampler(self, state_preparation): + """Test H2 hamiltonian""" + + hamiltonian = PauliSumOp( + SparsePauliOp.from_list( + [ + ("II", -1.0523732457728587), + ("IZ", 0.3979374248431802), + ("ZI", -0.3979374248431802), + ("ZZ", -0.011280104256235324), + ("XX", 0.18093119978423147), + ] + ) + ) + evo = SuzukiTrotter(reps=4) + result = self.hamiltonian_pe_sampler(hamiltonian, state_preparation, evolution=evo) + with self.subTest("Most likely eigenvalues"): + self.assertAlmostEqual(result.most_likely_eigenvalue, -1.855, delta=0.001) + with self.subTest("Most likely phase"): + self.assertAlmostEqual(result.phase, 0.5937, delta=0.001) + with self.subTest("All eigenvalues"): + phase_dict = result.filter_phases(0.1) + phases = sorted(list(phase_dict.keys())) + self.assertAlmostEqual(phases[0], -1.8551, delta=0.001) + self.assertAlmostEqual(phases[1], -1.2376, delta=0.001) + self.assertAlmostEqual(phases[2], -0.8979, delta=0.001) + + def test_matrix_evolution_sampler(self): + """1Q Hamiltonian with MatrixEvolution""" + hamiltonian = PauliSumOp(SparsePauliOp.from_list([("X", 0.5), ("Y", 0.6), ("I", 0.7)])) + state_preparation = None + result = self.hamiltonian_pe_sampler( + hamiltonian, state_preparation, evolution=MatrixExponential() + ) + phase_dict = result.filter_phases(0.2, as_float=True) + phases = sorted(list(phase_dict.keys())) + self.assertAlmostEqual(phases[0], -0.090, delta=0.001) + self.assertAlmostEqual(phases[1], 1.490, delta=0.001) + @ddt class TestPhaseEstimation(QiskitAlgorithmsTestCase): @@ -313,6 +428,143 @@ def test_qpe_Zplus(self, construct_circuit): phases = result.filter_phases(1e-15, as_float=False) self.assertEqual(list(phases.keys()), ["000000", "100000"]) + # sampler tests + def one_phase_sampler( + self, + unitary_circuit, + state_preparation=None, + phase_estimator=None, + num_iterations=6, + shots=None, + ): + """Run phase estimation with operator, eigenvalue pair `unitary_circuit`, + `state_preparation`. Return the estimated phase as a value in :math:`[0,1)`. + """ + if shots is not None: + options = {"shots": shots} + else: + options = {} + sampler = Sampler(options=options) + if phase_estimator is None: + phase_estimator = IterativePhaseEstimation + if phase_estimator == IterativePhaseEstimation: + p_est = IterativePhaseEstimation(num_iterations=num_iterations, sampler=sampler) + elif phase_estimator == PhaseEstimation: + p_est = PhaseEstimation(num_evaluation_qubits=6, sampler=sampler) + else: + raise ValueError("Unrecognized phase_estimator") + result = p_est.estimate(unitary=unitary_circuit, state_preparation=state_preparation) + phase = result.phase + return phase + + @data( + (QuantumCircuit(1).compose(XGate()), 0.5, None, IterativePhaseEstimation), + (QuantumCircuit(1).compose(XGate()), 0.5, 1000, IterativePhaseEstimation), + (None, 0.0, 1000, IterativePhaseEstimation), + (QuantumCircuit(1).compose(XGate()), 0.5, 1000, PhaseEstimation), + (None, 0.0, 1000, PhaseEstimation), + (QuantumCircuit(1).compose(XGate()), 0.5, None, PhaseEstimation), + ) + @unpack + def test_qpe_Z_sampler(self, state_preparation, expected_phase, shots, phase_estimator): + """eigenproblem Z, |0> and |1>""" + unitary_circuit = QuantumCircuit(1).compose(ZGate()) + phase = self.one_phase_sampler( + unitary_circuit, + state_preparation=state_preparation, + phase_estimator=phase_estimator, + shots=shots, + ) + self.assertEqual(phase, expected_phase) + + @data( + (QuantumCircuit(1).compose(HGate()), 0.0, IterativePhaseEstimation), + (QuantumCircuit(1).compose(HGate()).compose(ZGate()), 0.5, IterativePhaseEstimation), + (QuantumCircuit(1).compose(HGate()), 0.0, PhaseEstimation), + (QuantumCircuit(1).compose(HGate()).compose(ZGate()), 0.5, PhaseEstimation), + ) + @unpack + def test_qpe_X_plus_minus_sampler(self, state_preparation, expected_phase, phase_estimator): + """eigenproblem X, (|+>, |->)""" + unitary_circuit = QuantumCircuit(1).compose(XGate()) + phase = self.one_phase_sampler( + unitary_circuit, + state_preparation, + phase_estimator, + ) + self.assertEqual(phase, expected_phase) + + @data( + (QuantumCircuit(1).compose(XGate()), 0.125, IterativePhaseEstimation), + (QuantumCircuit(1).compose(IGate()), 0.875, IterativePhaseEstimation), + (QuantumCircuit(1).compose(XGate()), 0.125, PhaseEstimation), + (QuantumCircuit(1).compose(IGate()), 0.875, PhaseEstimation), + ) + @unpack + def test_qpe_RZ_sampler(self, state_preparation, expected_phase, phase_estimator): + """eigenproblem RZ, (|0>, |1>)""" + alpha = np.pi / 2 + unitary_circuit = QuantumCircuit(1) + unitary_circuit.rz(alpha, 0) + phase = self.one_phase_sampler( + unitary_circuit, + state_preparation, + phase_estimator, + ) + self.assertEqual(phase, expected_phase) + + def test_check_num_iterations_sampler(self): + """test check for num_iterations greater than zero""" + unitary_circuit = QuantumCircuit(1).compose(XGate()) + state_preparation = None + with self.assertRaises(ValueError): + self.one_phase_sampler(unitary_circuit, state_preparation, num_iterations=-1) + + def phase_estimation_sampler( + self, + unitary_circuit, + sampler: Sampler, + state_preparation=None, + num_evaluation_qubits=6, + construct_circuit=False, + ): + """Run phase estimation with operator, eigenvalue pair `unitary_circuit`, + `state_preparation`. Return all results + """ + phase_est = PhaseEstimation(num_evaluation_qubits=num_evaluation_qubits, sampler=sampler) + if construct_circuit: + pe_circuit = phase_est.construct_circuit(unitary_circuit, state_preparation) + result = phase_est.estimate_from_pe_circuit(pe_circuit, unitary_circuit.num_qubits) + else: + result = phase_est.estimate( + unitary=unitary_circuit, state_preparation=state_preparation + ) + return result + + @data(True, False) + def test_qpe_Zplus_sampler(self, construct_circuit): + """superposition eigenproblem Z, |+>""" + unitary_circuit = QuantumCircuit(1).compose(ZGate()) + state_preparation = QuantumCircuit(1).compose(HGate()) # prepare |+> + sampler = Sampler() + result = self.phase_estimation_sampler( + unitary_circuit, + sampler, + state_preparation, + construct_circuit=construct_circuit, + ) + + phases = result.filter_phases(1e-15, as_float=True) + with self.subTest("test phases has correct values"): + self.assertEqual(list(phases.keys()), [0.0, 0.5]) + + with self.subTest("test phases has correct probabilities"): + np.testing.assert_allclose(list(phases.values()), [0.5, 0.5]) + + with self.subTest("test bitstring representation"): + phases = result.filter_phases(1e-15, as_float=False) + self.assertEqual(list(phases.keys()), ["000000", "100000"]) + if __name__ == "__main__": unittest.main() From 2cd56f49db6e277a0b64e04c178c78ac07ea5712 Mon Sep 17 00:00:00 2001 From: ElePT <57907331+ElePT@users.noreply.github.com> Date: Sat, 24 Sep 2022 01:18:27 +0200 Subject: [PATCH 42/56] Rename run_options to options in fidelity and gradients and fidelity bug fix (#8755) * Rename run_options to options * Update qiskit/algorithms/state_fidelities/base_state_fidelity.py * Update qiskit/algorithms/state_fidelities/base_state_fidelity.py * Update qiskit/algorithms/state_fidelities/compute_uncompute.py * Fix bug * Fix measurements, empty list * Add check empty list * Update test/python/algorithms/state_fidelities/test_compute_uncompute.py * Update test/python/algorithms/state_fidelities/test_compute_uncompute.py * Fix black * Add options properties * fix unit tests Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../gradients/base_estimator_gradient.py | 71 ++++++++++++------ .../gradients/base_sampler_gradient.py | 72 ++++++++++++------ .../gradients/estimator_gradient_result.py | 4 +- .../finite_diff_estimator_gradient.py | 19 ++--- .../gradients/finite_diff_sampler_gradient.py | 19 ++--- .../gradients/lin_comb_estimator_gradient.py | 21 +++--- .../gradients/lin_comb_sampler_gradient.py | 19 ++--- .../param_shift_estimator_gradient.py | 19 ++--- .../gradients/param_shift_sampler_gradient.py | 19 ++--- .../gradients/sampler_gradient_result.py | 4 +- .../gradients/spsa_estimator_gradient.py | 19 ++--- .../gradients/spsa_sampler_gradient.py | 19 ++--- .../state_fidelities/base_state_fidelity.py | 21 +++--- .../state_fidelities/compute_uncompute.py | 75 +++++++++++++++---- .../state_fidelities/state_fidelity_result.py | 6 +- .../test_compute_uncompute.py | 59 +++++++++++++++ .../algorithms/test_estimator_gradient.py | 32 ++++++-- .../algorithms/test_sampler_gradient.py | 34 +++++++-- 18 files changed, 367 insertions(+), 165 deletions(-) diff --git a/qiskit/algorithms/gradients/base_estimator_gradient.py b/qiskit/algorithms/gradients/base_estimator_gradient.py index 3e04605bdd4d..44143de2d1b3 100644 --- a/qiskit/algorithms/gradients/base_estimator_gradient.py +++ b/qiskit/algorithms/gradients/base_estimator_gradient.py @@ -36,19 +36,20 @@ class BaseEstimatorGradient(ABC): def __init__( self, estimator: BaseEstimator, - run_options: dict | None = None, + options: Options | None = None, ): """ Args: estimator: The estimator used to compute the gradients. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting """ self._estimator: BaseEstimator = estimator - self._default_run_options = Options() - if run_options is not None: - self._default_run_options.update_options(**run_options) + self._default_options = Options() + if options is not None: + self._default_options.update_options(**options) def run( self, @@ -56,7 +57,7 @@ def run( observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None] | None = None, - **run_options, + **options, ) -> AlgorithmJob: """Run the job of the estimator gradient on the given circuits. @@ -68,9 +69,10 @@ def run( the specified parameters. Each sequence of parameters corresponds to a circuit in ``circuits``. Defaults to None, which means that the gradients of all parameters in each circuit are calculated. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting Returns: The job object of the gradients of the expectation values. The i-th result corresponds to @@ -87,11 +89,11 @@ def run( # Validate the arguments. self._validate_arguments(circuits, observables, parameter_values, parameters) # The priority of run option is as follows: - # run_options in ``run`` method > gradient's default run_options > primitive's default setting. - run_opts = copy(self._default_run_options) - run_opts.update_options(**run_options) + # options in ``run`` method > gradient's default options > primitive's default setting. + opts = copy(self._default_options) + opts.update_options(**options) job = AlgorithmJob( - self._run, circuits, observables, parameter_values, parameters, **run_opts.__dict__ + self._run, circuits, observables, parameter_values, parameters, **opts.__dict__ ) job.submit() return job @@ -103,7 +105,7 @@ def _run( observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> EstimatorGradientResult: """Compute the estimator gradients on the given circuits.""" raise NotImplementedError() @@ -166,15 +168,38 @@ def _validate_arguments( f"({observable.num_qubits})." ) - def _get_local_run_options(self, run_options: dict) -> Options: - """Update the run options in the results. + @property + def options(self) -> Options: + """Return the union of estimator options setting and gradient default options, + where, if the same field is set in both, the gradient's default options override + the primitive's default setting. + + Returns: + The gradient default + estimator options. + """ + return self._get_local_options(self._default_options.__dict__) + + def update_default_options(self, **options): + """Update the gradient's default options setting. + + Args: + **options: The fields to update the default options. + """ + + self._default_options.update_options(**options) + + def _get_local_options(self, options: Options) -> Options: + """Return the union of the primitive's default setting, + the gradient default options, and the options in the ``run`` method. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. Args: - run_options: The run options to update. + options: The fields to update the options Returns: - The updated run options. + The gradient default + estimator + run options. """ - run_opts = copy(self._estimator.options) - run_opts.update_options(**run_options) - return run_opts + opts = copy(self._estimator.options) + opts.update_options(**options) + return opts diff --git a/qiskit/algorithms/gradients/base_sampler_gradient.py b/qiskit/algorithms/gradients/base_sampler_gradient.py index 40284c177dbd..8812b0d16493 100644 --- a/qiskit/algorithms/gradients/base_sampler_gradient.py +++ b/qiskit/algorithms/gradients/base_sampler_gradient.py @@ -30,25 +30,26 @@ class BaseSamplerGradient(ABC): """Base class for a ``SamplerGradient`` to compute the gradients of the sampling probability.""" - def __init__(self, sampler: BaseSampler, run_options: dict | None = None): + def __init__(self, sampler: BaseSampler, options: Options | None = None): """ Args: sampler: The sampler used to compute the gradients. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in `run` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting """ self._sampler: BaseSampler = sampler - self._default_run_options = Options() - if run_options is not None: - self._default_run_options.update_options(**run_options) + self._default_options = Options() + if options is not None: + self._default_options.update_options(**options) def run( self, circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None] | None = None, - **run_options, + **options, ) -> AlgorithmJob: """Run the job of the sampler gradient on the given circuits. @@ -59,10 +60,10 @@ def run( the specified parameters. Each sequence of parameters corresponds to a circuit in ``circuits``. Defaults to None, which means that the gradients of all parameters in each circuit are calculated. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. - + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting Returns: The job object of the gradients of the sampling probability. The i-th result corresponds to ``circuits[i]`` evaluated with parameters bound as ``parameter_values[i]``. @@ -78,10 +79,10 @@ def run( # Validate the arguments. self._validate_arguments(circuits, parameter_values, parameters) # The priority of run option is as follows: - # run_options in `run` method > gradient's default run_options > primitive's default run_options. - run_opts = copy(self._default_run_options) - run_opts.update_options(**run_options) - job = AlgorithmJob(self._run, circuits, parameter_values, parameters, **run_opts.__dict__) + # options in `run` method > gradient's default options > primitive's default options. + opts = copy(self._default_options) + opts.update_options(**options) + job = AlgorithmJob(self._run, circuits, parameter_values, parameters, **opts.__dict__) job.submit() return job @@ -91,7 +92,7 @@ def _run( circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> SamplerGradientResult: """Compute the sampler gradients on the given circuits.""" raise NotImplementedError() @@ -138,15 +139,38 @@ def _validate_arguments( f"the number of parameters ({circuit.num_parameters}) for the {i}-th circuit." ) - def _get_local_run_options(self, run_options: dict) -> dict: - """Update the run options in the results. + @property + def options(self) -> Options: + """Return the union of sampler options setting and gradient default options, + where, if the same field is set in both, the gradient's default options override + the primitive's default setting. + + Returns: + The gradient default + sampler options. + """ + return self._get_local_options(self._default_options.__dict__) + + def update_default_options(self, **options): + """Update the gradient's default options setting. + + Args: + **options: The fields to update the default options. + """ + + self._default_options.update_options(**options) + + def _get_local_options(self, options: Options) -> Options: + """Return the union of the primitive's default setting, + the gradient default options, and the options in the ``run`` method. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. Args: - run_options: The run options to update. + options: The fields to update the options Returns: - The updated run options. + The gradient default + sampler + run options. """ - run_opts = copy(self._sampler.options) - run_opts.update_options(**run_options) - return run_opts + opts = copy(self._sampler.options) + opts.update_options(**options) + return opts diff --git a/qiskit/algorithms/gradients/estimator_gradient_result.py b/qiskit/algorithms/gradients/estimator_gradient_result.py index 910e64e69122..ada3bdb2b7bf 100644 --- a/qiskit/algorithms/gradients/estimator_gradient_result.py +++ b/qiskit/algorithms/gradients/estimator_gradient_result.py @@ -31,5 +31,5 @@ class EstimatorGradientResult: """The gradients of the expectation values.""" metadata: list[dict[str, Any]] """Additional information about the job.""" - run_options: Options - """run_options for the job.""" + options: Options + """Primitive runtime options for the execution of the job.""" diff --git a/qiskit/algorithms/gradients/finite_diff_estimator_gradient.py b/qiskit/algorithms/gradients/finite_diff_estimator_gradient.py index a2a52446e4ae..98c955f587a0 100644 --- a/qiskit/algorithms/gradients/finite_diff_estimator_gradient.py +++ b/qiskit/algorithms/gradients/finite_diff_estimator_gradient.py @@ -33,14 +33,15 @@ class FiniteDiffEstimatorGradient(BaseEstimatorGradient): Compute the gradients of the expectation values by finite difference method. """ - def __init__(self, estimator: BaseEstimator, epsilon: float, **run_options): + def __init__(self, estimator: BaseEstimator, epsilon: float, **options): """ Args: estimator: The estimator used to compute the gradients. epsilon: The offset size for the finite difference gradients. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting Raises: ValueError: If ``epsilon`` is not positive. @@ -49,7 +50,7 @@ def __init__(self, estimator: BaseEstimator, epsilon: float, **run_options): raise ValueError(f"epsilon ({epsilon}) should be positive.") self._epsilon = epsilon self._base_parameter_values_dict = {} - super().__init__(estimator, **run_options) + super().__init__(estimator, **options) def _run( self, @@ -57,7 +58,7 @@ def _run( observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> EstimatorGradientResult: """Compute the estimator gradients on the given circuits.""" jobs, metadata_ = [], [] @@ -76,7 +77,7 @@ def _run( minus = parameter_values_ - self._epsilon * offset n = 2 * len(indices) job = self._estimator.run( - [circuit] * n, [observable] * n, plus.tolist() + minus.tolist(), **run_options + [circuit] * n, [observable] * n, plus.tolist() + minus.tolist(), **options ) jobs.append(job) @@ -91,5 +92,5 @@ def _run( n = len(result.values) // 2 # is always a multiple of 2 gradient_ = (result.values[:n] - result.values[n:]) / (2 * self._epsilon) gradients.append(gradient_) - run_opt = self._get_local_run_options(run_options) - return EstimatorGradientResult(gradients=gradients, metadata=metadata_, run_options=run_opt) + opt = self._get_local_options(options) + return EstimatorGradientResult(gradients=gradients, metadata=metadata_, options=opt) diff --git a/qiskit/algorithms/gradients/finite_diff_sampler_gradient.py b/qiskit/algorithms/gradients/finite_diff_sampler_gradient.py index bdf79cbf382c..d64cad851c94 100644 --- a/qiskit/algorithms/gradients/finite_diff_sampler_gradient.py +++ b/qiskit/algorithms/gradients/finite_diff_sampler_gradient.py @@ -33,15 +33,16 @@ def __init__( self, sampler: BaseSampler, epsilon: float, - **run_options, + **options, ): """ Args: sampler: The sampler used to compute the gradients. epsilon: The offset size for the finite difference gradients. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting Raises: ValueError: If ``epsilon`` is not positive. @@ -49,14 +50,14 @@ def __init__( if epsilon <= 0: raise ValueError(f"epsilon ({epsilon}) should be positive.") self._epsilon = epsilon - super().__init__(sampler, **run_options) + super().__init__(sampler, **options) def _run( self, circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> SamplerGradientResult: """Compute the sampler gradients on the given circuits.""" jobs, metadata_ = [], [] @@ -71,7 +72,7 @@ def _run( plus = parameter_values_ + self._epsilon * offset minus = parameter_values_ - self._epsilon * offset n = 2 * len(indices) - job = self._sampler.run([circuit] * n, plus.tolist() + minus.tolist(), **run_options) + job = self._sampler.run([circuit] * n, plus.tolist() + minus.tolist(), **options) jobs.append(job) # combine the results @@ -92,5 +93,5 @@ def _run( gradient_.append(dict(enumerate(grad_dist))) gradients.append(gradient_) - run_opt = self._get_local_run_options(run_options) - return SamplerGradientResult(gradients=gradients, metadata=metadata_, run_options=run_opt) + opt = self._get_local_options(options) + return SamplerGradientResult(gradients=gradients, metadata=metadata_, options=opt) diff --git a/qiskit/algorithms/gradients/lin_comb_estimator_gradient.py b/qiskit/algorithms/gradients/lin_comb_estimator_gradient.py index 357db3c602bc..80567ab89728 100644 --- a/qiskit/algorithms/gradients/lin_comb_estimator_gradient.py +++ b/qiskit/algorithms/gradients/lin_comb_estimator_gradient.py @@ -44,16 +44,17 @@ class LinCombEstimatorGradient(BaseEstimatorGradient): `arXiv:1811.11184 `_ """ - def __init__(self, estimator: BaseEstimator, **run_options): + def __init__(self, estimator: BaseEstimator, **options): """ Args: estimator: The estimator used to compute the gradients. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting """ self._gradient_circuits = {} - super().__init__(estimator, **run_options) + super().__init__(estimator, **options) def _run( self, @@ -61,14 +62,14 @@ def _run( observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> EstimatorGradientResult: """Compute the estimator gradients on the given circuits.""" jobs, result_indices_all, coeffs_all, metadata_ = [], [], [], [] for circuit, observable, parameter_values_, parameters_ in zip( circuits, observables, parameter_values, parameters ): - # Make the observable as observable as :class:`~qiskit.quantum_info.SparsePauliOp`. + # Make the observable as :class:`~qiskit.quantum_info.SparsePauliOp`. observable = init_observable(observable) # a set of parameters to be differentiated if parameters_ is None: @@ -110,7 +111,7 @@ def _run( n = len(gradient_circuits) job = self._estimator.run( - gradient_circuits, [observable_] * n, [parameter_values_] * n, **run_options + gradient_circuits, [observable_] * n, [parameter_values_] * n, **options ) jobs.append(job) result_indices_all.append(result_indices) @@ -129,5 +130,5 @@ def _run( gradient_[idx] += coeff * grad_ gradients.append(gradient_) - run_opt = self._get_local_run_options(run_options) - return EstimatorGradientResult(gradients=gradients, metadata=metadata_, run_options=run_opt) + opt = self._get_local_options(options) + return EstimatorGradientResult(gradients=gradients, metadata=metadata_, options=opt) diff --git a/qiskit/algorithms/gradients/lin_comb_sampler_gradient.py b/qiskit/algorithms/gradients/lin_comb_sampler_gradient.py index 440e083dda50..37f4df7a5591 100644 --- a/qiskit/algorithms/gradients/lin_comb_sampler_gradient.py +++ b/qiskit/algorithms/gradients/lin_comb_sampler_gradient.py @@ -37,24 +37,25 @@ class LinCombSamplerGradient(BaseSamplerGradient): `arXiv:1811.11184 `_ """ - def __init__(self, sampler: BaseSampler, **run_options): + def __init__(self, sampler: BaseSampler, **options): """ Args: sampler: The sampler used to compute the gradients. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting """ self._gradient_circuits = {} - super().__init__(sampler, **run_options) + super().__init__(sampler, **options) def _run( self, circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> SamplerGradientResult: """Compute the sampler gradients on the given circuits.""" jobs, result_indices_all, coeffs_all, metadata_ = [], [], [], [] @@ -96,7 +97,7 @@ def _run( coeffs.append(bound_coeff) n = len(gradient_circuits) - job = self._sampler.run(gradient_circuits, [parameter_values_] * n, **run_options) + job = self._sampler.run(gradient_circuits, [parameter_values_] * n, **options) jobs.append(job) result_indices_all.append(result_indices) coeffs_all.append(coeffs) @@ -120,5 +121,5 @@ def _run( gradient_.append(dict(enumerate(grad_dist))) gradients.append(gradient_) - run_opt = self._get_local_run_options(run_options) - return SamplerGradientResult(gradients=gradients, metadata=metadata_, run_options=run_opt) + opt = self._get_local_options(options) + return SamplerGradientResult(gradients=gradients, metadata=metadata_, options=opt) diff --git a/qiskit/algorithms/gradients/param_shift_estimator_gradient.py b/qiskit/algorithms/gradients/param_shift_estimator_gradient.py index e1a6d300385b..e1c25ad3aa35 100644 --- a/qiskit/algorithms/gradients/param_shift_estimator_gradient.py +++ b/qiskit/algorithms/gradients/param_shift_estimator_gradient.py @@ -33,16 +33,17 @@ class ParamShiftEstimatorGradient(BaseEstimatorGradient): """Compute the gradients of the expectation values by the parameter shift rule""" - def __init__(self, estimator: BaseEstimator, **run_options): + def __init__(self, estimator: BaseEstimator, **options): """ Args: estimator: The estimator used to compute the gradients. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting """ self._gradient_circuits = {} - super().__init__(estimator, **run_options) + super().__init__(estimator, **options) def _run( self, @@ -50,7 +51,7 @@ def _run( observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> EstimatorGradientResult: """Compute the estimator gradients on the given circuits.""" jobs, result_indices_all, coeffs_all, metadata_ = [], [], [], [] @@ -89,7 +90,7 @@ def _run( [gradient_circuit.gradient_circuit] * n, [observable] * n, gradient_parameter_values_plus + gradient_parameter_values_minus, - **run_options, + **options, ) jobs.append(job) result_indices_all.append(result_indices) @@ -110,5 +111,5 @@ def _run( values[idx] += coeff * grad_ gradients.append(values) - run_opt = self._get_local_run_options(run_options) - return EstimatorGradientResult(gradients=gradients, metadata=metadata_, run_options=run_opt) + opt = self._get_local_options(options) + return EstimatorGradientResult(gradients=gradients, metadata=metadata_, options=opt) diff --git a/qiskit/algorithms/gradients/param_shift_sampler_gradient.py b/qiskit/algorithms/gradients/param_shift_sampler_gradient.py index 1f0e254b2b0f..a55e372b623b 100644 --- a/qiskit/algorithms/gradients/param_shift_sampler_gradient.py +++ b/qiskit/algorithms/gradients/param_shift_sampler_gradient.py @@ -31,23 +31,24 @@ class ParamShiftSamplerGradient(BaseSamplerGradient): """Compute the gradients of the sampling probability by the parameter shift rule.""" - def __init__(self, sampler: BaseSampler, **run_options): + def __init__(self, sampler: BaseSampler, **options): """ Args: sampler: The sampler used to compute the gradients. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting """ self._gradient_circuits = {} - super().__init__(sampler, **run_options) + super().__init__(sampler, **options) def _run( self, circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> SamplerGradientResult: """Compute the sampler gradients on the given circuits.""" jobs, result_indices_all, coeffs_all, metadata_ = [], [], [], [] @@ -84,7 +85,7 @@ def _run( job = self._sampler.run( [gradient_circuit.gradient_circuit] * n, gradient_parameter_values_plus + gradient_parameter_values_minus, - **run_options, + **options, ) jobs.append(job) result_indices_all.append(result_indices) @@ -115,5 +116,5 @@ def _run( gradient_.append(dict(enumerate(grad_dist))) gradients.append(gradient_) - run_opt = self._get_local_run_options(run_options) - return SamplerGradientResult(gradients=gradients, metadata=metadata_, run_options=run_opt) + opt = self._get_local_options(options) + return SamplerGradientResult(gradients=gradients, metadata=metadata_, options=opt) diff --git a/qiskit/algorithms/gradients/sampler_gradient_result.py b/qiskit/algorithms/gradients/sampler_gradient_result.py index 89b94bf10bf7..b78b468f1b9f 100644 --- a/qiskit/algorithms/gradients/sampler_gradient_result.py +++ b/qiskit/algorithms/gradients/sampler_gradient_result.py @@ -29,5 +29,5 @@ class SamplerGradientResult: """The gradients of the sample probabilities.""" metadata: list[dict[str, Any]] """Additional information about the job.""" - run_options: Options - """run_options for the job.""" + options: Options + """Primitive runtime options for the execution of the job.""" diff --git a/qiskit/algorithms/gradients/spsa_estimator_gradient.py b/qiskit/algorithms/gradients/spsa_estimator_gradient.py index 84681dfb3634..89e7d0639e72 100644 --- a/qiskit/algorithms/gradients/spsa_estimator_gradient.py +++ b/qiskit/algorithms/gradients/spsa_estimator_gradient.py @@ -40,7 +40,7 @@ def __init__( epsilon: float, batch_size: int = 1, seed: int | None = None, - **run_options, + **options, ): """ Args: @@ -48,9 +48,10 @@ def __init__( epsilon: The offset size for the SPSA gradients. batch_size: The number of gradients to average. seed: The seed for a random perturbation vector. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in ``run`` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting Raises: ValueError: If ``epsilon`` is not positive. @@ -61,7 +62,7 @@ def __init__( self._batch_size = batch_size self._seed = np.random.default_rng(seed) - super().__init__(estimator, **run_options) + super().__init__(estimator, **options) def _run( self, @@ -69,7 +70,7 @@ def _run( observables: Sequence[BaseOperator | PauliSumOp], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> EstimatorGradientResult: """Compute the estimator gradients on the given circuits.""" jobs, offsets, metadata_ = [], [], [] @@ -96,7 +97,7 @@ def _run( [circuit] * 2 * self._batch_size, [observable] * 2 * self._batch_size, plus + minus, - **run_options, + **options, ) jobs.append(job) @@ -119,5 +120,5 @@ def _run( indices = [circuits[i].parameters.data.index(p) for p in metadata_[i]["parameters"]] gradients.append(gradient[indices]) - run_opt = self._get_local_run_options(run_options) - return EstimatorGradientResult(gradients=gradients, metadata=metadata_, run_options=run_opt) + opt = self._get_local_options(options) + return EstimatorGradientResult(gradients=gradients, metadata=metadata_, options=opt) diff --git a/qiskit/algorithms/gradients/spsa_sampler_gradient.py b/qiskit/algorithms/gradients/spsa_sampler_gradient.py index b5426b0b3221..94a359a8509e 100644 --- a/qiskit/algorithms/gradients/spsa_sampler_gradient.py +++ b/qiskit/algorithms/gradients/spsa_sampler_gradient.py @@ -38,7 +38,7 @@ def __init__( epsilon: float, batch_size: int = 1, seed: int | None = None, - **run_options, + **options, ): """ Args: @@ -46,9 +46,10 @@ def __init__( epsilon: The offset size for the SPSA gradients. batch_size: number of gradients to average. seed: The seed for a random perturbation vector. - run_options: Backend runtime options used for circuit execution. The order of priority is: - run_options in `run` method > gradient's default run_options > primitive's default - setting. Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > gradient's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting Raises: ValueError: If ``epsilon`` is not positive. @@ -59,14 +60,14 @@ def __init__( self._epsilon = epsilon self._seed = np.random.default_rng(seed) - super().__init__(sampler, **run_options) + super().__init__(sampler, **options) def _run( self, circuits: Sequence[QuantumCircuit], parameter_values: Sequence[Sequence[float]], parameters: Sequence[Sequence[Parameter] | None], - **run_options, + **options, ) -> SamplerGradientResult: """Compute the sampler gradients on the given circuits.""" jobs, offsets, metadata_ = [], [], [] @@ -88,7 +89,7 @@ def _run( minus = [parameter_values_ - self._epsilon * offset_ for offset_ in offset] offsets.append(offset) - job = self._sampler.run([circuit] * 2 * self._batch_size, plus + minus, **run_options) + job = self._sampler.run([circuit] * 2 * self._batch_size, plus + minus, **options) jobs.append(job) # combine the results @@ -120,5 +121,5 @@ def _run( gradient.append(dict(enumerate(gradient_j))) gradients.append(gradient) - run_opt = self._get_local_run_options(run_options) - return SamplerGradientResult(gradients=gradients, metadata=metadata_, run_options=run_opt) + opt = self._get_local_options(options) + return SamplerGradientResult(gradients=gradients, metadata=metadata_, options=opt) diff --git a/qiskit/algorithms/state_fidelities/base_state_fidelity.py b/qiskit/algorithms/state_fidelities/base_state_fidelity.py index a711adacf0fa..cec48e3c6051 100644 --- a/qiskit/algorithms/state_fidelities/base_state_fidelity.py +++ b/qiskit/algorithms/state_fidelities/base_state_fidelity.py @@ -94,8 +94,9 @@ def _preprocess_values( ) # ensure 2d - if len(values) > 0 and not isinstance(values[0], Sequence): + if len(values) > 0 and not isinstance(values[0], Sequence) or len(values) == 0: values = [values] + return values def _check_qubits_match(self, circuit_1: QuantumCircuit, circuit_2: QuantumCircuit) -> None: @@ -236,7 +237,7 @@ def _run( circuits_2: QuantumCircuit | Sequence[QuantumCircuit], values_1: Sequence[float] | Sequence[Sequence[float]] | None = None, values_2: Sequence[float] | Sequence[Sequence[float]] | None = None, - **run_options, + **options, ) -> StateFidelityResult: r""" Computes the state overlap (fidelity) calculation between two @@ -248,9 +249,9 @@ def _run( circuits_2: (Parametrized) quantum circuits preparing :math:`|\phi\rangle`. values_1: Numerical parameters to be bound to the first set of circuits values_2: Numerical parameters to be bound to the second set of circuits. - run_options: Backend runtime options used for circuit execution. The order - of priority is\: run_options in ``run`` method > fidelity's default - run_options > primitive's default setting. + options: Primitive backend runtime options used for circuit execution. The order + of priority is\: options in ``run`` method > fidelity's default + options > primitive's default setting. Higher priority setting overrides lower priority setting. Returns: @@ -264,7 +265,7 @@ def run( circuits_2: QuantumCircuit | Sequence[QuantumCircuit], values_1: Sequence[float] | Sequence[Sequence[float]] | None = None, values_2: Sequence[float] | Sequence[Sequence[float]] | None = None, - **run_options, + **options, ) -> AlgorithmJob: r""" Runs asynchronously the state overlap (fidelity) calculation between two @@ -277,9 +278,9 @@ def run( circuits_2: (Parametrized) quantum circuits preparing :math:`|\phi\rangle`. values_1: Numerical parameters to be bound to the first set of circuits. values_2: Numerical parameters to be bound to the second set of circuits. - run_options: Backend runtime options used for circuit execution. The order - of priority is\: run_options in ``run`` method > fidelity's default - run_options > primitive's default setting. + options: Primitive backend runtime options used for circuit execution. The order + of priority is\: options in ``run`` method > fidelity's default + options > primitive's default setting. Higher priority setting overrides lower priority setting. Returns: @@ -287,7 +288,7 @@ def run( The job's result is an instance of ``StateFidelityResult``. """ - job = AlgorithmJob(self._run, circuits_1, circuits_2, values_1, values_2, **run_options) + job = AlgorithmJob(self._run, circuits_1, circuits_2, values_1, values_2, **options) job.submit() return job diff --git a/qiskit/algorithms/state_fidelities/compute_uncompute.py b/qiskit/algorithms/state_fidelities/compute_uncompute.py index ff9080e5d3ba..e2798fcc2fe7 100644 --- a/qiskit/algorithms/state_fidelities/compute_uncompute.py +++ b/qiskit/algorithms/state_fidelities/compute_uncompute.py @@ -20,6 +20,7 @@ from qiskit import QuantumCircuit from qiskit.algorithms import AlgorithmError from qiskit.primitives import BaseSampler +from qiskit.providers import Options from .base_state_fidelity import BaseStateFidelity from .state_fidelity_result import StateFidelityResult @@ -48,11 +49,14 @@ class ComputeUncompute(BaseStateFidelity): """ - def __init__(self, sampler: BaseSampler, **run_options) -> None: + def __init__(self, sampler: BaseSampler, options: Options | None = None) -> None: """ Args: sampler: Sampler primitive instance. - run_options: Backend runtime options used for circuit execution. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > fidelity's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting. Raises: ValueError: If the sampler is not an instance of ``BaseSampler``. @@ -62,7 +66,9 @@ def __init__(self, sampler: BaseSampler, **run_options) -> None: f"The sampler should be an instance of BaseSampler, " f"but got {type(sampler)}" ) self._sampler: BaseSampler = sampler - self._default_run_options = run_options + self._default_options = Options() + if options is not None: + self._default_options.update_options(**options) super().__init__() def create_fidelity_circuit( @@ -79,6 +85,11 @@ def create_fidelity_circuit( Returns: The fidelity quantum circuit corresponding to circuit_1 and circuit_2. """ + if len(circuit_1.clbits) > 0: + circuit_1.remove_final_measurements() + if len(circuit_2.clbits) > 0: + circuit_2.remove_final_measurements() + circuit = circuit_1.compose(circuit_2.inverse()) circuit.measure_all() return circuit @@ -89,7 +100,7 @@ def _run( circuits_2: QuantumCircuit | Sequence[QuantumCircuit], values_1: Sequence[float] | Sequence[Sequence[float]] | None = None, values_2: Sequence[float] | Sequence[Sequence[float]] | None = None, - **run_options, + **options, ) -> StateFidelityResult: r""" Computes the state overlap (fidelity) calculation between two @@ -101,10 +112,10 @@ def _run( circuits_2: (Parametrized) quantum circuits preparing :math:`|\phi\rangle`. values_1: Numerical parameters to be bound to the first circuits. values_2: Numerical parameters to be bound to the second circuits. - run_options: Backend runtime options used for circuit execution. The order - of priority is\: run_options in ``run`` method > fidelity's default - run_options > primitive's default setting. - Higher priority setting overrides lower priority setting. + options: Primitive backend runtime options used for circuit execution. + The order of priority is: options in ``run`` method > fidelity's + default options > primitive's default setting. + Higher priority setting overrides lower priority setting. Returns: The result of the fidelity calculation. @@ -122,12 +133,12 @@ def _run( values = self._construct_value_list(circuits_1, circuits_2, values_1, values_2) # The priority of run options is as follows: - # run_options in `evaluate` method > fidelity's default run_options > - # primitive's default run_options. - run_opts = copy(self._default_run_options) - run_opts.update(**run_options) + # options in `evaluate` method > fidelity's default options > + # primitive's default options. + opts = copy(self._default_options) + opts.update_options(**options) - job = self._sampler.run(circuits=circuits, parameter_values=values, **run_opts) + job = self._sampler.run(circuits=circuits, parameter_values=values, **opts.__dict__) try: result = job.result() @@ -141,5 +152,41 @@ def _run( fidelities=fidelities, raw_fidelities=raw_fidelities, metadata=result.metadata, - run_options=run_opts, + options=self._get_local_options(opts.__dict__), ) + + @property + def options(self) -> Options: + """Return the union of estimator options setting and fidelity default options, + where, if the same field is set in both, the fidelity's default options override + the primitive's default setting. + + Returns: + The fidelity default + estimator options. + """ + return self._get_local_options(self._default_options.__dict__) + + def update_default_options(self, **options): + """Update the fidelity's default options setting. + + Args: + **options: The fields to update the default options. + """ + + self._default_options.update_options(**options) + + def _get_local_options(self, options: Options) -> Options: + """Return the union of the primitive's default setting, + the fidelity default options, and the options in the ``run`` method. + The order of priority is: options in ``run`` method > fidelity's + default options > primitive's default setting. + + Args: + options: The fields to update the options + + Returns: + The fidelity default + estimator + run options. + """ + opts = copy(self._sampler.options) + opts.update_options(**options) + return opts diff --git a/qiskit/algorithms/state_fidelities/state_fidelity_result.py b/qiskit/algorithms/state_fidelities/state_fidelity_result.py index 04d4aa0ca411..88dca035f94c 100644 --- a/qiskit/algorithms/state_fidelities/state_fidelity_result.py +++ b/qiskit/algorithms/state_fidelities/state_fidelity_result.py @@ -19,6 +19,8 @@ from typing import Any from dataclasses import dataclass +from qiskit.providers import Options + @dataclass(frozen=True) class StateFidelityResult: @@ -31,5 +33,5 @@ class StateFidelityResult: depending on the error mitigation method used.""" metadata: Sequence[Mapping[str, Any]] """Additional information about the fidelity calculation.""" - run_options: Mapping[str, Any] - """Runtime options for the execution of the fidelity job.""" + options: Options + """Primitive runtime options for the execution of the fidelity job.""" diff --git a/test/python/algorithms/state_fidelities/test_compute_uncompute.py b/test/python/algorithms/state_fidelities/test_compute_uncompute.py index cfadd0ba3a45..99eceb253828 100644 --- a/test/python/algorithms/state_fidelities/test_compute_uncompute.py +++ b/test/python/algorithms/state_fidelities/test_compute_uncompute.py @@ -92,6 +92,10 @@ def test_no_params(self): results = job.result() np.testing.assert_allclose(results.fidelities, np.array([0.25]), atol=1e-16) + job = fidelity.run([self._circuit[2]], [self._circuit[3]], [], []) + results = job.result() + np.testing.assert_allclose(results.fidelities, np.array([0.25]), atol=1e-16) + def test_left_param(self): """test for fidelity with only left parameters""" fidelity = ComputeUncompute(self._sampler) @@ -183,6 +187,61 @@ def test_input_format(self): np.testing.assert_allclose(result_1.fidelities, result_3.fidelities, atol=1e-16) np.testing.assert_allclose(result_1.fidelities, result_4.fidelities, atol=1e-16) + def test_input_measurements(self): + """test for fidelity with measurements on input circuits""" + fidelity = ComputeUncompute(self._sampler) + circuit_1 = self._circuit[0] + circuit_1.measure_all() + circuit_2 = self._circuit[1] + circuit_2.measure_all() + + job = fidelity.run(circuit_1, circuit_2, self._left_params[0], self._right_params[0]) + result = job.result() + np.testing.assert_allclose(result.fidelities, np.array([1.0])) + + def test_options(self): + """Test fidelity's run options""" + sampler_shots = Sampler(options={"shots": 1024}) + + with self.subTest("sampler"): + # Only options in sampler + fidelity = ComputeUncompute(sampler_shots) + options = fidelity.options + job = fidelity.run(self._circuit[2], self._circuit[3]) + result = job.result() + self.assertEqual(options.__dict__, {"shots": 1024}) + self.assertEqual(result.options.__dict__, {"shots": 1024}) + + with self.subTest("fidelity init"): + # Fidelity default options override sampler + # options and add new fields + fidelity = ComputeUncompute(sampler_shots, options={"shots": 2048, "dummy": 100}) + options = fidelity.options + job = fidelity.run(self._circuit[2], self._circuit[3]) + result = job.result() + self.assertEqual(options.__dict__, {"shots": 2048, "dummy": 100}) + self.assertEqual(result.options.__dict__, {"shots": 2048, "dummy": 100}) + + with self.subTest("fidelity update"): + # Update fidelity options + fidelity = ComputeUncompute(sampler_shots, options={"shots": 2048, "dummy": 100}) + fidelity.update_default_options(shots=100) + options = fidelity.options + job = fidelity.run(self._circuit[2], self._circuit[3]) + result = job.result() + self.assertEqual(options.__dict__, {"shots": 100, "dummy": 100}) + self.assertEqual(result.options.__dict__, {"shots": 100, "dummy": 100}) + + with self.subTest("fidelity run"): + # Run options override fidelity options + fidelity = ComputeUncompute(sampler_shots, options={"shots": 2048, "dummy": 100}) + job = fidelity.run(self._circuit[2], self._circuit[3], shots=50, dummy=None) + options = fidelity.options + result = job.result() + # Only default + sampler options. Not run. + self.assertEqual(options.__dict__, {"shots": 2048, "dummy": 100}) + self.assertEqual(result.options.__dict__, {"shots": 50, "dummy": None}) + if __name__ == "__main__": unittest.main() diff --git a/test/python/algorithms/test_estimator_gradient.py b/test/python/algorithms/test_estimator_gradient.py index b4b2c52024d7..e82383a56c47 100644 --- a/test/python/algorithms/test_estimator_gradient.py +++ b/test/python/algorithms/test_estimator_gradient.py @@ -394,24 +394,42 @@ def test_options(self, grad): gradient = grad(estimator, epsilon=1e-6) else: gradient = grad(estimator) + options = gradient.options result = gradient.run([qc], [op], [[1]]).result() - self.assertEqual(result.run_options.get("shots"), 100) + self.assertEqual(result.options.get("shots"), 100) + self.assertEqual(options.get("shots"), 100) with self.subTest("gradient init"): if grad is FiniteDiffEstimatorGradient or grad is SPSAEstimatorGradient: - gradient = grad(estimator, epsilon=1e-6, run_options={"shots": 200}) + gradient = grad(estimator, epsilon=1e-6, options={"shots": 200}) else: - gradient = grad(estimator, run_options={"shots": 200}) + gradient = grad(estimator, options={"shots": 200}) + options = gradient.options result = gradient.run([qc], [op], [[1]]).result() - self.assertEqual(result.run_options.get("shots"), 200) + self.assertEqual(result.options.get("shots"), 200) + self.assertEqual(options.get("shots"), 200) + + with self.subTest("gradient update"): + if grad is FiniteDiffEstimatorGradient or grad is SPSAEstimatorGradient: + gradient = grad(estimator, epsilon=1e-6, options={"shots": 200}) + else: + gradient = grad(estimator, options={"shots": 200}) + gradient.update_default_options(shots=100) + options = gradient.options + result = gradient.run([qc], [op], [[1]]).result() + self.assertEqual(result.options.get("shots"), 100) + self.assertEqual(options.get("shots"), 100) with self.subTest("gradient run"): if grad is FiniteDiffEstimatorGradient or grad is SPSAEstimatorGradient: - gradient = grad(estimator, epsilon=1e-6, run_options={"shots": 200}) + gradient = grad(estimator, epsilon=1e-6, options={"shots": 200}) else: - gradient = grad(estimator, run_options={"shots": 200}) + gradient = grad(estimator, options={"shots": 200}) + options = gradient.options result = gradient.run([qc], [op], [[1]], shots=300).result() - self.assertEqual(result.run_options.get("shots"), 300) + self.assertEqual(result.options.get("shots"), 300) + # Only default + estimator options. Not run. + self.assertEqual(options.get("shots"), 200) if __name__ == "__main__": diff --git a/test/python/algorithms/test_sampler_gradient.py b/test/python/algorithms/test_sampler_gradient.py index 47a82249b680..43ac68c041eb 100644 --- a/test/python/algorithms/test_sampler_gradient.py +++ b/test/python/algorithms/test_sampler_gradient.py @@ -515,7 +515,7 @@ def test_gradient_random_parameters(self, grad): SPSASamplerGradient, ], ) - def test_run_options(self, grad): + def test_options(self, grad): """Test sampler gradient's run options""" a = Parameter("a") qc = QuantumCircuit(1) @@ -527,24 +527,42 @@ def test_run_options(self, grad): gradient = grad(sampler, epsilon=1e-6) else: gradient = grad(sampler) + options = gradient.options result = gradient.run([qc], [[1]]).result() - self.assertEqual(result.run_options.get("shots"), 100) + self.assertEqual(result.options.get("shots"), 100) + self.assertEqual(options.get("shots"), 100) with self.subTest("gradient init"): if grad is FiniteDiffSamplerGradient or grad is SPSASamplerGradient: - gradient = grad(sampler, epsilon=1e-6, run_options={"shots": 200}) + gradient = grad(sampler, epsilon=1e-6, options={"shots": 200}) else: - gradient = grad(sampler, run_options={"shots": 200}) + gradient = grad(sampler, options={"shots": 200}) + options = gradient.options result = gradient.run([qc], [[1]]).result() - self.assertEqual(result.run_options.get("shots"), 200) + self.assertEqual(result.options.get("shots"), 200) + self.assertEqual(options.get("shots"), 200) + + with self.subTest("gradient update"): + if grad is FiniteDiffSamplerGradient or grad is SPSASamplerGradient: + gradient = grad(sampler, epsilon=1e-6, options={"shots": 200}) + else: + gradient = grad(sampler, options={"shots": 200}) + gradient.update_default_options(shots=100) + options = gradient.options + result = gradient.run([qc], [[1]]).result() + self.assertEqual(result.options.get("shots"), 100) + self.assertEqual(options.get("shots"), 100) with self.subTest("gradient run"): if grad is FiniteDiffSamplerGradient or grad is SPSASamplerGradient: - gradient = grad(sampler, epsilon=1e-6, run_options={"shots": 200}) + gradient = grad(sampler, epsilon=1e-6, options={"shots": 200}) else: - gradient = grad(sampler, run_options={"shots": 200}) + gradient = grad(sampler, options={"shots": 200}) + options = gradient.options result = gradient.run([qc], [[1]], shots=300).result() - self.assertEqual(result.run_options.get("shots"), 300) + self.assertEqual(result.options.get("shots"), 300) + # Only default + sampler options. Not run. + self.assertEqual(options.get("shots"), 200) def _quasi2array(quasis: List[QuasiDistribution], num_qubits: int) -> np.ndarray: From ae0ceee6ea63759b2a78409adf304f860e85cd8c Mon Sep 17 00:00:00 2001 From: Manoel Marques Date: Fri, 23 Sep 2022 20:24:10 -0400 Subject: [PATCH 43/56] Rewrite Amplitude Estimators with Primitives (#8656) * Rewrite Amplitude Estimators with Primitives * Update qiskit/algorithms/amplitude_estimators/ae.py Co-authored-by: Julien Gacon * fix errors * Update qiskit/algorithms/amplitude_estimators/ae.py Co-authored-by: dlasecki * Update qiskit/algorithms/amplitude_estimators/fae.py Co-authored-by: dlasecki * Update qiskit/algorithms/amplitude_estimators/fae.py Co-authored-by: dlasecki * Update qiskit/algorithms/amplitude_estimators/iae.py Co-authored-by: dlasecki * fix annotations * Add sampler properties * refactor evaluate_measurements * deprecate qiskit.pulse.utils.deprecated_functionality in favor of qiskit.utils.deprecation.deprecate_function (#8696) * deprecate deprecated_functionality * pylint: disable=cyclic-import * Add reno * Include Terra version in deprecation notice Co-authored-by: Jake Lishman * feat: support sum(LinearMixin) (#8722) * feat: support sum(LinearMixin) This enables the use of `sum(...)` for subclasses of the `LinearMixin` class. It also adds the reflective operand dunder methods `__radd__` and `__rsub__`. * Add crossreferences to release note Co-authored-by: Jake Lishman * set shots on fae sampler * cache circuits during estimate * Change algos estimate * Change from run_options ro options * remove circuits cache list * Update qiskit/algorithms/amplitude_estimators/ae.py Co-authored-by: dlasecki * Update qiskit/algorithms/amplitude_estimators/ae_utils.py Co-authored-by: dlasecki * change slice * Get shots from metadata * Update qiskit/algorithms/amplitude_estimators/iae.py Co-authored-by: dlasecki * Rearrange annotation None * Update qiskit/algorithms/amplitude_estimators/ae.py Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> * Fix deprecation msg Co-authored-by: Julien Gacon Co-authored-by: dlasecki Co-authored-by: Luciano Bello Co-authored-by: Jake Lishman Co-authored-by: Max Rossmannek Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/algorithms/amplitude_estimators/ae.py | 157 ++++++++++++---- .../amplitude_estimators/ae_utils.py | 16 ++ .../amplitude_estimator.py | 15 +- .../estimation_problem.py | 25 +-- qiskit/algorithms/amplitude_estimators/fae.py | 122 ++++++++++-- qiskit/algorithms/amplitude_estimators/iae.py | 174 ++++++++++++++---- .../algorithms/amplitude_estimators/mlae.py | 169 +++++++++++++---- ...lgorithms-primitives-497bae1b2b04f877.yaml | 18 ++ .../algorithms/test_amplitude_estimators.py | 148 ++++++++++++++- 9 files changed, 687 insertions(+), 157 deletions(-) create mode 100644 releasenotes/notes/ae-algorithms-primitives-497bae1b2b04f877.yaml diff --git a/qiskit/algorithms/amplitude_estimators/ae.py b/qiskit/algorithms/amplitude_estimators/ae.py index 4d4c89873235..512405f19c9f 100644 --- a/qiskit/algorithms/amplitude_estimators/ae.py +++ b/qiskit/algorithms/amplitude_estimators/ae.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2018, 2020. +# (C) Copyright IBM 2018, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -12,18 +12,22 @@ """The Quantum Phase Estimation-based Amplitude Estimation algorithm.""" -from typing import Optional, Union, List, Tuple, Dict +from __future__ import annotations from collections import OrderedDict +import warnings import numpy as np from scipy.stats import chi2, norm from scipy.optimize import bisect from qiskit import QuantumCircuit, ClassicalRegister from qiskit.providers import Backend +from qiskit.primitives import BaseSampler from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_function from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult from .ae_utils import pdf_a, derivative_log_pdf_a, bisect_max from .estimation_problem import EstimationProblem +from ..exceptions import AlgorithmError class AmplitudeEstimation(AmplitudeEstimator): @@ -56,9 +60,10 @@ class AmplitudeEstimation(AmplitudeEstimator): def __init__( self, num_eval_qubits: int, - phase_estimation_circuit: Optional[QuantumCircuit] = None, - iqft: Optional[QuantumCircuit] = None, - quantum_instance: Optional[Union[QuantumInstance, Backend]] = None, + phase_estimation_circuit: QuantumCircuit | None = None, + iqft: QuantumCircuit | None = None, + quantum_instance: QuantumInstance | Backend | None = None, + sampler: BaseSampler | None = None, ) -> None: r""" Args: @@ -68,7 +73,9 @@ def __init__( `qiskit.circuit.library.PhaseEstimation` when None. iqft: The inverse quantum Fourier transform component, defaults to using a standard implementation from `qiskit.circuit.library.QFT` when None. - quantum_instance: The backend (or `QuantumInstance`) to execute the circuits on. + quantum_instance: Pending deprecation\: The backend (or `QuantumInstance`) to execute + the circuits on. + sampler: A sampler primitive to evaluate the circuits. Raises: ValueError: If the number of evaluation qubits is smaller than 1. @@ -79,7 +86,16 @@ def __init__( super().__init__() # set quantum instance - self.quantum_instance = quantum_instance + if quantum_instance is not None: + warnings.warn( + "The quantum_instance argument has been superseded by the sampler argument. " + "This argument will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + self.quantum_instance = quantum_instance # get parameters self._m = num_eval_qubits # pylint: disable=invalid-name @@ -87,10 +103,35 @@ def __init__( self._iqft = iqft self._pec = phase_estimation_circuit + self._sampler = sampler + + @property + def sampler(self) -> BaseSampler | None: + """Get the sampler primitive. + + Returns: + The sampler primitive to evaluate the circuits. + """ + return self._sampler + + @sampler.setter + def sampler(self, sampler: BaseSampler) -> None: + """Set sampler primitive. + + Args: + sampler: A sampler primitive to evaluate the circuits. + """ + self._sampler = sampler @property - def quantum_instance(self) -> Optional[QuantumInstance]: - """Get the quantum instance. + @deprecate_function( + "The AmplitudeEstimation.quantum_instance getter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def quantum_instance(self) -> QuantumInstance | None: + """Pending deprecation; Get the quantum instance. Returns: The quantum instance used to run this algorithm. @@ -98,8 +139,14 @@ def quantum_instance(self) -> Optional[QuantumInstance]: return self._quantum_instance @quantum_instance.setter - def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None: - """Set quantum instance. + @deprecate_function( + "The AmplitudeEstimation.quantum_instance setter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def quantum_instance(self, quantum_instance: QuantumInstance | Backend) -> None: + """Pending deprecation; Set quantum instance. Args: quantum_instance: The quantum instance used to run this algorithm. @@ -149,9 +196,9 @@ def construct_circuit( def evaluate_measurements( self, - circuit_results: Union[Dict[str, int], np.ndarray], + circuit_results: dict[str, int] | np.ndarray, threshold: float = 1e-6, - ) -> Tuple[Dict[int, float], Dict[float, float]]: + ) -> tuple[dict[int, float], dict[float, float]]: """Evaluate the results from the circuit simulation. Given the probabilities from statevector simulation of the QAE circuit, compute the @@ -159,7 +206,7 @@ def evaluate_measurements( Args: circuit_results: The circuit result from the QAE circuit. Can be either a counts dict - or a statevector. + or a statevector or a quasi-probabilities dict. threshold: Measurements with probabilities below the threshold are discarded. Returns: @@ -168,7 +215,10 @@ def evaluate_measurements( """ # compute grid sample and measurement dicts if isinstance(circuit_results, dict): - samples, measurements = self._evaluate_count_results(circuit_results) + if set(map(type, circuit_results.values())) == {int}: + samples, measurements = self._evaluate_count_results(circuit_results) + else: + samples, measurements = self._evaluate_quasi_probabilities_results(circuit_results) else: samples, measurements = self._evaluate_statevector_results(circuit_results) @@ -197,12 +247,24 @@ def _evaluate_statevector_results(self, statevector): return samples, measurements - def _evaluate_count_results(self, counts): + def _evaluate_quasi_probabilities_results(self, circuit_results): # construct probabilities measurements = OrderedDict() samples = OrderedDict() - shots = self._quantum_instance._run_config.shots + for state, probability in circuit_results.items(): + # reverts the last _m items + y = int(state[: -self._m - 1 : -1], 2) + measurements[y] = probability + a = np.round(np.power(np.sin(y * np.pi / 2**self._m), 2), decimals=7) + samples[a] = samples.get(a, 0.0) + probability + + return samples, measurements + def _evaluate_count_results(self, counts): + # construct probabilities + measurements = OrderedDict() + samples = OrderedDict() + shots = sum(counts.values()) for state, count in counts.items(): y = int(state.replace(" ", "")[: self._m][::-1], 2) probability = count / shots @@ -283,12 +345,16 @@ def estimate(self, estimation_problem: EstimationProblem) -> "AmplitudeEstimatio Raises: ValueError: If `state_preparation` or `objective_qubits` are not set in the `estimation_problem`. + ValueError: A quantum instance or sampler must be provided. + AlgorithmError: Sampler job run error. """ # check if A factory or state_preparation has been set if estimation_problem.state_preparation is None: raise ValueError( "The state_preparation property of the estimation problem must be set." ) + if self._quantum_instance is None and self._sampler is None: + raise ValueError("A quantum instance or sampler must be provided.") if estimation_problem.objective_qubits is None: raise ValueError("The objective_qubits property of the estimation problem must be set.") @@ -297,24 +363,43 @@ def estimate(self, estimation_problem: EstimationProblem) -> "AmplitudeEstimatio result.num_evaluation_qubits = self._m result.post_processing = estimation_problem.post_processing - if self._quantum_instance.is_statevector: + shots = 0 + if self._quantum_instance is not None and self._quantum_instance.is_statevector: circuit = self.construct_circuit(estimation_problem, measurement=False) # run circuit on statevector simulator statevector = self._quantum_instance.execute(circuit).get_statevector() result.circuit_results = statevector - # store number of shots: convention is 1 shot for statevector, # needed so that MLE works! - result.shots = 1 + shots = 1 else: - # run circuit on QASM simulator circuit = self.construct_circuit(estimation_problem, measurement=True) - counts = self._quantum_instance.execute(circuit).get_counts() - result.circuit_results = counts - - # store shots - result.shots = sum(counts.values()) - + if self._quantum_instance is not None: + # run circuit on QASM simulator + result.circuit_results = self._quantum_instance.execute(circuit).get_counts() + shots = sum(result.circuit_results.values()) + else: + try: + job = self._sampler.run([circuit]) + ret = job.result() + except Exception as exc: + raise AlgorithmError("The job was not completed successfully. ") from exc + + shots = ret.metadata[0].get("shots") + if shots is None: + result.circuit_results = { + np.binary_repr(k, circuit.num_qubits): v + for k, v in ret.quasi_dists[0].items() + } + shots = 1 + else: + result.circuit_results = { + np.binary_repr(k, circuit.num_qubits): round(v * shots) + for k, v in ret.quasi_dists[0].items() + } + + # store shots + result.shots = shots samples, measurements = self.evaluate_measurements(result.circuit_results) result.samples = samples @@ -349,7 +434,7 @@ def estimate(self, estimation_problem: EstimationProblem) -> "AmplitudeEstimatio @staticmethod def compute_confidence_interval( result: "AmplitudeEstimationResult", alpha: float = 0.05, kind: str = "likelihood_ratio" - ) -> Tuple[float, float]: + ) -> tuple[float, float]: """Compute the (1 - alpha) confidence interval. Args: @@ -415,12 +500,12 @@ def mle_processed(self, value: float) -> None: self._mle_processed = value @property - def samples_processed(self) -> Dict[float, float]: + def samples_processed(self) -> dict[float, float]: """Return the post-processed measurement samples with their measurement probability.""" return self._samples_processed @samples_processed.setter - def samples_processed(self, value: Dict[float, float]) -> None: + def samples_processed(self, value: dict[float, float]) -> None: """Set the post-processed measurement samples.""" self._samples_processed = value @@ -435,22 +520,22 @@ def mle(self, value: float) -> None: self._mle = value @property - def samples(self) -> Dict[float, float]: + def samples(self) -> dict[float, float]: """Return the measurement samples with their measurement probability.""" return self._samples @samples.setter - def samples(self, value: Dict[float, float]) -> None: + def samples(self, value: dict[float, float]) -> None: """Set the measurement samples with their measurement probability.""" self._samples = value @property - def measurements(self) -> Dict[int, float]: + def measurements(self) -> dict[int, float]: """Return the measurements as integers with their measurement probability.""" return self._y_measurements @measurements.setter - def measurements(self, value: Dict[int, float]) -> None: + def measurements(self, value: dict[int, float]) -> None: """Set the measurements as integers with their measurement probability.""" self._y_measurements = value @@ -500,7 +585,7 @@ def integrand(x): def _fisher_confint( result: AmplitudeEstimationResult, alpha: float, observed: bool = False -) -> List[float]: +) -> list[float]: """Compute the Fisher information confidence interval for the MLE of the previous run. Args: @@ -520,7 +605,7 @@ def _fisher_confint( return tuple(result.post_processing(bound) for bound in confint) -def _likelihood_ratio_confint(result: AmplitudeEstimationResult, alpha: float) -> List[float]: +def _likelihood_ratio_confint(result: AmplitudeEstimationResult, alpha: float) -> list[float]: """Compute the likelihood ratio confidence interval for the MLE of the previous run. Args: diff --git a/qiskit/algorithms/amplitude_estimators/ae_utils.py b/qiskit/algorithms/amplitude_estimators/ae_utils.py index bd695be45a63..87ce83a9cc42 100644 --- a/qiskit/algorithms/amplitude_estimators/ae_utils.py +++ b/qiskit/algorithms/amplitude_estimators/ae_utils.py @@ -20,6 +20,22 @@ # pylint: disable=invalid-name +def _probabilities_from_sampler_result(num_qubits, result, estimation_problem): + """calculate probabilities from sampler result""" + prob = 0 + for bit, probabilities in result.quasi_dists[0].items(): + i = int(bit) + # get bitstring of objective qubits + full_state = bin(i)[2:].zfill(num_qubits)[::-1] + state = "".join([full_state[i] for i in estimation_problem.objective_qubits]) + + # check if it is a good state + if estimation_problem.is_good_state(state[::-1]): + prob += probabilities + + return prob + + def bisect_max(f, a, b, steps=50, minwidth=1e-12, retval=False): """Find the maximum of the real-valued function f in the interval [a, b] using bisection. diff --git a/qiskit/algorithms/amplitude_estimators/amplitude_estimator.py b/qiskit/algorithms/amplitude_estimators/amplitude_estimator.py index 93136b034737..eb2e5a7f4f67 100644 --- a/qiskit/algorithms/amplitude_estimators/amplitude_estimator.py +++ b/qiskit/algorithms/amplitude_estimators/amplitude_estimator.py @@ -12,8 +12,9 @@ """The Amplitude Estimation interface.""" +from __future__ import annotations from abc import abstractmethod, ABC -from typing import Union, Optional, Dict, Callable, Tuple +from typing import Callable import numpy as np from .estimation_problem import EstimationProblem @@ -49,12 +50,12 @@ def __init__(self) -> None: self._confidence_interval_processed = None @property - def circuit_results(self) -> Optional[Union[np.ndarray, Dict[str, int]]]: + def circuit_results(self) -> np.ndarray | dict[str, int] | None: """Return the circuit results. Can be a statevector or counts dictionary.""" return self._circuit_results @circuit_results.setter - def circuit_results(self, value: Union[np.ndarray, Dict[str, int]]) -> None: + def circuit_results(self, value: np.ndarray | dict[str, int]) -> None: """Set the circuit results.""" self._circuit_results = value @@ -109,21 +110,21 @@ def post_processing(self, post_processing: Callable[[float], float]) -> None: self._post_processing = post_processing @property - def confidence_interval(self) -> Tuple[float, float]: + def confidence_interval(self) -> tuple[float, float]: """Return the confidence interval for the amplitude (95% interval by default).""" return self._confidence_interval @confidence_interval.setter - def confidence_interval(self, confidence_interval: Tuple[float, float]) -> None: + def confidence_interval(self, confidence_interval: tuple[float, float]) -> None: """Set the confidence interval for the amplitude (95% interval by default).""" self._confidence_interval = confidence_interval @property - def confidence_interval_processed(self) -> Tuple[float, float]: + def confidence_interval_processed(self) -> tuple[float, float]: """Return the post-processed confidence interval (95% interval by default).""" return self._confidence_interval_processed @confidence_interval_processed.setter - def confidence_interval_processed(self, confidence_interval: Tuple[float, float]) -> None: + def confidence_interval_processed(self, confidence_interval: tuple[float, float]) -> None: """Set the post-processed confidence interval (95% interval by default).""" self._confidence_interval_processed = confidence_interval diff --git a/qiskit/algorithms/amplitude_estimators/estimation_problem.py b/qiskit/algorithms/amplitude_estimators/estimation_problem.py index be563614809b..d38c3c0e2f3c 100644 --- a/qiskit/algorithms/amplitude_estimators/estimation_problem.py +++ b/qiskit/algorithms/amplitude_estimators/estimation_problem.py @@ -12,8 +12,9 @@ """The Estimation problem class.""" +from __future__ import annotations import warnings -from typing import Optional, List, Callable, Union +from typing import Callable import numpy from qiskit.circuit import QuantumCircuit, QuantumRegister @@ -32,10 +33,10 @@ class EstimationProblem: def __init__( self, state_preparation: QuantumCircuit, - objective_qubits: Union[int, List[int]], - grover_operator: Optional[QuantumCircuit] = None, - post_processing: Optional[Callable[[float], float]] = None, - is_good_state: Optional[Callable[[str], bool]] = None, + objective_qubits: int | list[int], + grover_operator: QuantumCircuit | None = None, + post_processing: Callable[[float], float] | None = None, + is_good_state: Callable[[str], bool] | None = None, ) -> None: r""" Args: @@ -59,7 +60,7 @@ def __init__( self._is_good_state = is_good_state @property - def state_preparation(self) -> Optional[QuantumCircuit]: + def state_preparation(self) -> QuantumCircuit | None: r"""Get the :math:`\mathcal{A}` operator encoding the amplitude :math:`a`. Returns: @@ -77,7 +78,7 @@ def state_preparation(self, state_preparation: QuantumCircuit) -> None: self._state_preparation = state_preparation @property - def objective_qubits(self) -> List[int]: + def objective_qubits(self) -> list[int]: """Get the criterion for a measurement outcome to be in a 'good' state. Returns: @@ -89,7 +90,7 @@ def objective_qubits(self) -> List[int]: return self._objective_qubits @objective_qubits.setter - def objective_qubits(self, objective_qubits: Union[int, List[int]]) -> None: + def objective_qubits(self, objective_qubits: int | list[int]) -> None: """Set the criterion for a measurement outcome to be in a 'good' state. Args: @@ -110,7 +111,7 @@ def post_processing(self) -> Callable[[float], float]: return self._post_processing @post_processing.setter - def post_processing(self, post_processing: Optional[Callable[[float], float]]) -> None: + def post_processing(self, post_processing: Callable[[float], float] | None) -> None: """Set the post processing function. Args: @@ -132,7 +133,7 @@ def is_good_state(self) -> Callable[[str], bool]: return self._is_good_state @is_good_state.setter - def is_good_state(self, is_good_state: Optional[Callable[[str], bool]]) -> None: + def is_good_state(self, is_good_state: Callable[[str], bool] | None) -> None: """Set the ``is_good_state`` function. Args: @@ -142,7 +143,7 @@ def is_good_state(self, is_good_state: Optional[Callable[[str], bool]]) -> None: self._is_good_state = is_good_state @property - def grover_operator(self) -> Optional[QuantumCircuit]: + def grover_operator(self) -> QuantumCircuit | None: r"""Get the :math:`\mathcal{Q}` operator, or Grover operator. If the Grover operator is not set, we try to build it from the :math:`\mathcal{A}` operator @@ -172,7 +173,7 @@ def grover_operator(self) -> Optional[QuantumCircuit]: return GroverOperator(oracle, self.state_preparation) @grover_operator.setter - def grover_operator(self, grover_operator: Optional[QuantumCircuit]) -> None: + def grover_operator(self, grover_operator: QuantumCircuit | None) -> None: r"""Set the :math:`\mathcal{Q}` operator. Args: diff --git a/qiskit/algorithms/amplitude_estimators/fae.py b/qiskit/algorithms/amplitude_estimators/fae.py index db8ee9151d50..697556840df0 100644 --- a/qiskit/algorithms/amplitude_estimators/fae.py +++ b/qiskit/algorithms/amplitude_estimators/fae.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2017, 2020. +# (C) Copyright IBM 2017, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -12,16 +12,20 @@ """Faster Amplitude Estimation.""" -from typing import Optional, Union, List, Tuple +from __future__ import annotations +import warnings import numpy as np from qiskit.circuit import QuantumCircuit, ClassicalRegister from qiskit.providers import Backend +from qiskit.primitives import BaseSampler from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_function from qiskit.algorithms.exceptions import AlgorithmError from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult from .estimation_problem import EstimationProblem +from .ae_utils import _probabilities_from_sampler_result class FasterAmplitudeEstimation(AmplitudeEstimator): @@ -50,14 +54,17 @@ def __init__( delta: float, maxiter: int, rescale: bool = True, - quantum_instance: Optional[Union[QuantumInstance, Backend]] = None, + quantum_instance: QuantumInstance | Backend | None = None, + sampler: BaseSampler | None = None, ) -> None: r""" Args: delta: The probability that the true value is outside of the final confidence interval. maxiter: The number of iterations, the maximal power of Q is `2 ** (maxiter - 1)`. rescale: Whether to rescale the problem passed to `estimate`. - quantum_instance: The quantum instance or backend to run the circuits. + quantum_instance: Pending deprecation\: The quantum instance or backend + to run the circuits. + sampler: A sampler primitive to evaluate the circuits. .. note:: @@ -66,16 +73,51 @@ def __init__( """ super().__init__() - self.quantum_instance = quantum_instance + # set quantum instance + if quantum_instance is not None: + warnings.warn( + "The quantum_instance argument has been superseded by the sampler argument. " + "This argument will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + self.quantum_instance = quantum_instance self._shots = (int(1944 * np.log(2 / delta)), int(972 * np.log(2 / delta))) self._rescale = rescale self._delta = delta self._maxiter = maxiter self._num_oracle_calls = 0 + self._sampler = sampler @property - def quantum_instance(self) -> Optional[QuantumInstance]: - """Get the quantum instance. + def sampler(self) -> BaseSampler | None: + """Get the sampler primitive. + + Returns: + The sampler primitive to evaluate the circuits. + """ + return self._sampler + + @sampler.setter + def sampler(self, sampler: BaseSampler) -> None: + """Set sampler primitive. + + Args: + sampler: A sampler primitive to evaluate the circuits. + """ + self._sampler = sampler + + @property + @deprecate_function( + "The FasterAmplitudeEstimation.quantum_instance getter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def quantum_instance(self) -> QuantumInstance | None: + """Pending deprecation; Get the quantum instance. Returns: The quantum instance used to run this algorithm. @@ -83,8 +125,14 @@ def quantum_instance(self) -> Optional[QuantumInstance]: return self._quantum_instance @quantum_instance.setter - def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None: - """Set quantum instance. + @deprecate_function( + "The FasterAmplitudeEstimation.quantum_instance setter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def quantum_instance(self, quantum_instance: QuantumInstance | Backend) -> None: + """Pending deprecation; Set quantum instance. Args: quantum_instance: The quantum instance used to run this algorithm. @@ -94,10 +142,26 @@ def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> self._quantum_instance = quantum_instance def _cos_estimate(self, estimation_problem, k, shots): - if self._quantum_instance is None: - raise AlgorithmError("Quantum instance must be set.") + if self._quantum_instance is None and self._sampler is None: + raise ValueError("A quantum instance or sampler must be provided.") - if self._quantum_instance.is_statevector: + if self._sampler is not None: + circuit = self.construct_circuit(estimation_problem, k, measurement=True) + try: + job = self._sampler.run([circuit], shots=shots) + result = job.result() + except Exception as exc: + raise AlgorithmError("The job was not completed successfully. ") from exc + + if shots is None: + shots = 1 + self._num_oracle_calls += (2 * k + 1) * shots + # sum over all probabilities where the objective qubits are 1 + prob = _probabilities_from_sampler_result( + circuit.num_qubits, result, estimation_problem + ) + cos_estimate = 1 - 2 * prob + elif self._quantum_instance.is_statevector: circuit = self.construct_circuit(estimation_problem, k, measurement=False) statevector = self._quantum_instance.execute(circuit).get_statevector() @@ -136,7 +200,7 @@ def _chernoff(self, cos, shots): def construct_circuit( self, estimation_problem: EstimationProblem, k: int, measurement: bool = False - ) -> Union[QuantumCircuit, Tuple[QuantumCircuit, List[int]]]: + ) -> QuantumCircuit | tuple[QuantumCircuit, list[int]]: r"""Construct the circuit :math:`Q^k X |0\rangle>`. The A operator is the unitary specifying the QAE problem and Q the associated Grover @@ -179,21 +243,37 @@ def construct_circuit( return circuit def estimate(self, estimation_problem: EstimationProblem) -> "FasterAmplitudeEstimationResult": + """Run the amplitude estimation algorithm on provided estimation problem. + + Args: + estimation_problem: The estimation problem. + + Returns: + An amplitude estimation results object. + + Raises: + ValueError: A quantum instance or Sampler must be provided. + AlgorithmError: Sampler run error. + """ + if self._quantum_instance is None and self._sampler is None: + raise ValueError("A quantum instance or sampler must be provided.") + self._num_oracle_calls = 0 - user_defined_shots = self.quantum_instance._run_config.shots + user_defined_shots = ( + self._quantum_instance._run_config.shots if self._quantum_instance is not None else None + ) if self._rescale: problem = estimation_problem.rescale(0.25) else: problem = estimation_problem - if self._quantum_instance.is_statevector: + if self._quantum_instance is not None and self._quantum_instance.is_statevector: cos = self._cos_estimate(problem, k=0, shots=1) theta = np.arccos(cos) / 2 theta_ci = [theta, theta] theta_cis = [theta_ci] num_steps = num_first_stage_steps = 1 - else: theta_ci = [0, np.arcsin(0.25)] first_stage = True @@ -240,7 +320,7 @@ def cos_estimate(power, shots): result.num_oracle_queries = self._num_oracle_calls result.num_steps = num_steps result.num_first_state_steps = num_first_stage_steps - if self._quantum_instance.is_statevector: + if self._quantum_instance is not None and self._quantum_instance.is_statevector: result.success_probability = 1 else: result.success_probability = 1 - (2 * self._maxiter - j_0) * self._delta @@ -252,7 +332,9 @@ def cos_estimate(power, shots): result.theta_intervals = theta_cis # reset shots to what the user had defined - self.quantum_instance._run_config.shots = user_defined_shots + if self._quantum_instance is not None: + self._quantum_instance._run_config.shots = user_defined_shots + return result @@ -297,11 +379,11 @@ def num_first_state_steps(self, num_steps: int) -> None: self._num_first_state_steps = num_steps @property - def theta_intervals(self) -> List[List[float]]: + def theta_intervals(self) -> list[list[float]]: """Return the confidence intervals for the angles in each iteration.""" return self._theta_intervals @theta_intervals.setter - def theta_intervals(self, value: List[List[float]]) -> None: + def theta_intervals(self, value: list[list[float]]) -> None: """Set the confidence intervals for the angles in each iteration.""" self._theta_intervals = value diff --git a/qiskit/algorithms/amplitude_estimators/iae.py b/qiskit/algorithms/amplitude_estimators/iae.py index 42727cc5aea0..59a4429d0bf4 100644 --- a/qiskit/algorithms/amplitude_estimators/iae.py +++ b/qiskit/algorithms/amplitude_estimators/iae.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2018, 2020. +# (C) Copyright IBM 2018, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -12,16 +12,21 @@ """The Iterative Quantum Amplitude Estimation Algorithm.""" -from typing import Optional, Union, List, Tuple, Dict, cast +from __future__ import annotations +from typing import cast +import warnings import numpy as np from scipy.stats import beta from qiskit import ClassicalRegister, QuantumCircuit from qiskit.providers import Backend +from qiskit.primitives import BaseSampler from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_function from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult from .estimation_problem import EstimationProblem +from .ae_utils import _probabilities_from_sampler_result from ..exceptions import AlgorithmError @@ -52,7 +57,8 @@ def __init__( alpha: float, confint_method: str = "beta", min_ratio: float = 2, - quantum_instance: Optional[Union[QuantumInstance, Backend]] = None, + quantum_instance: QuantumInstance | Backend | None = None, + sampler: BaseSampler | None = None, ) -> None: r""" The output of the algorithm is an estimate for the amplitude `a`, that with at least @@ -66,7 +72,8 @@ def __init__( each iteration, can be 'chernoff' for the Chernoff intervals or 'beta' for the Clopper-Pearson intervals (default) min_ratio: Minimal q-ratio (:math:`K_{i+1} / K_i`) for FindNextK - quantum_instance: Quantum Instance or Backend + quantum_instance: Pending deprecation\: Quantum Instance or Backend + sampler: A sampler primitive to evaluate the circuits. Raises: AlgorithmError: if the method to compute the confidence intervals is not supported @@ -89,17 +96,51 @@ def __init__( super().__init__() # set quantum instance - self.quantum_instance = quantum_instance + if quantum_instance is not None: + warnings.warn( + "The quantum_instance argument has been superseded by the sampler argument. " + "This argument will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + self.quantum_instance = quantum_instance # store parameters self._epsilon = epsilon_target self._alpha = alpha self._min_ratio = min_ratio self._confint_method = confint_method + self._sampler = sampler @property - def quantum_instance(self) -> Optional[QuantumInstance]: - """Get the quantum instance. + def sampler(self) -> BaseSampler | None: + """Get the sampler primitive. + + Returns: + The sampler primitive to evaluate the circuits. + """ + return self._sampler + + @sampler.setter + def sampler(self, sampler: BaseSampler) -> None: + """Set sampler primitive. + + Args: + sampler: A sampler primitive to evaluate the circuits. + """ + self._sampler = sampler + + @property + @deprecate_function( + "The IterativeAmplitudeEstimation.quantum_instance getter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def quantum_instance(self) -> QuantumInstance | None: + """Pending deprecation; Get the quantum instance. Returns: The quantum instance used to run this algorithm. @@ -107,8 +148,14 @@ def quantum_instance(self) -> Optional[QuantumInstance]: return self._quantum_instance @quantum_instance.setter - def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None: - """Set quantum instance. + @deprecate_function( + "The IterativeAmplitudeEstimation.quantum_instance setter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def quantum_instance(self, quantum_instance: QuantumInstance | Backend) -> None: + """Pending deprecation; Set quantum instance. Args: quantum_instance: The quantum instance used to run this algorithm. @@ -139,9 +186,9 @@ def _find_next_k( self, k: int, upper_half_circle: bool, - theta_interval: Tuple[float, float], + theta_interval: tuple[float, float], min_ratio: float = 2.0, - ) -> Tuple[int, bool]: + ) -> tuple[int, bool]: """Find the largest integer k_next, such that the interval (4 * k_next + 2)*theta_interval lies completely in [0, pi] or [pi, 2pi], for theta_interval = (theta_lower, theta_upper). @@ -238,9 +285,9 @@ def construct_circuit( def _good_state_probability( self, problem: EstimationProblem, - counts_or_statevector: Union[Dict[str, int], np.ndarray], + counts_or_statevector: dict[str, int] | np.ndarray, num_state_qubits: int, - ) -> Union[Tuple[int, float], float]: + ) -> tuple[int, float] | float: """Get the probability to measure '1' in the last qubit. Args: @@ -279,6 +326,21 @@ def _good_state_probability( def estimate( self, estimation_problem: EstimationProblem ) -> "IterativeAmplitudeEstimationResult": + """Run the amplitude estimation algorithm on provided estimation problem. + + Args: + estimation_problem: The estimation problem. + + Returns: + An amplitude estimation results object. + + Raises: + ValueError: A quantum instance or Sampler must be provided. + AlgorithmError: Sampler job run error. + """ + if self._quantum_instance is None and self._sampler is None: + raise ValueError("A quantum instance or sampler must be provided.") + # initialize memory variables powers = [0] # list of powers k: Q^k, (called 'k' in paper) ratios = [] # list of multiplication factors (called 'q' in paper) @@ -293,9 +355,9 @@ def estimate( ) upper_half_circle = True # initially theta is in the upper half-circle - # for statevector we can directly return the probability to measure 1 - # note, that no iterations here are necessary - if self._quantum_instance.is_statevector: + if self._quantum_instance is not None and self._quantum_instance.is_statevector: + # for statevector we can directly return the probability to measure 1 + # note, that no iterations here are necessary # simulate circuit circuit = self.construct_circuit(estimation_problem, k=0, measurement=False) ret = self._quantum_instance.execute(circuit) @@ -308,7 +370,7 @@ def estimate( prob = self._good_state_probability(estimation_problem, statevector, num_qubits) prob = cast(float, prob) # tell MyPy it's a float and not Tuple[int, float ] - a_confidence_interval = [prob, prob] # type: List[float] + a_confidence_interval = [prob, prob] # type: list[float] a_intervals.append(a_confidence_interval) theta_i_interval = [ @@ -319,8 +381,8 @@ def estimate( else: num_iterations = 0 # keep track of the number of iterations - shots = self._quantum_instance._run_config.shots # number of shots per iteration - + # number of shots per iteration + shots = 0 # do while loop, keep in mind that we scaled theta mod 2pi such that it lies in [0,1] while theta_intervals[-1][1] - theta_intervals[-1][0] > self._epsilon / np.pi: num_iterations += 1 @@ -339,10 +401,52 @@ def estimate( # run measurements for Q^k A|0> circuit circuit = self.construct_circuit(estimation_problem, k, measurement=True) - ret = self._quantum_instance.execute(circuit) - - # get the counts and store them - counts = ret.get_counts(circuit) + counts = {} + if self._quantum_instance is not None: + ret = self._quantum_instance.execute(circuit) + # get the counts and store them + counts = ret.get_counts(circuit) + shots = self._quantum_instance._run_config.shots + else: + try: + job = self._sampler.run([circuit]) + ret = job.result() + except Exception as exc: + raise AlgorithmError("The job was not completed successfully. ") from exc + + shots = ret.metadata[0].get("shots") + if shots is None: + circuit = self.construct_circuit(estimation_problem, k=0, measurement=True) + try: + job = self._sampler.run([circuit]) + ret = job.result() + except Exception as exc: + raise AlgorithmError( + "The job was not completed successfully. " + ) from exc + + # calculate the probability of measuring '1' + prob = _probabilities_from_sampler_result( + circuit.num_qubits, ret, estimation_problem + ) + prob = cast( + float, prob + ) # tell MyPy it's a float and not Tuple[int, float ] + + a_confidence_interval = [prob, prob] # type: list[float] + a_intervals.append(a_confidence_interval) + + theta_i_interval = [ + np.arccos(1 - 2 * a_i) / 2 / np.pi for a_i in a_confidence_interval + ] + theta_intervals.append(theta_i_interval) + num_oracle_queries = 0 # no Q-oracle call, only a single one to A + break + + counts = { + np.binary_repr(k, circuit.num_qubits): round(v * shots) + for k, v in ret.quasi_dists[0].items() + } # calculate the probability of measuring '1', 'prob' is a_i in the paper num_qubits = circuit.num_qubits - circuit.num_ancillas @@ -483,59 +587,59 @@ def epsilon_estimated_processed(self, value: float) -> None: self._epsilon_estimated_processed = value @property - def estimate_intervals(self) -> List[List[float]]: + def estimate_intervals(self) -> list[list[float]]: """Return the confidence intervals for the estimate in each iteration.""" return self._estimate_intervals @estimate_intervals.setter - def estimate_intervals(self, value: List[List[float]]) -> None: + def estimate_intervals(self, value: list[list[float]]) -> None: """Set the confidence intervals for the estimate in each iteration.""" self._estimate_intervals = value @property - def theta_intervals(self) -> List[List[float]]: + def theta_intervals(self) -> list[list[float]]: """Return the confidence intervals for the angles in each iteration.""" return self._theta_intervals @theta_intervals.setter - def theta_intervals(self, value: List[List[float]]) -> None: + def theta_intervals(self, value: list[list[float]]) -> None: """Set the confidence intervals for the angles in each iteration.""" self._theta_intervals = value @property - def powers(self) -> List[int]: + def powers(self) -> list[int]: """Return the powers of the Grover operator in each iteration.""" return self._powers @powers.setter - def powers(self, value: List[int]) -> None: + def powers(self, value: list[int]) -> None: """Set the powers of the Grover operator in each iteration.""" self._powers = value @property - def ratios(self) -> List[float]: + def ratios(self) -> list[float]: r"""Return the ratios :math:`K_{i+1}/K_{i}` for each iteration :math:`i`.""" return self._ratios @ratios.setter - def ratios(self, value: List[float]) -> None: + def ratios(self, value: list[float]) -> None: r"""Set the ratios :math:`K_{i+1}/K_{i}` for each iteration :math:`i`.""" self._ratios = value @property - def confidence_interval_processed(self) -> Tuple[float, float]: + def confidence_interval_processed(self) -> tuple[float, float]: """Return the post-processed confidence interval.""" return self._confidence_interval_processed @confidence_interval_processed.setter - def confidence_interval_processed(self, value: Tuple[float, float]) -> None: + def confidence_interval_processed(self, value: tuple[float, float]) -> None: """Set the post-processed confidence interval.""" self._confidence_interval_processed = value def _chernoff_confint( value: float, shots: int, max_rounds: int, alpha: float -) -> Tuple[float, float]: +) -> tuple[float, float]: """Compute the Chernoff confidence interval for `shots` i.i.d. Bernoulli trials. The confidence interval is @@ -559,7 +663,7 @@ def _chernoff_confint( return lower, upper -def _clopper_pearson_confint(counts: int, shots: int, alpha: float) -> Tuple[float, float]: +def _clopper_pearson_confint(counts: int, shots: int, alpha: float) -> tuple[float, float]: """Compute the Clopper-Pearson confidence interval for `shots` i.i.d. Bernoulli trials. Args: diff --git a/qiskit/algorithms/amplitude_estimators/mlae.py b/qiskit/algorithms/amplitude_estimators/mlae.py index 21ca0cb35d1a..8d46e1a2c21e 100644 --- a/qiskit/algorithms/amplitude_estimators/mlae.py +++ b/qiskit/algorithms/amplitude_estimators/mlae.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2018, 2020. +# (C) Copyright IBM 2018, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -12,7 +12,9 @@ """The Maximum Likelihood Amplitude Estimation algorithm.""" -from typing import Optional, List, Union, Tuple, Dict, Callable +from __future__ import annotations +import typing +import warnings import numpy as np from scipy.optimize import brute from scipy.stats import norm, chi2 @@ -20,12 +22,16 @@ from qiskit.providers import Backend from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit from qiskit.utils import QuantumInstance +from qiskit.primitives import BaseSampler +from qiskit.utils.deprecation import deprecate_function from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult from .estimation_problem import EstimationProblem from ..exceptions import AlgorithmError -MINIMIZER = Callable[[Callable[[float], float], List[Tuple[float, float]]], float] +MINIMIZER = typing.Callable[ + [typing.Callable[[float], float], typing.List[typing.Tuple[float, float]]], float +] class MaximumLikelihoodAmplitudeEstimation(AmplitudeEstimator): @@ -49,9 +55,10 @@ class in named ``MaximumLikelihoodAmplitudeEstimation``. def __init__( self, - evaluation_schedule: Union[List[int], int], - minimizer: Optional[MINIMIZER] = None, - quantum_instance: Optional[Union[QuantumInstance, Backend]] = None, + evaluation_schedule: list[int] | int, + minimizer: MINIMIZER | None = None, + quantum_instance: QuantumInstance | Backend | None = None, + sampler: BaseSampler | None = None, ) -> None: r""" Args: @@ -64,7 +71,8 @@ def __init__( according to ``evaluation_schedule``. The minimizer takes a function as first argument and a list of (float, float) tuples (as bounds) as second argument and returns a single float which is the found minimum. - quantum_instance: Quantum Instance or Backend + quantum_instance: Pending deprecation\: Quantum Instance or Backend + sampler: A sampler primitive to evaluate the circuits. Raises: ValueError: If the number of oracle circuits is smaller than 1. @@ -73,7 +81,16 @@ def __init__( super().__init__() # set quantum instance - self.quantum_instance = quantum_instance + if quantum_instance is not None: + warnings.warn( + "The quantum_instance argument has been superseded by the sampler argument. " + "This argument will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + self.quantum_instance = quantum_instance # get parameters if isinstance(evaluation_schedule, int): @@ -98,9 +115,35 @@ def default_minimizer(objective_fn, bounds): else: self._minimizer = minimizer + self._sampler = sampler + + @property + def sampler(self) -> BaseSampler | None: + """Get the sampler primitive. + + Returns: + The sampler primitive to evaluate the circuits. + """ + return self._sampler + + @sampler.setter + def sampler(self, sampler: BaseSampler) -> None: + """Set sampler primitive. + + Args: + sampler: A sampler primitive to evaluate the circuits. + """ + self._sampler = sampler + @property - def quantum_instance(self) -> Optional[QuantumInstance]: - """Get the quantum instance. + @deprecate_function( + "The MaximumLikelihoodAmplitudeEstimation.quantum_instance getter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def quantum_instance(self) -> QuantumInstance | None: + """Pending deprecation; Get the quantum instance. Returns: The quantum instance used to run this algorithm. @@ -108,8 +151,14 @@ def quantum_instance(self) -> Optional[QuantumInstance]: return self._quantum_instance @quantum_instance.setter - def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None: - """Set quantum instance. + @deprecate_function( + "The MaximumLikelihoodAmplitudeEstimation.quantum_instance setter is pending deprecation. " + "This property will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def quantum_instance(self, quantum_instance: QuantumInstance | Backend) -> None: + """Pending deprecation; Set quantum instance. Args: quantum_instance: The quantum instance used to run this algorithm. @@ -120,7 +169,7 @@ def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> def construct_circuits( self, estimation_problem: EstimationProblem, measurement: bool = False - ) -> List[QuantumCircuit]: + ) -> list[QuantumCircuit]: """Construct the Amplitude Estimation w/o QPE quantum circuits. Args: @@ -148,7 +197,7 @@ def construct_circuits( qc_0.compose(estimation_problem.state_preparation, inplace=True) for k in self._evaluation_schedule: - qc_k = qc_0.copy(name="qc_a_q_%s" % k) + qc_k = qc_0.copy(name=f"qc_a_q_{k}") if k != 0: qc_k.compose(estimation_problem.grover_operator.power(k), inplace=True) @@ -170,7 +219,7 @@ def compute_confidence_interval( alpha: float, kind: str = "fisher", apply_post_processing: bool = False, - ) -> Tuple[float, float]: + ) -> tuple[float, float]: """Compute the `alpha` confidence interval using the method `kind`. The confidence level is (1 - `alpha`) and supported kinds are 'fisher', @@ -216,11 +265,11 @@ def compute_confidence_interval( def compute_mle( self, - circuit_results: Union[List[Dict[str, int]], List[np.ndarray]], + circuit_results: list[dict[str, int]] | list[np.ndarray], estimation_problem: EstimationProblem, - num_state_qubits: Optional[int] = None, + num_state_qubits: int | None = None, return_counts: bool = False, - ) -> Union[float, Tuple[float, List[float]]]: + ) -> float | tuple[float, list[float]]: """Compute the MLE via a grid-search. This is a stable approach if sufficient gridpoints are used. @@ -259,10 +308,25 @@ def loglikelihood(theta): def estimate( self, estimation_problem: EstimationProblem ) -> "MaximumLikelihoodAmplitudeEstimationResult": + """Run the amplitude estimation algorithm on provided estimation problem. + + Args: + estimation_problem: The estimation problem. + + Returns: + An amplitude estimation results object. + + Raises: + ValueError: A quantum instance or Sampler must be provided. + AlgorithmError: If `state_preparation` is not set in + `estimation_problem`. + AlgorithmError: Sampler job run error + """ + if self._quantum_instance is None and self._sampler is None: + raise ValueError("A quantum instance or sampler must be provided.") if estimation_problem.state_preparation is None: raise AlgorithmError( - "Either the state_preparation variable or the a_factory " - "(deprecated) must be set to run the algorithm." + "The state_preparation property of the estimation problem must be set." ) result = MaximumLikelihoodAmplitudeEstimationResult() @@ -270,7 +334,8 @@ def estimate( result.minimizer = self._minimizer result.post_processing = estimation_problem.post_processing - if self._quantum_instance.is_statevector: + shots = 0 + if self._quantum_instance is not None and self._quantum_instance.is_statevector: # run circuit on statevector simulator circuits = self.construct_circuits(estimation_problem, measurement=False) ret = self._quantum_instance.execute(circuits) @@ -281,17 +346,41 @@ def estimate( # to count the number of Q-oracle calls (don't count shots) result.shots = 1 - else: - # run circuit on QASM simulator circuits = self.construct_circuits(estimation_problem, measurement=True) - ret = self._quantum_instance.execute(circuits) - - # get counts and construct MLE input - result.circuit_results = [ret.get_counts(circuit) for circuit in circuits] - - # to count the number of Q-oracle calls - result.shots = self._quantum_instance._run_config.shots + if self._quantum_instance is not None: + # run circuit on QASM simulator + ret = self._quantum_instance.execute(circuits) + # get counts and construct MLE input + result.circuit_results = [ret.get_counts(circuit) for circuit in circuits] + shots = self._quantum_instance._run_config.shots + else: + try: + job = self._sampler.run(circuits) + ret = job.result() + except Exception as exc: + raise AlgorithmError("The job was not completed successfully. ") from exc + + result.circuit_results = [] + shots = ret.metadata[0].get("shots") + if shots is None: + for i, quasi_dist in enumerate(ret.quasi_dists): + circuit_result = { + np.binary_repr(k, circuits[i].num_qubits): v + for k, v in quasi_dist.items() + } + result.circuit_results.append(circuit_result) + shots = 1 + else: + # get counts and construct MLE input + for circuit in circuits: + counts = { + np.binary_repr(k, circuit.num_qubits): round(v * shots) + for k, v in ret.quasi_dists[0].items() + } + result.circuit_results.append(counts) + + result.shots = shots # run maximum likelihood estimation num_state_qubits = circuits[0].num_qubits - circuits[0].num_ancillas @@ -353,22 +442,22 @@ def minimizer(self, value: callable) -> None: self._minimizer = value @property - def good_counts(self) -> List[float]: + def good_counts(self) -> list[float]: """Return the percentage of good counts per circuit power.""" return self._good_counts @good_counts.setter - def good_counts(self, counts: List[float]) -> None: + def good_counts(self, counts: list[float]) -> None: """Set the percentage of good counts per circuit power.""" self._good_counts = counts @property - def evaluation_schedule(self) -> List[int]: + def evaluation_schedule(self) -> list[int]: """Return the evaluation schedule for the powers of the Grover operator.""" return self._evaluation_schedule @evaluation_schedule.setter - def evaluation_schedule(self, evaluation_schedule: List[int]) -> None: + def evaluation_schedule(self, evaluation_schedule: list[int]) -> None: """Set the evaluation schedule for the powers of the Grover operator.""" self._evaluation_schedule = evaluation_schedule @@ -397,7 +486,7 @@ def _safe_max(array, default=(np.pi / 2)): def _compute_fisher_information( result: "MaximumLikelihoodAmplitudeEstimationResult", - num_sum_terms: Optional[int] = None, + num_sum_terms: int | None = None, observed: bool = False, ) -> float: """Compute the Fisher information. @@ -455,7 +544,7 @@ def _compute_fisher_information( def _fisher_confint( result: MaximumLikelihoodAmplitudeEstimationResult, alpha: float = 0.05, observed: bool = False -) -> Tuple[float, float]: +) -> tuple[float, float]: """Compute the `alpha` confidence interval based on the Fisher information. Args: @@ -489,8 +578,8 @@ def _fisher_confint( def _likelihood_ratio_confint( result: MaximumLikelihoodAmplitudeEstimationResult, alpha: float = 0.05, - nevals: Optional[int] = None, -) -> List[float]: + nevals: int | None = None, +) -> list[float]: """Compute the likelihood-ratio confidence interval. Args: @@ -538,10 +627,10 @@ def loglikelihood(theta, one_counts, all_counts): def _get_counts( - circuit_results: List[Union[np.ndarray, List[float], Dict[str, int]]], + circuit_results: list[np.ndarray | list[float], dict[str, int]], estimation_problem: EstimationProblem, num_state_qubits: int, -) -> Tuple[List[float], List[int]]: +) -> tuple[list[float], list[int]]: """Get the good and total counts. Returns: diff --git a/releasenotes/notes/ae-algorithms-primitives-497bae1b2b04f877.yaml b/releasenotes/notes/ae-algorithms-primitives-497bae1b2b04f877.yaml new file mode 100644 index 000000000000..35e204ef1f60 --- /dev/null +++ b/releasenotes/notes/ae-algorithms-primitives-497bae1b2b04f877.yaml @@ -0,0 +1,18 @@ +--- +features: + - | + Added :class:`~qiskit.primitives.BaseSampler` as ``init`` parameter + for the following amplitude estimation algorithms: + :class:`~qiskit.algorithms.amplitude_estimators.AmplitudeEstimation`, + :class:`~qiskit.algorithms.amplitude_estimators.FasterAmplitudeEstimation`, + :class:`~qiskit.algorithms.amplitude_estimators.IterativeAmplitudeEstimation`, + :class:`~qiskit.algorithms.amplitude_estimators.MaximumLikelihoodAmplitudeEstimation` +deprecations: + - | + Using :class:`~qiskit.utils.QuantumInstance` or :class:`~qiskit.providers.Backend` as + ``init`` parameters will now issue a ``PendingDeprecationWarning`` + for the following amplitude estimation algorithms: + :class:`~qiskit.algorithms.amplitude_estimators.AmplitudeEstimation`, + :class:`~qiskit.algorithms.amplitude_estimators.FasterAmplitudeEstimation`, + :class:`~qiskit.algorithms.amplitude_estimators.IterativeAmplitudeEstimation`, + :class:`~qiskit.algorithms.amplitude_estimators.MaximumLikelihoodAmplitudeEstimation` diff --git a/test/python/algorithms/test_amplitude_estimators.py b/test/python/algorithms/test_amplitude_estimators.py index 0b41e863aed2..8360ff4fdd91 100644 --- a/test/python/algorithms/test_amplitude_estimators.py +++ b/test/python/algorithms/test_amplitude_estimators.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2018, 2020. +# (C) Copyright IBM 2018, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -27,6 +27,7 @@ EstimationProblem, ) from qiskit.quantum_info import Operator, Statevector +from qiskit.primitives import Sampler class BernoulliStateIn(QuantumCircuit): @@ -94,12 +95,8 @@ def setUp(self): seed_simulator=2, seed_transpiler=2, ) - self._unitary = QuantumInstance( - backend=BasicAer.get_backend("unitary_simulator"), - shots=1, - seed_simulator=42, - seed_transpiler=91, - ) + + self._sampler = Sampler(options={"seed": 2}) def qasm(shots=100): return QuantumInstance( @@ -111,6 +108,11 @@ def qasm(shots=100): self._qasm = qasm + def sampler_shots(shots=100): + return Sampler(options={"shots": shots, "seed": 2}) + + self._sampler_shots = sampler_shots + @idata( [ [0.2, AmplitudeEstimation(2), {"estimation": 0.5, "mle": 0.2}], @@ -136,6 +138,30 @@ def test_statevector(self, prob, qae, expect): value, getattr(result, key), places=3, msg=f"estimate `{key}` failed" ) + @idata( + [ + [0.2, AmplitudeEstimation(2), {"estimation": 0.5, "mle": 0.2}], + [0.49, AmplitudeEstimation(3), {"estimation": 0.5, "mle": 0.49}], + [0.2, MaximumLikelihoodAmplitudeEstimation([0, 1, 2]), {"estimation": 0.2}], + [0.49, MaximumLikelihoodAmplitudeEstimation(3), {"estimation": 0.49}], + [0.2, IterativeAmplitudeEstimation(0.1, 0.1), {"estimation": 0.2}], + [0.49, IterativeAmplitudeEstimation(0.001, 0.01), {"estimation": 0.49}], + [0.2, FasterAmplitudeEstimation(0.1, 3, rescale=False), {"estimation": 0.199}], + [0.12, FasterAmplitudeEstimation(0.1, 2, rescale=False), {"estimation": 0.12}], + ] + ) + @unpack + def test_sampler(self, prob, qae, expect): + """sampler test""" + qae.sampler = self._sampler + problem = EstimationProblem(BernoulliStateIn(prob), 0, BernoulliGrover(prob)) + + result = qae.estimate(problem) + for key, value in expect.items(): + self.assertAlmostEqual( + value, getattr(result, key), places=3, msg=f"estimate `{key}` failed" + ) + @idata( [ [0.2, 100, AmplitudeEstimation(4), {"estimation": 0.14644, "mle": 0.193888}], @@ -168,6 +194,38 @@ def test_qasm(self, prob, shots, qae, expect): value, getattr(result, key), places=3, msg=f"estimate `{key}` failed" ) + @idata( + [ + [0.2, 100, AmplitudeEstimation(4), {"estimation": 0.500000, "mle": 0.562783}], + [0.0, 1000, AmplitudeEstimation(2), {"estimation": 0.0, "mle": 0.0}], + [ + 0.2, + 100, + MaximumLikelihoodAmplitudeEstimation([0, 1, 2, 4, 8]), + {"estimation": 0.474790}, + ], + [0.8, 10, IterativeAmplitudeEstimation(0.1, 0.05), {"estimation": 0.811711}], + [0.2, 1000, FasterAmplitudeEstimation(0.1, 3, rescale=False), {"estimation": 0.199073}], + [ + 0.12, + 100, + FasterAmplitudeEstimation(0.01, 3, rescale=False), + {"estimation": 0.120016}, + ], + ] + ) + @unpack + def test_sampler_with_shots(self, prob, shots, qae, expect): + """sampler with shots test""" + qae.sampler = self._sampler_shots(shots) + problem = EstimationProblem(BernoulliStateIn(prob), [0], BernoulliGrover(prob)) + + result = qae.estimate(problem) + for key, value in expect.items(): + self.assertAlmostEqual( + value, getattr(result, key), places=3, msg=f"estimate `{key}` failed" + ) + @data(True, False) def test_qae_circuit(self, efficient_circuit): """Test circuits resulting from canonical amplitude estimation. @@ -321,6 +379,8 @@ def setUp(self): seed_transpiler=41, ) + self._sampler = Sampler(options={"seed": 123}) + def qasm(shots=100): return QuantumInstance( backend=BasicAer.get_backend("qasm_simulator"), @@ -331,6 +391,11 @@ def qasm(shots=100): self._qasm = qasm + def sampler_shots(shots=100): + return Sampler(options={"shots": shots, "seed": 7192}) + + self._sampler_shots = sampler_shots + @idata( [ [2, AmplitudeEstimation(2), {"estimation": 0.5, "mle": 0.270290}], @@ -355,6 +420,28 @@ def test_statevector(self, n, qae, expect): value, getattr(result, key), places=3, msg=f"estimate `{key}` failed" ) + @idata( + [ + [2, AmplitudeEstimation(2), {"estimation": 0.5, "mle": 0.270290}], + [4, MaximumLikelihoodAmplitudeEstimation(4), {"estimation": 0.0}], + [3, IterativeAmplitudeEstimation(0.1, 0.1), {"estimation": 0.0}], + [3, FasterAmplitudeEstimation(0.01, 1), {"estimation": 0.017687}], + ] + ) + @unpack + def test_sampler(self, n, qae, expect): + """sampler end-to-end test""" + # construct factories for A and Q + # qae.state_preparation = SineIntegral(n) + qae.sampler = self._sampler + estimation_problem = EstimationProblem(SineIntegral(n), objective_qubits=[n]) + + result = qae.estimate(estimation_problem) + for key, value in expect.items(): + self.assertAlmostEqual( + value, getattr(result, key), places=3, msg=f"estimate `{key}` failed" + ) + @idata( [ [4, 10, AmplitudeEstimation(2), {"estimation": 0.5, "mle": 0.333333}], @@ -376,6 +463,27 @@ def test_qasm(self, n, shots, qae, expect): value, getattr(result, key), places=3, msg=f"estimate `{key}` failed" ) + @idata( + [ + [4, 10, AmplitudeEstimation(2), {"estimation": 0.0, "mle": 0.0}], + [3, 10, MaximumLikelihoodAmplitudeEstimation(2), {"estimation": 0.0}], + [3, 1000, IterativeAmplitudeEstimation(0.01, 0.01), {"estimation": 0.0}], + [3, 1000, FasterAmplitudeEstimation(0.1, 4), {"estimation": 0.000551}], + ] + ) + @unpack + def test_sampler_with_shots(self, n, shots, qae, expect): + """Sampler with shots end-to-end test.""" + # construct factories for A and Q + qae.sampler = self._sampler_shots(shots) + estimation_problem = EstimationProblem(SineIntegral(n), objective_qubits=[n]) + + result = qae.estimate(estimation_problem) + for key, value in expect.items(): + self.assertAlmostEqual( + value, getattr(result, key), places=3, msg=f"estimate `{key}` failed" + ) + @idata( [ [ @@ -454,6 +562,10 @@ def test_iqae_confidence_intervals(self): class TestFasterAmplitudeEstimation(QiskitAlgorithmsTestCase): """Specific tests for Faster AE.""" + def setUp(self): + super().setUp() + self._sampler = Sampler(options={"seed": 2}) + def test_rescaling(self): """Test the rescaling.""" amplitude = 0.8 @@ -490,6 +602,28 @@ def test_run_without_rescaling(self): value_without_scaling = np.sin(theta) ** 2 self.assertAlmostEqual(result.estimation, value_without_scaling) + def test_sampler_run_without_rescaling(self): + """Run Faster AE without rescaling if the amplitude is in [0, 1/4].""" + # construct estimation problem + prob = 0.11 + a_op = QuantumCircuit(1) + a_op.ry(2 * np.arcsin(np.sqrt(prob)), 0) + problem = EstimationProblem(a_op, objective_qubits=[0]) + + # construct algo without rescaling + fae = FasterAmplitudeEstimation(0.1, 1, rescale=False, sampler=self._sampler) + + # run the algo + result = fae.estimate(problem) + + # assert the result is correct + self.assertAlmostEqual(result.estimation, prob, places=2) + + # assert no rescaling was used + theta = np.mean(result.theta_intervals[-1]) + value_without_scaling = np.sin(theta) ** 2 + self.assertAlmostEqual(result.estimation, value_without_scaling) + def test_rescaling_with_custom_grover_raises(self): """Test that the rescaling option fails if a custom Grover operator is used.""" prob = 0.8 From 09706be9864fd8dae234c4fac25105e097b42f12 Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Fri, 23 Sep 2022 21:22:41 -0400 Subject: [PATCH 44/56] Remove duplicate optimization loop in level 3 PassManager (#8785) For some time (I expect since #6403 but maybe before) we've been running the optimization loop for optimization level 3 twice for no reason. This is clearly a mistake as it adds a single extra run of all the optimization passes since we've already reached a steady state in depth and size by this point. This is just a waste of time and was unintentional. This commit removes the unintended duplication. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/transpiler/preset_passmanagers/level3.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/qiskit/transpiler/preset_passmanagers/level3.py b/qiskit/transpiler/preset_passmanagers/level3.py index 2092e23519e2..9fe4b61de427 100644 --- a/qiskit/transpiler/preset_passmanagers/level3.py +++ b/qiskit/transpiler/preset_passmanagers/level3.py @@ -296,8 +296,6 @@ def _unroll_condition(property_set): optimization.append( _opt + _unroll_if_out_of_basis + _depth_check + _size_check, do_while=_opt_control ) - opt_loop = _depth_check + _opt + _unroll_if_out_of_basis - optimization.append(opt_loop, do_while=_opt_control) else: optimization = plugin_manager.get_passmanager_stage( "optimization", optimization_method, pass_manager_config, optimization_level=3 From a5a8657fdcf4c94da7b1311e1b041b0f34cae7a0 Mon Sep 17 00:00:00 2001 From: Ikko Hamamura Date: Mon, 26 Sep 2022 17:11:06 +0900 Subject: [PATCH 45/56] Fix Errors in Primitives (#8760) * Fix tests * fix tests --- qiskit/primitives/base_estimator.py | 41 ++++++++++++------------ qiskit/primitives/base_sampler.py | 31 +++++++++--------- test/python/primitives/test_estimator.py | 29 ++++++++--------- test/python/primitives/test_sampler.py | 21 ++++++------ 4 files changed, 59 insertions(+), 63 deletions(-) diff --git a/qiskit/primitives/base_estimator.py b/qiskit/primitives/base_estimator.py index 37ded5e2a061..f3c4f2363fa0 100644 --- a/qiskit/primitives/base_estimator.py +++ b/qiskit/primitives/base_estimator.py @@ -103,7 +103,6 @@ from qiskit.circuit import Parameter, QuantumCircuit from qiskit.circuit.parametertable import ParameterView -from qiskit.exceptions import QiskitError from qiskit.opflow import PauliSumOp from qiskit.providers import JobV1 as Job from qiskit.providers import Options @@ -144,7 +143,7 @@ def __init__( options: Default options. Raises: - QiskitError: For mismatch of circuits and parameters list. + ValueError: For mismatch of circuits and parameters list. """ if circuits is not None or observables is not None or parameters is not None: warn( @@ -172,13 +171,13 @@ def __init__( else: self._parameters = [ParameterView(par) for par in parameters] if len(self._parameters) != len(self._circuits): - raise QiskitError( + raise ValueError( f"Different number of parameters ({len(self._parameters)}) and " f"circuits ({len(self._circuits)})" ) for i, (circ, params) in enumerate(zip(self._circuits, self._parameters)): if circ.num_parameters != len(params): - raise QiskitError( + raise ValueError( f"Different numbers of parameters of {i}-th circuit: " f"expected {circ.num_parameters}, actual {len(params)}." ) @@ -319,8 +318,8 @@ def __call__( EstimatorResult: The result of the estimator. Raises: - QiskitError: For mismatch of object id. - QiskitError: For mismatch of length of Sequence. + ValueError: For mismatch of object id. + ValueError: For mismatch of length of Sequence. """ # Support ndarray @@ -335,7 +334,7 @@ def __call__( for circuit in circuits ] if any(circuit is None for circuit in circuits): - raise QiskitError( + raise ValueError( "The circuits passed when calling estimator is not one of the circuits used to " "initialize the session." ) @@ -346,7 +345,7 @@ def __call__( for observable in observables ] if any(observable is None for observable in observables): - raise QiskitError( + raise ValueError( "The observables passed when calling estimator is not one of the observables used to " "initialize the session." ) @@ -358,7 +357,7 @@ def __call__( if parameter_values is None: for i in circuits: if len(self._circuits[i].parameters) != 0: - raise QiskitError( + raise ValueError( f"The {i}-th circuit is parameterised," "but parameter values are not given." ) @@ -366,19 +365,19 @@ def __call__( # Validation if len(circuits) != len(observables): - raise QiskitError( + raise ValueError( f"The number of circuits ({len(circuits)}) does not match " f"the number of observables ({len(observables)})." ) if len(circuits) != len(parameter_values): - raise QiskitError( + raise ValueError( f"The number of circuits ({len(circuits)}) does not match " f"the number of parameter value sets ({len(parameter_values)})." ) for i, value in zip(circuits, parameter_values): if len(value) != len(self._parameters[i]): - raise QiskitError( + raise ValueError( f"The number of values ({len(value)}) does not match " f"the number of parameters ({len(self._parameters[i])}) for the {i}-th circuit." ) @@ -387,19 +386,19 @@ def __call__( circuit_num_qubits = self.circuits[circ_i].num_qubits observable_num_qubits = self.observables[obs_i].num_qubits if circuit_num_qubits != observable_num_qubits: - raise QiskitError( + raise ValueError( f"The number of qubits of the {circ_i}-th circuit ({circuit_num_qubits}) does " f"not match the number of qubits of the {obs_i}-th observable " f"({observable_num_qubits})." ) if max(circuits) >= len(self.circuits): - raise QiskitError( + raise ValueError( f"The number of circuits is {len(self.circuits)}, " f"but the index {max(circuits)} is given." ) if max(observables) >= len(self.observables): - raise QiskitError( + raise ValueError( f"The number of circuits is {len(self.observables)}, " f"but the index {max(observables)} is given." ) @@ -451,7 +450,7 @@ def run( The job object of EstimatorResult. Raises: - QiskitError: Invalid arguments are given. + ValueError: Invalid arguments are given. """ # Support ndarray if isinstance(parameter_values, np.ndarray): @@ -461,7 +460,7 @@ def run( if parameter_values is None: for i, circuit in enumerate(circuits): if circuit.num_parameters != 0: - raise QiskitError( + raise ValueError( f"The {i}-th circuit is parameterised," "but parameter values are not given." ) @@ -469,26 +468,26 @@ def run( # Validation if len(circuits) != len(observables): - raise QiskitError( + raise ValueError( f"The number of circuits ({len(circuits)}) does not match " f"the number of observables ({len(observables)})." ) if len(circuits) != len(parameter_values): - raise QiskitError( + raise ValueError( f"The number of circuits ({len(circuits)}) does not match " f"the number of parameter value sets ({len(parameter_values)})." ) for i, (circuit, parameter_value) in enumerate(zip(circuits, parameter_values)): if len(parameter_value) != circuit.num_parameters: - raise QiskitError( + raise ValueError( f"The number of values ({len(parameter_value)}) does not match " f"the number of parameters ({circuit.num_parameters}) for the {i}-th circuit." ) for i, (circuit, observable) in enumerate(zip(circuits, observables)): if circuit.num_qubits != observable.num_qubits: - raise QiskitError( + raise ValueError( f"The number of qubits of the {i}-th circuit ({circuit.num_qubits}) does " f"not match the number of qubits of the {i}-th observable " f"({observable.num_qubits})." diff --git a/qiskit/primitives/base_sampler.py b/qiskit/primitives/base_sampler.py index 8f97b61d6db9..6edcaa76c43d 100644 --- a/qiskit/primitives/base_sampler.py +++ b/qiskit/primitives/base_sampler.py @@ -94,7 +94,6 @@ from qiskit.circuit import Parameter, QuantumCircuit from qiskit.circuit.parametertable import ParameterView -from qiskit.exceptions import QiskitError from qiskit.providers import JobV1 as Job from qiskit.providers import Options from qiskit.utils.deprecation import deprecate_arguments, deprecate_function @@ -125,7 +124,7 @@ def __init__( options: Default options. Raises: - QiskitError: For mismatch of circuits and parameters list. + ValueError: For mismatch of circuits and parameters list. """ if circuits is not None or parameters is not None: warn( @@ -148,7 +147,7 @@ def __init__( else: self._parameters = [ParameterView(par) for par in parameters] if len(self._parameters) != len(self._circuits): - raise QiskitError( + raise ValueError( f"Different number of parameters ({len(self._parameters)}) " f"and circuits ({len(self._circuits)})" ) @@ -253,8 +252,8 @@ def __call__( ``parameter_values[i]``. Raises: - QiskitError: For mismatch of object id. - QiskitError: For mismatch of length of Sequence. + ValueError: For mismatch of object id. + ValueError: For mismatch of length of Sequence. """ # Support ndarray if isinstance(parameter_values, np.ndarray): @@ -268,7 +267,7 @@ def __call__( for circuit in circuits ] if any(circuit is None for circuit in circuits): - raise QiskitError( + raise ValueError( "The circuits passed when calling sampler is not one of the circuits used to " "initialize the session." ) @@ -279,7 +278,7 @@ def __call__( if parameter_values is None: for i in circuits: if len(self._circuits[i].parameters) != 0: - raise QiskitError( + raise ValueError( f"The {i}-th circuit ({len(circuits)}) is parameterised," "but parameter values are not given." ) @@ -287,20 +286,20 @@ def __call__( # Validation if len(circuits) != len(parameter_values): - raise QiskitError( + raise ValueError( f"The number of circuits ({len(circuits)}) does not match " f"the number of parameter value sets ({len(parameter_values)})." ) for i, value in zip(circuits, parameter_values): if len(value) != len(self._parameters[i]): - raise QiskitError( + raise ValueError( f"The number of values ({len(value)}) does not match " f"the number of parameters ({len(self._parameters[i])}) for the {i}-th circuit." ) if max(circuits) >= len(self.circuits): - raise QiskitError( + raise ValueError( f"The number of circuits is {len(self.circuits)}, " f"but the index {max(circuits)} is given." ) @@ -331,7 +330,7 @@ def run( ``circuits[i]`` evaluated with parameters bound as ``parameter_values[i]``. Raises: - QiskitError: Invalid arguments are given. + ValueError: Invalid arguments are given. """ # Support ndarray if isinstance(parameter_values, np.ndarray): @@ -341,7 +340,7 @@ def run( if parameter_values is None: for i, circuit in enumerate(circuits): if circuit.num_parameters != 0: - raise QiskitError( + raise ValueError( f"The {i}-th circuit ({len(circuits)}) is parameterised," "but parameter values are not given." ) @@ -349,21 +348,21 @@ def run( # Validation if len(circuits) != len(parameter_values): - raise QiskitError( + raise ValueError( f"The number of circuits ({len(circuits)}) does not match " f"the number of parameter value sets ({len(parameter_values)})." ) for i, (circuit, parameter_value) in enumerate(zip(circuits, parameter_values)): if len(parameter_value) != circuit.num_parameters: - raise QiskitError( + raise ValueError( f"The number of values ({len(parameter_value)}) does not match " f"the number of parameters ({circuit.num_parameters}) for the {i}-th circuit." ) for i, circuit in enumerate(circuits): if circuit.num_clbits == 0: - raise QiskitError( + raise ValueError( f"The {i}-th circuit does not have any classical bit. " "Sampler requires classical bits, plus measurements " "on the desired qubits." @@ -371,7 +370,7 @@ def run( mapping = final_measurement_mapping(circuit) if set(range(circuit.num_clbits)) != set(mapping.values()): - raise QiskitError( + raise ValueError( f"Some classical bits of the {i}-th circuit are not used for measurements." f" the number of classical bits ({circuit.num_clbits})," f" the used classical bits ({set(mapping.values())})." diff --git a/test/python/primitives/test_estimator.py b/test/python/primitives/test_estimator.py index c3125380fe34..36b9682cc545 100644 --- a/test/python/primitives/test_estimator.py +++ b/test/python/primitives/test_estimator.py @@ -18,7 +18,6 @@ from qiskit.circuit import QuantumCircuit from qiskit.circuit.library import RealAmplitudes -from qiskit.exceptions import QiskitError from qiskit.opflow import PauliSumOp from qiskit.primitives import Estimator, EstimatorResult from qiskit.providers import JobV1 @@ -288,17 +287,17 @@ def test_errors(self): with self.assertWarns(DeprecationWarning): est = Estimator([qc, qc2], [op, op2], [[]] * 2) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): est([0], [1], [[]]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): est([1], [0], [[]]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): est([0], [0], [[1e4]]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): est([1], [1], [[1, 2]]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): est([0, 1], [1], [[1]]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): est([0], [0, 1], [[1]]) def test_empty_parameter(self): @@ -362,7 +361,7 @@ def test_passing_objects(self): circuit = QuantumCircuit(2) with self.assertWarns(DeprecationWarning): estimator = Estimator([self.ansatz], [self.observable]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): result = estimator( circuits=[self.ansatz, circuit], observables=[self.observable, self.observable], @@ -373,7 +372,7 @@ def test_passing_objects(self): observable = SparsePauliOp(["ZX"]) with self.assertWarns(DeprecationWarning): estimator = Estimator([self.ansatz], [self.observable]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): result = estimator( circuits=[self.ansatz, self.ansatz], observables=[observable, self.observable], @@ -521,17 +520,17 @@ def test_run_errors(self): op2 = SparsePauliOp.from_list([("II", 1)]) est = Estimator() - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): est.run([qc], [op2], [[]]).result() - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): est.run([qc2], [op], [[]]).result() - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): est.run([qc], [op], [[1e4]]).result() - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): est.run([qc2], [op2], [[1, 2]]).result() - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): est.run([qc, qc2], [op2], [[1]]).result() - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): est.run([qc], [op, op2], [[1]]).result() def test_run_numpy_params(self): diff --git a/test/python/primitives/test_sampler.py b/test/python/primitives/test_sampler.py index dbdc048b69b6..a53d3ef7315c 100644 --- a/test/python/primitives/test_sampler.py +++ b/test/python/primitives/test_sampler.py @@ -21,7 +21,6 @@ from qiskit import QuantumCircuit, pulse, transpile from qiskit.circuit import Parameter from qiskit.circuit.library import RealAmplitudes -from qiskit.exceptions import QiskitError from qiskit.primitives import Sampler, SamplerResult from qiskit.primitives.utils import _circuit_key from qiskit.providers import JobStatus, JobV1 @@ -352,11 +351,11 @@ def test_errors(self): with self.assertWarns(DeprecationWarning): sampler = Sampler([qc1, qc2], [qc1.parameters, qc2.parameters]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): sampler([0], [[1e2]]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): sampler([1], [[]]) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): sampler([1], [[1e2]]) def test_empty_parameter(self): @@ -425,7 +424,7 @@ def test_passing_objects(self): circuit = QuantumCircuit(2) with self.assertWarns(DeprecationWarning): sampler = Sampler(circuits=self._pqc) - with self.assertRaises(QiskitError), self.assertWarns(DeprecationWarning): + with self.assertRaises(ValueError), self.assertWarns(DeprecationWarning): result = sampler(circuits=[circuit], parameter_values=params) @combine(indices=[[0], [1], [0, 1]]) @@ -584,22 +583,22 @@ def test_run_errors(self): sampler = Sampler() with self.subTest("set parameter values to a non-parameterized circuit"): - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): _ = sampler.run([qc1], [[1e2]]) with self.subTest("missing all parameter values for a parameterized circuit"): - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): _ = sampler.run([qc2], [[]]) with self.subTest("missing some parameter values for a parameterized circuit"): - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): _ = sampler.run([qc2], [[1e2]]) with self.subTest("too many parameter values for a parameterized circuit"): - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): _ = sampler.run([qc2], [[1e2]] * 100) with self.subTest("no classical bits"): - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): _ = sampler.run([qc3], [[]]) with self.subTest("no measurement"): - with self.assertRaises(QiskitError): + with self.assertRaises(ValueError): _ = sampler.run([qc4], [[]]) def test_run_empty_parameter(self): From a74dfdf3efc1fcc9493b007d168ce1002ae6b294 Mon Sep 17 00:00:00 2001 From: Pedro Rivero Date: Mon, 26 Sep 2022 06:17:24 -0500 Subject: [PATCH 46/56] Add functional option to `circuit_key` primitives util (#8775) * Add functional option to circuit_key primitives util * Fix lint * Remove id from circuit_key and make it functional by default Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/primitives/utils.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/qiskit/primitives/utils.py b/qiskit/primitives/utils.py index 053fb17291bf..e12e342862bf 100644 --- a/qiskit/primitives/utils.py +++ b/qiskit/primitives/utils.py @@ -113,7 +113,7 @@ def final_measurement_mapping(circuit: QuantumCircuit) -> dict[int, int]: return mapping -def _circuit_key(circuit: QuantumCircuit) -> tuple: +def _circuit_key(circuit: QuantumCircuit, functional: bool = True) -> tuple: """Private key function for QuantumCircuit. This is the workaround until :meth:`QuantumCircuit.__hash__` will be introduced. @@ -121,12 +121,12 @@ def _circuit_key(circuit: QuantumCircuit) -> tuple: Args: circuit: Input quantum circuit. + functional: If True, the returned key only includes functional data (i.e. execution related). Returns: - Key for directory. + Composite key for circuit. """ - return ( - id(circuit), + functional_key: tuple = ( circuit.num_qubits, circuit.num_clbits, circuit.num_parameters, @@ -135,6 +135,12 @@ def _circuit_key(circuit: QuantumCircuit) -> tuple: ), None if circuit._op_start_times is None else tuple(circuit._op_start_times), ) + if functional: + return functional_key + return ( + circuit.name, + *functional_key, + ) def bound_circuit_to_instruction(circuit: QuantumCircuit) -> Instruction: From 85476f47f22a65b72a2b409d366c7f22d9e5a55a Mon Sep 17 00:00:00 2001 From: sebastian-mair <45604440+sebastian-mair@users.noreply.github.com> Date: Mon, 26 Sep 2022 15:55:39 +0200 Subject: [PATCH 47/56] Update documentation for BaseEstimator and BaseSampler: issues #8517 and #8516 (#8560) * Update Estimator description and example, to match curr. implementation. * Update Sampler description and example, to match curr. implementation. * make small adjustments and corr :meth: annotations * fix linting errors * update according to ikkoham's comments Co-authored-by: Ikko Hamamura Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/primitives/base_estimator.py | 57 ++++++++++------------------ qiskit/primitives/base_sampler.py | 59 ++++++++++++----------------- 2 files changed, 45 insertions(+), 71 deletions(-) diff --git a/qiskit/primitives/base_estimator.py b/qiskit/primitives/base_estimator.py index f3c4f2363fa0..53e8d3e97792 100644 --- a/qiskit/primitives/base_estimator.py +++ b/qiskit/primitives/base_estimator.py @@ -19,44 +19,35 @@ Estimator class estimates expectation values of quantum circuits and observables. -An estimator object is initialized with multiple quantum circuits and observables -and users can specify pairs of quantum circuits and observables -to estimate the expectation values. - -An estimator is initialized with the following elements. +An estimator is initialized with an empty parameter set. The estimator is used to +create a :class:`~qiskit.providers.JobV1`, via the +:meth:`qiskit.primitives.Estimator.run()` method. This method is called +with the following parameters * quantum circuits (:math:`\psi_i(\theta)`): list of (parameterized) quantum circuits - (a list of :class:`~qiskit.circuit.QuantumCircuit`)) - -* observables (:math:`H_j`): a list of :class:`~qiskit.quantum_info.SparsePauliOp`. - -The estimator is called with the following inputs. - -* circuits: a list of the quantum circuits. + (a list of :class:`~qiskit.circuit.QuantumCircuit` objects). -* observables: a list of the observables. +* observables (:math:`H_j`): a list of :class:`~qiskit.quantum_info.SparsePauliOp` + objects. * parameter values (:math:`\theta_k`): list of sets of values - to be bound to the parameters of the quantum circuits. - (list of list of float) + to be bound to the parameters of the quantum circuits + (list of list of float). -The output is an :class:`~qiskit.primitives.EstimatorResult` which contains a list of -expectation values plus optional metadata like confidence intervals for the estimation. +The method returns a :class:`~qiskit.providers.JobV1` object, calling +:meth:`qiskit.providers.JobV1.result()` yields the +a list of expectation values plus optional metadata like confidence intervals for +the estimation. .. math:: \langle\psi_i(\theta_k)|H_j|\psi_i(\theta_k)\rangle - -The estimator object is expected to be ``close()`` d after use or -accessed inside "with" context -and the objects are called with parameter values and run options -(e.g., ``shots`` or number of shots). - -Here is an example of how estimator is used. +Here is an example of how the estimator is used. .. code-block:: python + from qiskit.primitives import Estimator from qiskit.circuit.library import RealAmplitudes from qiskit.quantum_info import SparsePauliOp @@ -74,22 +65,16 @@ estimator = Estimator() # calculate [ ] - result = estimator.run([psi1], [H1], [theta1]).result() - print(result) - - # calculate [ ] - result2 = estimator.run([psi2], [H1], [theta2]).result() - print(result2) - - # calculate [ , ] - result3 = estimator.run([psi1, psi1], [H2, H3], [theta1]*2).result() - print(result3) + job = estimator.run([psi1], [H1], [theta1]) + job_result = job.result() # It will block until the job finishes. + print(f"The primitive-job finished with result {job_result}")) # calculate [ , # , # ] - result4 = estimator.run([psi1, psi2, psi1], [H1, H2, H3], [theta1, theta2, theta3]).result() - print(result4) + job2 = estimator.run([psi1, psi2, psi1], [H1, H2, H3], [theta1, theta2, theta3]) + job_result = job2.result() + print(f"The primitive-job finished with result {job_result}") """ from __future__ import annotations diff --git a/qiskit/primitives/base_sampler.py b/qiskit/primitives/base_sampler.py index 6edcaa76c43d..f6eb3380da6f 100644 --- a/qiskit/primitives/base_sampler.py +++ b/qiskit/primitives/base_sampler.py @@ -16,71 +16,60 @@ Sampler class calculates probabilities or quasi-probabilities of bitstrings from quantum circuits. -A sampler is initialized with the following elements. +A sampler is initialized with an empty parameter set. The sampler is used to +create a :class:`~qiskit.providers.JobV1`, via the :meth:`qiskit.primitives.Sampler.run()` +method. This method is called with the following parameters * quantum circuits (:math:`\psi_i(\theta)`): list of (parameterized) quantum circuits. - (a list of :class:`~qiskit.circuit.QuantumCircuit`)) - -The sampler is run with the following inputs. - -* circuits: a list of QuantumCircuit objects to evaluate. + (a list of :class:`~qiskit.circuit.QuantumCircuit` objects) * parameter values (:math:`\theta_k`): list of sets of parameter values to be bound to the parameters of the quantum circuits. (list of list of float) -The output is a :class:`~qiskit.primitives.SamplerResult` which contains probabilities -or quasi-probabilities of bitstrings, +The method returns a :class:`~qiskit.providers.JobV1` object, calling +:meth:`qiskit.providers.JobV1.result()` yields a :class:`~qiskit.primitives.SamplerResult` +object, which contains probabilities or quasi-probabilities of bitstrings, plus optional metadata like error bars in the samples. -The sampler object is expected to be closed after use or -accessed within "with" context -and the objects are called with parameter values and run options -(e.g., ``shots`` or number of shots). - Here is an example of how sampler is used. .. code-block:: python + from qiskit.primitives import Sampler from qiskit import QuantumCircuit from qiskit.circuit.library import RealAmplitudes + # a Bell circuit bell = QuantumCircuit(2) bell.h(0) bell.cx(0, 1) bell.measure_all() - # executes a Bell circuit - sampler = Sampler() - result = sampler.run(circuits=[bell]).result() - print([q.binary_probabilities() for q in result.quasi_dists]) - - # executes three Bell circuits - sampler = Sampler() - result = sampler.run([bell, bell, bell]).result() - print([q.binary_probabilities() for q in result.quasi_dists]) - - # parameterized circuit + # two parameterized circuits pqc = RealAmplitudes(num_qubits=2, reps=2) pqc.measure_all() pqc2 = RealAmplitudes(num_qubits=2, reps=3) pqc2.measure_all() theta1 = [0, 1, 1, 2, 3, 5] - theta2 = [1, 2, 3, 4, 5, 6] - theta3 = [0, 1, 2, 3, 4, 5, 6, 7] + theta2 = [0, 1, 2, 3, 4, 5, 6, 7] + # initialization of the sampler sampler = Sampler() - result = sampler.run([pqc, pqc, pqc2], [theta1, theta2, theta3]).result() - - # result of pqc(theta1) - print(result.quasi_dists[0].binary_probabilities()) - - # result of pqc(theta2) - print(result.quasi_dists[1].binary_probabilities()) - # result of pqc2(theta3) - print(result.quasi_dists[2].binary_probabilities()) + # Sampler runs a job on the Bell circuit + job = sampler.run(circuits=[bell], parameter_values=[[]], parameters=[[]]) + job_result = job.result() + print([q.binary_probabilities() for q in job_result.quasi_dists]) + + # Sampler runs a job on the parameterized circuits + job2 = sampler.run( + circuits=[pqc, pqc2], + parameter_values=[theta1, theta2], + parameters=[pqc.parameters, pqc2.parameters]) + job_result = job2.result() + print([q.binary_probabilities() for q in job_result.quasi_dists]) """ from __future__ import annotations From 858378d167ec9fcfbfb021c091df75817c4aae1e Mon Sep 17 00:00:00 2001 From: Guillermo-Mijares-Vilarino <106545082+Guillermo-Mijares-Vilarino@users.noreply.github.com> Date: Mon, 26 Sep 2022 22:23:57 +0200 Subject: [PATCH 48/56] Added explanation and example of circuit with conditionals to qiskit.circuit module page (#8443) * Added explanation and example of circuit with conditionals to qiskit.circuit module page * separate cells Co-authored-by: Matthew Treinish * removed trailing whitespaces * added c_if with ClassicalRegister * Fix typo * added code examples to c_if API reference and simplified explanation * added HGate link and fixed indentation Co-authored-by: Junye Huang Co-authored-by: Matthew Treinish Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/circuit/__init__.py | 50 ++++++++++++++++++++++++++++++++ qiskit/circuit/instructionset.py | 20 +++++++++++++ 2 files changed, 70 insertions(+) diff --git a/qiskit/circuit/__init__.py b/qiskit/circuit/__init__.py index b12f0a4a2277..dccdcf5b4572 100644 --- a/qiskit/circuit/__init__.py +++ b/qiskit/circuit/__init__.py @@ -56,6 +56,56 @@ Supplementary Information ========================= +.. dropdown:: Quantum Circuit with conditionals + :animate: fade-in-slide-down + + When building a quantum circuit, there can be interest in applying a certain gate only + if a classical register has a specific value. This can be done with the + :meth:`InstructionSet.c_if` method. + + In the following example, we start with a single-qubit circuit formed by only a Hadamard gate + (:class:`~.HGate`), in which we expect to get :math:`|0\\rangle` and :math:`|1\\rangle` + with equal probability. + + .. jupyter-execute:: + + from qiskit import BasicAer, transpile, QuantumRegister, ClassicalRegister + + qr = QuantumRegister(1) + cr = ClassicalRegister(1) + qc = QuantumCircuit(qr, cr) + qc.h(0) + qc.measure(0, 0) + qc.draw('mpl') + + .. jupyter-execute:: + + backend = BasicAer.get_backend('qasm_simulator') + tqc = transpile(qc, backend) + counts = backend.run(tqc).result().get_counts() + + print(counts) + + Now, we add an :class:`~.XGate` only if the value of the :class:`~.ClassicalRegister` is 0. + That way, if the state is :math:`|0\\rangle`, it will be changed to :math:`|1\\rangle` and + if the state is :math:`|1\\rangle`, it will not be changed at all, so the final state will + always be :math:`|1\\rangle`. + + .. jupyter-execute:: + + qc.x(0).c_if(cr, 0) + qc.measure(0, 0) + + qc.draw('mpl') + + .. jupyter-execute:: + + tqc = transpile(qc, backend) + counts = backend.run(tqc).result().get_counts() + + print(counts) + + .. dropdown:: Quantum Circuit Properties :animate: fade-in-slide-down diff --git a/qiskit/circuit/instructionset.py b/qiskit/circuit/instructionset.py index 5163b4146082..851a7034e1ab 100644 --- a/qiskit/circuit/instructionset.py +++ b/qiskit/circuit/instructionset.py @@ -186,6 +186,26 @@ def c_if(self, classical: Union[Clbit, ClassicalRegister, int], val: int) -> "In Raises: CircuitError: if the passed classical resource is invalid, or otherwise not resolvable to a concrete resource that these instructions are permitted to access. + + Example: + .. jupyter-execute:: + + from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit + + qr = QuantumRegister(2) + cr = ClassicalRegister(2) + qc = QuantumCircuit(qr, cr) + qc.h(range(2)) + qc.measure(range(2), range(2)) + + # apply x gate if the classical register has the value 2 (10 in binary) + qc.x(0).c_if(cr, 2) + + # apply y gate if bit 0 is set to 1 + qc.y(1).c_if(0, 1) + + qc.draw() + """ if self._requester is None and not isinstance(classical, (Clbit, ClassicalRegister)): raise CircuitError( From 2f6ea4b87f4e2373c61a5246742665ed2898bec5 Mon Sep 17 00:00:00 2001 From: Alexander Ivrii Date: Tue, 27 Sep 2022 00:33:39 +0300 Subject: [PATCH 49/56] Improving memory consumption of DagDependency when lists of transitive predecessors and successors are not required (#8525) * Improved construction of DagDependency when lists of transitive successors and predecessors are not needed * typos * minor * Adding TODO and explanation messages following review comments * Update releasenotes/notes/dag_dependency_speedup-f6298348cb3d8746.yaml Co-authored-by: Matthew Treinish Co-authored-by: Matthew Treinish Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/converters/circuit_to_dagdependency.py | 10 +- qiskit/converters/dag_to_dagdependency.py | 8 +- qiskit/dagcircuit/dagdependency.py | 98 ++++++++++++++----- ...g_dependency_speedup-f6298348cb3d8746.yaml | 25 +++++ .../test_circuit_to_dagdependency.py | 18 ++++ .../converters/test_dag_to_dagdependency.py | 21 ++++ test/python/dagcircuit/test_dagdependency.py | 30 ++++++ 7 files changed, 183 insertions(+), 27 deletions(-) create mode 100644 releasenotes/notes/dag_dependency_speedup-f6298348cb3d8746.yaml diff --git a/qiskit/converters/circuit_to_dagdependency.py b/qiskit/converters/circuit_to_dagdependency.py index c941c9c91563..17c9de10ef55 100644 --- a/qiskit/converters/circuit_to_dagdependency.py +++ b/qiskit/converters/circuit_to_dagdependency.py @@ -15,11 +15,13 @@ from qiskit.dagcircuit.dagdependency import DAGDependency -def circuit_to_dagdependency(circuit): +def circuit_to_dagdependency(circuit, create_preds_and_succs=True): """Build a ``DAGDependency`` object from a ``QuantumCircuit``. Args: - circuit (QuantumCircuit): the input circuits. + circuit (QuantumCircuit): the input circuit. + create_preds_and_succs (bool): whether to construct lists of + predecessors and successors for every node. Return: DAGDependency: the DAG representing the input circuit as a dag dependency. @@ -40,7 +42,9 @@ def circuit_to_dagdependency(circuit): for instruction in circuit.data: dagdependency.add_op_node(instruction.operation, instruction.qubits, instruction.clbits) - dagdependency._add_successors() + if create_preds_and_succs: + dagdependency._add_predecessors() + dagdependency._add_successors() dagdependency.calibrations = circuit.calibrations diff --git a/qiskit/converters/dag_to_dagdependency.py b/qiskit/converters/dag_to_dagdependency.py index ed420454ce01..dc0c3c289842 100644 --- a/qiskit/converters/dag_to_dagdependency.py +++ b/qiskit/converters/dag_to_dagdependency.py @@ -14,11 +14,13 @@ from qiskit.dagcircuit.dagdependency import DAGDependency -def dag_to_dagdependency(dag): +def dag_to_dagdependency(dag, create_preds_and_succs=True): """Build a ``DAGDependency`` object from a ``DAGCircuit``. Args: dag (DAGCircuit): the input dag. + create_preds_and_succs (bool): whether to construct lists of + predecessors and successors for every node. Return: DAGDependency: the DAG representing the input circuit as a dag dependency. @@ -42,7 +44,9 @@ def dag_to_dagdependency(dag): inst = node.op.copy() dagdependency.add_op_node(inst, node.qargs, node.cargs) - dagdependency._add_successors() + if create_preds_and_succs: + dagdependency._add_predecessors() + dagdependency._add_successors() # copy metadata dagdependency.global_phase = dag.global_phase diff --git a/qiskit/dagcircuit/dagdependency.py b/qiskit/dagcircuit/dagdependency.py index 5ed41ca6f800..f9fb8b758ef3 100644 --- a/qiskit/dagcircuit/dagdependency.py +++ b/qiskit/dagcircuit/dagdependency.py @@ -28,6 +28,24 @@ from qiskit.circuit.commutation_checker import CommutationChecker +# ToDo: DagDependency needs to be refactored: +# - Removing redundant and template-optimization-specific fields from DAGDepNode: +# As a minimum, we should remove direct predecessors and direct successors, +# as these can be queried directly from the underlying graph data structure. +# We should also remove fields that are specific to template-optimization pass. +# for instance lists of transitive predecessors and successors (moreover, we +# should investigate the possibility of using rx.descendants() instead of caching). +# - We should rethink the API of DAGDependency: +# Currently, most of the functions (such as "add_op_node", "_update_edges", etc.) +# are only used when creating a new DAGDependency from another representation of a circuit. +# A part of the reason is that doing local changes to DAGDependency is tricky: +# as an example, suppose that DAGDependency contains a gate A such that A = B * C; +# in general we cannot simply replace A by the pair B, C, as there may be +# other nodes that commute with A but do not commute with B or C, so we would need to +# change DAGDependency more globally to support that. In other words, we should rethink +# what DAGDependency can be good for and rethink that API accordingly. + + class DAGDependency: """Object to represent a quantum circuit as a directed acyclic graph via operation dependencies (i.e. lack of commutation). @@ -454,6 +472,7 @@ def _gather_succ(self, node_id, direct_succ): the lists of direct successors are put into a single one """ gather = self._multi_graph + gather.get_node_data(node_id).successors = [] for d_succ in direct_succ: gather.get_node_data(node_id).successors.append([d_succ]) succ = gather.get_node_data(d_succ).successors @@ -476,32 +495,52 @@ def _list_pred(self, node_id): def _update_edges(self): """ - Function to verify the commutation relation and reachability - for predecessors, the nodes do not commute and - if the predecessor is reachable. Update the DAGDependency by - introducing edges and predecessors(attribute) + Updates DagDependency by adding edges to the newly added node (max_node) + from the previously added nodes. + For each previously added node (prev_node), an edge from prev_node to max_node + is added if max_node is "reachable" from prev_node (this means that the two + nodes can be made adjacent by commuting them with other nodes), but the two nodes + themselves do not commute. + + Currently. this function is only used when creating a new DAGDependency from another + representation of a circuit, and hence there are no removed nodes (this is why + iterating over all nodes is fine). """ max_node_id = len(self._multi_graph) - 1 - max_node = self._multi_graph.get_node_data(max_node_id) + max_node = self.get_node(max_node_id) - for current_node_id in range(0, max_node_id): - self._multi_graph.get_node_data(current_node_id).reachable = True - # Check the commutation relation with reachable node, it adds edges if it does not commute + reachable = [True] * max_node_id + + # Analyze nodes in the reverse topological order. + # An improvement to the original algorithm is to consider only direct predecessors + # and to avoid constructing the lists of forward and backward reachable predecessors + # for every node when not required. for prev_node_id in range(max_node_id - 1, -1, -1): - prev_node = self._multi_graph.get_node_data(prev_node_id) - if prev_node.reachable and not self.comm_checker.commute( - prev_node.op, - prev_node.qargs, - prev_node.cargs, - max_node.op, - max_node.qargs, - max_node.cargs, - ): - self._multi_graph.add_edge(prev_node_id, max_node_id, {"commute": False}) - self._list_pred(max_node_id) - list_predecessors = self._multi_graph.get_node_data(max_node_id).predecessors - for pred_id in list_predecessors: - self._multi_graph.get_node_data(pred_id).reachable = False + if reachable[prev_node_id]: + prev_node = self.get_node(prev_node_id) + + if not self.comm_checker.commute( + prev_node.op, + prev_node.qargs, + prev_node.cargs, + max_node.op, + max_node.qargs, + max_node.cargs, + ): + # If prev_node and max_node do not commute, then we add an edge + # between the two, and mark all direct predecessors of prev_node + # as not reaching max_node. + self._multi_graph.add_edge(prev_node_id, max_node_id, {"commute": False}) + + predecessor_ids = self._multi_graph.predecessor_indices(prev_node_id) + for predecessor_id in predecessor_ids: + reachable[predecessor_id] = False + else: + # If prev_node cannot reach max_node, then none of its predecessors can + # reach max_node either. + predecessor_ids = self._multi_graph.predecessor_indices(prev_node_id) + for predecessor_id in predecessor_ids: + reachable[predecessor_id] = False def _add_successors(self): """ @@ -518,6 +557,21 @@ def _add_successors(self): merge_no_duplicates(*self._multi_graph.get_node_data(node_id).successors) ) + def _add_predecessors(self): + """ + Use _gather_pred and merge_no_duplicates to create the list of predecessors + for each node. Update DAGDependency 'predecessors' attribute. It has to + be used when the DAGDependency() object is complete (i.e. converters). + """ + for node_id in range(0, len(self._multi_graph)): + direct_predecessors = self.direct_predecessors(node_id) + + self._multi_graph = self._gather_pred(node_id, direct_predecessors) + + self._multi_graph.get_node_data(node_id).predecessors = list( + merge_no_duplicates(*self._multi_graph.get_node_data(node_id).predecessors) + ) + def copy(self): """ Function to copy a DAGDependency object. diff --git a/releasenotes/notes/dag_dependency_speedup-f6298348cb3d8746.yaml b/releasenotes/notes/dag_dependency_speedup-f6298348cb3d8746.yaml new file mode 100644 index 000000000000..80dde1db9d96 --- /dev/null +++ b/releasenotes/notes/dag_dependency_speedup-f6298348cb3d8746.yaml @@ -0,0 +1,25 @@ +--- +features: + - | + Added an argument ``create_preds_and_succs`` to the functions + :func:`~qiskit.converters.circuit_to_dagdependency` and + :func:`~qiskit.converters.dag_to_dagdependency` + that convert from :class:`~qiskit.circuit.QuantumCircuit` and + :class:`~qiskit.dagcircuit.DAGCircuit`, respectively, to + :class:`~qiskit.dagcircuit.DAGDependency`. + When the value of ``create_preds_and_succs`` is False, the transitive + predecessors and successors for nodes in :class:`~qiskit.dagcircuit.DAGDependency` + are not constructed, making the conversions faster and significantly less + memory-intensive. The direct predecessors and successors for nodes in + :class:`~qiskit.dagcircuit.DAGDependency` are constructed as usual. + + For example:: + + from qiskit.converters import circuit_to_dagdependency + from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit + + circuit_in = QuantumCircuit(2) + circuit_in.h(qr[0]) + circuit_in.h(qr[1]) + + dag_dependency = circuit_to_dagdependency(circuit_in, create_preds_and_succs=False) diff --git a/test/python/converters/test_circuit_to_dagdependency.py b/test/python/converters/test_circuit_to_dagdependency.py index 1c67d4bf187a..14dbd7c3f6df 100644 --- a/test/python/converters/test_circuit_to_dagdependency.py +++ b/test/python/converters/test_circuit_to_dagdependency.py @@ -41,6 +41,24 @@ def test_circuit_and_dag_canonical(self): circuit_out = dagdependency_to_circuit(dag_dependency) self.assertEqual(circuit_out, circuit_in) + def test_circuit_and_dag_canonical2(self): + """Check convert to dag dependency and back + also when the option ``create_preds_and_succs`` is False.""" + qr = QuantumRegister(3) + cr = ClassicalRegister(3) + circuit_in = QuantumCircuit(qr, cr) + circuit_in.h(qr[0]) + circuit_in.h(qr[1]) + circuit_in.measure(qr[0], cr[0]) + circuit_in.measure(qr[1], cr[1]) + circuit_in.x(qr[0]).c_if(cr, 0x3) + circuit_in.measure(qr[0], cr[0]) + circuit_in.measure(qr[1], cr[1]) + circuit_in.measure(qr[2], cr[2]) + dag_dependency = circuit_to_dagdependency(circuit_in, create_preds_and_succs=False) + circuit_out = dagdependency_to_circuit(dag_dependency) + self.assertEqual(circuit_out, circuit_in) + def test_calibrations(self): """Test that calibrations are properly copied over.""" circuit_in = QuantumCircuit(1) diff --git a/test/python/converters/test_dag_to_dagdependency.py b/test/python/converters/test_dag_to_dagdependency.py index e62f500eee57..e1785cfcc1ab 100644 --- a/test/python/converters/test_dag_to_dagdependency.py +++ b/test/python/converters/test_dag_to_dagdependency.py @@ -45,6 +45,27 @@ def test_circuit_and_dag_dependency(self): self.assertEqual(dag_out, dag_in) + def test_circuit_and_dag_dependency2(self): + """Check convert to dag dependency and back + also when the option ``create_preds_and_succs`` is False.""" + qr = QuantumRegister(3) + cr = ClassicalRegister(3) + circuit_in = QuantumCircuit(qr, cr) + circuit_in.h(qr[0]) + circuit_in.h(qr[1]) + circuit_in.measure(qr[0], cr[0]) + circuit_in.measure(qr[1], cr[1]) + circuit_in.x(qr[0]).c_if(cr, 0x3) + circuit_in.measure(qr[0], cr[0]) + circuit_in.measure(qr[1], cr[1]) + circuit_in.measure(qr[2], cr[2]) + dag_in = circuit_to_dag(circuit_in) + + dag_dependency = dag_to_dagdependency(dag_in, create_preds_and_succs=False) + dag_out = dagdependency_to_dag(dag_dependency) + + self.assertEqual(dag_out, dag_in) + def test_metadata(self): """Test circuit metadata is preservered through conversion.""" meta_dict = dict(experiment_id="1234", execution_number=4) diff --git a/test/python/dagcircuit/test_dagdependency.py b/test/python/dagcircuit/test_dagdependency.py index 6c49d4086071..0bec2cee311d 100644 --- a/test/python/dagcircuit/test_dagdependency.py +++ b/test/python/dagcircuit/test_dagdependency.py @@ -243,6 +243,36 @@ def test_successors_predecessors(self): predecessors_fourth = self.dag.predecessors(3) self.assertEqual(predecessors_fourth, []) + def test_option_create_preds_and_succs_is_false(self): + """Test that when the option ``create_preds_and_succs`` is False, + direct successors and predecessors still get constructed, but + transitive successors and predecessors do not.""" + + circuit = QuantumCircuit(self.qreg, self.creg) + circuit.h(self.qreg[0]) + circuit.x(self.qreg[0]) + circuit.h(self.qreg[0]) + circuit.x(self.qreg[1]) + circuit.h(self.qreg[0]) + circuit.measure(self.qreg[0], self.creg[0]) + + self.dag = circuit_to_dagdependency(circuit, create_preds_and_succs=False) + + self.assertEqual(self.dag.direct_predecessors(1), [0]) + self.assertEqual(self.dag.direct_successors(1), [2, 4]) + self.assertEqual(self.dag.predecessors(1), []) + self.assertEqual(self.dag.successors(1), []) + + self.assertEqual(self.dag.direct_predecessors(3), []) + self.assertEqual(self.dag.direct_successors(3), []) + self.assertEqual(self.dag.predecessors(3), []) + self.assertEqual(self.dag.successors(3), []) + + self.assertEqual(self.dag.direct_predecessors(5), [2, 4]) + self.assertEqual(self.dag.direct_successors(5), []) + self.assertEqual(self.dag.predecessors(5), []) + self.assertEqual(self.dag.successors(5), []) + class TestDagProperties(QiskitTestCase): """Test the DAG properties.""" From df599dc9b189fe6d027386d989d19c3946a1476a Mon Sep 17 00:00:00 2001 From: Manoel Marques Date: Mon, 26 Sep 2022 21:17:25 -0400 Subject: [PATCH 50/56] Pin sphinx-autodoc-typehints to avoid 1.19.3 (#8795) --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index c33c118abd3e..8d47d49e357e 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -19,7 +19,7 @@ reno>=3.4.0 Sphinx>=3.0.0 qiskit-sphinx-theme>=1.6 qiskit-toqm>=0.0.4;platform_machine != 'aarch64' or platform_system != 'Linux' -sphinx-autodoc-typehints~=1.18 +sphinx-autodoc-typehints~=1.18,!=1.19.3 jupyter-sphinx sphinx-design>=0.2.0 pygments>=2.4 From 672e95d089ba0e834915796f2b1d59527f3b4ef2 Mon Sep 17 00:00:00 2001 From: Naoki Kanazawa Date: Tue, 27 Sep 2022 11:23:59 +0900 Subject: [PATCH 51/56] Remove symbolic pulse subclass implementation (#8278) * Remove symbolic pulse subclass implementation. Now every symbolic pulse objects are SymbolicPulse instance. Subclasses become SymbolicPulse factory, and isinstance check is invalidated because these classes are never instantiated. QPY loader for these classes are also removed. * Review comments Co-authored-by: Will Shanks * comments from review * update release note * fix test Co-authored-by: Will Shanks Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/assembler/assemble_schedules.py | 2 +- qiskit/pulse/library/symbolic_pulses.py | 119 +++++++++++++----- qiskit/qobj/converters/pulse_instruction.py | 53 +++++++- qiskit/qpy/binary_io/schedules.py | 36 ++---- .../pulse_v2/generators/waveform.py | 26 ++-- ...lic-pulse-subclasses-77314a1654521852.yaml | 41 ++++++ test/python/pulse/test_calibrationbuilder.py | 4 +- test/python/pulse/test_pulse_lib.py | 59 +++++++++ 8 files changed, 264 insertions(+), 76 deletions(-) create mode 100644 releasenotes/notes/remove-symbolic-pulse-subclasses-77314a1654521852.yaml diff --git a/qiskit/assembler/assemble_schedules.py b/qiskit/assembler/assemble_schedules.py index 7987c92d3f73..6482dabbefd4 100644 --- a/qiskit/assembler/assemble_schedules.py +++ b/qiskit/assembler/assemble_schedules.py @@ -191,7 +191,7 @@ def _assemble_instructions( if isinstance(instruction.pulse, (library.ParametricPulse, library.SymbolicPulse)): is_backend_supported = True try: - pulse_shape = ParametricPulseShapes(type(instruction.pulse)).name + pulse_shape = ParametricPulseShapes.from_instance(instruction.pulse).name if pulse_shape not in run_config.parametric_pulses: is_backend_supported = False except ValueError: diff --git a/qiskit/pulse/library/symbolic_pulses.py b/qiskit/pulse/library/symbolic_pulses.py index 8f07130f3782..4f1aa909f0e0 100644 --- a/qiskit/pulse/library/symbolic_pulses.py +++ b/qiskit/pulse/library/symbolic_pulses.py @@ -19,6 +19,7 @@ """ import functools +import warnings from typing import Any, Dict, List, Optional, Union, Callable import numpy as np @@ -574,7 +575,39 @@ def __repr__(self) -> str: ) -class Gaussian(SymbolicPulse): +class _PulseType(type): + """Metaclass to warn at isinstance check.""" + + def __instancecheck__(cls, instance): + cls_alias = getattr(cls, "alias", None) + + # TODO promote this to Deprecation warning in future. + # Once type information usage is removed from user code, + # we will convert pulse classes into functions. + warnings.warn( + "Typechecking with the symbolic pulse subclass will be deprecated. " + f"'{cls_alias}' subclass instance is turned into SymbolicPulse instance. " + f"Use self.pulse_type == '{cls_alias}' instead.", + PendingDeprecationWarning, + ) + + if not isinstance(instance, SymbolicPulse): + return False + return instance.pulse_type == cls_alias + + def __getattr__(cls, item): + # For pylint. A SymbolicPulse subclass must implement several methods + # such as .get_waveform and .validate_parameters. + # In addition, they conventionally offer attribute-like access to the pulse parameters, + # for example, instance.amp returns instance._params["amp"]. + # If pulse classes are directly instantiated, pylint yells no-member + # since the pulse class itself implements nothing. These classes just + # behave like a factory by internally instantiating the SymbolicPulse and return it. + # It is not realistic to write disable=no-member across qiskit packages. + return NotImplemented + + +class Gaussian(metaclass=_PulseType): r"""A lifted and truncated pulse envelope shaped according to the Gaussian function whose mean is centered at the center of the pulse (duration / 2): @@ -586,14 +619,16 @@ class Gaussian(SymbolicPulse): where :math:`f'(x)` is the gaussian waveform without lifting or amplitude scaling. """ - def __init__( - self, + alias = "Gaussian" + + def __new__( + cls, duration: Union[int, ParameterExpression], amp: Union[complex, ParameterExpression], sigma: Union[float, ParameterExpression], name: Optional[str] = None, limit_amplitude: Optional[bool] = None, - ): + ) -> SymbolicPulse: """Create new pulse instance. Args: @@ -605,6 +640,8 @@ def __init__( limit_amplitude: If ``True``, then limit the amplitude of the waveform to 1. The default is ``True`` and the amplitude is constrained to 1. + Returns: + SymbolicPulse instance. """ parameters = {"amp": amp, "sigma": sigma} @@ -616,8 +653,8 @@ def __init__( consts_expr = _sigma > 0 valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - super().__init__( - pulse_type=self.__class__.__name__, + instance = SymbolicPulse( + pulse_type=cls.alias, duration=duration, parameters=parameters, name=name, @@ -626,10 +663,12 @@ def __init__( constraints=consts_expr, valid_amp_conditions=valid_amp_conditions_expr, ) - self.validate_parameters() + instance.validate_parameters() + + return instance -class GaussianSquare(SymbolicPulse): +class GaussianSquare(metaclass=_PulseType): """A square pulse with a Gaussian shaped risefall on both sides lifted such that its first sample is zero. @@ -667,8 +706,10 @@ class GaussianSquare(SymbolicPulse): where :math:`f'(x)` is the gaussian square waveform without lifting or amplitude scaling. """ - def __init__( - self, + alias = "GaussianSquare" + + def __new__( + cls, duration: Union[int, ParameterExpression], amp: Union[complex, ParameterExpression], sigma: Union[float, ParameterExpression], @@ -676,7 +717,7 @@ def __init__( risefall_sigma_ratio: Optional[Union[float, ParameterExpression]] = None, name: Optional[str] = None, limit_amplitude: Optional[bool] = None, - ): + ) -> SymbolicPulse: """Create new pulse instance. Args: @@ -690,6 +731,9 @@ def __init__( limit_amplitude: If ``True``, then limit the amplitude of the waveform to 1. The default is ``True`` and the amplitude is constrained to 1. + Returns: + SymbolicPulse instance. + Raises: PulseError: When width and risefall_sigma_ratio are both empty or both non-empty. """ @@ -724,8 +768,8 @@ def __init__( consts_expr = sym.And(_sigma > 0, _width >= 0, _duration >= _width) valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - super().__init__( - pulse_type=self.__class__.__name__, + instance = SymbolicPulse( + pulse_type=cls.alias, duration=duration, parameters=parameters, name=name, @@ -734,15 +778,12 @@ def __init__( constraints=consts_expr, valid_amp_conditions=valid_amp_conditions_expr, ) - self.validate_parameters() + instance.validate_parameters() - @property - def risefall_sigma_ratio(self): - """Return risefall_sigma_ratio. This is auxiliary parameter to define width.""" - return (self.duration - self.width) / (2.0 * self.sigma) + return instance -class Drag(SymbolicPulse): +class Drag(metaclass=_PulseType): """The Derivative Removal by Adiabatic Gate (DRAG) pulse is a standard Gaussian pulse with an additional Gaussian derivative component and lifting applied. @@ -779,15 +820,17 @@ class Drag(SymbolicPulse): Phys. Rev. Lett. 103, 110501 – Published 8 September 2009.* """ - def __init__( - self, + alias = "Drag" + + def __new__( + cls, duration: Union[int, ParameterExpression], amp: Union[complex, ParameterExpression], sigma: Union[float, ParameterExpression], beta: Union[float, ParameterExpression], name: Optional[str] = None, limit_amplitude: Optional[bool] = None, - ): + ) -> SymbolicPulse: """Create new pulse instance. Args: @@ -799,6 +842,9 @@ def __init__( name: Display name for this pulse envelope. limit_amplitude: If ``True``, then limit the amplitude of the waveform to 1. The default is ``True`` and the amplitude is constrained to 1. + + Returns: + SymbolicPulse instance. """ parameters = {"amp": amp, "sigma": sigma, "beta": beta} @@ -814,8 +860,8 @@ def __init__( consts_expr = _sigma > 0 valid_amp_conditions_expr = sym.And(sym.Abs(_amp) <= 1.0, sym.Abs(_beta) < _sigma) - super().__init__( - pulse_type=self.__class__.__name__, + instance = SymbolicPulse( + pulse_type="Drag", duration=duration, parameters=parameters, name=name, @@ -824,10 +870,12 @@ def __init__( constraints=consts_expr, valid_amp_conditions=valid_amp_conditions_expr, ) - self.validate_parameters() + instance.validate_parameters() + return instance -class Constant(SymbolicPulse): + +class Constant(metaclass=_PulseType): """A simple constant pulse, with an amplitude value and a duration: .. math:: @@ -836,13 +884,15 @@ class Constant(SymbolicPulse): f(x) = 0 , elsewhere """ - def __init__( - self, + alias = "Constant" + + def __new__( + cls, duration: Union[int, ParameterExpression], amp: Union[complex, ParameterExpression], name: Optional[str] = None, limit_amplitude: Optional[bool] = None, - ): + ) -> SymbolicPulse: """Create new pulse instance. Args: @@ -851,6 +901,9 @@ def __init__( name: Display name for this pulse envelope. limit_amplitude: If ``True``, then limit the amplitude of the waveform to 1. The default is ``True`` and the amplitude is constrained to 1. + + Returns: + SymbolicPulse instance. """ parameters = {"amp": amp} @@ -867,8 +920,8 @@ def __init__( envelope_expr = _amp * sym.Piecewise((1, sym.And(_t >= 0, _t <= _duration)), (0, True)) valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - super().__init__( - pulse_type=self.__class__.__name__, + instance = SymbolicPulse( + pulse_type="Constant", duration=duration, parameters=parameters, name=name, @@ -876,4 +929,6 @@ def __init__( envelope=envelope_expr, valid_amp_conditions=valid_amp_conditions_expr, ) - self.validate_parameters() + instance.validate_parameters() + + return instance diff --git a/qiskit/qobj/converters/pulse_instruction.py b/qiskit/qobj/converters/pulse_instruction.py index 1bdb049a8610..1ea4d19123a3 100644 --- a/qiskit/qobj/converters/pulse_instruction.py +++ b/qiskit/qobj/converters/pulse_instruction.py @@ -40,10 +40,51 @@ class ParametricPulseShapes(Enum): value is its mapping to the OpenPulse Command in Qiskit. """ - gaussian = library.Gaussian - gaussian_square = library.GaussianSquare - drag = library.Drag - constant = library.Constant + gaussian = "Gaussian" + gaussian_square = "GaussianSquare" + drag = "Drag" + constant = "Constant" + + @classmethod + def from_instance( + cls, + instance: Union[library.ParametricPulse, library.SymbolicPulse], + ) -> "ParametricPulseShapes": + """Get Qobj name from the pulse class instance. + + Args: + instance: Symbolic or ParametricPulse class. + + Returns: + Qobj name. + + Raises: + QiskitError: When pulse instance is not recognizable type. + """ + if isinstance(instance, library.SymbolicPulse): + return cls(instance.pulse_type) + if isinstance(instance, library.parametric_pulses.Gaussian): + return ParametricPulseShapes.gaussian + if isinstance(instance, library.parametric_pulses.GaussianSquare): + return ParametricPulseShapes.gaussian_square + if isinstance(instance, library.parametric_pulses.Drag): + return ParametricPulseShapes.drag + if isinstance(instance, library.parametric_pulses.Constant): + return ParametricPulseShapes.constant + + raise QiskitError(f"'{instance}' is not valid pulse type.") + + @classmethod + def to_type(cls, name: str) -> library.SymbolicPulse: + """Get symbolic pulse class from the name. + + Args: + name: Qobj name of the pulse. + + Returns: + Corresponding class. + """ + return getattr(library, cls[name].value) class ConversionMethodBinder: @@ -386,7 +427,7 @@ def convert_play(self, shift, instruction): if isinstance(instruction.pulse, (library.ParametricPulse, library.SymbolicPulse)): command_dict = { "name": "parametric_pulse", - "pulse_shape": ParametricPulseShapes(type(instruction.pulse)).name, + "pulse_shape": ParametricPulseShapes.from_instance(instruction.pulse).name, "t0": shift + instruction.start_time, "ch": instruction.channel.name, "parameters": instruction.pulse.parameters, @@ -683,7 +724,7 @@ def convert_parametric(self, instruction): short_pulse_id = hashlib.md5(base_str.encode("utf-8")).hexdigest()[:4] pulse_name = f"{instruction.pulse_shape}_{short_pulse_id}" - pulse = ParametricPulseShapes[instruction.pulse_shape].value( + pulse = ParametricPulseShapes.to_type(instruction.pulse_shape)( **instruction.parameters, name=pulse_name ) return instructions.Play(pulse, channel) << t0 diff --git a/qiskit/qpy/binary_io/schedules.py b/qiskit/qpy/binary_io/schedules.py index 2468d8dbf816..223e2e77b4d8 100644 --- a/qiskit/qpy/binary_io/schedules.py +++ b/qiskit/qpy/binary_io/schedules.py @@ -91,32 +91,16 @@ def _read_symbolic_pulse(file_obj, version): duration = value.read_value(file_obj, version, {}) name = value.read_value(file_obj, version, {}) - # TODO remove this and merge subclasses into a single kind of SymbolicPulse - # We need some refactoring of our codebase, - # mainly removal of isinstance check and name access with self.__class__.__name__. - if pulse_type == "Gaussian": - pulse_cls = library.Gaussian - elif pulse_type == "GaussianSquare": - pulse_cls = library.GaussianSquare - elif pulse_type == "Drag": - pulse_cls = library.Drag - elif pulse_type == "Constant": - pulse_cls = library.Constant - else: - pulse_cls = library.SymbolicPulse - - # Skip calling constructor to absorb signature mismatch in subclass. - instance = object.__new__(pulse_cls) - instance.duration = duration - instance.name = name - instance._limit_amplitude = header.amp_limited - instance._pulse_type = pulse_type - instance._params = parameters - instance._envelope = envelope - instance._constraints = constraints - instance._valid_amp_conditions = valid_amp_conditions - - return instance + return library.SymbolicPulse( + pulse_type=pulse_type, + duration=duration, + parameters=parameters, + name=name, + limit_amplitude=header.amp_limited, + envelope=envelope, + constraints=constraints, + valid_amp_conditions=valid_amp_conditions, + ) def _read_alignment_context(file_obj, version): diff --git a/qiskit/visualization/pulse_v2/generators/waveform.py b/qiskit/visualization/pulse_v2/generators/waveform.py index 6172a283d063..7a4b8c00f799 100644 --- a/qiskit/visualization/pulse_v2/generators/waveform.py +++ b/qiskit/visualization/pulse_v2/generators/waveform.py @@ -44,7 +44,7 @@ def my_object_generator(data: PulseInstruction, import numpy as np from qiskit import pulse, circuit -from qiskit.pulse import instructions +from qiskit.pulse import instructions, library from qiskit.visualization.exceptions import VisualizationError from qiskit.visualization.pulse_v2 import drawings, types, device_info @@ -105,10 +105,11 @@ def gen_filled_waveform_stepwise( if isinstance(pval, circuit.ParameterExpression): unbound_params.append(pname) - if hasattr(data.inst.pulse, "pulse_type"): - pulse_shape = data.inst.pulse.pulse_type + pulse_data = data.inst.pulse + if isinstance(pulse_data, library.SymbolicPulse): + pulse_shape = pulse_data.pulse_type else: - pulse_shape = data.inst.pulse.__class__.__name__ + pulse_shape = "Waveform" return _draw_opaque_waveform( init_time=data.t0, @@ -174,7 +175,14 @@ def gen_ibmq_latex_waveform_name( systematic_name = data.inst.name or "Delay" latex_name = None else: - systematic_name = data.inst.pulse.name or data.inst.pulse.__class__.__name__ + pulse_data = data.inst.pulse + if pulse_data.name: + systematic_name = pulse_data.name + else: + if isinstance(pulse_data, library.SymbolicPulse): + systematic_name = pulse_data.pulse_type + else: + systematic_name = "Waveform" template = r"(?P[A-Z]+)(?P[0-9]+)?(?P[pm])_(?P[dum])[0-9]+" match_result = re.match(template, systematic_name) @@ -560,11 +568,11 @@ def _parse_waveform( if isinstance(duration, circuit.Parameter): duration = None - if hasattr(operand, "pulse_type"): - # Symbolic pulse - meta["waveform shape"] = operand.pulse_type + if isinstance(operand, library.SymbolicPulse): + pulse_shape = operand.pulse_type else: - meta["waveform"] = operand.__class__.__name__ + pulse_shape = "Waveform" + meta["waveform shape"] = pulse_shape meta.update( { diff --git a/releasenotes/notes/remove-symbolic-pulse-subclasses-77314a1654521852.yaml b/releasenotes/notes/remove-symbolic-pulse-subclasses-77314a1654521852.yaml new file mode 100644 index 000000000000..9bab49b21f71 --- /dev/null +++ b/releasenotes/notes/remove-symbolic-pulse-subclasses-77314a1654521852.yaml @@ -0,0 +1,41 @@ +--- +features: + - | + Symbolic pulse subclasses :class:`.Gaussian`, :class:`.GaussianSquare`, + :class:`.Drag` and :class:`.Constant` have been upgraded to + instantiate :class:`SymbolicPulse` rather than the subclass itself. + All parametric pulse objects in pulse programs must be symbolic pulse instances, + because subclassing is no longer neccesary. Note that :class:`SymbolicPulse` can + uniquely identify a particular envelope with the symbolic expression object + defined in :attr:`SymbolicPulse.envelope`. +upgrade: + - | + ``isinstance`` check with pulse classes :class:`.Gaussian`, :class:`.GaussianSquare`, + :class:`.Drag` and :class:`.Constant` has been invalidated because + these pulse subclasses are no longer instantiated. + Instead of using type information, :attr:`SymbolicPulse.pulse_type` must be used. + This is assumed to be a unique string identifer for pulse envelopes, + and we can use string equality to investigate the pulse types. For example, + + .. code-block:: python + + from qiskit.pulse.library import Gaussian + + pulse = Gaussian(160, 0.1, 40) + + if isinstance(pulse, Gaussian) + print("This is Gaussian pulse.") + + This code should be upgraded to + + .. code-block:: python + + from qiskit.pulse.library import Gaussian + + pulse = Gaussian(160, 0.1, 40) + + if pulse.pulse_type == "Gaussian": + print("This is Gaussian pulse.") + + With the same reason, the class attributes such as ``pulse.__class__.__name__`` + should not be accessed to get pulse type information. diff --git a/test/python/pulse/test_calibrationbuilder.py b/test/python/pulse/test_calibrationbuilder.py index 303365e01644..ba108ca9f64b 100644 --- a/test/python/pulse/test_calibrationbuilder.py +++ b/test/python/pulse/test_calibrationbuilder.py @@ -121,12 +121,12 @@ def test_rzx_calibration_builder(self): rzx_qc_instructions = cal_qc.calibrations["rzx"][((1, 0), (theta / 2,))].instructions self.assertEqual(rzx_qc_instructions[0][1].channel, DriveChannel(0)) self.assertTrue(isinstance(rzx_qc_instructions[0][1], Play)) - self.assertTrue(isinstance(rzx_qc_instructions[0][1].pulse, GaussianSquare)) + self.assertEqual(rzx_qc_instructions[0][1].pulse.pulse_type, "GaussianSquare") self.assertEqual(rzx_qc_instructions[1][1].channel, DriveChannel(1)) self.assertTrue(isinstance(rzx_qc_instructions[1][1], Delay)) self.assertEqual(rzx_qc_instructions[2][1].channel, ControlChannel(1)) self.assertTrue(isinstance(rzx_qc_instructions[2][1], Play)) - self.assertTrue(isinstance(rzx_qc_instructions[2][1].pulse, GaussianSquare)) + self.assertEqual(rzx_qc_instructions[2][1].pulse.pulse_type, "GaussianSquare") # Calculate the duration of one scaled Gaussian square pulse from the CX gate. cx_sched = self.inst_map.get("cx", qubits=(1, 0)) diff --git a/test/python/pulse/test_pulse_lib.py b/test/python/pulse/test_pulse_lib.py index d49b1409cd12..44e892cc0a27 100644 --- a/test/python/pulse/test_pulse_lib.py +++ b/test/python/pulse/test_pulse_lib.py @@ -418,6 +418,65 @@ def test_custom_pulse(self): reference = np.concatenate([-0.1 * np.ones(30), 0.1j * np.ones(50), -0.1 * np.ones(20)]) np.testing.assert_array_almost_equal(waveform.samples, reference) + def test_no_subclass(self): + """Test no dedicated pulse subclass is created.""" + + gaussian_pulse = Gaussian(160, 0.1, 40) + self.assertIs(type(gaussian_pulse), SymbolicPulse) + + gaussian_square_pulse = GaussianSquare(800, 0.1, 64, 544) + self.assertIs(type(gaussian_square_pulse), SymbolicPulse) + + drag_pulse = Drag(160, 0.1, 40, 1.5) + self.assertIs(type(drag_pulse), SymbolicPulse) + + constant_pulse = Constant(800, 0.1) + self.assertIs(type(constant_pulse), SymbolicPulse) + + def test_gaussian_deprecated_type_check(self): + """Test isinstance check works with deprecation.""" + gaussian_pulse = Gaussian(160, 0.1, 40) + + self.assertTrue(isinstance(gaussian_pulse, SymbolicPulse)) + with self.assertWarns(PendingDeprecationWarning): + self.assertTrue(isinstance(gaussian_pulse, Gaussian)) + self.assertFalse(isinstance(gaussian_pulse, GaussianSquare)) + self.assertFalse(isinstance(gaussian_pulse, Drag)) + self.assertFalse(isinstance(gaussian_pulse, Constant)) + + def test_gaussian_square_deprecated_type_check(self): + """Test isinstance check works with deprecation.""" + gaussian_square_pulse = GaussianSquare(800, 0.1, 64, 544) + + self.assertTrue(isinstance(gaussian_square_pulse, SymbolicPulse)) + with self.assertWarns(PendingDeprecationWarning): + self.assertFalse(isinstance(gaussian_square_pulse, Gaussian)) + self.assertTrue(isinstance(gaussian_square_pulse, GaussianSquare)) + self.assertFalse(isinstance(gaussian_square_pulse, Drag)) + self.assertFalse(isinstance(gaussian_square_pulse, Constant)) + + def test_drag_deprecated_type_check(self): + """Test isinstance check works with deprecation.""" + drag_pulse = Drag(160, 0.1, 40, 1.5) + + self.assertTrue(isinstance(drag_pulse, SymbolicPulse)) + with self.assertWarns(PendingDeprecationWarning): + self.assertFalse(isinstance(drag_pulse, Gaussian)) + self.assertFalse(isinstance(drag_pulse, GaussianSquare)) + self.assertTrue(isinstance(drag_pulse, Drag)) + self.assertFalse(isinstance(drag_pulse, Constant)) + + def test_constant_deprecated_type_check(self): + """Test isinstance check works with deprecation.""" + constant_pulse = Constant(160, 0.1, 40, 1.5) + + self.assertTrue(isinstance(constant_pulse, SymbolicPulse)) + with self.assertWarns(PendingDeprecationWarning): + self.assertFalse(isinstance(constant_pulse, Gaussian)) + self.assertFalse(isinstance(constant_pulse, GaussianSquare)) + self.assertFalse(isinstance(constant_pulse, Drag)) + self.assertTrue(isinstance(constant_pulse, Constant)) + class TestFunctionalPulse(QiskitTestCase): """Waveform tests.""" From 037ae6375e07583b53f396594f1333d29055bfad Mon Sep 17 00:00:00 2001 From: Declan Millar Date: Tue, 27 Sep 2022 14:43:40 +0100 Subject: [PATCH 52/56] VQE implementation with estimator primitive (#8702) * Add minimally working VQE with estimator primitive implementation. No gradients, no tests etc. * Revert from dataclass results to original result classes. * Enforce positional and keyword VQE arguments. * Move aux op eval logic to function * Update docstring. * Remove max_evals_grouped. Force to set directly on optimizer. * Remove validate min import. * Make note that eval_observables will be used to eval aux ops. * Add initial vqe tests. * Have VQE inherit from VariationalAlgorithm. * Move energy evaluation to unnested function. * Construct h2_op using SparsePauliOp * Add gradient with primitives support. * Update docstrings * update broadcast handling * update eval_energy output for batching * add incomplete QNSPA test * fix batch evaluation of QNSPSA test * remove vqe callback * move estimator to first arg * remove usused imports * add minimum eigensolvers test init file * add aux ops tests and prepare for new eval_operators * no longer support account for Nones in aux_ops * correct typing for MinimumEigensolver * Compute default initial point using ansatz bounds. * Add NumPyMinimumEigensolverResult * Fix type hints * Fix type hints * Formatting * Do not store NumPyMES result inside the algo. * Provide default values for ansatz and estimator * Formatting * fix old and new batching * Add tests for NumpyMES and import in module. * Use lazy formatting in log messages * Use lazy formatting in log messages * Add back callback to VQE. * minor renaming * raise algorithm error if primitive jobs fail * Add return documentation * Improve var names and docstrings. * Apply suggestions from code review Co-authored-by: ElePT <57907331+ElePT@users.noreply.github.com> Co-authored-by: dlasecki * minor formatting * minor formatting * Ensure evaluate_energy/gradient match Co-authored-by: Max Rossmannek * return bounds logic; fix some docstrings and minor refactor * Force keyword arguments in vqe. * Use estimate_observables function * break up numpy mes tests with subTest * formatting * remove redundant eval_aux_ops * add typehints to docstring attributes * remove usused imports * remove default ansatz * remove usused imports * update typehints * avoid changing the original ansatz * avoid changing the original ansatz * create separate function to build vqe result * Correct aux operator eignvalue type hint Co-authored-by: ElePT <57907331+ElePT@users.noreply.github.com> * add variance to callback * use std_dev in callback rather than variance * formatting * return variance and shots in callback * return full metadata in callback * Move validation functions to algorithms/utils * correct the callback attribute documentation * correct the callback attribute typehint docstring * update VQE docstring * release note and pending-depreciate old algs * update vqe class docstring * Apply suggestions from code review Co-authored-by: ElePT <57907331+ElePT@users.noreply.github.com> * Do not copy ansatz * Note pending depreciation of old algs * fix docstrings and imports * Fix issues with building docs * Include OptimizerResult in VQEResult * Remove trailing whitespace * Fix math notation in docstring * estimate_obervables to return metadata @ElePT +VQE * add example in release note * Update evaluate_observables docstring * Fix observables_evaluator tests. Co-authored-by: ElePT <57907331+ElePT@users.noreply.github.com> * fix trotter_qrte tests and remove depreciation * formatting * remove unused import * Apply suggestions to docstring from code review Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> * Update VQE docstring * Remove printing Co-authored-by: ElePT <57907331+ElePT@users.noreply.github.com> * Add parameters to estimate observables * Fix estimate obs. unit test * Update arg description * Update arg description * keep equation part of sentence * dict -> dict[str, Any] * Update qiskit/algorithms/optimizers/spsa.py Apply suggestion Imamichi-san * introduce FilterType and aux_operator_eigenvalues -> aux_operators_evaluated * Correct typehint Co-authored-by: Ikko Hamamura * update vqe docstring and use old typing for type alias Co-authored-by: ElePT <57907331+ElePT@users.noreply.github.com> Co-authored-by: dlasecki Co-authored-by: Max Rossmannek Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> Co-authored-by: ElePT Co-authored-by: Ikko Hamamura --- qiskit/algorithms/__init__.py | 16 +- .../minimum_eigensolvers/__init__.py | 48 ++ .../minimum_eigensolver.py | 99 ++++ .../numpy_minimum_eigensolver.py | 106 +++++ qiskit/algorithms/minimum_eigensolvers/vqe.py | 341 ++++++++++++++ qiskit/algorithms/observables_evaluator.py | 81 +--- qiskit/algorithms/optimizers/qnspsa.py | 18 +- qiskit/algorithms/optimizers/spsa.py | 25 +- .../trotterization/trotter_qrte.py | 1 + qiskit/algorithms/utils/__init__.py | 21 + qiskit/algorithms/utils/validate_bounds.py | 44 ++ .../utils/validate_initial_point.py | 69 +++ qiskit/algorithms/variational_algorithm.py | 11 + ...-and-setters-for-vqe-edc753591b368980.yaml | 6 +- ...ct-for-aux-operators-c3c9ad380c208afd.yaml | 6 +- ...r_empty_operator_fix-53ce20e5d2b68fd6.yaml | 16 +- ...-estimator-primitive-7cbcc462ad4dc593.yaml | 34 ++ .../minimum_eigensolvers/__init__.py | 11 + .../test_numpy_minimum_eigensolver.py | 241 ++++++++++ .../minimum_eigensolvers/test_vqe.py | 444 ++++++++++++++++++ .../algorithms/test_observables_evaluator.py | 36 +- .../time_evolvers/test_trotter_qrte.py | 10 +- test/python/algorithms/utils/__init__.py | 11 + .../algorithms/utils/test_validate_bounds.py | 53 +++ .../utils/test_validate_initial_point.py | 50 ++ 25 files changed, 1715 insertions(+), 83 deletions(-) create mode 100644 qiskit/algorithms/minimum_eigensolvers/__init__.py create mode 100644 qiskit/algorithms/minimum_eigensolvers/minimum_eigensolver.py create mode 100644 qiskit/algorithms/minimum_eigensolvers/numpy_minimum_eigensolver.py create mode 100644 qiskit/algorithms/minimum_eigensolvers/vqe.py create mode 100644 qiskit/algorithms/utils/__init__.py create mode 100644 qiskit/algorithms/utils/validate_bounds.py create mode 100644 qiskit/algorithms/utils/validate_initial_point.py create mode 100644 releasenotes/notes/vqe-with-estimator-primitive-7cbcc462ad4dc593.yaml create mode 100644 test/python/algorithms/minimum_eigensolvers/__init__.py create mode 100644 test/python/algorithms/minimum_eigensolvers/test_numpy_minimum_eigensolver.py create mode 100644 test/python/algorithms/minimum_eigensolvers/test_vqe.py create mode 100644 test/python/algorithms/utils/__init__.py create mode 100644 test/python/algorithms/utils/test_validate_bounds.py create mode 100644 test/python/algorithms/utils/test_validate_initial_point.py diff --git a/qiskit/algorithms/__init__.py b/qiskit/algorithms/__init__.py index 322acba21dac..55648a040aa4 100644 --- a/qiskit/algorithms/__init__.py +++ b/qiskit/algorithms/__init__.py @@ -183,10 +183,12 @@ linear_solvers -Minimum Eigensolvers --------------------- +Minimum Eigen Solvers +--------------------- Algorithms that can find the minimum eigenvalue of an operator. +These algorithms are pending depreciation. One should instead make use of the +Minimum Eigensolver classes in the section below, which leverage Runtime primitives. .. autosummary:: :toctree: ../stubs/ @@ -203,6 +205,16 @@ QAOA VQE +Minimum Eigensolvers +-------------------- + +Algorithms that can find the minimum eigenvalue of an operator and leverage primitives. + +.. autosummary:: + :toctree: ../stubs/ + + minimum_eigensolvers + Optimizers ---------- diff --git a/qiskit/algorithms/minimum_eigensolvers/__init__.py b/qiskit/algorithms/minimum_eigensolvers/__init__.py new file mode 100644 index 000000000000..9da052fab6ff --- /dev/null +++ b/qiskit/algorithms/minimum_eigensolvers/__init__.py @@ -0,0 +1,48 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +""" +============================================================================ +Minimum Eigensolvers Package (:mod:`qiskit.algorithms.minimum_eigensolvers`) +============================================================================ + +.. currentmodule:: qiskit.algorithms.minimum_eigensolvers + +Minimum Eigensolvers +==================== +.. autosummary:: + :toctree: ../stubs/ + + MinimumEigensolver + NumPyMinimumEigensolver + VQE + +.. autosummary:: + :toctree: ../stubs/ + + MinimumEigensolverResult + NumPyMinimumEigensolverResult + VQEResult +""" + +from .minimum_eigensolver import MinimumEigensolver, MinimumEigensolverResult +from .numpy_minimum_eigensolver import NumPyMinimumEigensolver, NumPyMinimumEigensolverResult +from .vqe import VQE, VQEResult + +__all__ = [ + "MinimumEigensolver", + "MinimumEigensolverResult", + "NumPyMinimumEigensolver", + "NumPyMinimumEigensolverResult", + "VQE", + "VQEResult", +] diff --git a/qiskit/algorithms/minimum_eigensolvers/minimum_eigensolver.py b/qiskit/algorithms/minimum_eigensolvers/minimum_eigensolver.py new file mode 100644 index 000000000000..30d3b49ce463 --- /dev/null +++ b/qiskit/algorithms/minimum_eigensolvers/minimum_eigensolver.py @@ -0,0 +1,99 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""The minimum eigensolver interface and result.""" + +from __future__ import annotations + +from abc import ABC, abstractmethod +from typing import Any + +from qiskit.opflow import PauliSumOp +from qiskit.quantum_info.operators.base_operator import BaseOperator + +from ..algorithm_result import AlgorithmResult +from ..list_or_dict import ListOrDict + + +class MinimumEigensolver(ABC): + """The minimum eigensolver interface. + + Algorithms that can compute a minimum eigenvalue for an operator may implement this interface to + allow different algorithms to be used interchangeably. + """ + + @abstractmethod + def compute_minimum_eigenvalue( + self, + operator: BaseOperator | PauliSumOp, + aux_operators: ListOrDict[BaseOperator | PauliSumOp] | None = None, + ) -> "MinimumEigensolverResult": + """ + Computes the minimum eigenvalue. The ``operator`` and ``aux_operators`` can be supplied here + and if not ``None`` will override any already set into algorithm so it can be reused with + different operators. While an ``operator`` is required by algorithms, ``aux_operators`` are + optional. + + Args: + operator: Qubit operator of the observable. + aux_operators: Optional list of auxiliary operators to be evaluated with the + parameters of the minimum eigenvalue main result and their expectation values + returned. For instance in chemistry these can be dipole operators and total particle + count operators, so we can get values for these at the ground state. + + Returns: + A minimum eigensolver result. + """ + return MinimumEigensolverResult() + + @classmethod + def supports_aux_operators(cls) -> bool: + """Whether computing the expectation value of auxiliary operators is supported. + + If the minimum eigensolver computes an eigenvalue of the main ``operator`` then it can + compute the expectation value of the ``aux_operators`` for that state. Otherwise they will + be ignored. + + Returns: + True if aux_operator expectations can be evaluated, False otherwise + """ + return False + + +class MinimumEigensolverResult(AlgorithmResult): + """Minimum eigensolver result.""" + + def __init__(self) -> None: + super().__init__() + self._eigenvalue = None + self._aux_operators_evaluated = None + + @property + def eigenvalue(self) -> complex | None: + """The computed minimum eigenvalue.""" + return self._eigenvalue + + @eigenvalue.setter + def eigenvalue(self, value: complex) -> None: + self._eigenvalue = value + + @property + def aux_operators_evaluated(self) -> ListOrDict[tuple[complex, dict[str, Any]]] | None: + """The aux operator expectation values. + + These values are in fact tuples formatted as (mean, (variance, shots)). + """ + return self._aux_operators_evaluated + + @aux_operators_evaluated.setter + def aux_operators_evaluated(self, value: ListOrDict[tuple[complex, dict[str, Any]]]) -> None: + self._aux_operators_evaluated = value diff --git a/qiskit/algorithms/minimum_eigensolvers/numpy_minimum_eigensolver.py b/qiskit/algorithms/minimum_eigensolvers/numpy_minimum_eigensolver.py new file mode 100644 index 000000000000..ec11f27eb2b0 --- /dev/null +++ b/qiskit/algorithms/minimum_eigensolvers/numpy_minimum_eigensolver.py @@ -0,0 +1,106 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""The NumPy minimum eigensolver algorithm and result.""" + +from __future__ import annotations + +from typing import Callable, List, Union, Optional +import logging +import numpy as np + +from qiskit.opflow import PauliSumOp +from qiskit.quantum_info.operators.base_operator import BaseOperator + +# TODO this path will need updating when VQD is merged +from ..eigen_solvers.numpy_eigen_solver import NumPyEigensolver +from .minimum_eigensolver import MinimumEigensolver, MinimumEigensolverResult +from ..list_or_dict import ListOrDict + +logger = logging.getLogger(__name__) + +# future type annotations not supported in type aliases in 3.8 +FilterType = Callable[[Union[List, np.ndarray], float, Optional[ListOrDict[float]]], bool] + + +class NumPyMinimumEigensolver(MinimumEigensolver): + """ + The NumPy minimum eigensolver algorithm. + """ + + def __init__( + self, + filter_criterion: FilterType | None = None, + ) -> None: + """ + Args: + filter_criterion: callable that allows to filter eigenvalues/eigenstates. The minimum + eigensolver is only searching over feasible states and returns an eigenstate that + has the smallest eigenvalue among feasible states. The callable has the signature + ``filter(eigenstate, eigenvalue, aux_values)`` and must return a boolean to indicate + whether to consider this value or not. If there is no feasible element, the result + can even be empty. + """ + self._eigensolver = NumPyEigensolver(filter_criterion=filter_criterion) + + @property + def filter_criterion( + self, + ) -> FilterType | None: + """Returns the criterion for filtering eigenstates/eigenvalues.""" + return self._eigensolver.filter_criterion + + @filter_criterion.setter + def filter_criterion( + self, + filter_criterion: FilterType, + ) -> None: + self._eigensolver.filter_criterion = filter_criterion + + @classmethod + def supports_aux_operators(cls) -> bool: + return NumPyEigensolver.supports_aux_operators() + + def compute_minimum_eigenvalue( + self, + operator: BaseOperator | PauliSumOp, + aux_operators: ListOrDict[BaseOperator | PauliSumOp] | None = None, + ) -> NumPyMinimumEigensolverResult: + super().compute_minimum_eigenvalue(operator, aux_operators) + eigensolver_result = self._eigensolver.compute_eigenvalues(operator, aux_operators) + result = NumPyMinimumEigensolverResult() + if eigensolver_result.eigenvalues is not None and len(eigensolver_result.eigenvalues) > 0: + result.eigenvalue = eigensolver_result.eigenvalues[0] + result.eigenstate = eigensolver_result.eigenstates[0] + if eigensolver_result.aux_operator_eigenvalues: + result.aux_operators_evaluated = eigensolver_result.aux_operator_eigenvalues[0] + + logger.debug("NumPy minimum eigensolver result: %s", result) + + return result + + +class NumPyMinimumEigensolverResult(MinimumEigensolverResult): + """NumPy minimum eigensolver result.""" + + def __init__(self) -> None: + super().__init__() + self._eigenstate = None + + @property + def eigenstate(self) -> np.ndarray | None: + """Returns the eigenstate corresponding to the computed minimum eigenvalue.""" + return self._eigenstate + + @eigenstate.setter + def eigenstate(self, value: np.ndarray) -> None: + self._eigenstate = value diff --git a/qiskit/algorithms/minimum_eigensolvers/vqe.py b/qiskit/algorithms/minimum_eigensolvers/vqe.py new file mode 100644 index 000000000000..7d4c76d98160 --- /dev/null +++ b/qiskit/algorithms/minimum_eigensolvers/vqe.py @@ -0,0 +1,341 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""The variational quantum eigensolver algorithm.""" + +from __future__ import annotations + +import logging +from time import time +from collections.abc import Callable, Sequence +from typing import Any + +import numpy as np + +from qiskit.algorithms.gradients import BaseEstimatorGradient +from qiskit.circuit import QuantumCircuit +from qiskit.opflow import PauliSumOp +from qiskit.primitives import BaseEstimator +from qiskit.quantum_info.operators.base_operator import BaseOperator + +from ..exceptions import AlgorithmError +from ..list_or_dict import ListOrDict +from ..optimizers import Optimizer, Minimizer, OptimizerResult +from ..variational_algorithm import VariationalAlgorithm, VariationalResult +from .minimum_eigensolver import MinimumEigensolver, MinimumEigensolverResult +from ..observables_evaluator import estimate_observables +from ..utils import validate_initial_point, validate_bounds + +logger = logging.getLogger(__name__) + + +class VQE(VariationalAlgorithm, MinimumEigensolver): + r"""The variational quantum eigensolver (VQE) algorithm. + + VQE is a hybrid quantum-classical algorithm that uses a variational technique to find the + minimum eigenvalue of a given Hamiltonian operator :math:`H`. + + The ``VQE`` algorithm is executed using an :attr:`estimator` primitive, which computes + expectation values of operators (observables). + + An instance of ``VQE`` also requires an :attr:`ansatz`, a parameterized + :class:`.QuantumCircuit`, to prepare the trial state :math:`|\psi(\vec\theta)\rangle`. It also + needs a classical :attr:`optimizer` which varies the circuit parameters :math:`\vec\theta` such + that the expectation value of the operator on the corresponding state approaches a minimum, + + .. math:: + + \min_{\vec\theta} \langle\psi(\vec\theta)|H|\psi(\vec\theta)\rangle. + + The :attr:`estimator` is used to compute this expectation value for every optimization step. + + The optimizer can either be one of Qiskit's optimizers, such as + :class:`~qiskit.algorithms.optimizers.SPSA` or a callable with the following signature: + + .. code-block:: python + + from qiskit.algorithms.optimizers import OptimizerResult + + def my_minimizer(fun, x0, jac=None, bounds=None) -> OptimizerResult: + # Note that the callable *must* have these argument names! + # Args: + # fun (callable): the function to minimize + # x0 (np.ndarray): the initial point for the optimization + # jac (callable, optional): the gradient of the objective function + # bounds (list, optional): a list of tuples specifying the parameter bounds + + result = OptimizerResult() + result.x = # optimal parameters + result.fun = # optimal function value + return result + + The above signature also allows one to use any SciPy minimizer, for instance as + + .. code-block:: python + + from functools import partial + from scipy.optimize import minimize + + optimizer = partial(minimize, method="L-BFGS-B") + + The following attributes can be set via the initializer but can also be read and updated once + the VQE object has been constructed. + + Attributes: + estimator (BaseEstimator): The estimator primitive to compute the expectation value of the + Hamiltonian operator. + ansatz (QuantumCircuit): A parameterized quantum circuit to prepare the trial state. + optimizer (Optimizer | Minimizer): A classical optimizer to find the minimum energy. This + can either be a Qiskit :class:`.Optimizer` or a callable implementing the + :class:`.Minimizer` protocol. + gradient (BaseEstimatorGradient | None): An optional estimator gradient to be used with the + optimizer. + callback (Callable[[int, np.ndarray, float, dict[str, Any]], None] | None): A callback that + can access the intermediate data at each optimization step. These data are: the + evaluation count, the optimizer parameters for the ansatz, the evaluated mean, and the + metadata dictionary. + + References: + [1] Peruzzo et al, "A variational eigenvalue solver on a quantum processor" + `arXiv:1304.3061 `__ + """ + + def __init__( + self, + estimator: BaseEstimator, + ansatz: QuantumCircuit, + optimizer: Optimizer | Minimizer, + *, + gradient: BaseEstimatorGradient | None = None, + initial_point: Sequence[float] | None = None, + callback: Callable[[int, np.ndarray, float, dict[str, Any]], None] | None = None, + ) -> None: + r""" + Args: + estimator: The estimator primitive to compute the expectation value of the + Hamiltonian operator. + ansatz: A parameterized quantum circuit to prepare the trial state. + optimizer: A classical optimizer to find the minimum energy. This + can either be a Qiskit :class:`.Optimizer` or a callable implementing the + :class:`.Minimizer` protocol. + gradient: An optional estimator gradient to be used with the optimizer. + initial_point: An optional initial point (i.e. initial parameter values) for the + optimizer. The length of the initial point must match the number of :attr:`ansatz` + parameters. If ``None``, a random point will be generated within certain parameter + bounds. ``VQE`` will look to the ansatz for these bounds. If the ansatz does not + specify bounds, bounds of :math:`-2\pi`, :math:`2\pi` will be used. + callback: A callback that can access the intermediate data at each optimization step. + These data are: the evaluation count, the optimizer parameters for the ansatz, the + estimated value, and the metadata dictionary. + """ + super().__init__() + + self.estimator = estimator + self.ansatz = ansatz + self.optimizer = optimizer + self.gradient = gradient + # this has to go via getters and setters due to the VariationalAlgorithm interface + self.initial_point = initial_point + self.callback = callback + + @property + def initial_point(self) -> Sequence[float] | None: + return self._initial_point + + @initial_point.setter + def initial_point(self, value: Sequence[float] | None) -> None: + self._initial_point = value + + def compute_minimum_eigenvalue( + self, + operator: BaseOperator | PauliSumOp, + aux_operators: ListOrDict[BaseOperator | PauliSumOp] | None = None, + ) -> VQEResult: + self._check_operator_ansatz(operator) + + initial_point = validate_initial_point(self.initial_point, self.ansatz) + + bounds = validate_bounds(self.ansatz) + + start_time = time() + + evaluate_energy = self._get_evaluate_energy(self.ansatz, operator) + + if self.gradient is not None: + evaluate_gradient = self._get_evaluate_gradient(self.ansatz, operator) + else: + evaluate_gradient = None + + # perform optimization + if callable(self.optimizer): + optimizer_result = self.optimizer( + fun=evaluate_energy, x0=initial_point, jac=evaluate_gradient, bounds=bounds + ) + else: + optimizer_result = self.optimizer.minimize( + fun=evaluate_energy, x0=initial_point, jac=evaluate_gradient, bounds=bounds + ) + + optimizer_time = time() - start_time + + logger.info( + "Optimization complete in %s seconds.\nFound optimal point %s", + optimizer_time, + optimizer_result.x, + ) + + if aux_operators is not None: + aux_operators_evaluated = estimate_observables( + self.estimator, self.ansatz, aux_operators, optimizer_result.x + ) + else: + aux_operators_evaluated = None + + return self._build_vqe_result(optimizer_result, aux_operators_evaluated, optimizer_time) + + @classmethod + def supports_aux_operators(cls) -> bool: + return True + + def _get_evaluate_energy( + self, + ansatz: QuantumCircuit, + operator: BaseOperator | PauliSumOp, + ) -> Callable[[np.ndarray], np.ndarray | float]: + """Returns a function handle to evaluate the energy at given parameters for the ansatz. + This is the objective function to be passed to the optimizer that is used for evaluation. + + Args: + ansatz: The ansatz preparing the quantum state. + operator: The operator whose energy to evaluate. + + Returns: + A callable that computes and returns the energy of the hamiltonian of each parameter. + + Raises: + AlgorithmError: If the primitive job to evaluate the energy fails. + """ + num_parameters = ansatz.num_parameters + + # avoid creating an instance variable to remain stateless regarding results + eval_count = 0 + + def evaluate_energy(parameters: np.ndarray) -> np.ndarray | float: + nonlocal eval_count + + # handle broadcasting: ensure parameters is of shape [array, array, ...] + parameters = np.reshape(parameters, (-1, num_parameters)).tolist() + batch_size = len(parameters) + + try: + job = self.estimator.run(batch_size * [ansatz], batch_size * [operator], parameters) + estimator_result = job.result() + except Exception as exc: + raise AlgorithmError("The primitive job to evaluate the energy failed!") from exc + + values = estimator_result.values + + if self.callback is not None: + metadata = estimator_result.metadata + for params, value, meta in zip(parameters, values, metadata): + eval_count += 1 + self.callback(eval_count, params, value, meta) + + energy = values[0] if len(values) == 1 else values + + return energy + + return evaluate_energy + + def _get_evaluate_gradient( + self, + ansatz: QuantumCircuit, + operator: BaseOperator | PauliSumOp, + ) -> Callable[[np.ndarray], np.ndarray]: + """Get a function handle to evaluate the gradient at given parameters for the ansatz. + + Args: + ansatz: The ansatz preparing the quantum state. + operator: The operator whose energy to evaluate. + + Returns: + A function handle to evaluate the gradient at given parameters for the ansatz. + + Raises: + AlgorithmError: If the primitive job to evaluate the gradient fails. + """ + + def evaluate_gradient(parameters: np.ndarray) -> np.ndarray: + # broadcasting not required for the estimator gradients + try: + job = self.gradient.run([ansatz], [operator], [parameters]) + gradients = job.result().gradients + except Exception as exc: + raise AlgorithmError("The primitive job to evaluate the gradient failed!") from exc + + return gradients[0] + + return evaluate_gradient + + def _check_operator_ansatz(self, operator: BaseOperator | PauliSumOp): + """Check that the number of qubits of operator and ansatz match and that the ansatz is + parameterized. + """ + if operator.num_qubits != self.ansatz.num_qubits: + try: + logger.info( + "Trying to resize ansatz to match operator on %s qubits.", operator.num_qubits + ) + self.ansatz.num_qubits = operator.num_qubits + except AttributeError as error: + raise AlgorithmError( + "The number of qubits of the ansatz does not match the " + "operator, and the ansatz does not allow setting the " + "number of qubits using `num_qubits`." + ) from error + + if self.ansatz.num_parameters == 0: + raise AlgorithmError("The ansatz must be parameterized, but has no free parameters.") + + def _build_vqe_result( + self, + optimizer_result: OptimizerResult, + aux_operators_evaluated: ListOrDict[tuple[complex, tuple[complex, int]]], + optimizer_time: float, + ) -> VQEResult: + result = VQEResult() + result.eigenvalue = optimizer_result.fun + result.cost_function_evals = optimizer_result.nfev + result.optimal_point = optimizer_result.x + result.optimal_parameters = dict(zip(self.ansatz.parameters, optimizer_result.x)) + result.optimal_value = optimizer_result.fun + result.optimizer_time = optimizer_time + result.aux_operators_evaluated = aux_operators_evaluated + result.optimizer_result = optimizer_result + return result + + +class VQEResult(VariationalResult, MinimumEigensolverResult): + """Variational quantum eigensolver result.""" + + def __init__(self) -> None: + super().__init__() + self._cost_function_evals = None + + @property + def cost_function_evals(self) -> int | None: + """The number of cost optimizer evaluations.""" + return self._cost_function_evals + + @cost_function_evals.setter + def cost_function_evals(self, value: int) -> None: + self._cost_function_evals = value diff --git a/qiskit/algorithms/observables_evaluator.py b/qiskit/algorithms/observables_evaluator.py index f6a6c3d8094a..f1ca00c4b5d2 100644 --- a/qiskit/algorithms/observables_evaluator.py +++ b/qiskit/algorithms/observables_evaluator.py @@ -9,8 +9,12 @@ # Any modifications or derivative works of this code must retain this # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. + """Evaluator of observables for algorithms.""" + from __future__ import annotations +from collections.abc import Sequence +from typing import Any import numpy as np @@ -18,7 +22,7 @@ from qiskit.opflow import PauliSumOp from .exceptions import AlgorithmError from .list_or_dict import ListOrDict -from ..primitives import EstimatorResult, BaseEstimator +from ..primitives import BaseEstimator from ..quantum_info.operators.base_operator import BaseOperator @@ -26,38 +30,31 @@ def estimate_observables( estimator: BaseEstimator, quantum_state: QuantumCircuit, observables: ListOrDict[BaseOperator | PauliSumOp], + parameter_values: Sequence[float] | None = None, threshold: float = 1e-12, -) -> ListOrDict[tuple[complex, tuple[complex, int]]]: +) -> ListOrDict[tuple[complex, dict[str, Any]]]: """ Accepts a sequence of operators and calculates their expectation values - means - and standard deviations. They are calculated with respect to a quantum state provided. A user + and metadata. They are calculated with respect to a quantum state provided. A user can optionally provide a threshold value which filters mean values falling below the threshold. Args: estimator: An estimator primitive used for calculations. - quantum_state: An unparametrized quantum circuit representing a quantum state that - expectation values are computed against. + quantum_state: A (parameterized) quantum circuit preparing a quantum state that expectation + values are computed against. observables: A list or a dictionary of operators whose expectation values are to be calculated. + parameter_values: Optional list of parameters values to evaluate the quantum circuit on. threshold: A threshold value that defines which mean values should be neglected (helpful for ignoring numerical instabilities close to 0). Returns: - A list or a dictionary of tuples (mean, (variance, shots)). + A list or a dictionary of tuples (mean, metadata). Raises: - ValueError: If a ``quantum_state`` with free parameters is provided. AlgorithmError: If a primitive job is not successful. """ - if ( - isinstance(quantum_state, QuantumCircuit) # State cannot be parametrized - and len(quantum_state.parameters) > 0 - ): - raise ValueError( - "A parametrized representation of a quantum_state was provided. It is not " - "allowed - it cannot have free parameters." - ) if isinstance(observables, dict): observables_list = list(observables.values()) else: @@ -65,18 +62,19 @@ def estimate_observables( observables_list = _handle_zero_ops(observables_list) quantum_state = [quantum_state] * len(observables) + if parameter_values is not None: + parameter_values = [parameter_values] * len(observables) try: - estimator_job = estimator.run(quantum_state, observables_list) + estimator_job = estimator.run(quantum_state, observables_list, parameter_values) expectation_values = estimator_job.result().values except Exception as exc: raise AlgorithmError("The primitive job failed!") from exc - variance_and_shots = _prep_variance_and_shots(estimator_job, len(expectation_values)) - + metadata = estimator_job.result().metadata # Discard values below threshold observables_means = expectation_values * (np.abs(expectation_values) > threshold) - # zip means and standard deviations into tuples - observables_results = list(zip(observables_means, variance_and_shots)) + # zip means and metadata into tuples + observables_results = list(zip(observables_means, metadata)) return _prepare_result(observables_results, observables) @@ -95,20 +93,20 @@ def _handle_zero_ops( def _prepare_result( - observables_results: list[tuple[complex, tuple[complex, int]]], + observables_results: list[tuple[complex, dict]], observables: ListOrDict[BaseOperator | PauliSumOp], -) -> ListOrDict[tuple[complex, tuple[complex, int]]]: +) -> ListOrDict[tuple[complex, dict[str, Any]]]: """ - Prepares a list of tuples of eigenvalues and (variance, shots) tuples from + Prepares a list of tuples of eigenvalues and metadata tuples from ``observables_results`` and ``observables``. Args: - observables_results: A list of tuples (mean, (variance, shots)). + observables_results: A list of tuples (mean, metadata). observables: A list or a dictionary of operators whose expectation values are to be calculated. Returns: - A list or a dictionary of tuples (mean, (variance, shots)). + A list or a dictionary of tuples (mean, metadata). """ if isinstance(observables, list): @@ -122,36 +120,3 @@ def _prepare_result( for key, value in key_value_iterator: observables_eigenvalues[key] = value return observables_eigenvalues - - -def _prep_variance_and_shots( - estimator_result: EstimatorResult, - results_length: int, -) -> list[tuple[complex, int]]: - """ - Prepares a list of tuples with variances and shots from results provided by expectation values - calculations. If there is no variance or shots data available from a primitive, the values will - be set to ``0``. - - Args: - estimator_result: An estimator result. - results_length: Number of expectation values calculated. - - Returns: - A list of tuples of the form (variance, shots). - """ - if not estimator_result.metadata: - return [(0, 0)] * results_length - - results = [] - for metadata in estimator_result.metadata: - variance, shots = 0.0, 0 - if metadata: - if "variance" in metadata.keys(): - variance = metadata["variance"] - if "shots" in metadata.keys(): - shots = metadata["shots"] - - results.append((variance, shots)) - - return results diff --git a/qiskit/algorithms/optimizers/qnspsa.py b/qiskit/algorithms/optimizers/qnspsa.py index f74f91e51f19..42296f9ddf7a 100644 --- a/qiskit/algorithms/optimizers/qnspsa.py +++ b/qiskit/algorithms/optimizers/qnspsa.py @@ -187,7 +187,9 @@ def _point_sample(self, loss, x, eps, delta1, delta2): self._nfev += 6 loss_values = _batch_evaluate(loss, loss_points, self._max_evals_grouped) - fidelity_values = _batch_evaluate(self.fidelity, fidelity_points, self._max_evals_grouped) + fidelity_values = _batch_evaluate( + self.fidelity, fidelity_points, self._max_evals_grouped, unpack_points=True + ) # compute the gradient approximation and additionally return the loss function evaluations gradient_estimate = (loss_values[0] - loss_values[1]) / (2 * eps) * delta1 @@ -268,11 +270,13 @@ def fidelity(values_x, values_y): sampler = CircuitSampler(backend) def fidelity(values_x, values_y=None): - if values_y is not None: # no batches + # no batches + if isinstance(values_x, np.ndarray) and isinstance(values_y, np.ndarray): value_dict = dict( zip(params_x[:] + params_y[:], values_x.tolist() + values_y.tolist()) ) - else: + # legacy batching -- remove once QNSPSA.get_fidelity is only supported with sampler + elif values_y is None: value_dict = {p: [] for p in params_x[:] + params_y[:]} for values_xy in values_x: for value_x, param_x in zip(values_xy[0, :], params_x): @@ -280,6 +284,14 @@ def fidelity(values_x, values_y=None): for value_y, param_y in zip(values_xy[1, :], params_y): value_dict[param_y].append(value_y) + else: + value_dict = {p: [] for p in params_x[:] + params_y[:]} + for values_i_x, values_i_y in zip(values_x, values_y): + for value_x, param_x in zip(values_i_x, params_x): + value_dict[param_x].append(value_x) + + for value_y, param_y in zip(values_i_y, params_y): + value_dict[param_y].append(value_y) return np.abs(sampler.convert(expression, params=value_dict).eval()) ** 2 diff --git a/qiskit/algorithms/optimizers/spsa.py b/qiskit/algorithms/optimizers/spsa.py index 10d81dfdd41c..f12945762cbf 100644 --- a/qiskit/algorithms/optimizers/spsa.py +++ b/qiskit/algorithms/optimizers/spsa.py @@ -711,7 +711,7 @@ def constant(eta=0.01): yield eta -def _batch_evaluate(function, points, max_evals_grouped): +def _batch_evaluate(function, points, max_evals_grouped, unpack_points=False): # if the function cannot handle lists of points as input, cover this case immediately if max_evals_grouped == 1: # support functions with multiple arguments where the points are given in a tuple @@ -731,11 +731,32 @@ def _batch_evaluate(function, points, max_evals_grouped): results = [] for batch in batched_points: - results += function(batch).tolist() + if unpack_points: + batch = _repack_points(batch) + results += _as_list(function(*batch)) + else: + results += _as_list(function(batch)) return results +def _as_list(obj): + """Convert a list or numpy array into a list.""" + return obj.tolist() if isinstance(obj, np.ndarray) else obj + + +def _repack_points(points): + """Turn a list of tuples of points into a tuple of lists of points. + E.g. turns + [(a1, a2, a3), (b1, b2, b3)] + into + ([a1, b1], [a2, b2], [a3, b3]) + where all elements are np.ndarray. + """ + num_sets = len(points[0]) # length of (a1, a2, a3) + return ([x[i] for x in points] for i in range(num_sets)) + + def _make_spd(matrix, bias=0.01): identity = np.identity(matrix.shape[0]) psd = scipy.linalg.sqrtm(matrix.dot(matrix)) diff --git a/qiskit/algorithms/time_evolvers/trotterization/trotter_qrte.py b/qiskit/algorithms/time_evolvers/trotterization/trotter_qrte.py index d244f718cef4..8ee855d60c40 100644 --- a/qiskit/algorithms/time_evolvers/trotterization/trotter_qrte.py +++ b/qiskit/algorithms/time_evolvers/trotterization/trotter_qrte.py @@ -168,6 +168,7 @@ def evolve(self, evolution_problem: TimeEvolutionProblem) -> TimeEvolutionResult self.estimator, evolved_state, evolution_problem.aux_operators, + None, evolution_problem.truncation_threshold, ) diff --git a/qiskit/algorithms/utils/__init__.py b/qiskit/algorithms/utils/__init__.py new file mode 100644 index 000000000000..2b49396270c7 --- /dev/null +++ b/qiskit/algorithms/utils/__init__.py @@ -0,0 +1,21 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Common Qiskit algorithms utility functions.""" + +from .validate_initial_point import validate_initial_point +from .validate_bounds import validate_bounds + +__all__ = [ + "validate_initial_point", + "validate_bounds", +] diff --git a/qiskit/algorithms/utils/validate_bounds.py b/qiskit/algorithms/utils/validate_bounds.py new file mode 100644 index 000000000000..65f00cfcbd79 --- /dev/null +++ b/qiskit/algorithms/utils/validate_bounds.py @@ -0,0 +1,44 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Validate parameter bounds.""" + +from __future__ import annotations + +from qiskit.circuit import QuantumCircuit + + +def validate_bounds(circuit: QuantumCircuit) -> list[tuple(float | None, float | None)]: + """ + Validate the bounds provided by a quantum circuit against its number of parameters. + If no bounds are obtained, return ``None`` for all lower and upper bounds. + + Args: + circuit: A parameterized quantum circuit. + + Returns: + A list of tuples (lower_bound, upper_bound)). + + Raises: + ValueError: If the number of bounds does not the match the number of circuit parameters. + """ + if hasattr(circuit, "parameter_bounds") and circuit.parameter_bounds is not None: + bounds = circuit.parameter_bounds + if len(bounds) != circuit.num_parameters: + raise ValueError( + f"The number of bounds ({len(bounds)}) does not match the number of " + f"parameters in the circuit ({circuit.num_parameters})." + ) + else: + bounds = [(None, None)] * circuit.num_parameters + + return bounds diff --git a/qiskit/algorithms/utils/validate_initial_point.py b/qiskit/algorithms/utils/validate_initial_point.py new file mode 100644 index 000000000000..15e871cdd473 --- /dev/null +++ b/qiskit/algorithms/utils/validate_initial_point.py @@ -0,0 +1,69 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Validate an initial point.""" + +from __future__ import annotations + +from collections.abc import Sequence + +import numpy as np + +from qiskit.circuit import QuantumCircuit +from qiskit.utils import algorithm_globals + + +def validate_initial_point( + point: Sequence[float] | None, circuit: QuantumCircuit +) -> Sequence[float]: + r""" + Validate a choice of initial point against a choice of circuit. If no point is provided, a + random point will be generated within certain parameter bounds. It will first look to the + circuit for these bounds. If the circuit does not specify bounds, bounds of :math:`-2\pi`, + :math:`2\pi` will be used. + + Args: + point: An initial point. + circuit: A parameterized quantum circuit. + + Returns: + A validated initial point. + + Raises: + ValueError: If the dimension of the initial point does not match the number of circuit + parameters. + """ + expected_size = circuit.num_parameters + + if point is None: + # get bounds if circuit has them set, otherwise use [-2pi, 2pi] for each parameter + bounds = getattr(circuit, "parameter_bounds", None) + if bounds is None: + bounds = [(-2 * np.pi, 2 * np.pi)] * expected_size + + # replace all Nones by [-2pi, 2pi] + lower_bounds = [] + upper_bounds = [] + for lower, upper in bounds: + lower_bounds.append(lower if lower is not None else -2 * np.pi) + upper_bounds.append(upper if upper is not None else 2 * np.pi) + + # sample from within bounds + point = algorithm_globals.random.uniform(lower_bounds, upper_bounds) + + elif len(point) != expected_size: + raise ValueError( + f"The dimension of the initial point ({len(point)}) does not match the " + f"number of parameters in the circuit ({expected_size})." + ) + + return point diff --git a/qiskit/algorithms/variational_algorithm.py b/qiskit/algorithms/variational_algorithm.py index 92d8976ffc9f..0be89abf6bef 100644 --- a/qiskit/algorithms/variational_algorithm.py +++ b/qiskit/algorithms/variational_algorithm.py @@ -31,6 +31,7 @@ import numpy as np from .algorithm_result import AlgorithmResult +from .optimizers import OptimizerResult class VariationalAlgorithm(ABC): @@ -109,3 +110,13 @@ def optimal_parameters(self) -> Optional[Dict]: def optimal_parameters(self, value: Dict) -> None: """Sets optimal parameters""" self._optimal_parameters = value + + @property + def optimizer_result(self) -> Optional[OptimizerResult]: + """Returns the optimizer result""" + return self._optimizer_result + + @optimizer_result.setter + def optimizer_result(self, value: OptimizerResult) -> None: + """Sets optimizer result""" + self._optimizer_result = value diff --git a/releasenotes/notes/0.19/add-getters-and-setters-for-vqe-edc753591b368980.yaml b/releasenotes/notes/0.19/add-getters-and-setters-for-vqe-edc753591b368980.yaml index a1f20e922017..1d6ca9b82665 100644 --- a/releasenotes/notes/0.19/add-getters-and-setters-for-vqe-edc753591b368980.yaml +++ b/releasenotes/notes/0.19/add-getters-and-setters-for-vqe-edc753591b368980.yaml @@ -3,8 +3,10 @@ features: - | Every attribute of the :class:`~qiskit.algorithms.VQE` class that is set at the initialization is now accessible with getters and setters. Further, the - default values of the VQE attributes :attr:`~.VQE.ansatz` and - :attr:`~.VQE.optimizer` can be reset by assigning ``None`` to them:: + default values of the VQE attributes + :attr:`~qiskit.algorithms.minimimum_eigen_solvers.VQE.ansatz` and + :attr:`~qiskit.algorithms.minimimum_eigen_solvers.VQE.optimizer` can be + reset by assigning ``None`` to them:: vqe = VQE(my_ansatz, my_optimizer) vqe.ansatz = None # reset to default: RealAmplitudes ansatz diff --git a/releasenotes/notes/0.19/support-dict-for-aux-operators-c3c9ad380c208afd.yaml b/releasenotes/notes/0.19/support-dict-for-aux-operators-c3c9ad380c208afd.yaml index 5fef8f5d6483..63af5ca0dc66 100644 --- a/releasenotes/notes/0.19/support-dict-for-aux-operators-c3c9ad380c208afd.yaml +++ b/releasenotes/notes/0.19/support-dict-for-aux-operators-c3c9ad380c208afd.yaml @@ -1,9 +1,11 @@ --- features: - | - The :obj:`.Eigensolver` and :obj:`.MinimumEigensolver` interfaces now support the type + The :obj:`.Eigensolver` and :obj:`~qiskit.algorithms.minimimum_eigen_solvers.MinimumEigensolver` + interfaces now support the type ``Dict[str, Optional[OperatorBase]]`` for the ``aux_operators`` parameter in their respective - :meth:`~.Eigensolver.compute_eigenvalues` and :meth:`~.MinimumEigensolver.compute_minimum_eigenvalue` methods. + :meth:`~.Eigensolver.compute_eigenvalues` and + :meth:`~qiskit.algorithms.minimimum_eigen_solvers.MinimumEigensolver.compute_minimum_eigenvalue` methods. In this case, the auxiliary eigenvalues are also stored in a dictionary under the same keys provided by the ``aux_operators`` dictionary. Keys that correspond to an operator that does not commute with the main operator are dropped. diff --git a/releasenotes/notes/0.19/taper_empty_operator_fix-53ce20e5d2b68fd6.yaml b/releasenotes/notes/0.19/taper_empty_operator_fix-53ce20e5d2b68fd6.yaml index b02a9dde71ac..a719f78310bc 100644 --- a/releasenotes/notes/0.19/taper_empty_operator_fix-53ce20e5d2b68fd6.yaml +++ b/releasenotes/notes/0.19/taper_empty_operator_fix-53ce20e5d2b68fd6.yaml @@ -1,11 +1,11 @@ --- fixes: - | - When tapering an empty zero operator in :mod:`qiskit.opflow`, the code, on detecting it was zero, logged a - warning and returned the original operator. Such operators are commonly found in - the auxiliary operators, when using Qiskit Nature, and the above behavior caused :obj:`.VQE` - to throw an exception as tapered non-zero operators were a different number of qubits - from the tapered zero operators (since taper has returned the input operator unchanged). - The code will now correctly taper a zero operator such that the number of qubits is - reduced as expected and matches to tapered non-zero operators e.g ```0*"IIII"``` when we are - tapering by 3 qubits will become ``0*"I"``. + When tapering an empty zero operator in :mod:`qiskit.opflow`, the code, on detecting it was + zero, logged a warning and returned the original operator. Such operators are commonly found in + the auxiliary operators, when using Qiskit Nature, and the above behavior caused + :obj:`~qiskit.algorithms.minimimum_eigen_solvers.VQE` to throw an exception as tapered non-zero + operators were a different number of qubits from the tapered zero operators (since taper has + returned the input operator unchanged). The code will now correctly taper a zero operator such + that the number of qubits is reduced as expected and matches to tapered non-zero operators e.g + ```0*"IIII"``` when we are tapering by 3 qubits will become ``0*"I"``. diff --git a/releasenotes/notes/vqe-with-estimator-primitive-7cbcc462ad4dc593.yaml b/releasenotes/notes/vqe-with-estimator-primitive-7cbcc462ad4dc593.yaml new file mode 100644 index 000000000000..b500ac205544 --- /dev/null +++ b/releasenotes/notes/vqe-with-estimator-primitive-7cbcc462ad4dc593.yaml @@ -0,0 +1,34 @@ +--- +features: + - | + Added the :class:`qiskit.algorithms.minimum_eigensolvers` package to include interfaces for + primitive-enabled algorithms. :class:`~qiskit.algorithms.minimum_eigensolvers.VQE` has been + refactored in this implementation to leverage primitives. + + To use the new implementation with a reference primitive, one can do, for example: + + .. code-block:: python + + from qiskit.algorithms.minimum_eigensolvers import VQE + from qiskit.algorithms.optimizers import SLSQP + from qiskit.circuit.library import TwoLocal + from qiskit.primitives import Estimator + + h2_op = SparsePauliOp( + ["II", "IZ", "ZI", "ZZ", "XX"], + coeffs=[ + -1.052373245772859, + 0.39793742484318045, + -0.39793742484318045, + -0.01128010425623538, + 0.18093119978423156, + ], + ) + + estimator = Estimator() + ansatz = TwoLocal(rotation_blocks=["ry", "rz"], entanglement_blocks="cz") + optimizer = SLSQP() + + vqe = VQE(estimator, ansatz, optimizer) + result = vqe.compute_minimum_eigenvalue(h2_op) + eigenvalue = result.eigenvalue diff --git a/test/python/algorithms/minimum_eigensolvers/__init__.py b/test/python/algorithms/minimum_eigensolvers/__init__.py new file mode 100644 index 000000000000..fdb172d367f0 --- /dev/null +++ b/test/python/algorithms/minimum_eigensolvers/__init__.py @@ -0,0 +1,11 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. diff --git a/test/python/algorithms/minimum_eigensolvers/test_numpy_minimum_eigensolver.py b/test/python/algorithms/minimum_eigensolvers/test_numpy_minimum_eigensolver.py new file mode 100644 index 000000000000..8d2212e1d7b3 --- /dev/null +++ b/test/python/algorithms/minimum_eigensolvers/test_numpy_minimum_eigensolver.py @@ -0,0 +1,241 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +""" Test NumPy minimum eigensolver """ + +import unittest +from test.python.algorithms import QiskitAlgorithmsTestCase + +import numpy as np +from ddt import ddt, data + +from qiskit.algorithms.minimum_eigensolvers import NumPyMinimumEigensolver +from qiskit.opflow import PauliSumOp + + +@ddt +class TestNumPyMinimumEigensolver(QiskitAlgorithmsTestCase): + """Test NumPy minimum eigensolver""" + + def setUp(self): + super().setUp() + self.qubit_op = PauliSumOp.from_list( + [ + ("II", -1.052373245772859), + ("ZI", 0.39793742484318045), + ("IZ", -0.39793742484318045), + ("ZZ", -0.01128010425623538), + ("XX", 0.18093119978423156), + ] + ) + + aux_op1 = PauliSumOp.from_list([("II", 2.0)]) + aux_op2 = PauliSumOp.from_list([("II", 0.5), ("ZZ", 0.5), ("YY", 0.5), ("XX", -0.5)]) + self.aux_ops_list = [aux_op1, aux_op2] + self.aux_ops_dict = {"aux_op1": aux_op1, "aux_op2": aux_op2} + + def test_cme(self): + """Basic test""" + algo = NumPyMinimumEigensolver() + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=self.aux_ops_list + ) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 2) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated[0], [2, 0]) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated[1], [0, 0]) + + def test_cme_reuse(self): + """Test reuse""" + algo = NumPyMinimumEigensolver() + + with self.subTest("Test with no operator or aux_operators, give via compute method"): + result = algo.compute_minimum_eigenvalue(operator=self.qubit_op) + self.assertEqual(result.eigenvalue.dtype, np.float64) + self.assertAlmostEqual(result.eigenvalue, -1.85727503) + self.assertIsNone(result.aux_operators_evaluated) + + with self.subTest("Test with added aux_operators"): + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=self.aux_ops_list + ) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 2) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated[0], [2, 0]) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated[1], [0, 0]) + + with self.subTest("Test with aux_operators removed"): + result = algo.compute_minimum_eigenvalue(operator=self.qubit_op, aux_operators=[]) + self.assertEqual(result.eigenvalue.dtype, np.float64) + self.assertAlmostEqual(result.eigenvalue, -1.85727503) + self.assertIsNone(result.aux_operators_evaluated) + + with self.subTest("Test with aux_operators set again"): + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=self.aux_ops_list + ) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 2) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated[0], [2, 0]) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated[1], [0, 0]) + + with self.subTest("Test after setting first aux_operators as main operator"): + result = algo.compute_minimum_eigenvalue( + operator=self.aux_ops_list[0], aux_operators=[] + ) + self.assertAlmostEqual(result.eigenvalue, 2 + 0j) + self.assertIsNone(result.aux_operators_evaluated) + + def test_cme_filter(self): + """Basic test""" + + # define filter criterion + # pylint: disable=unused-argument + def criterion(x, v, a_v): + return v >= -0.5 + + algo = NumPyMinimumEigensolver(filter_criterion=criterion) + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=self.aux_ops_list + ) + self.assertAlmostEqual(result.eigenvalue, -0.22491125 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 2) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated[0], [2, 0]) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated[1], [0, 0]) + + def test_cme_filter_empty(self): + """Test with filter always returning False""" + + # define filter criterion + # pylint: disable=unused-argument + def criterion(x, v, a_v): + return False + + algo = NumPyMinimumEigensolver(filter_criterion=criterion) + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=self.aux_ops_list + ) + self.assertEqual(result.eigenvalue, None) + self.assertEqual(result.eigenstate, None) + self.assertEqual(result.aux_operators_evaluated, None) + + @data("X", "Y", "Z") + def test_cme_1q(self, op): + """Test for 1 qubit operator""" + algo = NumPyMinimumEigensolver() + operator = PauliSumOp.from_list([(op, 1.0)]) + result = algo.compute_minimum_eigenvalue(operator=operator) + self.assertAlmostEqual(result.eigenvalue, -1) + + def test_cme_aux_ops_dict(self): + """Test dictionary compatibility of aux_operators""" + # Start with an empty dictionary + algo = NumPyMinimumEigensolver() + + with self.subTest("Test with an empty dictionary."): + result = algo.compute_minimum_eigenvalue(operator=self.qubit_op, aux_operators={}) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertIsNone(result.aux_operators_evaluated) + + with self.subTest("Test with two auxiliary operators."): + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=self.aux_ops_dict + ) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 2) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated["aux_op1"], [2, 0]) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated["aux_op2"], [0, 0]) + + with self.subTest("Test with additional zero and None operators."): + extra_ops = {"None_op": None, "zero_op": 0, **self.aux_ops_dict} + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=extra_ops + ) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 3) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated["aux_op1"], [2, 0]) + np.testing.assert_array_almost_equal(result.aux_operators_evaluated["aux_op2"], [0, 0]) + self.assertEqual(result.aux_operators_evaluated["zero_op"], (0.0, 0)) + + def test_aux_operators_list(self): + """Test list-based aux_operators.""" + aux_op1 = PauliSumOp.from_list([("II", 2.0)]) + aux_op2 = PauliSumOp.from_list([("II", 0.5), ("ZZ", 0.5), ("YY", 0.5), ("XX", -0.5)]) + aux_ops = [aux_op1, aux_op2] + algo = NumPyMinimumEigensolver() + + with self.subTest("Test with two auxiliary operators."): + result = algo.compute_minimum_eigenvalue(operator=self.qubit_op, aux_operators=aux_ops) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 2) + # expectation values + self.assertAlmostEqual(result.aux_operators_evaluated[0][0], 2, places=6) + self.assertAlmostEqual(result.aux_operators_evaluated[1][0], 0, places=6) + # standard deviations + self.assertAlmostEqual(result.aux_operators_evaluated[0][1], 0.0) + self.assertAlmostEqual(result.aux_operators_evaluated[1][1], 0.0) + + with self.subTest("Test with additional zero and None operators."): + extra_ops = [*aux_ops, None, 0] + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=extra_ops + ) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 4) + # expectation values + self.assertAlmostEqual(result.aux_operators_evaluated[0][0], 2, places=6) + self.assertAlmostEqual(result.aux_operators_evaluated[1][0], 0, places=6) + self.assertIsNone(result.aux_operators_evaluated[2], None) + self.assertEqual(result.aux_operators_evaluated[3][0], 0.0) + # standard deviations + self.assertAlmostEqual(result.aux_operators_evaluated[0][1], 0.0) + self.assertAlmostEqual(result.aux_operators_evaluated[1][1], 0.0) + self.assertEqual(result.aux_operators_evaluated[3][1], 0.0) + + def test_aux_operators_dict(self): + """Test dict-based aux_operators.""" + aux_op1 = PauliSumOp.from_list([("II", 2.0)]) + aux_op2 = PauliSumOp.from_list([("II", 0.5), ("ZZ", 0.5), ("YY", 0.5), ("XX", -0.5)]) + aux_ops = {"aux_op1": aux_op1, "aux_op2": aux_op2} + algo = NumPyMinimumEigensolver() + + with self.subTest("Test with two auxiliary operators."): + result = algo.compute_minimum_eigenvalue(operator=self.qubit_op, aux_operators=aux_ops) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 2) + # expectation values + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op1"][0], 2, places=6) + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op2"][0], 0, places=6) + # standard deviations + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op1"][1], 0.0) + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op2"][1], 0.0) + + with self.subTest("Test with additional zero and None operators."): + extra_ops = {**aux_ops, "None_operator": None, "zero_operator": 0} + result = algo.compute_minimum_eigenvalue( + operator=self.qubit_op, aux_operators=extra_ops + ) + self.assertAlmostEqual(result.eigenvalue, -1.85727503 + 0j) + self.assertEqual(len(result.aux_operators_evaluated), 3) + # expectation values + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op1"][0], 2, places=6) + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op2"][0], 0, places=6) + self.assertEqual(result.aux_operators_evaluated["zero_operator"][0], 0.0) + self.assertTrue("None_operator" not in result.aux_operators_evaluated.keys()) + # standard deviations + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op1"][1], 0.0) + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op2"][1], 0.0) + self.assertAlmostEqual(result.aux_operators_evaluated["zero_operator"][1], 0.0) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/python/algorithms/minimum_eigensolvers/test_vqe.py b/test/python/algorithms/minimum_eigensolvers/test_vqe.py new file mode 100644 index 000000000000..1ecc870237ec --- /dev/null +++ b/test/python/algorithms/minimum_eigensolvers/test_vqe.py @@ -0,0 +1,444 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Test the variational quantum eigensolver algorithm.""" + +import unittest +from test.python.algorithms import QiskitAlgorithmsTestCase + +from functools import partial +import numpy as np +from scipy.optimize import minimize as scipy_minimize +from ddt import data, ddt + +from qiskit import QuantumCircuit +from qiskit.algorithms import AlgorithmError +from qiskit.algorithms.gradients import ParamShiftEstimatorGradient +from qiskit.algorithms.minimum_eigensolvers import VQE +from qiskit.algorithms.optimizers import ( + CG, + COBYLA, + GradientDescent, + L_BFGS_B, + OptimizerResult, + P_BFGS, + QNSPSA, + SLSQP, + SPSA, + TNC, +) +from qiskit.algorithms.state_fidelities import ComputeUncompute +from qiskit.circuit.library import RealAmplitudes, TwoLocal +from qiskit.opflow import PauliSumOp, TwoQubitReduction +from qiskit.quantum_info import SparsePauliOp, Operator, Pauli +from qiskit.primitives import Estimator, Sampler +from qiskit.utils import algorithm_globals + +# pylint: disable=invalid-name +def _mock_optimizer(fun, x0, jac=None, bounds=None, inputs=None) -> OptimizerResult: + """A mock of a callable that can be used as minimizer in the VQE.""" + result = OptimizerResult() + result.x = np.zeros_like(x0) + result.fun = fun(result.x) + result.nit = 0 + + if inputs is not None: + inputs.update({"fun": fun, "x0": x0, "jac": jac, "bounds": bounds}) + return result + + +@ddt +class TestVQE(QiskitAlgorithmsTestCase): + """Test VQE""" + + def setUp(self): + super().setUp() + self.seed = 50 + algorithm_globals.random_seed = self.seed + self.h2_op = SparsePauliOp( + ["II", "IZ", "ZI", "ZZ", "XX"], + coeffs=[ + -1.052373245772859, + 0.39793742484318045, + -0.39793742484318045, + -0.01128010425623538, + 0.18093119978423156, + ], + ) + self.h2_energy = -1.85727503 + + self.ryrz_wavefunction = TwoLocal(rotation_blocks=["ry", "rz"], entanglement_blocks="cz") + self.ry_wavefunction = TwoLocal(rotation_blocks="ry", entanglement_blocks="cz") + + @data(L_BFGS_B(), COBYLA()) + def test_basic_aer_statevector(self, estimator): + """Test VQE using reference Estimator.""" + vqe = VQE(Estimator(), self.ryrz_wavefunction, estimator) + + result = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + + with self.subTest(msg="test eigenvalue"): + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + + with self.subTest(msg="test optimal_value"): + self.assertAlmostEqual(result.optimal_value, self.h2_energy) + + with self.subTest(msg="test dimension of optimal point"): + self.assertEqual(len(result.optimal_point), 16) + + with self.subTest(msg="assert cost_function_evals is set"): + self.assertIsNotNone(result.cost_function_evals) + + with self.subTest(msg="assert optimizer_time is set"): + self.assertIsNotNone(result.optimizer_time) + + with self.subTest(msg="assert optimizer_result is set"): + self.assertIsNotNone(result.optimizer_result) + + with self.subTest(msg="assert optimizer_result."): + self.assertAlmostEqual(result.optimizer_result.fun, self.h2_energy, places=5) + + def test_invalid_initial_point(self): + """Test the proper error is raised when the initial point has the wrong size.""" + ansatz = self.ryrz_wavefunction + initial_point = np.array([1]) + + vqe = VQE( + Estimator(), + ansatz, + SLSQP(), + initial_point=initial_point, + ) + + with self.assertRaises(ValueError): + _ = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + + def test_ansatz_resize(self): + """Test the ansatz is properly resized if it's a blueprint circuit.""" + ansatz = RealAmplitudes(1, reps=1) + vqe = VQE(Estimator(), ansatz, SLSQP()) + result = vqe.compute_minimum_eigenvalue(self.h2_op) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + + def test_invalid_ansatz_size(self): + """Test an error is raised if the ansatz has the wrong number of qubits.""" + ansatz = QuantumCircuit(1) + ansatz.compose(RealAmplitudes(1, reps=2)) + vqe = VQE(Estimator(), ansatz, SLSQP()) + + with self.assertRaises(AlgorithmError): + _ = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + + def test_missing_ansatz_params(self): + """Test specifying an ansatz with no parameters raises an error.""" + ansatz = QuantumCircuit(self.h2_op.num_qubits) + vqe = VQE(Estimator(), ansatz, SLSQP()) + with self.assertRaises(AlgorithmError): + vqe.compute_minimum_eigenvalue(operator=self.h2_op) + + def test_max_evals_grouped(self): + """Test with SLSQP with max_evals_grouped.""" + optimizer = SLSQP(maxiter=50, max_evals_grouped=5) + vqe = VQE( + Estimator(), + self.ryrz_wavefunction, + optimizer, + ) + result = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + + @data( + CG(), + L_BFGS_B(), + P_BFGS(), + SLSQP(), + TNC(), + ) + def test_with_gradient(self, optimizer): + """Test VQE using gradient primitive.""" + estimator = Estimator() + vqe = VQE( + estimator, + self.ry_wavefunction, + optimizer, + gradient=ParamShiftEstimatorGradient(estimator), + ) + result = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + + def test_gradient_passed(self): + """Test the gradient is properly passed into the optimizer.""" + inputs = {} + estimator = Estimator() + vqe = VQE( + estimator, + RealAmplitudes(), + partial(_mock_optimizer, inputs=inputs), + gradient=ParamShiftEstimatorGradient(estimator), + ) + _ = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + + self.assertIsNotNone(inputs["jac"]) + + def test_gradient_run(self): + """Test using the gradient to calculate the minimum.""" + estimator = Estimator() + vqe = VQE( + estimator, + RealAmplitudes(), + GradientDescent(maxiter=200, learning_rate=0.1), + gradient=ParamShiftEstimatorGradient(estimator), + ) + result = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + + def test_with_two_qubit_reduction(self): + """Test the VQE using TwoQubitReduction.""" + qubit_op = PauliSumOp.from_list( + [ + ("IIII", -0.8105479805373266), + ("IIIZ", 0.17218393261915552), + ("IIZZ", -0.22575349222402472), + ("IZZI", 0.1721839326191556), + ("ZZII", -0.22575349222402466), + ("IIZI", 0.1209126326177663), + ("IZZZ", 0.16892753870087912), + ("IXZX", -0.045232799946057854), + ("ZXIX", 0.045232799946057854), + ("IXIX", 0.045232799946057854), + ("ZXZX", -0.045232799946057854), + ("ZZIZ", 0.16614543256382414), + ("IZIZ", 0.16614543256382414), + ("ZZZZ", 0.17464343068300453), + ("ZIZI", 0.1209126326177663), + ] + ) + tapered_qubit_op = TwoQubitReduction(num_particles=2).convert(qubit_op) + vqe = VQE( + Estimator(), + self.ry_wavefunction, + SPSA(maxiter=300, last_avg=5), + ) + result = vqe.compute_minimum_eigenvalue(tapered_qubit_op) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=2) + + def test_callback(self): + """Test the callback on VQE.""" + history = {"eval_count": [], "parameters": [], "mean": [], "metadata": []} + # expected_shots = options["shots"] if "shots" in options else 0 + + def store_intermediate_result(eval_count, parameters, mean, metadata): + history["eval_count"].append(eval_count) + history["parameters"].append(parameters) + history["mean"].append(mean) + history["metadata"].append(metadata) + + optimizer = COBYLA(maxiter=3) + wavefunction = self.ry_wavefunction + + estimator = Estimator() + + vqe = VQE( + estimator, + wavefunction, + optimizer, + callback=store_intermediate_result, + ) + vqe.compute_minimum_eigenvalue(operator=self.h2_op) + + self.assertTrue(all(isinstance(count, int) for count in history["eval_count"])) + self.assertTrue(all(isinstance(mean, float) for mean in history["mean"])) + self.assertTrue(all(isinstance(metadata, dict) for metadata in history["metadata"])) + for params in history["parameters"]: + self.assertTrue(all(isinstance(param, float) for param in params)) + + def test_reuse(self): + """Test re-using a VQE algorithm instance.""" + ansatz = TwoLocal(rotation_blocks=["ry", "rz"], entanglement_blocks="cz") + vqe = VQE(Estimator(), ansatz, SLSQP(maxiter=300)) + with self.subTest(msg="assert VQE works once all info is available"): + result = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + + operator = Operator(np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]])) + + with self.subTest(msg="assert vqe works on re-use."): + result = vqe.compute_minimum_eigenvalue(operator=operator) + self.assertAlmostEqual(result.eigenvalue.real, -1.0, places=5) + + def test_vqe_optimizer_reuse(self): + """Test running same VQE twice to re-use optimizer, then switch optimizer""" + vqe = VQE( + Estimator(), + self.ryrz_wavefunction, + SLSQP(), + ) + + def run_check(): + result = vqe.compute_minimum_eigenvalue(operator=self.h2_op) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + + run_check() + + with self.subTest("Optimizer re-use."): + run_check() + + with self.subTest("Optimizer replace."): + vqe.optimizer = L_BFGS_B() + run_check() + + def test_batch_evaluate_with_qnspsa(self): + """Test batch evaluating with QNSPSA works.""" + ansatz = TwoLocal(2, rotation_blocks=["ry", "rz"], entanglement_blocks="cz") + + wrapped_sampler = Sampler() + inner_sampler = Sampler() + + wrapped_estimator = Estimator() + inner_estimator = Estimator() + + callcount = {"sampler": 0, "estimator": 0} + + def wrapped_estimator_run(*args, **kwargs): + kwargs["callcount"]["estimator"] += 1 + return inner_estimator.run(*args, **kwargs) + + def wrapped_sampler_run(*args, **kwargs): + kwargs["callcount"]["sampler"] += 1 + return inner_sampler.run(*args, **kwargs) + + wrapped_estimator.run = partial(wrapped_estimator_run, callcount=callcount) + wrapped_sampler.run = partial(wrapped_sampler_run, callcount=callcount) + + fidelity = ComputeUncompute(wrapped_sampler) + + def fidelity_callable(left, right): + batchsize = np.asarray(left).shape[0] + job = fidelity.run(batchsize * [ansatz], batchsize * [ansatz], left, right) + return job.result().fidelities + + qnspsa = QNSPSA(fidelity_callable, maxiter=5) + qnspsa.set_max_evals_grouped(100) + + vqe = VQE( + wrapped_estimator, + ansatz, + qnspsa, + ) + _ = vqe.compute_minimum_eigenvalue(Pauli("ZZ")) + + # 5 (fidelity) + expected_sampler_runs = 5 + # 1 calibration + 1 stddev estimation + 1 initial blocking + # + 5 (1 loss + 1 blocking) + 1 return loss + expected_estimator_runs = 1 + 1 + 1 + 5 * 2 + 1 + + self.assertEqual(callcount["sampler"], expected_sampler_runs) + self.assertEqual(callcount["estimator"], expected_estimator_runs) + + def test_optimizer_scipy_callable(self): + """Test passing a SciPy optimizer directly as callable.""" + vqe = VQE( + Estimator(), + self.ryrz_wavefunction, + partial(scipy_minimize, method="L-BFGS-B", options={"maxiter": 10}), + ) + result = vqe.compute_minimum_eigenvalue(self.h2_op) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=2) + + def test_optimizer_callable(self): + """Test passing a optimizer directly as callable.""" + ansatz = RealAmplitudes(1, reps=1) + vqe = VQE(Estimator(), ansatz, _mock_optimizer) + result = vqe.compute_minimum_eigenvalue(SparsePauliOp("Z")) + self.assertTrue(np.all(result.optimal_point == np.zeros(ansatz.num_parameters))) + + def test_aux_operators_list(self): + """Test list-based aux_operators.""" + vqe = VQE(Estimator(), self.ry_wavefunction, SLSQP(maxiter=300)) + + with self.subTest("Test with an empty list."): + result = vqe.compute_minimum_eigenvalue(self.h2_op, aux_operators=[]) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=6) + self.assertIsInstance(result.aux_operators_evaluated, list) + self.assertEqual(len(result.aux_operators_evaluated), 0) + + with self.subTest("Test with two auxiliary operators."): + aux_op1 = PauliSumOp.from_list([("II", 2.0)]) + aux_op2 = PauliSumOp.from_list([("II", 0.5), ("ZZ", 0.5), ("YY", 0.5), ("XX", -0.5)]) + aux_ops = [aux_op1, aux_op2] + result = vqe.compute_minimum_eigenvalue(self.h2_op, aux_operators=aux_ops) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + self.assertEqual(len(result.aux_operators_evaluated), 2) + # expectation values + self.assertAlmostEqual(result.aux_operators_evaluated[0][0], 2.0, places=6) + self.assertAlmostEqual(result.aux_operators_evaluated[1][0], 0.0, places=6) + # metadata + self.assertIsInstance(result.aux_operators_evaluated[0][1], dict) + self.assertIsInstance(result.aux_operators_evaluated[1][1], dict) + + with self.subTest("Test with additional zero operator."): + extra_ops = [*aux_ops, 0] + result = vqe.compute_minimum_eigenvalue(self.h2_op, aux_operators=extra_ops) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) + self.assertEqual(len(result.aux_operators_evaluated), 3) + # expectation values + self.assertAlmostEqual(result.aux_operators_evaluated[0][0], 2.0, places=6) + self.assertAlmostEqual(result.aux_operators_evaluated[1][0], 0.0, places=6) + self.assertAlmostEqual(result.aux_operators_evaluated[2][0], 0.0) + # metadata + self.assertIsInstance(result.aux_operators_evaluated[0][1], dict) + self.assertIsInstance(result.aux_operators_evaluated[1][1], dict) + self.assertIsInstance(result.aux_operators_evaluated[2][1], dict) + + def test_aux_operators_dict(self): + """Test dictionary compatibility of aux_operators""" + vqe = VQE(Estimator(), self.ry_wavefunction, SLSQP(maxiter=300)) + + with self.subTest("Test with an empty dictionary."): + result = vqe.compute_minimum_eigenvalue(self.h2_op, aux_operators={}) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=6) + self.assertIsInstance(result.aux_operators_evaluated, dict) + self.assertEqual(len(result.aux_operators_evaluated), 0) + + with self.subTest("Test with two auxiliary operators."): + aux_op1 = PauliSumOp.from_list([("II", 2.0)]) + aux_op2 = PauliSumOp.from_list([("II", 0.5), ("ZZ", 0.5), ("YY", 0.5), ("XX", -0.5)]) + aux_ops = {"aux_op1": aux_op1, "aux_op2": aux_op2} + result = vqe.compute_minimum_eigenvalue(self.h2_op, aux_operators=aux_ops) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=6) + self.assertEqual(len(result.aux_operators_evaluated), 2) + + # expectation values + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op1"][0], 2.0, places=5) + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op2"][0], 0.0, places=5) + # metadata + self.assertIsInstance(result.aux_operators_evaluated["aux_op1"][1], dict) + self.assertIsInstance(result.aux_operators_evaluated["aux_op2"][1], dict) + + with self.subTest("Test with additional zero operator."): + extra_ops = {**aux_ops, "zero_operator": 0} + result = vqe.compute_minimum_eigenvalue(self.h2_op, aux_operators=extra_ops) + self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=6) + self.assertEqual(len(result.aux_operators_evaluated), 3) + # expectation values + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op1"][0], 2.0, places=5) + self.assertAlmostEqual(result.aux_operators_evaluated["aux_op2"][0], 0.0, places=5) + self.assertAlmostEqual(result.aux_operators_evaluated["zero_operator"][0], 0.0) + # metadata + self.assertIsInstance(result.aux_operators_evaluated["aux_op1"][1], dict) + self.assertIsInstance(result.aux_operators_evaluated["aux_op2"][1], dict) + self.assertIsInstance(result.aux_operators_evaluated["zero_operator"][1], dict) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/python/algorithms/test_observables_evaluator.py b/test/python/algorithms/test_observables_evaluator.py index bcff77cdd5b4..9db5f02b312d 100644 --- a/test/python/algorithms/test_observables_evaluator.py +++ b/test/python/algorithms/test_observables_evaluator.py @@ -9,7 +9,9 @@ # Any modifications or derivative works of this code must retain this # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. + """Tests evaluator of auxiliary operators for algorithms.""" + from __future__ import annotations import unittest from typing import Tuple @@ -53,7 +55,7 @@ def get_exact_expectation( # the exact value is a list of (mean, (variance, shots)) where we expect 0 variance and # 0 shots exact = [ - (Statevector(ansatz).expectation_value(observable), (0, 0)) + (Statevector(ansatz).expectation_value(observable), {}) for observable in observables_list ] @@ -70,7 +72,7 @@ def _run_test( observables: ListOrDict[BaseOperator | PauliSumOp], estimator: Estimator, ): - result = estimate_observables(estimator, quantum_state, observables, self.threshold) + result = estimate_observables(estimator, quantum_state, observables, None, self.threshold) if isinstance(observables, dict): np.testing.assert_equal(list(result.keys()), list(expected_result.keys())) @@ -142,8 +144,8 @@ def test_estimate_observables_zero_op(self): state = bound_ansatz estimator = Estimator() observables = [SparsePauliOp(["XX", "YY"]), 0] - result = estimate_observables(estimator, state, observables, self.threshold) - expected_result = [(0.015607318055509564, (0, 0)), (0.0, (0, 0))] + result = estimate_observables(estimator, state, observables, None, self.threshold) + expected_result = [(0.015607318055509564, {}), (0.0, {})] means = [element[0] for element in result] expected_means = [element[0] for element in expected_result] np.testing.assert_array_almost_equal(means, expected_means, decimal=0.01) @@ -152,6 +154,32 @@ def test_estimate_observables_zero_op(self): expected_vars_and_shots = [element[1] for element in expected_result] np.testing.assert_array_equal(vars_and_shots, expected_vars_and_shots) + def test_estimate_observables_shots(self): + """Tests that variances and shots are returned properly.""" + ansatz = EfficientSU2(2) + parameters = np.array( + [1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0, 1.2, 4.2, 1.4, 2.0], + dtype=float, + ) + + bound_ansatz = ansatz.bind_parameters(parameters) + state = bound_ansatz + estimator = Estimator(options={"shots": 2048}) + observables = [PauliSumOp.from_list([("ZZ", 2.0)])] + result = estimate_observables(estimator, state, observables, None, self.threshold) + exact_result = self.get_exact_expectation(bound_ansatz, observables) + expected_result = [(exact_result[0][0], {"variance": 1.0898, "shots": 2048})] + + means = [element[0] for element in result] + expected_means = [element[0] for element in expected_result] + np.testing.assert_array_almost_equal(means, expected_means, decimal=0.01) + + vars_and_shots = [element[1] for element in result] + expected_vars_and_shots = [element[1] for element in expected_result] + for computed, expected in zip(vars_and_shots, expected_vars_and_shots): + self.assertAlmostEqual(computed.pop("variance"), expected.pop("variance"), 2) + self.assertEqual(computed.pop("shots"), expected.pop("shots")) + if __name__ == "__main__": unittest.main() diff --git a/test/python/algorithms/time_evolvers/test_trotter_qrte.py b/test/python/algorithms/time_evolvers/test_trotter_qrte.py index fbdbb0161590..16efa06549e2 100644 --- a/test/python/algorithms/time_evolvers/test_trotter_qrte.py +++ b/test/python/algorithms/time_evolvers/test_trotter_qrte.py @@ -88,7 +88,10 @@ def test_trotter_qrte_trotter_single_qubit_aux_ops(self): ) aux_ops_result = evolution_result.aux_ops_evaluated - expected_aux_ops_result = [(0.078073, (0.0, 0.0)), (0.268286, (0.0, 0.0))] + expected_aux_ops_result = [ + (0.078073, {"variance": 0, "shots": 0}), + (0.268286, {"variance": 0, "shots": 0}), + ] means = [element[0] for element in aux_ops_result] expected_means = [element[0] for element in expected_aux_ops_result] @@ -96,7 +99,10 @@ def test_trotter_qrte_trotter_single_qubit_aux_ops(self): vars_and_shots = [element[1] for element in aux_ops_result] expected_vars_and_shots = [element[1] for element in expected_aux_ops_result] - np.testing.assert_array_equal(vars_and_shots, expected_vars_and_shots) + + for computed, expected in zip(vars_and_shots, expected_vars_and_shots): + self.assertAlmostEqual(computed.pop("variance", 0), expected["variance"], 2) + self.assertEqual(computed.pop("shots", 0), expected["shots"]) @data( ( diff --git a/test/python/algorithms/utils/__init__.py b/test/python/algorithms/utils/__init__.py new file mode 100644 index 000000000000..fdb172d367f0 --- /dev/null +++ b/test/python/algorithms/utils/__init__.py @@ -0,0 +1,11 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. diff --git a/test/python/algorithms/utils/test_validate_bounds.py b/test/python/algorithms/utils/test_validate_bounds.py new file mode 100644 index 000000000000..80fe54ee0787 --- /dev/null +++ b/test/python/algorithms/utils/test_validate_bounds.py @@ -0,0 +1,53 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Test validate bounds.""" + +from test.python.algorithms import QiskitAlgorithmsTestCase + +from unittest.mock import Mock + +import numpy as np + +from qiskit.algorithms.utils import validate_bounds +from qiskit.utils import algorithm_globals + + +class TestValidateBounds(QiskitAlgorithmsTestCase): + """Test the ``validate_bounds`` utility function.""" + + def setUp(self): + super().setUp() + algorithm_globals.random_seed = 0 + self.bounds = [(-np.pi / 2, np.pi / 2)] + self.ansatz = Mock() + + def test_with_no_ansatz_bounds(self): + """Test with no ansatz bounds.""" + self.ansatz.num_parameters = 1 + self.ansatz.parameter_bounds = None + bounds = validate_bounds(self.ansatz) + self.assertEqual(bounds, [(None, None)]) + + def test_with_ansatz_bounds(self): + """Test with ansatz bounds.""" + self.ansatz.num_parameters = 1 + self.ansatz.parameter_bounds = self.bounds + bounds = validate_bounds(self.ansatz) + self.assertEqual(bounds, self.bounds) + + def test_with_mismatched_num_params(self): + """Test with a mismatched number of parameters and bounds""" + self.ansatz.num_parameters = 2 + self.ansatz.parameter_bounds = self.bounds + with self.assertRaises(ValueError): + _ = validate_bounds(self.ansatz) diff --git a/test/python/algorithms/utils/test_validate_initial_point.py b/test/python/algorithms/utils/test_validate_initial_point.py new file mode 100644 index 000000000000..32dd48cf2c95 --- /dev/null +++ b/test/python/algorithms/utils/test_validate_initial_point.py @@ -0,0 +1,50 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2022. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Test validate initial point.""" + +from test.python.algorithms import QiskitAlgorithmsTestCase + +from unittest.mock import Mock + +import numpy as np + +from qiskit.algorithms.utils import validate_initial_point +from qiskit.utils import algorithm_globals + + +class TestValidateInitialPoint(QiskitAlgorithmsTestCase): + """Test the ``validate_initial_point`` utility function.""" + + def setUp(self): + super().setUp() + algorithm_globals.random_seed = 0 + self.ansatz = Mock() + self.ansatz.num_parameters = 1 + + def test_with_no_initial_point_or_bounds(self): + """Test with no user-defined initial point and no ansatz bounds.""" + self.ansatz.parameter_bounds = None + initial_point = validate_initial_point(None, self.ansatz) + np.testing.assert_array_almost_equal(initial_point, [1.721111]) + + def test_with_no_initial_point(self): + """Test with no user-defined initial point with ansatz bounds.""" + self.ansatz.parameter_bounds = [(-np.pi / 2, np.pi / 2)] + initial_point = validate_initial_point(None, self.ansatz) + np.testing.assert_array_almost_equal(initial_point, [0.430278]) + + def test_with_mismatched_params(self): + """Test with mistmatched parameters and bounds..""" + self.ansatz.parameter_bounds = None + with self.assertRaises(ValueError): + _ = validate_initial_point([1.0, 2.0], self.ansatz) From f98ddc6ddaf68475b9aca717fa8c91646c60a2da Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Tue, 27 Sep 2022 18:38:13 +0100 Subject: [PATCH 53/56] Change pulse code owners (#8797) This better represents which of the internal team have the time to devote to being a full code owner of the pulse and scheduling modules. Will has been doing great reviews of Naoki's features for the pulse module, and he's the best person to join as another code owner there. Dan doesn't have time now to be a full code owner of pulse, which is the only reason for removing him. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/CODEOWNERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 219df3897a0a..67cf17fb9a69 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -29,8 +29,8 @@ qiskit/utils/ @Qiskit/terra-core @manoelmarques @woodsp-ibm providers/ @Qiskit/terra-core @jyu00 quantum_info/ @Qiskit/terra-core @ikkoham qpy/ @Qiskit/terra-core @nkanazawa1989 -pulse/ @Qiskit/terra-core @eggerdj @nkanazawa1989 @danpuzzuoli -scheduler/ @Qiskit/terra-core @eggerdj @nkanazawa1989 @danpuzzuoli +pulse/ @Qiskit/terra-core @eggerdj @nkanazawa1989 @wshanks +scheduler/ @Qiskit/terra-core @eggerdj @nkanazawa1989 @wshanks visualization/ @Qiskit/terra-core @nonhermitian @nkanazawa1989 primitives/ @Qiskit/terra-core @ikkoham @t-imamichi # Override the release notes directories to have _no_ code owners, so any review From 293ab43afb87a75ffe4157fa629830afa42a5fe4 Mon Sep 17 00:00:00 2001 From: Manoel Marques Date: Tue, 27 Sep 2022 16:44:09 -0400 Subject: [PATCH 54/56] Pending deprecate algorithms (#8703) * Pending deprecate algorithms * Update releasenotes/notes/pending-deprecate-min-eigen-solvers-fa4341e1014e4df0.yaml Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../minimum_eigen_solver.py | 36 +++++++++++++++-- .../numpy_minimum_eigen_solver.py | 22 +++++++++- .../algorithms/minimum_eigen_solvers/qaoa.py | 40 +++++++++++++------ .../algorithms/minimum_eigen_solvers/vqe.py | 40 +++++++++++++++++-- ...te-min-eigen-solvers-fa4341e1014e4df0.yaml | 6 +++ 5 files changed, 123 insertions(+), 21 deletions(-) create mode 100644 releasenotes/notes/pending-deprecate-min-eigen-solvers-fa4341e1014e4df0.yaml diff --git a/qiskit/algorithms/minimum_eigen_solvers/minimum_eigen_solver.py b/qiskit/algorithms/minimum_eigen_solvers/minimum_eigen_solver.py index 7cdd245b7076..373876a9e046 100644 --- a/qiskit/algorithms/minimum_eigen_solvers/minimum_eigen_solver.py +++ b/qiskit/algorithms/minimum_eigen_solvers/minimum_eigen_solver.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2020. +# (C) Copyright IBM 2020, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -18,18 +18,34 @@ import numpy as np from qiskit.opflow import OperatorBase +from qiskit.utils.deprecation import deprecate_function from ..algorithm_result import AlgorithmResult from ..list_or_dict import ListOrDict class MinimumEigensolver(ABC): - """The Minimum Eigensolver Interface. + """Pending deprecation: Minimum Eigensolver Interface. + + The Minimum Eigensolver interface has been superseded by the + :class:`qiskit.algorithms.minimum_eigensolvers.MinimumEigensolver` interface. + This interface will be deprecated in a future release and subsequently + removed after that. Algorithms that can compute a minimum eigenvalue for an operator may implement this interface to allow different algorithms to be used interchangeably. """ + @deprecate_function( + "The Minimum Eigensolver interface has been superseded by the " + "qiskit.algorithms.minimum_eigensolvers.MinimumEigensolver interface. " + "This interface will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) + def __init__(self) -> None: + pass + @abstractmethod def compute_minimum_eigenvalue( self, operator: OperatorBase, aux_operators: Optional[ListOrDict[OperatorBase]] = None @@ -67,8 +83,22 @@ def supports_aux_operators(cls) -> bool: class MinimumEigensolverResult(AlgorithmResult): - """Minimum Eigensolver Result.""" + """Pending deprecation: Minimum Eigensolver Result. + + The MinimumEigensolverResult class has been superseded by the + :class:`qiskit.algorithms.minimum_eigensolvers.MinimumEigensolverResult` class. + This class will be deprecated in a future release and subsequently + removed after that. + + """ + @deprecate_function( + "The MinimumEigensolverResult class has been superseded by the " + "qiskit.algorithms.minimum_eigensolvers.MinimumEigensolverResult class. " + "This class will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def __init__(self) -> None: super().__init__() self._eigenvalue = None diff --git a/qiskit/algorithms/minimum_eigen_solvers/numpy_minimum_eigen_solver.py b/qiskit/algorithms/minimum_eigen_solvers/numpy_minimum_eigen_solver.py index 5515ba92d745..191a130a0163 100644 --- a/qiskit/algorithms/minimum_eigen_solvers/numpy_minimum_eigen_solver.py +++ b/qiskit/algorithms/minimum_eigen_solvers/numpy_minimum_eigen_solver.py @@ -1,6 +1,6 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2020. +# (C) Copyright IBM 2020, 2022. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -14,9 +14,11 @@ from typing import List, Optional, Union, Callable import logging +import warnings import numpy as np from qiskit.opflow import OperatorBase +from qiskit.utils.deprecation import deprecate_function from ..eigen_solvers.numpy_eigen_solver import NumPyEigensolver from .minimum_eigen_solver import MinimumEigensolver, MinimumEigensolverResult from ..list_or_dict import ListOrDict @@ -26,9 +28,22 @@ class NumPyMinimumEigensolver(MinimumEigensolver): """ - The Numpy Minimum Eigensolver algorithm. + Pending deprecation: Numpy Minimum Eigensolver algorithm. + + The NumPyMinimumEigensolver class has been superseded by the + :class:`qiskit.algorithms.minimum_eigensolvers.NumPyMinimumEigensolver` class. + This class will be deprecated in a future release and subsequently + removed after that. + """ + @deprecate_function( + "The NumPyMinimumEigensolver class has been superseded by the " + "qiskit.algorithms.minimum_eigensolvers.NumPyMinimumEigensolver class. " + "This class will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def __init__( self, filter_criterion: Callable[ @@ -44,6 +59,9 @@ def __init__( whether to consider this value or not. If there is no feasible element, the result can even be empty. """ + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + super().__init__() self._ces = NumPyEigensolver(filter_criterion=filter_criterion) self._ret = MinimumEigensolverResult() diff --git a/qiskit/algorithms/minimum_eigen_solvers/qaoa.py b/qiskit/algorithms/minimum_eigen_solvers/qaoa.py index d537f5a892e7..e650ee349cb1 100644 --- a/qiskit/algorithms/minimum_eigen_solvers/qaoa.py +++ b/qiskit/algorithms/minimum_eigen_solvers/qaoa.py @@ -13,6 +13,7 @@ """ The Quantum Approximate Optimization Algorithm. """ from typing import List, Callable, Optional, Union +import warnings import numpy as np from qiskit.algorithms.optimizers import Minimizer, Optimizer @@ -22,13 +23,19 @@ from qiskit.providers import Backend from qiskit.utils.quantum_instance import QuantumInstance from qiskit.utils.validation import validate_min +from qiskit.utils.deprecation import deprecate_function from qiskit.circuit.library.n_local.qaoa_ansatz import QAOAAnsatz from qiskit.algorithms.minimum_eigen_solvers.vqe import VQE class QAOA(VQE): """ - The Quantum Approximate Optimization Algorithm. + Pending deprecation: Quantum Approximate Optimization Algorithm. + + The QAOA class has been superseded by the + :class:`qiskit.algorithms.minimum_eigensolvers.QAOA` class. + This class will be deprecated in a future release and subsequently + removed after that. `QAOA `__ is a well-known algorithm for finding approximate solutions to combinatorial-optimization problems. @@ -52,6 +59,13 @@ class QAOA(VQE): the evolution to a feasible subspace of the full Hilbert space. """ + @deprecate_function( + "The QAOA class has been superseded by the " + "qiskit.algorithms.minimum_eigensolvers.QAOA class. " + "This class will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def __init__( self, optimizer: Optional[Union[Optimizer, Minimizer]] = None, @@ -114,17 +128,19 @@ def __init__( self._initial_state = initial_state self._cost_operator = None - super().__init__( - ansatz=None, - optimizer=optimizer, - initial_point=initial_point, - gradient=gradient, - expectation=expectation, - include_custom=include_custom, - max_evals_grouped=max_evals_grouped, - callback=callback, - quantum_instance=quantum_instance, - ) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + super().__init__( + ansatz=None, + optimizer=optimizer, + initial_point=initial_point, + gradient=gradient, + expectation=expectation, + include_custom=include_custom, + max_evals_grouped=max_evals_grouped, + callback=callback, + quantum_instance=quantum_instance, + ) def _check_operator_ansatz(self, operator: OperatorBase) -> OperatorBase: # Recreates a circuit based on operator parameter. diff --git a/qiskit/algorithms/minimum_eigen_solvers/vqe.py b/qiskit/algorithms/minimum_eigen_solvers/vqe.py index 87ab8707b0f1..286298620420 100755 --- a/qiskit/algorithms/minimum_eigen_solvers/vqe.py +++ b/qiskit/algorithms/minimum_eigen_solvers/vqe.py @@ -18,6 +18,7 @@ from __future__ import annotations import logging +import warnings from time import time from typing import Callable, Dict, List, Optional, Tuple, Union @@ -40,6 +41,7 @@ from qiskit.utils import QuantumInstance, algorithm_globals from qiskit.utils.backend_utils import is_aer_provider from qiskit.utils.validation import validate_min +from qiskit.utils.deprecation import deprecate_function from ..aux_ops_evaluator import eval_observables from ..exceptions import AlgorithmError @@ -52,7 +54,12 @@ class VQE(VariationalAlgorithm, MinimumEigensolver): - r"""The Variational Quantum Eigensolver algorithm. + r"""Pending deprecation: Variational Quantum Eigensolver algorithm. + + The VQE class has been superseded by the + :class:`qiskit.algorithms.minimum_eigensolvers.VQE` class. + This class will be deprecated in a future release and subsequently + removed after that. `VQE `__ is a quantum algorithm that uses a variational technique to find @@ -120,6 +127,13 @@ def my_minimizer(fun, x0, jac=None, bounds=None) -> OptimizerResult: """ + @deprecate_function( + "The VQE class has been superseded by the " + "qiskit.algorithms.minimum_eigensolvers.VQE class. " + "This class will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def __init__( self, ansatz: Optional[QuantumCircuit] = None, @@ -171,7 +185,9 @@ def __init__( """ validate_min("max_evals_grouped", max_evals_grouped, 1) - super().__init__() + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + super().__init__() self._max_evals_grouped = max_evals_grouped self._circuit_sampler = None # type: Optional[CircuitSampler] @@ -641,10 +657,26 @@ def _get_eigenstate(self, optimal_parameters) -> Union[List[float], Dict[str, in class VQEResult(VariationalResult, MinimumEigensolverResult): - """VQE Result.""" + """Pending deprecation: VQE Result. + + The VQEResult class has been superseded by the + :class:`qiskit.algorithms.minimum_eigensolvers.VQEResult` class. + This class will be deprecated in a future release and subsequently + removed after that. + + """ + @deprecate_function( + "The VQEResult class has been superseded by the " + "qiskit.algorithms.minimum_eigensolvers.VQEResult class. " + "This class will be deprecated in a future release and subsequently " + "removed after that.", + category=PendingDeprecationWarning, + ) def __init__(self) -> None: - super().__init__() + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + super().__init__() self._cost_function_evals = None @property diff --git a/releasenotes/notes/pending-deprecate-min-eigen-solvers-fa4341e1014e4df0.yaml b/releasenotes/notes/pending-deprecate-min-eigen-solvers-fa4341e1014e4df0.yaml new file mode 100644 index 000000000000..fb6799b45135 --- /dev/null +++ b/releasenotes/notes/pending-deprecate-min-eigen-solvers-fa4341e1014e4df0.yaml @@ -0,0 +1,6 @@ +--- +deprecations: + - | + Module :mod:`qiskit.algorithms.minimum_eigen_solvers` is pending deprecation and + will be deprecated in a future version and eventually removed. The module and its function + are superseded by :mod:`qiskit.algorithms.minimum_eigensolvers` From 7dbcb827270e281bb2ac34053d2c5eb89e1c1185 Mon Sep 17 00:00:00 2001 From: ewinston Date: Tue, 27 Sep 2022 19:02:59 -0400 Subject: [PATCH 55/56] Add optimization to quantum shannon decomposition (#8092) * pre-preiterate qsd2q * add 2nd optimization for quantum shannon decomposer * minor error * fix linting related bug * prevent pylint from complaining about cyclic-import * make pylint and black happy * reduce repeated matrix multiply * add comments for opt_a2, and other minor changes. * Update test/python/quantum_info/test_synthesis.py Co-authored-by: Adenilton Silva <7927558+adjs@users.noreply.github.com> * Update test/python/quantum_info/test_synthesis.py Co-authored-by: Adenilton Silva <7927558+adjs@users.noreply.github.com> * make _depth keyword only and add doc * Update qiskit/quantum_info/synthesis/two_qubit_decompose.py Co-authored-by: Adenilton Silva <7927558+adjs@users.noreply.github.com> * clarify keyword option documentation * simplify two qubit decomposer selection * black reformatted * linting Co-authored-by: Adenilton Silva <7927558+adjs@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- qiskit/extensions/unitary.py | 5 +- qiskit/quantum_info/synthesis/qsd.py | 90 +++++++-- .../synthesis/two_qubit_decompose.py | 91 +++++++++ .../passes/synthesis/unitary_synthesis.py | 5 +- test/python/quantum_info/test_synthesis.py | 190 +++++++++++++++++- 5 files changed, 357 insertions(+), 24 deletions(-) diff --git a/qiskit/extensions/unitary.py b/qiskit/extensions/unitary.py index b47bd80c7017..60f62f674a38 100644 --- a/qiskit/extensions/unitary.py +++ b/qiskit/extensions/unitary.py @@ -27,7 +27,6 @@ from qiskit.quantum_info.operators.predicates import matrix_equal from qiskit.quantum_info.operators.predicates import is_unitary_matrix from qiskit.quantum_info.synthesis.one_qubit_decompose import OneQubitEulerDecomposer -from qiskit.quantum_info.synthesis.qsd import qs_decomposition from qiskit.quantum_info.synthesis.two_qubit_decompose import two_qubit_cnot_decompose from qiskit.extensions.exceptions import ExtensionError @@ -135,6 +134,10 @@ def _define(self): elif self.num_qubits == 2: self.definition = two_qubit_cnot_decompose(self.to_matrix()) else: + from qiskit.quantum_info.synthesis.qsd import ( # pylint: disable=cyclic-import + qs_decomposition, + ) + self.definition = qs_decomposition(self.to_matrix()) def control(self, num_ctrl_qubits=1, label=None, ctrl_state=None): diff --git a/qiskit/quantum_info/synthesis/qsd.py b/qiskit/quantum_info/synthesis/qsd.py index 9d398732fec7..0adfdaf04593 100644 --- a/qiskit/quantum_info/synthesis/qsd.py +++ b/qiskit/quantum_info/synthesis/qsd.py @@ -18,12 +18,13 @@ import numpy as np from qiskit.circuit import QuantumCircuit, QuantumRegister from qiskit.quantum_info.synthesis import two_qubit_decompose, one_qubit_decompose -from qiskit.circuit.library.standard_gates import CXGate from qiskit.quantum_info.operators.predicates import is_hermitian_matrix from qiskit.extensions.quantum_initializer.uc_pauli_rot import UCPauliRotGate, _EPS -def qs_decomposition(mat, opt_a1=True, decomposer_1q=None, decomposer_2q=None): +def qs_decomposition( + mat, opt_a1=True, opt_a2=True, decomposer_1q=None, decomposer_2q=None, *, _depth=0 +): """ Decomposes unitary matrix into one and two qubit gates using Quantum Shannon Decomposition. @@ -39,11 +40,17 @@ def qs_decomposition(mat, opt_a1=True, decomposer_1q=None, decomposer_2q=None): \frac{9}{16} 4^n - frac{3}{2} 2^n - If opt_a1=True, the CX count is further reduced by, + If opt_a1 = True, the default, the CX count is reduced by, .. math:: - \frac{1}{3} 4^{n - 2} - 1 + \frac{1}{3} 4^{n - 2} - 1. + + If opt_a2 = True, the default, the CX count is reduced by, + + .. math:: + + 4^{n-2} - 1. This decomposition is described in arXiv:quant-ph/0406176. @@ -52,15 +59,18 @@ def qs_decomposition(mat, opt_a1=True, decomposer_1q=None, decomposer_2q=None): opt_a1 (bool): whether to try optimization A.1 from Shende. This should eliminate 1 cnot per call. If True CZ gates are left in the output. If desired these can be further decomposed to CX. + opt_a2 (bool): whether to try optimization A.2 from Shende. This decomposes two qubit + unitaries into a diagonal gate and a two cx unitary and reduces overal cx count by + 4^(n-2) - 1. decomposer_1q (None or Object): optional 1Q decomposer. If None, uses :class:`~qiskit.quantum_info.synthesis.one_qubit_decomposer.OneQubitEulerDecomser` decomposer_2q (None or Object): optional 2Q decomposer. If None, uses - :class:`~qiskit.quantum_info.synthesis.two_qubit_decomposer.TwoQubitBasisDecomposer` - with CXGate. + :class:`~qiskit.quantum_info.synthesis.two_qubit_decomposer.two_qubit_cnot_decompose Return: QuantumCircuit: Decomposed quantum circuit. """ + # _depth (int): Internal use parameter to track recursion depth. dim = mat.shape[0] nqubits = int(np.log2(dim)) if np.allclose(np.identity(dim), mat): @@ -71,7 +81,18 @@ def qs_decomposition(mat, opt_a1=True, decomposer_1q=None, decomposer_2q=None): circ = decomposer_1q(mat) elif dim == 4: if decomposer_2q is None: - decomposer_2q = two_qubit_decompose.TwoQubitBasisDecomposer(CXGate()) + if opt_a2: + from qiskit.extensions.unitary import UnitaryGate # pylint: disable=cyclic-import + + def decomp_2q(mat): + ugate = UnitaryGate(mat) + qc = QuantumCircuit(2, name="qsd2q") + qc.append(ugate, [0, 1]) + return qc + + decomposer_2q = decomp_2q + else: + decomposer_2q = two_qubit_decompose.two_qubit_cnot_decompose circ = decomposer_2q(mat) else: qr = QuantumRegister(nqubits) @@ -80,7 +101,7 @@ def qs_decomposition(mat, opt_a1=True, decomposer_1q=None, decomposer_2q=None): # perform cosine-sine decomposition (u1, u2), vtheta, (v1h, v2h) = scipy.linalg.cossin(mat, separate=True, p=dim_o2, q=dim_o2) # left circ - left_circ = _demultiplex(v1h, v2h, opt_a1=opt_a1) + left_circ = _demultiplex(v1h, v2h, opt_a1=opt_a1, opt_a2=opt_a2, _depth=_depth) circ.append(left_circ.to_instruction(), qr) # middle circ if opt_a1: @@ -94,13 +115,15 @@ def qs_decomposition(mat, opt_a1=True, decomposer_1q=None, decomposer_2q=None): else: circ.ucry((2 * vtheta).tolist(), qr[:-1], qr[-1]) # right circ - right_circ = _demultiplex(u1, u2, opt_a1=opt_a1) + right_circ = _demultiplex(u1, u2, opt_a1=opt_a1, opt_a2=opt_a2, _depth=_depth) circ.append(right_circ.to_instruction(), qr) + if opt_a2 and _depth == 0: + return _apply_a2(circ) return circ -def _demultiplex(um0, um1, opt_a1=False): +def _demultiplex(um0, um1, opt_a1=False, opt_a2=False, *, _depth=0): """decomposes a generic multiplexer. ────□──── @@ -129,6 +152,10 @@ def _demultiplex(um0, um1, opt_a1=False): um1 (ndarray): applied if MSB is 1 opt_a1 (bool): whether to try optimization A.1 from Shende. This should elliminate 1 cnot per call. If True CZ gates are left in the output. If desired these can be further decomposed + opt_a2 (bool): whether to try optimization A.2 from Shende. This decomposes two qubit + unitaries into a diagonal gate and a two cx unitary and reduces overal cx count by + 4^(n-2) - 1. + _depth (int): This is an internal variable to track the recursion depth. Returns: QuantumCircuit: decomposed circuit @@ -148,7 +175,9 @@ def _demultiplex(um0, um1, opt_a1=False): circ = QuantumCircuit(nqubits) # left gate - left_gate = qs_decomposition(wmat, opt_a1=opt_a1).to_instruction() + left_gate = qs_decomposition( + wmat, opt_a1=opt_a1, opt_a2=opt_a2, _depth=_depth + 1 + ).to_instruction() circ.append(left_gate, range(nqubits - 1)) # multiplexed Rz @@ -156,7 +185,9 @@ def _demultiplex(um0, um1, opt_a1=False): circ.ucrz(angles.tolist(), list(range(nqubits - 1)), [nqubits - 1]) # right gate - right_gate = qs_decomposition(vmat, opt_a1=opt_a1).to_instruction() + right_gate = qs_decomposition( + vmat, opt_a1=opt_a1, opt_a2=opt_a2, _depth=_depth + 1 + ).to_instruction() circ.append(right_gate, range(nqubits - 1)) return circ @@ -164,7 +195,7 @@ def _demultiplex(um0, um1, opt_a1=False): def _get_ucry_cz(nqubits, angles): """ - Get uniformally controlled Ry gate in in CZ-Ry as in UCPauliRotGate. + Get uniformly controlled Ry gate in in CZ-Ry as in UCPauliRotGate. """ nangles = len(angles) qc = QuantumCircuit(nqubits) @@ -189,3 +220,36 @@ def _get_ucry_cz(nqubits, angles): if i < nangles - 1: qc.cz(q_controls[q_contr_index], q_target) return qc + + +def _apply_a2(circ): + from qiskit import transpile + from qiskit.quantum_info import Operator + + # from qiskit.extensions.unitary import UnitaryGate + import qiskit.extensions.unitary + + decomposer = two_qubit_decompose.TwoQubitDecomposeUpToDiagonal() + ccirc = transpile(circ, basis_gates=["u", "cx", "qsd2q"], optimization_level=0) + ind2q = [] + # collect 2q instrs + for i, instr_context in enumerate(ccirc.data): + instr, _, _ = instr_context + if instr.name == "qsd2q": + ind2q.append(i) + # rolling over diagonals + ind2 = None # lint + for ind1, ind2 in zip(ind2q[0:-1:], ind2q[1::]): + # get neigboring 2q gates separated by controls + instr1, qargs, cargs = ccirc.data[ind1] + mat1 = Operator(instr1).data + instr2, _, _ = ccirc.data[ind2] + mat2 = Operator(instr2).data + # rollover + dmat, qc2cx = decomposer(mat1) + ccirc.data[ind1] = (qc2cx.to_gate(), qargs, cargs) + mat2 = mat2 @ dmat + ccirc.data[ind2] = (qiskit.extensions.unitary.UnitaryGate(mat2), qargs, cargs) + qc3 = two_qubit_decompose.two_qubit_cnot_decompose(mat2) + ccirc.data[ind2] = (qc3.to_gate(), qargs, cargs) + return ccirc diff --git a/qiskit/quantum_info/synthesis/two_qubit_decompose.py b/qiskit/quantum_info/synthesis/two_qubit_decompose.py index 7b9ad8395a48..972119e46285 100644 --- a/qiskit/quantum_info/synthesis/two_qubit_decompose.py +++ b/qiskit/quantum_info/synthesis/two_qubit_decompose.py @@ -1403,6 +1403,97 @@ def num_basis_gates(self, unitary): return np.argmax([trace_to_fid(traces[i]) * self.basis_fidelity**i for i in range(4)]) +class TwoQubitDecomposeUpToDiagonal: + """ + Class to decompose two qubit unitaries into the product of a diagonal gate + and another unitary gate which can be represented by two CX gates instead of the + usual three. This can be used when neighboring gates commute with the diagonal to + potentially reduce overall CX count. + """ + + def __init__(self): + sy = np.array([[0, -1j], [1j, 0]]) + self.sysy = np.kron(sy, sy) + + def _u4_to_su4(self, u4): + from scipy import linalg as la + + phase_factor = np.conj(la.det(u4) ** (-1 / u4.shape[0])) + su4 = u4 / phase_factor + return su4, cmath.phase(phase_factor) + + def _gamma(self, mat): + """ + proposition II.1: this invariant characterizes when two operators in U(4), + say u, v, are equivalent up to single qubit gates: + + u ≡ v -> Det(γ(u)) = Det(±(γ(v))) + """ + sumat, _ = self._u4_to_su4(mat) + sysy = self.sysy + return sumat @ sysy @ sumat.T @ sysy + + def _cx0_test(self, mat): + # proposition III.1: zero cx sufficient + gamma = self._gamma(mat) + evals = np.linalg.eigvals(gamma) + return np.all(np.isclose(evals, np.ones(4))) + + def _cx1_test(self, mat): + # proposition III.2: one cx sufficient + gamma = self._gamma(mat) + evals = np.linalg.eigvals(gamma) + uvals, ucnts = np.unique(np.round(evals, 10), return_counts=True) + return ( + len(uvals) == 2 + and all(ucnts == 2) + and all((np.isclose(x, 1j)) or np.isclose(x, -1j) for x in uvals) + ) + + def _cx2_test(self, mat): + # proposition III.3: two cx sufficient + gamma = self._gamma(mat) + return np.isclose(np.trace(gamma).imag, 0) + + def _real_trace_transform(self, mat): + """ + Determine diagonal gate such that + + U3 = D U2 + + Where U3 is a general two-qubit gate which takes 3 cnots, D is a + diagonal gate, and U2 is a gate which takes 2 cnots. + """ + a1 = ( + -mat[1, 3] * mat[2, 0] + + mat[1, 2] * mat[2, 1] + + mat[1, 1] * mat[2, 2] + - mat[1, 0] * mat[2, 3] + ) + a2 = ( + mat[0, 3] * mat[3, 0] + - mat[0, 2] * mat[3, 1] + - mat[0, 1] * mat[3, 2] + + mat[0, 0] * mat[3, 3] + ) + theta = 0 # arbitrary + phi = 0 # arbitrary + psi = np.arctan2(a1.imag + a2.imag, a1.real - a2.real) - phi + diag = np.diag(np.exp(-1j * np.array([theta, phi, psi, -(theta + phi + psi)]))) + return diag + + def __call__(self, mat): + """do the decomposition""" + su4, phase = self._u4_to_su4(mat) + real_map = self._real_trace_transform(su4) + mapped_su4 = real_map @ su4 + if not self._cx2_test(mapped_su4): + warnings.warn("Unitary decomposition up to diagonal may use an additionl CX gate.") + circ = two_qubit_cnot_decompose(mapped_su4) + circ.global_phase += phase + return real_map.conj(), circ + + # This weird duplicated lazy structure is for backwards compatibility; Qiskit has historically # always made ``two_qubit_cnot_decompose`` available publicly immediately on import, but it's quite # expensive to construct, and we want to defer the obejct's creation until it's actually used. We diff --git a/qiskit/transpiler/passes/synthesis/unitary_synthesis.py b/qiskit/transpiler/passes/synthesis/unitary_synthesis.py index 752515c7bd77..139add90ee56 100644 --- a/qiskit/transpiler/passes/synthesis/unitary_synthesis.py +++ b/qiskit/transpiler/passes/synthesis/unitary_synthesis.py @@ -25,7 +25,6 @@ from qiskit.quantum_info.synthesis import one_qubit_decompose from qiskit.quantum_info.synthesis.xx_decompose import XXDecomposer from qiskit.quantum_info.synthesis.two_qubit_decompose import TwoQubitBasisDecomposer -from qiskit.quantum_info.synthesis.qsd import qs_decomposition from qiskit.circuit.parameter import Parameter from qiskit.circuit.library.standard_gates import ( iSwapGate, @@ -545,6 +544,10 @@ def run(self, unitary, **options): preferred_direction, ) else: + from qiskit.quantum_info.synthesis.qsd import ( # pylint: disable=cyclic-import + qs_decomposition, + ) + synth_dag = circuit_to_dag(qs_decomposition(unitary)) return synth_dag, wires diff --git a/test/python/quantum_info/test_synthesis.py b/test/python/quantum_info/test_synthesis.py index 7991ad6b9f97..fddcb13ced64 100644 --- a/test/python/quantum_info/test_synthesis.py +++ b/test/python/quantum_info/test_synthesis.py @@ -15,6 +15,7 @@ import unittest import contextlib import logging +import math from test import combine import numpy as np @@ -71,6 +72,7 @@ TwoQubitControlledUDecomposer, Ud, decompose_two_qubit_product_gate, + TwoQubitDecomposeUpToDiagonal, ) from qiskit.quantum_info.synthesis.ion_decompose import cnot_rxx_decompose @@ -1391,8 +1393,8 @@ def _qsd_l2_a2_mod(self, n): def test_random_decomposition_l2_no_opt(self, nqubits): """test decomposition of random SU(n) down to 2 qubits without optimizations.""" dim = 2**nqubits - mat = scipy.stats.unitary_group.rvs(dim) - circ = self.qsd(mat, opt_a1=False) + mat = scipy.stats.unitary_group.rvs(dim, random_state=1559) + circ = self.qsd(mat, opt_a1=False, opt_a2=False) ccirc = transpile(circ, basis_gates=["u", "cx"], optimization_level=0) self.assertTrue(np.allclose(mat, Operator(ccirc).data)) if nqubits > 1: @@ -1404,8 +1406,8 @@ def test_random_decomposition_l2_no_opt(self, nqubits): def test_random_decomposition_l2_a1_opt(self, nqubits): """test decomposition of random SU(n) down to 2 qubits with 'a1' optimization.""" dim = 2**nqubits - mat = scipy.stats.unitary_group.rvs(dim) - circ = self.qsd(mat, opt_a1=True) + mat = scipy.stats.unitary_group.rvs(dim, random_state=789) + circ = self.qsd(mat, opt_a1=True, opt_a2=False) ccirc = transpile(circ, basis_gates=["u", "cx"], optimization_level=0) self.assertTrue(np.allclose(mat, Operator(ccirc).data)) if nqubits > 1: @@ -1417,7 +1419,7 @@ def test_SO3_decomposition_l2_a1_opt(self): nqubits = 3 dim = 2**nqubits mat = scipy.stats.ortho_group.rvs(dim) - circ = self.qsd(mat, opt_a1=True) + circ = self.qsd(mat, opt_a1=True, opt_a2=False) ccirc = transpile(circ, basis_gates=["u", "cx"], optimization_level=0) self.assertTrue(np.allclose(mat, Operator(ccirc).data)) expected_cx = self._qsd_l2_cx_count(nqubits) - self._qsd_l2_a1_mod(nqubits) @@ -1428,7 +1430,7 @@ def test_identity_decomposition(self): nqubits = 3 dim = 2**nqubits mat = np.identity(dim) - circ = self.qsd(mat, opt_a1=True) + circ = self.qsd(mat, opt_a1=True, opt_a2=False) self.assertTrue(np.allclose(mat, Operator(circ).data)) self.assertEqual(sum(circ.count_ops().values()), 0) @@ -1437,7 +1439,7 @@ def test_diagonal(self, nqubits): """Test decomposition on diagonal -- qsd is not optimal""" dim = 2**nqubits mat = np.diag(np.exp(1j * np.random.normal(size=dim))) - circ = self.qsd(mat, opt_a1=True) + circ = self.qsd(mat, opt_a1=True, opt_a2=False) ccirc = transpile(circ, basis_gates=["u", "cx"], optimization_level=0) self.assertTrue(np.allclose(mat, Operator(ccirc).data)) if nqubits > 1: @@ -1449,16 +1451,186 @@ def test_hermitian(self, nqubits): """Test decomposition on hermitian -- qsd is not optimal""" # better might be (arXiv:1405.6741) dim = 2**nqubits - umat = scipy.stats.unitary_group.rvs(dim) + umat = scipy.stats.unitary_group.rvs(dim, random_state=750) dmat = np.diag(np.exp(1j * np.random.normal(size=dim))) mat = umat.T.conjugate() @ dmat @ umat - circ = self.qsd(mat, opt_a1=True) + circ = self.qsd(mat, opt_a1=True, opt_a2=False) ccirc = transpile(circ, basis_gates=["u", "cx"], optimization_level=0) self.assertTrue(np.allclose(mat, Operator(ccirc).data)) if nqubits > 1: expected_cx = self._qsd_l2_cx_count(nqubits) - self._qsd_l2_a1_mod(nqubits) self.assertLessEqual(ccirc.count_ops().get("cx"), expected_cx) + @data(*list(range(3, 6))) + def test_opt_a1a2(self, nqubits): + """Test decomposition with both optimization a1 and a2 from shende2006""" + dim = 2**nqubits + umat = scipy.stats.unitary_group.rvs(dim, random_state=1224) + circ = self.qsd(umat, opt_a1=True, opt_a2=True) + ccirc = transpile(circ, basis_gates=["u", "cx"], optimization_level=0) + self.assertTrue(Operator(umat) == Operator(ccirc)) + self.assertEqual( + ccirc.count_ops().get("cx"), (23 / 48) * 4**nqubits - (3 / 2) * 2**nqubits + 4 / 3 + ) + + +class TestTwoQubitDecomposeUpToDiagonal(QiskitTestCase): + """test TwoQubitDecomposeUpToDiagonal class""" + + def test_prop31(self): + """test proposition III.1: no CNOTs needed""" + dec = TwoQubitDecomposeUpToDiagonal() + # test identity + mat = np.identity(4) + self.assertTrue(dec._cx0_test(mat)) + + sz = np.array([[1, 0], [0, -1]]) + zz = np.kron(sz, sz) + self.assertTrue(dec._cx0_test(zz)) + + had = np.matrix([[1, 1], [1, -1]]) / np.sqrt(2) + hh = np.kron(had, had) + self.assertTrue(dec._cx0_test(hh)) + + sy = np.array([[0, -1j], [1j, 0]]) + hy = np.kron(had, sy) + self.assertTrue(dec._cx0_test(hy)) + + qc = QuantumCircuit(2) + qc.cx(0, 1) + self.assertFalse(dec._cx0_test(Operator(qc).data)) + + def test_prop32_true(self): + """test proposition III.2: 1 CNOT sufficient""" + dec = TwoQubitDecomposeUpToDiagonal() + qc = QuantumCircuit(2) + qc.ry(np.pi / 4, 0) + qc.ry(np.pi / 3, 1) + qc.cx(0, 1) + qc.ry(np.pi / 4, 0) + qc.y(1) + mat = Operator(qc).data + self.assertTrue(dec._cx1_test(mat)) + + qc = QuantumCircuit(2) + qc.ry(np.pi / 5, 0) + qc.ry(np.pi / 3, 1) + qc.cx(1, 0) + qc.ry(np.pi / 2, 0) + qc.y(1) + mat = Operator(qc).data + self.assertTrue(dec._cx1_test(mat)) + + # this SU4 is non-local + mat = scipy.stats.unitary_group.rvs(4, random_state=84) + self.assertFalse(dec._cx1_test(mat)) + + def test_prop32_false(self): + """test proposition III.2: 1 CNOT not sufficient""" + dec = TwoQubitDecomposeUpToDiagonal() + qc = QuantumCircuit(2) + qc.ry(np.pi / 4, 0) + qc.ry(np.pi / 3, 1) + qc.cx(0, 1) + qc.ry(np.pi / 4, 0) + qc.y(1) + qc.cx(0, 1) + qc.ry(np.pi / 3, 0) + qc.rx(np.pi / 2, 1) + mat = Operator(qc).data + self.assertFalse(dec._cx1_test(mat)) + + def test_prop33_true(self): + """test proposition III.3: 2 CNOT sufficient""" + dec = TwoQubitDecomposeUpToDiagonal() + qc = QuantumCircuit(2) + qc.rx(np.pi / 4, 0) + qc.ry(np.pi / 2, 1) + qc.cx(0, 1) + qc.rx(np.pi / 4, 0) + qc.ry(np.pi / 2, 1) + qc.cx(0, 1) + qc.rx(np.pi / 4, 0) + qc.y(1) + mat = Operator(qc).data + self.assertTrue(dec._cx2_test(mat)) + + def test_prop33_false(self): + """test whether circuit which requires 3 cx fails 2 cx test""" + dec = TwoQubitDecomposeUpToDiagonal() + qc = QuantumCircuit(2) + qc.u(0.1, 0.2, 0.3, 0) + qc.u(0.4, 0.5, 0.6, 1) + qc.cx(0, 1) + qc.u(0.1, 0.2, 0.3, 0) + qc.u(0.4, 0.5, 0.6, 1) + qc.cx(0, 1) + qc.u(0.5, 0.2, 0.3, 0) + qc.u(0.2, 0.4, 0.1, 1) + qc.cx(1, 0) + qc.u(0.1, 0.2, 0.3, 0) + qc.u(0.4, 0.5, 0.6, 1) + mat = Operator(qc).data + self.assertFalse(dec._cx2_test(mat)) + + def test_ortho_local_map(self): + """test map of SO4 to SU2⊗SU2""" + dec = TwoQubitDecomposeUpToDiagonal() + emap = np.array([[1, 1j, 0, 0], [0, 0, 1j, 1], [0, 0, 1j, -1], [1, -1j, 0, 0]]) / math.sqrt( + 2 + ) + so4 = scipy.stats.ortho_group.rvs(4, random_state=284) + sy = np.array([[0, -1j], [1j, 0]]) + self.assertTrue(np.allclose(-np.kron(sy, sy), emap @ emap.T)) + self.assertFalse(dec._cx0_test(so4)) + self.assertTrue(dec._cx0_test(emap @ so4 @ emap.T.conj())) + + def test_ortho_local_map2(self): + """test map of SO4 to SU2⊗SU2""" + dec = TwoQubitDecomposeUpToDiagonal() + emap = np.array([[1, 0, 0, 1j], [0, 1j, 1, 0], [0, 1j, -1, 0], [1, 0, 0, -1j]]) / math.sqrt( + 2 + ) + so4 = scipy.stats.ortho_group.rvs(4, random_state=284) + sy = np.array([[0, -1j], [1j, 0]]) + self.assertTrue(np.allclose(-np.kron(sy, sy), emap @ emap.T)) + self.assertFalse(dec._cx0_test(so4)) + self.assertTrue(dec._cx0_test(emap @ so4 @ emap.T.conj())) + + def test_real_trace_transform(self): + """test finding diagonal factor of unitary""" + dec = TwoQubitDecomposeUpToDiagonal() + u4 = scipy.stats.unitary_group.rvs(4, random_state=83) + su4, _ = dec._u4_to_su4(u4) + real_map = dec._real_trace_transform(su4) + self.assertTrue(dec._cx2_test(real_map @ su4)) + + def test_call_decompose(self): + """ + test __call__ method to decompose + """ + dec = TwoQubitDecomposeUpToDiagonal() + u4 = scipy.stats.unitary_group.rvs(4, random_state=47) + dmat, circ2cx = dec(u4) + dec_diag = dmat @ Operator(circ2cx).data + self.assertTrue(Operator(u4) == Operator(dec_diag)) + + def test_circuit_decompose(self): + """test applying decomposed gates as circuit elements""" + dec = TwoQubitDecomposeUpToDiagonal() + u4 = scipy.stats.unitary_group.rvs(4, random_state=47) + dmat, circ2cx = dec(u4) + + qc1 = QuantumCircuit(2) + qc1.append(UnitaryGate(u4), range(2)) + + qc2 = QuantumCircuit(2) + qc2.compose(circ2cx, range(2), front=False, inplace=True) + qc2.append(UnitaryGate(dmat), range(2)) + + self.assertEqual(Operator(u4), Operator(qc1)) + self.assertEqual(Operator(qc1), Operator(qc2)) + if __name__ == "__main__": unittest.main() From 4a857f61146fb185878abd8634524941d71f1f6b Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Wed, 28 Sep 2022 02:37:53 -0400 Subject: [PATCH 56/56] Add BackendV2Converter class for treating BackendV1 as BackendV2 (#8759) * Add BackendV2Convert class for treating BackendV1 as BackendV2 This commit adds a new class BackendV2Converter which is a BackendV2 implementation that converts an input BackendV1 object into a BackendV2 implementation. This is useful for users that are supporting working with arbitrary providers so that they can standardize on using the newest access patterns even if a provider is still using BackendV1. Similarly, for qiskit's internal usage, this gives us a path to move all of the transpiler internals to use Target and avoid carrying around duplicate information in the PassManagerConfig for passes that haven't been updated. This will enable us to convert input BackendV1 instances to a target once on initial calling and have the transpiler only ever see a target. Fixes #8611 * Update docstring * Return empty options for _default_options * Remove leftover pylint disable * Expand standard gate conversions and handle missing basis_gates * Fix copy paste error qubit_props_list_from_props() docstring * Add name mapping argument to allow setting custom name-> gate mappings for conversion * Add missing gamma parameter * Fix handling of global ops in configuration * Raise exception on custom gates without mapping * Move name mapping to standard gates module * Fix lint and docs * Use gate object name attribute to build name mapping Co-authored-by: Jake Lishman * Fix lint * Fix pylint cyclic-import error * Update qiskit/providers/backend_compat.py Co-authored-by: Naoki Kanazawa * Remove supported_instructions and add option for adding delay The supported instructions field is underdocumented and it's not clear that the instructions it contains are something that we want to support directly. Since the only reason we added support for it in the target generation was to handle the delay for ibm backends (mostly in tests as the IBM provider will be using BackendV2 natively soon) this commit removes its usage and adds a new flag for explicitly adding delay to the backend's target. * Add mention of converter class to API changes section * Add missing flag usage to delay test * Run black Co-authored-by: Jake Lishman Co-authored-by: Naoki Kanazawa --- .../library/standard_gates/__init__.py | 69 +++++ qiskit/providers/__init__.py | 7 + qiskit/providers/backend_compat.py | 282 ++++++++++++++++++ .../backend-converter-05360f12f9042829.yaml | 15 + test/python/providers/test_fake_backends.py | 34 ++- 5 files changed, 406 insertions(+), 1 deletion(-) create mode 100644 qiskit/providers/backend_compat.py create mode 100644 releasenotes/notes/backend-converter-05360f12f9042829.yaml diff --git a/qiskit/circuit/library/standard_gates/__init__.py b/qiskit/circuit/library/standard_gates/__init__.py index d1345e13d8f2..3dca1abb6201 100644 --- a/qiskit/circuit/library/standard_gates/__init__.py +++ b/qiskit/circuit/library/standard_gates/__init__.py @@ -103,3 +103,72 @@ from .z import ZGate, CZGate, CCZGate from .multi_control_rotation_gates import mcrx, mcry, mcrz + + +def get_standard_gate_name_mapping(): + """Return a dictionary mapping the name of standard gates and instructions to an object for + that name.""" + from qiskit.circuit.parameter import Parameter + from qiskit.circuit.measure import Measure + from qiskit.circuit.delay import Delay + from qiskit.circuit.reset import Reset + + # Standard gates library mapping, multicontrolled gates not included since they're + # variable width + gates = [ + IGate(), + SXGate(), + XGate(), + CXGate(), + RZGate(Parameter("λ")), + RGate(Parameter("ϴ"), Parameter("φ")), + Reset(), + C3SXGate(), + CCXGate(), + DCXGate(), + CHGate(), + CPhaseGate(Parameter("ϴ")), + CRXGate(Parameter("ϴ")), + CRYGate(Parameter("ϴ")), + CRZGate(Parameter("ϴ")), + CSwapGate(), + CSXGate(), + CUGate(Parameter("ϴ"), Parameter("φ"), Parameter("λ"), Parameter("γ")), + CU1Gate(Parameter("λ")), + CU3Gate(Parameter("ϴ"), Parameter("φ"), Parameter("λ")), + CYGate(), + CZGate(), + CCZGate(), + HGate(), + PhaseGate(Parameter("ϴ")), + RCCXGate(), + RC3XGate(), + RXGate(Parameter("ϴ")), + RXXGate(Parameter("ϴ")), + RYGate(Parameter("ϴ")), + RYYGate(Parameter("ϴ")), + RZZGate(Parameter("ϴ")), + RZXGate(Parameter("ϴ")), + XXMinusYYGate(Parameter("ϴ")), + XXPlusYYGate(Parameter("ϴ")), + ECRGate(), + SGate(), + SdgGate(), + CSGate(), + CSdgGate(), + SwapGate(), + iSwapGate(), + SXdgGate(), + TGate(), + TdgGate(), + UGate(Parameter("ϴ"), Parameter("φ"), Parameter("λ")), + U1Gate(Parameter("λ")), + U2Gate(Parameter("φ"), Parameter("λ")), + U3Gate(Parameter("ϴ"), Parameter("φ"), Parameter("λ")), + YGate(), + ZGate(), + Delay(Parameter("t")), + Measure(), + ] + name_mapping = {gate.name: gate for gate in gates} + return name_mapping diff --git a/qiskit/providers/__init__.py b/qiskit/providers/__init__.py index e83b145b2f5a..e96d5635fe00 100644 --- a/qiskit/providers/__init__.py +++ b/qiskit/providers/__init__.py @@ -94,6 +94,8 @@ BackendV1 BackendV2 QubitProperties + BackendV2Converter + convert_to_target Options ------- @@ -666,6 +668,9 @@ def status(self): operation on a given qubit is used to model the readout length. However, a :obj:`~BackendV2` can implement multiple measurement types and list them separately in a :class:`~qiskit.transpiler.Target`. + +There is also a :class:`~.BackendV2Converter` class available that enables you +to wrap a :class:`~.BackendV1` object with a :class:`~.BackendV2` interface. """ import pkgutil @@ -677,6 +682,8 @@ def status(self): from qiskit.providers.backend import BackendV1 from qiskit.providers.backend import BackendV2 from qiskit.providers.backend import QubitProperties +from qiskit.providers.backend_compat import BackendV2Converter +from qiskit.providers.backend_compat import convert_to_target from qiskit.providers.options import Options from qiskit.providers.job import Job from qiskit.providers.job import JobV1 diff --git a/qiskit/providers/backend_compat.py b/qiskit/providers/backend_compat.py new file mode 100644 index 000000000000..60889ff22c70 --- /dev/null +++ b/qiskit/providers/backend_compat.py @@ -0,0 +1,282 @@ +# This code is part of Qiskit. +# +# (C) Copyright IBM 2020. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +"""Backend abstract interface for providers.""" + +from __future__ import annotations + +from typing import List, Iterable, Any, Dict, Optional + +from qiskit.exceptions import QiskitError + +from qiskit.providers.backend import BackendV1, BackendV2 +from qiskit.providers.backend import QubitProperties +from qiskit.utils.units import apply_prefix +from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping +from qiskit.circuit.measure import Measure +from qiskit.providers.models.backendconfiguration import BackendConfiguration +from qiskit.providers.models.backendproperties import BackendProperties +from qiskit.providers.models.pulsedefaults import PulseDefaults +from qiskit.providers.options import Options +from qiskit.providers.exceptions import BackendPropertyError + + +def convert_to_target( + configuration: BackendConfiguration, + properties: BackendProperties = None, + defaults: PulseDefaults = None, + custom_name_mapping: Optional[Dict[str, Any]] = None, + add_delay: bool = False, +): + """Uses configuration, properties and pulse defaults + to construct and return Target class. + """ + # pylint: disable=cyclic-import + from qiskit.transpiler.target import ( + Target, + InstructionProperties, + ) + + # Standard gates library mapping, multicontrolled gates not included since they're + # variable width + name_mapping = get_standard_gate_name_mapping() + target = None + if custom_name_mapping is not None: + name_mapping.update(custom_name_mapping) + # Parse from properties if it exsits + if properties is not None: + qubit_properties = qubit_props_list_from_props(properties=properties) + target = Target(num_qubits=configuration.n_qubits, qubit_properties=qubit_properties) + # Parse instructions + gates: Dict[str, Any] = {} + for gate in properties.gates: + name = gate.gate + if name in name_mapping: + if name not in gates: + gates[name] = {} + else: + raise QiskitError( + f"Operation name {name} does not have a known mapping. Use " + "custom_name_mapping to map this name to an Operation object" + ) + + qubits = tuple(gate.qubits) + gate_props = {} + for param in gate.parameters: + if param.name == "gate_error": + gate_props["error"] = param.value + if param.name == "gate_length": + gate_props["duration"] = apply_prefix(param.value, param.unit) + gates[name][qubits] = InstructionProperties(**gate_props) + for gate, props in gates.items(): + inst = name_mapping[gate] + target.add_instruction(inst, props) + # Create measurement instructions: + measure_props = {} + for qubit, _ in enumerate(properties.qubits): + measure_props[(qubit,)] = InstructionProperties( + duration=properties.readout_length(qubit), + error=properties.readout_error(qubit), + ) + target.add_instruction(Measure(), measure_props) + # Parse from configuration because properties doesn't exist + else: + target = Target(num_qubits=configuration.n_qubits) + for gate in configuration.gates: + name = gate.name + gate_props = ( + {tuple(x): None for x in gate.coupling_map} # type: ignore[misc] + if hasattr(gate, "coupling_map") + else {None: None} + ) + if name in name_mapping: + target.add_instruction(name_mapping[name], gate_props) + else: + raise QiskitError( + f"Operation name {name} does not have a known mapping. " + "Use custom_name_mapping to map this name to an Operation object" + ) + target.add_instruction(Measure()) + # parse global configuration properties + if hasattr(configuration, "dt"): + target.dt = configuration.dt + if hasattr(configuration, "timing_constraints"): + target.granularity = configuration.timing_constraints.get("granularity") + target.min_length = configuration.timing_constraints.get("min_length") + target.pulse_alignment = configuration.timing_constraints.get("pulse_alignment") + target.aquire_alignment = configuration.timing_constraints.get("acquire_alignment") + # If a pulse defaults exists use that as the source of truth + if defaults is not None: + inst_map = defaults.instruction_schedule_map + for inst in inst_map.instructions: + for qarg in inst_map.qubits_with_instruction(inst): + sched = inst_map.get(inst, qarg) + if inst in target: + try: + qarg = tuple(qarg) + except TypeError: + qarg = (qarg,) + if inst == "measure": + for qubit in qarg: + target[inst][(qubit,)].calibration = sched + elif qarg in target[inst]: + target[inst][qarg].calibration = sched + combined_global_ops = set() + if configuration.basis_gates: + combined_global_ops.update(configuration.basis_gates) + for op in combined_global_ops: + if op not in target: + if op in name_mapping: + target.add_instruction( + name_mapping[op], {(bit,): None for bit in range(target.num_qubits)} + ) + else: + raise QiskitError( + f"Operation name '{op}' does not have a known mapping. Use " + "custom_name_mapping to map this name to an Operation object" + ) + if add_delay and "delay" not in target: + target.add_instruction( + name_mapping["delay"], {(bit,): None for bit in range(target.num_qubits)} + ) + return target + + +def qubit_props_list_from_props( + properties: BackendProperties, +) -> List[QubitProperties]: + """Uses BackendProperties to construct + and return a list of QubitProperties. + """ + qubit_props: List[QubitProperties] = [] + for qubit, _ in enumerate(properties.qubits): + try: + t_1 = properties.t1(qubit) + except BackendPropertyError: + t_1 = None + try: + t_2 = properties.t2(qubit) + except BackendPropertyError: + t_2 = None + try: + frequency = properties.frequency(qubit) + except BackendPropertyError: + frequency = None + qubit_props.append( + QubitProperties( # type: ignore[no-untyped-call] + t1=t_1, + t2=t_2, + frequency=frequency, + ) + ) + return qubit_props + + +class BackendV2Converter(BackendV2): + """A converter class that takes a :class:`~.BackendV1` instance and wraps it in a + :class:`~.BackendV2` interface. + + This class implements the :class:`~.BackendV2` interface and is used to enable + common access patterns between :class:`~.BackendV1` and :class:`~.BackendV2`. This + class should only be used if you need a :class:`~.BackendV2` and still need + compatibility with :class:`~.BackendV1`. + """ + + def __init__( + self, + backend: BackendV1, + name_mapping: Optional[Dict[str, Any]] = None, + add_delay: bool = False, + ): + """Initialize a BackendV2 converter instance based on a BackendV1 instance. + + Args: + backend: The input :class:`~.BackendV1` based backend to wrap in a + :class:`~.BackendV2` interface + name_mapping: An optional dictionary that maps custom gate/operation names in + ``backend`` to an :class:`~.Operation` object representing that + gate/operation. By default most standard gates names are mapped to the + standard gate object from :mod:`qiskit.circuit.library` this only needs + to be specified if the input ``backend`` defines gates in names outside + that set. + add_delay: If set to true a :class:`~qiskit.circuit.Delay` operation + will be added to the target as a supported operation for all + qubits + """ + self._backend = backend + self._config = self._backend.configuration() + super().__init__( + provider=backend.provider, + name=backend.name(), + description=self._config.description, + online_date=self._config.online_date, + backend_version=self._config.backend_version, + ) + self._options = self._backend._options + self._properties = None + if hasattr(self._backend, "properties"): + self._properties = self._backend.properties() + self._defaults = None + self._target = None + self._name_mapping = name_mapping + self._add_delay = add_delay + + @property + def target(self): + """A :class:`qiskit.transpiler.Target` object for the backend. + + :rtype: Target + """ + if self._target is None: + if self._defaults is None and hasattr(self._backend, "defaults"): + self._defaults = self._backend.defaults() + if self._properties is None and hasattr(self._backend, "properties"): + self._properties = self._backend.properties() + self._target = convert_to_target( + self._config, + self._properties, + self._defaults, + custom_name_mapping=self._name_mapping, + add_delay=self._add_delay, + ) + return self._target + + @property + def max_circuits(self): + return self._config.max_experiments + + @classmethod + def _default_options(cls): + return Options() + + @property + def dtm(self) -> float: + return self._config.dtm + + @property + def meas_map(self) -> List[List[int]]: + return self._config.dt + + def drive_channel(self, qubit: int): + self._config.drive(qubit) + + def measure_channel(self, qubit: int): + self._config.measure(qubit) + + def acquire_channel(self, qubit: int): + self._config.acquire(qubit) + + def control_channel(self, qubits: Iterable[int]): + self._config.control(qubits) + + def run(self, run_input, **options): + return self._backend.run(run_input, **options) diff --git a/releasenotes/notes/backend-converter-05360f12f9042829.yaml b/releasenotes/notes/backend-converter-05360f12f9042829.yaml new file mode 100644 index 000000000000..97695b55d084 --- /dev/null +++ b/releasenotes/notes/backend-converter-05360f12f9042829.yaml @@ -0,0 +1,15 @@ +--- +features: + - | + Added a new class, :class:`~BackendV2Converter`, which is used to wrap + a :class:`~.BackendV1` instance in a :class:`~.BackendV2` interface. It + enables you to have a :class:`~.BackendV2` instance from any + :class:`~.BackendV1`. This enables standardizing access patterns on the + newer :class:`~.BackendV2` interface even if you still support + :class:`~.BackendV1`. + + - | + Added a new function :func:`~.convert_to_target` which is used to take + a :class:`~.BackendConfiguration`, and optionally a + :class:`~.BackendProperties` and :class:`~.PulseDefaults` and create + a :class:`~.Target` object equivalent to the contents of those objects. diff --git a/test/python/providers/test_fake_backends.py b/test/python/providers/test_fake_backends.py index 79dfc27121fd..5c0da0f35dbf 100644 --- a/test/python/providers/test_fake_backends.py +++ b/test/python/providers/test_fake_backends.py @@ -24,7 +24,15 @@ from qiskit.exceptions import QiskitError from qiskit.execute_function import execute from qiskit.test.base import QiskitTestCase -from qiskit.providers.fake_provider import FakeProviderForBackendV2, FakeProvider, FakeMumbaiV2 +from qiskit.providers.fake_provider import ( + FakeProviderForBackendV2, + FakeProvider, + FakeMumbaiV2, + FakeYorktown, + FakeMumbai, +) +from qiskit.providers.backend_compat import BackendV2Converter +from qiskit.providers.backend import BackendV2 from qiskit.utils import optionals FAKE_PROVIDER_FOR_BACKEND_V2 = FakeProviderForBackendV2() @@ -161,3 +169,27 @@ def test_delay_circuit(self): qc.measure_all() res = transpile(qc, backend) self.assertIn("delay", res.count_ops()) + + @data(0, 1, 2, 3) + def test_converter(self, opt_level): + backend = FakeYorktown() + backend_v2 = BackendV2Converter(backend) + self.assertIsInstance(backend_v2, BackendV2) + res = transpile(self.circuit, backend_v2, optimization_level=opt_level) + job = backend_v2.run(res) + result = job.result() + counts = result.get_counts() + max_count = max(counts.items(), key=operator.itemgetter(1))[0] + self.assertEqual(max_count, "11") + + def test_converter_delay_circuit(self): + backend = FakeMumbai() + backend_v2 = BackendV2Converter(backend, add_delay=True) + self.assertIsInstance(backend_v2, BackendV2) + qc = QuantumCircuit(2) + qc.delay(502, 0, unit="ns") + qc.x(1) + qc.delay(250, 1, unit="ns") + qc.measure_all() + res = transpile(qc, backend_v2) + self.assertIn("delay", res.count_ops())